From 20931e1e4339b536b7efc5263405e7c4ce0642b4 Mon Sep 17 00:00:00 2001 From: S2kael Date: Thu, 14 Nov 2024 16:31:16 +0700 Subject: [PATCH] [WC] Fix error routing --- .../src/Popup/Home/Mission/TaskItem.tsx | 7 + patches/@walletconnect+utils+2.13.1.patch | 168 ++++++++++++++++++ 2 files changed, 175 insertions(+) create mode 100644 patches/@walletconnect+utils+2.13.1.patch diff --git a/packages/extension-koni-ui/src/Popup/Home/Mission/TaskItem.tsx b/packages/extension-koni-ui/src/Popup/Home/Mission/TaskItem.tsx index ed551b3ccf..36d4f0724c 100644 --- a/packages/extension-koni-ui/src/Popup/Home/Mission/TaskItem.tsx +++ b/packages/extension-koni-ui/src/Popup/Home/Mission/TaskItem.tsx @@ -217,8 +217,15 @@ const _TaskItem = ({ actionReloadPoint, className, openWidget, reloadTask, task } }) .catch((e) => { + const error = e as Error; + console.error('finishTask', e); setTaskLoading(false); + + notify({ + message: error.message, + type: 'error' + }); }); if (!task.airlyftId) { diff --git a/patches/@walletconnect+utils+2.13.1.patch b/patches/@walletconnect+utils+2.13.1.patch new file mode 100644 index 0000000000..022390a010 --- /dev/null +++ b/patches/@walletconnect+utils+2.13.1.patch @@ -0,0 +1,168 @@ +diff --git a/node_modules/@walletconnect/utils/dist/index.cjs.js b/node_modules/@walletconnect/utils/dist/index.cjs.js +index ffcfd5f..7c82a09 100644 +--- a/node_modules/@walletconnect/utils/dist/index.cjs.js ++++ b/node_modules/@walletconnect/utils/dist/index.cjs.js +@@ -1,18 +1,18 @@ +-"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var Ro=require("detect-browser"),tr=require("@walletconnect/time"),er=require("@walletconnect/window-getters"),Co=require("@walletconnect/window-metadata"),Oo=require("query-string"),fn=require("@stablelib/chacha20poly1305"),Po=require("@stablelib/hkdf"),on=require("@stablelib/random"),ci=require("@stablelib/sha256"),To=require("@stablelib/x25519"),Rt=require("uint8arrays"),Fo=require("@walletconnect/relay-api");function sn(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach(function(r){if(r!=="default"){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}}),t.default=e,Object.freeze(t)}var Ir=sn(Oo),an=sn(To);const _r=":";function un(e){const[t,r]=e.split(_r);return{namespace:t,reference:r}}function hn(e){const{namespace:t,reference:r}=e;return[t,r].join(_r)}function li(e){const[t,r,i]=e.split(_r);return{namespace:t,reference:r,address:i}}function cn(e){const{namespace:t,reference:r,address:i}=e;return[t,r,i].join(_r)}function di(e,t){const r=[];return e.forEach(i=>{const n=t(i);r.includes(n)||r.push(n)}),r}function ln(e){const{address:t}=li(e);return t}function dn(e){const{namespace:t,reference:r}=li(e);return hn({namespace:t,reference:r})}function Do(e,t){const{namespace:r,reference:i}=un(t);return cn({namespace:r,reference:i,address:e})}function Uo(e){return di(e,ln)}function pn(e){return di(e,dn)}function ko(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(...n.accounts)}),r}function qo(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(...pn(n.accounts))}),r}function Ko(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(...Br(i,n))}),r}function Br(e,t){return e.includes(":")?[e]:t.chains||[]}var Ho=Object.defineProperty,vn=Object.getOwnPropertySymbols,Lo=Object.prototype.hasOwnProperty,zo=Object.prototype.propertyIsEnumerable,gn=(e,t,r)=>t in e?Ho(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,mn=(e,t)=>{for(var r in t||(t={}))Lo.call(t,r)&&gn(e,r,t[r]);if(vn)for(var r of vn(t))zo.call(t,r)&&gn(e,r,t[r]);return e};const An="ReactNative",Kt={reactNative:"react-native",node:"node",browser:"browser",unknown:"unknown"},Rr=" ",jo=":",bn="/",pi=2,Vo=1e3,yn="js";function vi(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}function rr(){return!er.getDocument()&&!!er.getNavigator()&&navigator.product===An}function vr(){return!vi()&&!!er.getNavigator()&&!!er.getDocument()}function Ge(){return rr()?Kt.reactNative:vi()?Kt.node:vr()?Kt.browser:Kt.unknown}function Qo(){var e;try{return rr()&&typeof global<"u"&&typeof(global==null?void 0:global.Application)<"u"?(e=global.Application)==null?void 0:e.applicationId:void 0}catch{return}}function wn(e,t){let r=Ir.parse(e);return r=mn(mn({},r),t),e=Ir.stringify(r),e}function Jo(){return Co.getWindowMetadata()||{name:"",description:"",url:"",icons:[""]}}function Yo(e,t){var r;const i=Ge(),n={protocol:e,version:t,env:i};return i==="browser"&&(n.host=((r=er.getLocation())==null?void 0:r.host)||"unknown"),n}function xn(){if(Ge()===Kt.reactNative&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"){const{OS:r,Version:i}=global.Platform;return[r,i].join("-")}const e=Ro.detect();if(e===null)return"unknown";const t=e.os?e.os.replace(" ","").toLowerCase():"unknown";return e.type==="browser"?[t,e.name,e.version].join("-"):[t,e.version].join("-")}function Mn(){var e;const t=Ge();return t===Kt.browser?[t,((e=er.getLocation())==null?void 0:e.host)||"unknown"].join(":"):t}function En(e,t,r){const i=xn(),n=Mn();return[[e,t].join("-"),[yn,r].join("-"),i,n].join("/")}function Go({protocol:e,version:t,relayUrl:r,sdkVersion:i,auth:n,projectId:o,useOnCloseEvent:h,bundleId:p}){const b=r.split("?"),g=En(e,t,i),w={auth:n,ua:g,projectId:o,useOnCloseEvent:h||void 0,origin:p||void 0},y=wn(b[1]||"",w);return b[0]+"?"+y}function Wo(e){let t=(e.match(/^[^:]+(?=:\/\/)/gi)||[])[0];const r=typeof t<"u"?e.split("://")[1]:e;return t=t==="wss"?"https":"http",[t,r].join("://")}function Xo(e,t,r){if(!e[t]||typeof e[t]!==r)throw new Error(`Missing or invalid "${t}" param`)}function Sn(e,t=pi){return Nn(e.split(bn),t)}function Zo(e){return Sn(e).join(Rr)}function Ie(e,t){return e.filter(r=>t.includes(r)).length===e.length}function Nn(e,t=pi){return e.slice(Math.max(e.length-t,0))}function $o(e){return Object.fromEntries(e.entries())}function ts(e){return new Map(Object.entries(e))}function es(e,t){const r={};return Object.keys(e).forEach(i=>{r[i]=t(e[i])}),r}const rs=e=>e;function In(e){return e.trim().replace(/^\w/,t=>t.toUpperCase())}function is(e){return e.split(Rr).map(t=>In(t)).join(Rr)}function ns(e=tr.FIVE_MINUTES,t){const r=tr.toMiliseconds(e||tr.FIVE_MINUTES);let i,n,o;return{resolve:h=>{o&&i&&(clearTimeout(o),i(h))},reject:h=>{o&&n&&(clearTimeout(o),n(h))},done:()=>new Promise((h,p)=>{o=setTimeout(()=>{p(new Error(t))},r),i=h,n=p})}}function fs(e,t,r){return new Promise(async(i,n)=>{const o=setTimeout(()=>n(new Error(r)),t);try{const h=await e;i(h)}catch(h){n(h)}clearTimeout(o)})}function gi(e,t){if(typeof t=="string"&&t.startsWith(`${e}:`))return t;if(e.toLowerCase()==="topic"){if(typeof t!="string")throw new Error('Value must be "string" for expirer target type: topic');return`topic:${t}`}else if(e.toLowerCase()==="id"){if(typeof t!="number")throw new Error('Value must be "number" for expirer target type: id');return`id:${t}`}throw new Error(`Unknown expirer target type: ${e}`)}function os(e){return gi("topic",e)}function ss(e){return gi("id",e)}function as(e){const[t,r]=e.split(":"),i={id:void 0,topic:void 0};if(t==="topic"&&typeof r=="string")i.topic=r;else if(t==="id"&&Number.isInteger(Number(r)))i.id=Number(r);else throw new Error(`Invalid target, expected id:number or topic:string, got ${t}:${r}`);return i}function us(e,t){return tr.fromMiliseconds((t||Date.now())+tr.toMiliseconds(e))}function hs(e){return Date.now()>=tr.toMiliseconds(e)}function cs(e,t){return`${e}${t?`:${t}`:""}`}function ge(e=[],t=[]){return[...new Set([...e,...t])]}async function ls({id:e,topic:t,wcDeepLink:r}){try{if(!r)return;const i=typeof r=="string"?JSON.parse(r):r;let n=i?.href;if(typeof n!="string")return;n.endsWith("/")&&(n=n.slice(0,-1));const o=`${n}/wc?requestId=${e}&sessionTopic=${t}`,h=Ge();h===Kt.browser?o.startsWith("https://")||o.startsWith("http://")?window.open(o,"_blank","noreferrer noopener"):window.open(o,"_self","noreferrer noopener"):h===Kt.reactNative&&typeof(global==null?void 0:global.Linking)<"u"&&await global.Linking.openURL(o)}catch(i){console.error(i)}}async function ds(e,t){try{return await e.getItem(t)||(vr()?localStorage.getItem(t):void 0)}catch(r){console.error(r)}}function mi(e,t){return e.filter(r=>t.includes(r))}var _n=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ps(e){var t=e.default;if(typeof t=="function"){var r=function(){return t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(i){var n=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(r,i,n.get?n:{enumerable:!0,get:function(){return e[i]}})}),r}var Bn={exports:{}};/** ++"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var Co=require("detect-browser"),tr=require("@walletconnect/time"),er=require("@walletconnect/window-getters"),Oo=require("@walletconnect/window-metadata"),Po=require("query-string"),fn=require("@stablelib/chacha20poly1305"),To=require("@stablelib/hkdf"),on=require("@stablelib/random"),ci=require("@stablelib/sha256"),Fo=require("@stablelib/x25519"),Rt=require("uint8arrays"),Do=require("@walletconnect/relay-api");function sn(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach(function(r){if(r!=="default"){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}}),t.default=e,Object.freeze(t)}var Ir=sn(Po),an=sn(Fo);const _r=":";function un(e){const[t,r]=e.split(_r);return{namespace:t,reference:r}}function hn(e){const{namespace:t,reference:r}=e;return[t,r].join(_r)}function li(e){const[t,r,i]=e.split(_r);return{namespace:t,reference:r,address:i}}function cn(e){const{namespace:t,reference:r,address:i}=e;return[t,r,i].join(_r)}function di(e,t){const r=[];return e.forEach(i=>{const n=t(i);r.includes(n)||r.push(n)}),r}function ln(e){const{address:t}=li(e);return t}function dn(e){const{namespace:t,reference:r}=li(e);return hn({namespace:t,reference:r})}function Uo(e,t){const{namespace:r,reference:i}=un(t);return cn({namespace:r,reference:i,address:e})}function ko(e){return di(e,ln)}function pn(e){return di(e,dn)}function qo(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(...n.accounts)}),r}function Ko(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(...pn(n.accounts))}),r}function Ho(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(...Br(i,n))}),r}function Br(e,t){return e.includes(":")?[e]:t.chains||[]}var Lo=Object.defineProperty,vn=Object.getOwnPropertySymbols,zo=Object.prototype.hasOwnProperty,jo=Object.prototype.propertyIsEnumerable,gn=(e,t,r)=>t in e?Lo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,mn=(e,t)=>{for(var r in t||(t={}))zo.call(t,r)&&gn(e,r,t[r]);if(vn)for(var r of vn(t))jo.call(t,r)&&gn(e,r,t[r]);return e};const An="ReactNative",Kt={reactNative:"react-native",node:"node",browser:"browser",unknown:"unknown"},Rr=" ",Vo=":",bn="/",pi=2,Qo=1e3,yn="js";function vi(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}function rr(){return!er.getDocument()&&!!er.getNavigator()&&navigator.product===An}function vr(){return!vi()&&!!er.getNavigator()&&!!er.getDocument()}function Ge(){return rr()?Kt.reactNative:vi()?Kt.node:vr()?Kt.browser:Kt.unknown}function Jo(){var e;try{return rr()&&typeof global<"u"&&typeof(global==null?void 0:global.Application)<"u"?(e=global.Application)==null?void 0:e.applicationId:void 0}catch{return}}function wn(e,t){let r=Ir.parse(e);return r=mn(mn({},r),t),e=Ir.stringify(r),e}function Yo(){return Oo.getWindowMetadata()||{name:"",description:"",url:"",icons:[""]}}function Go(e,t){var r;const i=Ge(),n={protocol:e,version:t,env:i};return i==="browser"&&(n.host=((r=er.getLocation())==null?void 0:r.host)||"unknown"),n}function xn(){if(Ge()===Kt.reactNative&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"){const{OS:r,Version:i}=global.Platform;return[r,i].join("-")}const e=Co.detect();if(e===null)return"unknown";const t=e.os?e.os.replace(" ","").toLowerCase():"unknown";return e.type==="browser"?[t,e.name,e.version].join("-"):[t,e.version].join("-")}function Mn(){var e;const t=Ge();return t===Kt.browser?[t,((e=er.getLocation())==null?void 0:e.host)||"unknown"].join(":"):t}function En(e,t,r){const i=xn(),n=Mn();return[[e,t].join("-"),[yn,r].join("-"),i,n].join("/")}function Wo({protocol:e,version:t,relayUrl:r,sdkVersion:i,auth:n,projectId:o,useOnCloseEvent:h,bundleId:p}){const b=r.split("?"),g=En(e,t,i),w={auth:n,ua:g,projectId:o,useOnCloseEvent:h||void 0,origin:p||void 0},y=wn(b[1]||"",w);return b[0]+"?"+y}function Xo(e){let t=(e.match(/^[^:]+(?=:\/\/)/gi)||[])[0];const r=typeof t<"u"?e.split("://")[1]:e;return t=t==="wss"?"https":"http",[t,r].join("://")}function Zo(e,t,r){if(!e[t]||typeof e[t]!==r)throw new Error(`Missing or invalid "${t}" param`)}function Sn(e,t=pi){return Nn(e.split(bn),t)}function $o(e){return Sn(e).join(Rr)}function Ie(e,t){return e.filter(r=>t.includes(r)).length===e.length}function Nn(e,t=pi){return e.slice(Math.max(e.length-t,0))}function ts(e){return Object.fromEntries(e.entries())}function es(e){return new Map(Object.entries(e))}function rs(e,t){const r={};return Object.keys(e).forEach(i=>{r[i]=t(e[i])}),r}const is=e=>e;function In(e){return e.trim().replace(/^\w/,t=>t.toUpperCase())}function ns(e){return e.split(Rr).map(t=>In(t)).join(Rr)}function fs(e=tr.FIVE_MINUTES,t){const r=tr.toMiliseconds(e||tr.FIVE_MINUTES);let i,n,o;return{resolve:h=>{o&&i&&(clearTimeout(o),i(h))},reject:h=>{o&&n&&(clearTimeout(o),n(h))},done:()=>new Promise((h,p)=>{o=setTimeout(()=>{p(new Error(t))},r),i=h,n=p})}}function os(e,t,r){return new Promise(async(i,n)=>{const o=setTimeout(()=>n(new Error(r)),t);try{const h=await e;i(h)}catch(h){n(h)}clearTimeout(o)})}function gi(e,t){if(typeof t=="string"&&t.startsWith(`${e}:`))return t;if(e.toLowerCase()==="topic"){if(typeof t!="string")throw new Error('Value must be "string" for expirer target type: topic');return`topic:${t}`}else if(e.toLowerCase()==="id"){if(typeof t!="number")throw new Error('Value must be "number" for expirer target type: id');return`id:${t}`}throw new Error(`Unknown expirer target type: ${e}`)}function ss(e){return gi("topic",e)}function as(e){return gi("id",e)}function us(e){const[t,r]=e.split(":"),i={id:void 0,topic:void 0};if(t==="topic"&&typeof r=="string")i.topic=r;else if(t==="id"&&Number.isInteger(Number(r)))i.id=Number(r);else throw new Error(`Invalid target, expected id:number or topic:string, got ${t}:${r}`);return i}function hs(e,t){return tr.fromMiliseconds((t||Date.now())+tr.toMiliseconds(e))}function cs(e){return Date.now()>=tr.toMiliseconds(e)}function ls(e,t){return`${e}${t?`:${t}`:""}`}function ge(e=[],t=[]){return[...new Set([...e,...t])]}function _n(){return typeof window<"u"&&(!!window.TelegramWebviewProxy||!!window.Telegram||!!window.TelegramWebviewProxyProto)}async function ds({id:e,topic:t,wcDeepLink:r}){try{if(!r)return;const i=typeof r=="string"?JSON.parse(r):r;let n=i?.href;if(typeof n!="string")return;n.endsWith("/")&&(n=n.slice(0,-1));const o=`${n}/wc?requestId=${e}&sessionTopic=${t}`,h=Ge();h===Kt.browser?o.startsWith("https://")||o.startsWith("http://")||_n()?window.open(o,"_blank","noreferrer noopener"):window.open(o,"_self","noreferrer noopener"):h===Kt.reactNative&&typeof(global==null?void 0:global.Linking)<"u"&&await global.Linking.openURL(o)}catch(i){console.error(i)}}async function ps(e,t){try{return await e.getItem(t)||(vr()?localStorage.getItem(t):void 0)}catch(r){console.error(r)}}function mi(e,t){return e.filter(r=>t.includes(r))}var Bn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function vs(e){var t=e.default;if(typeof t=="function"){var r=function(){return t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(i){var n=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(r,i,n.get?n:{enumerable:!0,get:function(){return e[i]}})}),r}var Rn={exports:{}};/** + * [js-sha3]{@link https://github.com/emn178/js-sha3} + * + * @version 0.8.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2015-2018 + * @license MIT +- */(function(e){(function(){var t="input is invalid type",r="finalize already called",i=typeof window=="object",n=i?window:{};n.JS_SHA3_NO_WINDOW&&(i=!1);var o=!i&&typeof self=="object",h=!n.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;h?n=_n:o&&(n=self);var p=!n.JS_SHA3_NO_COMMON_JS&&!0&&e.exports,b=!n.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",g="0123456789abcdef".split(""),w=[31,7936,2031616,520093696],y=[4,1024,262144,67108864],S=[1,256,65536,16777216],I=[6,1536,393216,100663296],N=[0,8,16,24],R=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],F=[224,256,384,512],U=[128,256],Q=["hex","buffer","arrayBuffer","array","digest"],Bt={128:168,256:136};(n.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(u){return Object.prototype.toString.call(u)==="[object Array]"}),b&&(n.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(u){return typeof u=="object"&&u.buffer&&u.buffer.constructor===ArrayBuffer});for(var J=function(u,E,_){return function(B){return new s(u,E,u).update(B)[_]()}},H=function(u,E,_){return function(B,C){return new s(u,E,C).update(B)[_]()}},L=function(u,E,_){return function(B,C,D,P){return f["cshake"+u].update(B,C,D,P)[_]()}},Tt=function(u,E,_){return function(B,C,D,P){return f["kmac"+u].update(B,C,D,P)[_]()}},W=function(u,E,_,B){for(var C=0;C>5,this.byteCount=this.blockCount<<2,this.outputBlocks=_>>5,this.extraBytes=(_&31)>>3;for(var B=0;B<50;++B)this.s[B]=0}s.prototype.update=function(u){if(this.finalized)throw new Error(r);var E,_=typeof u;if(_!=="string"){if(_==="object"){if(u===null)throw new Error(t);if(b&&u.constructor===ArrayBuffer)u=new Uint8Array(u);else if(!Array.isArray(u)&&(!b||!ArrayBuffer.isView(u)))throw new Error(t)}else throw new Error(t);E=!0}for(var B=this.blocks,C=this.byteCount,D=u.length,P=this.blockCount,O=0,Ct=this.s,T,q;O>2]|=u[O]<>2]|=q<>2]|=(192|q>>6)<>2]|=(128|q&63)<=57344?(B[T>>2]|=(224|q>>12)<>2]|=(128|q>>6&63)<>2]|=(128|q&63)<>2]|=(240|q>>18)<>2]|=(128|q>>12&63)<>2]|=(128|q>>6&63)<>2]|=(128|q&63)<=C){for(this.start=T-C,this.block=B[P],T=0;T>8,_=u&255;_>0;)C.unshift(_),u=u>>8,_=u&255,++B;return E?C.push(B):C.unshift(B),this.update(C),C.length},s.prototype.encodeString=function(u){var E,_=typeof u;if(_!=="string"){if(_==="object"){if(u===null)throw new Error(t);if(b&&u.constructor===ArrayBuffer)u=new Uint8Array(u);else if(!Array.isArray(u)&&(!b||!ArrayBuffer.isView(u)))throw new Error(t)}else throw new Error(t);E=!0}var B=0,C=u.length;if(E)B=C;else for(var D=0;D=57344?B+=3:(P=65536+((P&1023)<<10|u.charCodeAt(++D)&1023),B+=4)}return B+=this.encode(B*8),this.update(u),B},s.prototype.bytepad=function(u,E){for(var _=this.encode(E),B=0;B>2]|=this.padding[E&3],this.lastByteIndex===this.byteCount)for(u[0]=u[_],E=1;E<_+1;++E)u[E]=0;for(u[_-1]|=2147483648,E=0;E<_;++E)B[E]^=u[E];k(B)}},s.prototype.toString=s.prototype.hex=function(){this.finalize();for(var u=this.blockCount,E=this.s,_=this.outputBlocks,B=this.extraBytes,C=0,D=0,P="",O;D<_;){for(C=0;C>4&15]+g[O&15]+g[O>>12&15]+g[O>>8&15]+g[O>>20&15]+g[O>>16&15]+g[O>>28&15]+g[O>>24&15];D%u===0&&(k(E),C=0)}return B&&(O=E[C],P+=g[O>>4&15]+g[O&15],B>1&&(P+=g[O>>12&15]+g[O>>8&15]),B>2&&(P+=g[O>>20&15]+g[O>>16&15])),P},s.prototype.arrayBuffer=function(){this.finalize();var u=this.blockCount,E=this.s,_=this.outputBlocks,B=this.extraBytes,C=0,D=0,P=this.outputBits>>3,O;B?O=new ArrayBuffer(_+1<<2):O=new ArrayBuffer(P);for(var Ct=new Uint32Array(O);D<_;){for(C=0;C>8&255,P[O+2]=Ct>>16&255,P[O+3]=Ct>>24&255;D%u===0&&k(E)}return B&&(O=D<<2,Ct=E[C],P[O]=Ct&255,B>1&&(P[O+1]=Ct>>8&255),B>2&&(P[O+2]=Ct>>16&255)),P};function v(u,E,_){s.call(this,u,E,_)}v.prototype=new s,v.prototype.finalize=function(){return this.encode(this.outputBits,!0),s.prototype.finalize.call(this)};var k=function(u){var E,_,B,C,D,P,O,Ct,T,q,Pe,X,Z,Te,$,tt,Fe,et,rt,De,it,nt,Ue,ft,ot,ke,st,at,qe,ut,ht,Ke,ct,lt,He,dt,pt,Le,vt,gt,ze,mt,At,je,bt,yt,Ve,wt,xt,Qe,Mt,Et,Je,St,Nt,Ye,It,_t,xe,Me,Ee,Se,Ne;for(B=0;B<48;B+=2)C=u[0]^u[10]^u[20]^u[30]^u[40],D=u[1]^u[11]^u[21]^u[31]^u[41],P=u[2]^u[12]^u[22]^u[32]^u[42],O=u[3]^u[13]^u[23]^u[33]^u[43],Ct=u[4]^u[14]^u[24]^u[34]^u[44],T=u[5]^u[15]^u[25]^u[35]^u[45],q=u[6]^u[16]^u[26]^u[36]^u[46],Pe=u[7]^u[17]^u[27]^u[37]^u[47],X=u[8]^u[18]^u[28]^u[38]^u[48],Z=u[9]^u[19]^u[29]^u[39]^u[49],E=X^(P<<1|O>>>31),_=Z^(O<<1|P>>>31),u[0]^=E,u[1]^=_,u[10]^=E,u[11]^=_,u[20]^=E,u[21]^=_,u[30]^=E,u[31]^=_,u[40]^=E,u[41]^=_,E=C^(Ct<<1|T>>>31),_=D^(T<<1|Ct>>>31),u[2]^=E,u[3]^=_,u[12]^=E,u[13]^=_,u[22]^=E,u[23]^=_,u[32]^=E,u[33]^=_,u[42]^=E,u[43]^=_,E=P^(q<<1|Pe>>>31),_=O^(Pe<<1|q>>>31),u[4]^=E,u[5]^=_,u[14]^=E,u[15]^=_,u[24]^=E,u[25]^=_,u[34]^=E,u[35]^=_,u[44]^=E,u[45]^=_,E=Ct^(X<<1|Z>>>31),_=T^(Z<<1|X>>>31),u[6]^=E,u[7]^=_,u[16]^=E,u[17]^=_,u[26]^=E,u[27]^=_,u[36]^=E,u[37]^=_,u[46]^=E,u[47]^=_,E=q^(C<<1|D>>>31),_=Pe^(D<<1|C>>>31),u[8]^=E,u[9]^=_,u[18]^=E,u[19]^=_,u[28]^=E,u[29]^=_,u[38]^=E,u[39]^=_,u[48]^=E,u[49]^=_,Te=u[0],$=u[1],yt=u[11]<<4|u[10]>>>28,Ve=u[10]<<4|u[11]>>>28,at=u[20]<<3|u[21]>>>29,qe=u[21]<<3|u[20]>>>29,Me=u[31]<<9|u[30]>>>23,Ee=u[30]<<9|u[31]>>>23,mt=u[40]<<18|u[41]>>>14,At=u[41]<<18|u[40]>>>14,lt=u[2]<<1|u[3]>>>31,He=u[3]<<1|u[2]>>>31,tt=u[13]<<12|u[12]>>>20,Fe=u[12]<<12|u[13]>>>20,wt=u[22]<<10|u[23]>>>22,xt=u[23]<<10|u[22]>>>22,ut=u[33]<<13|u[32]>>>19,ht=u[32]<<13|u[33]>>>19,Se=u[42]<<2|u[43]>>>30,Ne=u[43]<<2|u[42]>>>30,St=u[5]<<30|u[4]>>>2,Nt=u[4]<<30|u[5]>>>2,dt=u[14]<<6|u[15]>>>26,pt=u[15]<<6|u[14]>>>26,et=u[25]<<11|u[24]>>>21,rt=u[24]<<11|u[25]>>>21,Qe=u[34]<<15|u[35]>>>17,Mt=u[35]<<15|u[34]>>>17,Ke=u[45]<<29|u[44]>>>3,ct=u[44]<<29|u[45]>>>3,ft=u[6]<<28|u[7]>>>4,ot=u[7]<<28|u[6]>>>4,Ye=u[17]<<23|u[16]>>>9,It=u[16]<<23|u[17]>>>9,Le=u[26]<<25|u[27]>>>7,vt=u[27]<<25|u[26]>>>7,De=u[36]<<21|u[37]>>>11,it=u[37]<<21|u[36]>>>11,Et=u[47]<<24|u[46]>>>8,Je=u[46]<<24|u[47]>>>8,je=u[8]<<27|u[9]>>>5,bt=u[9]<<27|u[8]>>>5,ke=u[18]<<20|u[19]>>>12,st=u[19]<<20|u[18]>>>12,_t=u[29]<<7|u[28]>>>25,xe=u[28]<<7|u[29]>>>25,gt=u[38]<<8|u[39]>>>24,ze=u[39]<<8|u[38]>>>24,nt=u[48]<<14|u[49]>>>18,Ue=u[49]<<14|u[48]>>>18,u[0]=Te^~tt&et,u[1]=$^~Fe&rt,u[10]=ft^~ke&at,u[11]=ot^~st&qe,u[20]=lt^~dt&Le,u[21]=He^~pt&vt,u[30]=je^~yt&wt,u[31]=bt^~Ve&xt,u[40]=St^~Ye&_t,u[41]=Nt^~It&xe,u[2]=tt^~et&De,u[3]=Fe^~rt&it,u[12]=ke^~at&ut,u[13]=st^~qe&ht,u[22]=dt^~Le>,u[23]=pt^~vt&ze,u[32]=yt^~wt&Qe,u[33]=Ve^~xt&Mt,u[42]=Ye^~_t&Me,u[43]=It^~xe&Ee,u[4]=et^~De&nt,u[5]=rt^~it&Ue,u[14]=at^~ut&Ke,u[15]=qe^~ht&ct,u[24]=Le^~gt&mt,u[25]=vt^~ze&At,u[34]=wt^~Qe&Et,u[35]=xt^~Mt&Je,u[44]=_t^~Me&Se,u[45]=xe^~Ee&Ne,u[6]=De^~nt&Te,u[7]=it^~Ue&$,u[16]=ut^~Ke&ft,u[17]=ht^~ct&ot,u[26]=gt^~mt<,u[27]=ze^~At&He,u[36]=Qe^~Et&je,u[37]=Mt^~Je&bt,u[46]=Me^~Se&St,u[47]=Ee^~Ne&Nt,u[8]=nt^~Te&tt,u[9]=Ue^~$&Fe,u[18]=Ke^~ft&ke,u[19]=ct^~ot&st,u[28]=mt^~lt&dt,u[29]=At^~He&pt,u[38]=Et^~je&yt,u[39]=Je^~bt&Ve,u[48]=Se^~St&Ye,u[49]=Ne^~Nt&It,u[0]^=R[B],u[1]^=R[B+1]};if(p)e.exports=f;else for(c=0;c{try{if("test".normalize(t)!=="test")throw new Error("bad normalize")}catch{e.push(t)}}),e.length)throw new Error("missing "+e.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(e){return e.message}return null}const Pn=ms();var bi;(function(e){e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.OFF="OFF"})(bi||(bi={}));var ee;(function(e){e.UNKNOWN_ERROR="UNKNOWN_ERROR",e.NOT_IMPLEMENTED="NOT_IMPLEMENTED",e.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",e.NETWORK_ERROR="NETWORK_ERROR",e.SERVER_ERROR="SERVER_ERROR",e.TIMEOUT="TIMEOUT",e.BUFFER_OVERRUN="BUFFER_OVERRUN",e.NUMERIC_FAULT="NUMERIC_FAULT",e.MISSING_NEW="MISSING_NEW",e.INVALID_ARGUMENT="INVALID_ARGUMENT",e.MISSING_ARGUMENT="MISSING_ARGUMENT",e.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",e.CALL_EXCEPTION="CALL_EXCEPTION",e.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",e.NONCE_EXPIRED="NONCE_EXPIRED",e.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",e.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",e.TRANSACTION_REPLACED="TRANSACTION_REPLACED",e.ACTION_REJECTED="ACTION_REJECTED"})(ee||(ee={}));const Tn="0123456789abcdef";class z{constructor(t){Object.defineProperty(this,"version",{enumerable:!0,value:t,writable:!1})}_log(t,r){const i=t.toLowerCase();Cr[i]==null&&this.throwArgumentError("invalid log level name","logLevel",t),!(On>Cr[i])&&console.log.apply(console,r)}debug(...t){this._log(z.levels.DEBUG,t)}info(...t){this._log(z.levels.INFO,t)}warn(...t){this._log(z.levels.WARNING,t)}makeError(t,r,i){if(Cn)return this.makeError("censored error",r,{});r||(r=z.errors.UNKNOWN_ERROR),i||(i={});const n=[];Object.keys(i).forEach(b=>{const g=i[b];try{if(g instanceof Uint8Array){let w="";for(let y=0;y>4],w+=Tn[g[y]&15];n.push(b+"=Uint8Array(0x"+w+")")}else n.push(b+"="+JSON.stringify(g))}catch{n.push(b+"="+JSON.stringify(i[b].toString()))}}),n.push(`code=${r}`),n.push(`version=${this.version}`);const o=t;let h="";switch(r){case ee.NUMERIC_FAULT:{h="NUMERIC_FAULT";const b=t;switch(b){case"overflow":case"underflow":case"division-by-zero":h+="-"+b;break;case"negative-power":case"negative-width":h+="-unsupported";break;case"unbound-bitwise-result":h+="-unbound-result";break}break}case ee.CALL_EXCEPTION:case ee.INSUFFICIENT_FUNDS:case ee.MISSING_NEW:case ee.NONCE_EXPIRED:case ee.REPLACEMENT_UNDERPRICED:case ee.TRANSACTION_REPLACED:case ee.UNPREDICTABLE_GAS_LIMIT:h=r;break}h&&(t+=" [ See: https://links.ethers.org/v5-errors-"+h+" ]"),n.length&&(t+=" ("+n.join(", ")+")");const p=new Error(t);return p.reason=o,p.code=r,Object.keys(i).forEach(function(b){p[b]=i[b]}),p}throwError(t,r,i){throw this.makeError(t,r,i)}throwArgumentError(t,r,i){return this.throwError(t,z.errors.INVALID_ARGUMENT,{argument:r,value:i})}assert(t,r,i,n){t||this.throwError(r,i,n)}assertArgument(t,r,i,n){t||this.throwArgumentError(r,i,n)}checkNormalize(t){Pn&&this.throwError("platform missing String.prototype.normalize",z.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:Pn})}checkSafeUint53(t,r){typeof t=="number"&&(r==null&&(r="value not safe"),(t<0||t>=9007199254740991)&&this.throwError(r,z.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:t}),t%1&&this.throwError(r,z.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:t}))}checkArgumentCount(t,r,i){i?i=": "+i:i="",tr&&this.throwError("too many arguments"+i,z.errors.UNEXPECTED_ARGUMENT,{count:t,expectedCount:r})}checkNew(t,r){(t===Object||t==null)&&this.throwError("missing new",z.errors.MISSING_NEW,{name:r.name})}checkAbstract(t,r){t===r?this.throwError("cannot instantiate abstract class "+JSON.stringify(r.name)+" directly; use a sub-class",z.errors.UNSUPPORTED_OPERATION,{name:t.name,operation:"new"}):(t===Object||t==null)&&this.throwError("missing new",z.errors.MISSING_NEW,{name:r.name})}static globalLogger(){return Ai||(Ai=new z(gs)),Ai}static setCensorship(t,r){if(!t&&r&&this.globalLogger().throwError("cannot permanently disable censorship",z.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),Rn){if(!t)return;this.globalLogger().throwError("error censorship permanent",z.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}Cn=!!t,Rn=!!r}static setLogLevel(t){const r=Cr[t.toLowerCase()];if(r==null){z.globalLogger().warn("invalid log level - "+t);return}On=r}static from(t){return new z(t)}}z.errors=ee,z.levels=bi;const As="bytes/5.7.0",Ft=new z(As);function Fn(e){return!!e.toHexString}function ir(e){return e.slice||(e.slice=function(){const t=Array.prototype.slice.call(arguments);return ir(new Uint8Array(Array.prototype.slice.apply(e,t)))}),e}function bs(e){return Qt(e)&&!(e.length%2)||nr(e)}function Dn(e){return typeof e=="number"&&e==e&&e%1===0}function nr(e){if(e==null)return!1;if(e.constructor===Uint8Array)return!0;if(typeof e=="string"||!Dn(e.length)||e.length<0)return!1;for(let t=0;t=256)return!1}return!0}function Pt(e,t){if(t||(t={}),typeof e=="number"){Ft.checkSafeUint53(e,"invalid arrayify value");const r=[];for(;e;)r.unshift(e&255),e=parseInt(String(e/256));return r.length===0&&r.push(0),ir(new Uint8Array(r))}if(t.allowMissingPrefix&&typeof e=="string"&&e.substring(0,2)!=="0x"&&(e="0x"+e),Fn(e)&&(e=e.toHexString()),Qt(e)){let r=e.substring(2);r.length%2&&(t.hexPad==="left"?r="0"+r:t.hexPad==="right"?r+="0":Ft.throwArgumentError("hex data is odd-length","value",e));const i=[];for(let n=0;nPt(n)),r=t.reduce((n,o)=>n+o.length,0),i=new Uint8Array(r);return t.reduce((n,o)=>(i.set(o,n),n+o.length),0),ir(i)}function ws(e,t){e=Pt(e),e.length>t&&Ft.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(t);return r.set(e,t-e.length),ir(r)}function Qt(e,t){return!(typeof e!="string"||!e.match(/^0x[0-9A-Fa-f]*$/)||t&&e.length!==2+2*t)}const yi="0123456789abcdef";function Ht(e,t){if(t||(t={}),typeof e=="number"){Ft.checkSafeUint53(e,"invalid hexlify value");let r="";for(;e;)r=yi[e&15]+r,e=Math.floor(e/16);return r.length?(r.length%2&&(r="0"+r),"0x"+r):"0x00"}if(typeof e=="bigint")return e=e.toString(16),e.length%2?"0x0"+e:"0x"+e;if(t.allowMissingPrefix&&typeof e=="string"&&e.substring(0,2)!=="0x"&&(e="0x"+e),Fn(e))return e.toHexString();if(Qt(e))return e.length%2&&(t.hexPad==="left"?e="0x0"+e.substring(2):t.hexPad==="right"?e+="0":Ft.throwArgumentError("hex data is odd-length","value",e)),e.toLowerCase();if(nr(e)){let r="0x";for(let i=0;i>4]+yi[n&15]}return r}return Ft.throwArgumentError("invalid hexlify value","value",e)}function xs(e){if(typeof e!="string")e=Ht(e);else if(!Qt(e)||e.length%2)return null;return(e.length-2)/2}function Un(e,t,r){return typeof e!="string"?e=Ht(e):(!Qt(e)||e.length%2)&&Ft.throwArgumentError("invalid hexData","value",e),t=2+2*t,r!=null?"0x"+e.substring(t,2+2*r):"0x"+e.substring(t)}function fe(e,t){for(typeof e!="string"?e=Ht(e):Qt(e)||Ft.throwArgumentError("invalid hex string","value",e),e.length>2*t+2&&Ft.throwArgumentError("value out of range","value",arguments[1]);e.length<2*t+2;)e="0x0"+e.substring(2);return e}function kn(e){const t={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(bs(e)){let r=Pt(e);r.length===64?(t.v=27+(r[32]>>7),r[32]&=127,t.r=Ht(r.slice(0,32)),t.s=Ht(r.slice(32,64))):r.length===65?(t.r=Ht(r.slice(0,32)),t.s=Ht(r.slice(32,64)),t.v=r[64]):Ft.throwArgumentError("invalid signature string","signature",e),t.v<27&&(t.v===0||t.v===1?t.v+=27:Ft.throwArgumentError("signature invalid v byte","signature",e)),t.recoveryParam=1-t.v%2,t.recoveryParam&&(r[32]|=128),t._vs=Ht(r.slice(32,64))}else{if(t.r=e.r,t.s=e.s,t.v=e.v,t.recoveryParam=e.recoveryParam,t._vs=e._vs,t._vs!=null){const n=ws(Pt(t._vs),32);t._vs=Ht(n);const o=n[0]>=128?1:0;t.recoveryParam==null?t.recoveryParam=o:t.recoveryParam!==o&&Ft.throwArgumentError("signature recoveryParam mismatch _vs","signature",e),n[0]&=127;const h=Ht(n);t.s==null?t.s=h:t.s!==h&&Ft.throwArgumentError("signature v mismatch _vs","signature",e)}if(t.recoveryParam==null)t.v==null?Ft.throwArgumentError("signature missing v and recoveryParam","signature",e):t.v===0||t.v===1?t.recoveryParam=t.v:t.recoveryParam=1-t.v%2;else if(t.v==null)t.v=27+t.recoveryParam;else{const n=t.v===0||t.v===1?t.v:1-t.v%2;t.recoveryParam!==n&&Ft.throwArgumentError("signature recoveryParam mismatch v","signature",e)}t.r==null||!Qt(t.r)?Ft.throwArgumentError("signature missing or invalid r","signature",e):t.r=fe(t.r,32),t.s==null||!Qt(t.s)?Ft.throwArgumentError("signature missing or invalid s","signature",e):t.s=fe(t.s,32);const r=Pt(t.s);r[0]>=128&&Ft.throwArgumentError("signature s out of range","signature",e),t.recoveryParam&&(r[0]|=128);const i=Ht(r);t._vs&&(Qt(t._vs)||Ft.throwArgumentError("signature invalid _vs","signature",e),t._vs=fe(t._vs,32)),t._vs==null?t._vs=i:t._vs!==i&&Ft.throwArgumentError("signature _vs mismatch v and s","signature",e)}return t.yParityAndS=t._vs,t.compact=t.r+t.yParityAndS.substring(2),t}function wi(e){return"0x"+vs.keccak_256(Pt(e))}var qn={exports:{}},Ms={},Es=Object.freeze({__proto__:null,default:Ms}),Ss=ps(Es);(function(e){(function(t,r){function i(A,f){if(!A)throw new Error(f||"Assertion failed")}function n(A,f){A.super_=f;var a=function(){};a.prototype=f.prototype,A.prototype=new a,A.prototype.constructor=A}function o(A,f,a){if(o.isBN(A))return A;this.negative=0,this.words=null,this.length=0,this.red=null,A!==null&&((f==="le"||f==="be")&&(a=f,f=10),this._init(A||0,f||10,a||"be"))}typeof t=="object"?t.exports=o:r.BN=o,o.BN=o,o.wordSize=26;var h;try{typeof window<"u"&&typeof window.Buffer<"u"?h=window.Buffer:h=Ss.Buffer}catch{}o.isBN=function(f){return f instanceof o?!0:f!==null&&typeof f=="object"&&f.constructor.wordSize===o.wordSize&&Array.isArray(f.words)},o.max=function(f,a){return f.cmp(a)>0?f:a},o.min=function(f,a){return f.cmp(a)<0?f:a},o.prototype._init=function(f,a,c){if(typeof f=="number")return this._initNumber(f,a,c);if(typeof f=="object")return this._initArray(f,a,c);a==="hex"&&(a=16),i(a===(a|0)&&a>=2&&a<=36),f=f.toString().replace(/\s+/g,"");var d=0;f[0]==="-"&&(d++,this.negative=1),d=0;d-=3)x=f[d]|f[d-1]<<8|f[d-2]<<16,this.words[m]|=x<>>26-M&67108863,M+=24,M>=26&&(M-=26,m++);else if(c==="le")for(d=0,m=0;d>>26-M&67108863,M+=24,M>=26&&(M-=26,m++);return this._strip()};function p(A,f){var a=A.charCodeAt(f);if(a>=48&&a<=57)return a-48;if(a>=65&&a<=70)return a-55;if(a>=97&&a<=102)return a-87;i(!1,"Invalid character in "+A)}function b(A,f,a){var c=p(A,a);return a-1>=f&&(c|=p(A,a-1)<<4),c}o.prototype._parseHex=function(f,a,c){this.length=Math.ceil((f.length-a)/6),this.words=new Array(this.length);for(var d=0;d=a;d-=2)M=b(f,a,d)<=18?(m-=18,x+=1,this.words[x]|=M>>>26):m+=8;else{var l=f.length-a;for(d=l%2===0?a+1:a;d=18?(m-=18,x+=1,this.words[x]|=M>>>26):m+=8}this._strip()};function g(A,f,a,c){for(var d=0,m=0,x=Math.min(A.length,a),M=f;M=49?m=l-49+10:l>=17?m=l-17+10:m=l,i(l>=0&&m1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},o.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{o.prototype[Symbol.for("nodejs.util.inspect.custom")]=y}catch{o.prototype.inspect=y}else o.prototype.inspect=y;function y(){return(this.red?""}var S=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],I=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],N=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(f,a){f=f||10,a=a|0||1;var c;if(f===16||f==="hex"){c="";for(var d=0,m=0,x=0;x>>24-d&16777215,d+=2,d>=26&&(d-=26,x--),m!==0||x!==this.length-1?c=S[6-l.length]+l+c:c=l+c}for(m!==0&&(c=m.toString(16)+c);c.length%a!==0;)c="0"+c;return this.negative!==0&&(c="-"+c),c}if(f===(f|0)&&f>=2&&f<=36){var s=I[f],v=N[f];c="";var k=this.clone();for(k.negative=0;!k.isZero();){var u=k.modrn(v).toString(f);k=k.idivn(v),k.isZero()?c=u+c:c=S[s-u.length]+u+c}for(this.isZero()&&(c="0"+c);c.length%a!==0;)c="0"+c;return this.negative!==0&&(c="-"+c),c}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var f=this.words[0];return this.length===2?f+=this.words[1]*67108864:this.length===3&&this.words[2]===1?f+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-f:f},o.prototype.toJSON=function(){return this.toString(16,2)},h&&(o.prototype.toBuffer=function(f,a){return this.toArrayLike(h,f,a)}),o.prototype.toArray=function(f,a){return this.toArrayLike(Array,f,a)};var R=function(f,a){return f.allocUnsafe?f.allocUnsafe(a):new f(a)};o.prototype.toArrayLike=function(f,a,c){this._strip();var d=this.byteLength(),m=c||Math.max(1,d);i(d<=m,"byte array longer than desired length"),i(m>0,"Requested array length <= 0");var x=R(f,m),M=a==="le"?"LE":"BE";return this["_toArrayLike"+M](x,d),x},o.prototype._toArrayLikeLE=function(f,a){for(var c=0,d=0,m=0,x=0;m>8&255),c>16&255),x===6?(c>24&255),d=0,x=0):(d=M>>>24,x+=2)}if(c=0&&(f[c--]=M>>8&255),c>=0&&(f[c--]=M>>16&255),x===6?(c>=0&&(f[c--]=M>>24&255),d=0,x=0):(d=M>>>24,x+=2)}if(c>=0)for(f[c--]=d;c>=0;)f[c--]=0},Math.clz32?o.prototype._countBits=function(f){return 32-Math.clz32(f)}:o.prototype._countBits=function(f){var a=f,c=0;return a>=4096&&(c+=13,a>>>=13),a>=64&&(c+=7,a>>>=7),a>=8&&(c+=4,a>>>=4),a>=2&&(c+=2,a>>>=2),c+a},o.prototype._zeroBits=function(f){if(f===0)return 26;var a=f,c=0;return a&8191||(c+=13,a>>>=13),a&127||(c+=7,a>>>=7),a&15||(c+=4,a>>>=4),a&3||(c+=2,a>>>=2),a&1||c++,c},o.prototype.bitLength=function(){var f=this.words[this.length-1],a=this._countBits(f);return(this.length-1)*26+a};function F(A){for(var f=new Array(A.bitLength()),a=0;a>>d&1}return f}o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var f=0,a=0;af.length?this.clone().ior(f):f.clone().ior(this)},o.prototype.uor=function(f){return this.length>f.length?this.clone().iuor(f):f.clone().iuor(this)},o.prototype.iuand=function(f){var a;this.length>f.length?a=f:a=this;for(var c=0;cf.length?this.clone().iand(f):f.clone().iand(this)},o.prototype.uand=function(f){return this.length>f.length?this.clone().iuand(f):f.clone().iuand(this)},o.prototype.iuxor=function(f){var a,c;this.length>f.length?(a=this,c=f):(a=f,c=this);for(var d=0;df.length?this.clone().ixor(f):f.clone().ixor(this)},o.prototype.uxor=function(f){return this.length>f.length?this.clone().iuxor(f):f.clone().iuxor(this)},o.prototype.inotn=function(f){i(typeof f=="number"&&f>=0);var a=Math.ceil(f/26)|0,c=f%26;this._expand(a),c>0&&a--;for(var d=0;d0&&(this.words[d]=~this.words[d]&67108863>>26-c),this._strip()},o.prototype.notn=function(f){return this.clone().inotn(f)},o.prototype.setn=function(f,a){i(typeof f=="number"&&f>=0);var c=f/26|0,d=f%26;return this._expand(c+1),a?this.words[c]=this.words[c]|1<f.length?(c=this,d=f):(c=f,d=this);for(var m=0,x=0;x>>26;for(;m!==0&&x>>26;if(this.length=c.length,m!==0)this.words[this.length]=m,this.length++;else if(c!==this)for(;xf.length?this.clone().iadd(f):f.clone().iadd(this)},o.prototype.isub=function(f){if(f.negative!==0){f.negative=0;var a=this.iadd(f);return f.negative=1,a._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(f),this.negative=1,this._normSign();var c=this.cmp(f);if(c===0)return this.negative=0,this.length=1,this.words[0]=0,this;var d,m;c>0?(d=this,m=f):(d=f,m=this);for(var x=0,M=0;M>26,this.words[M]=a&67108863;for(;x!==0&&M>26,this.words[M]=a&67108863;if(x===0&&M>>26,k=l&67108863,u=Math.min(s,f.length-1),E=Math.max(0,s-A.length+1);E<=u;E++){var _=s-E|0;d=A.words[_]|0,m=f.words[E]|0,x=d*m+k,v+=x/67108864|0,k=x&67108863}a.words[s]=k|0,l=v|0}return l!==0?a.words[s]=l|0:a.length--,a._strip()}var Q=function(f,a,c){var d=f.words,m=a.words,x=c.words,M=0,l,s,v,k=d[0]|0,u=k&8191,E=k>>>13,_=d[1]|0,B=_&8191,C=_>>>13,D=d[2]|0,P=D&8191,O=D>>>13,Ct=d[3]|0,T=Ct&8191,q=Ct>>>13,Pe=d[4]|0,X=Pe&8191,Z=Pe>>>13,Te=d[5]|0,$=Te&8191,tt=Te>>>13,Fe=d[6]|0,et=Fe&8191,rt=Fe>>>13,De=d[7]|0,it=De&8191,nt=De>>>13,Ue=d[8]|0,ft=Ue&8191,ot=Ue>>>13,ke=d[9]|0,st=ke&8191,at=ke>>>13,qe=m[0]|0,ut=qe&8191,ht=qe>>>13,Ke=m[1]|0,ct=Ke&8191,lt=Ke>>>13,He=m[2]|0,dt=He&8191,pt=He>>>13,Le=m[3]|0,vt=Le&8191,gt=Le>>>13,ze=m[4]|0,mt=ze&8191,At=ze>>>13,je=m[5]|0,bt=je&8191,yt=je>>>13,Ve=m[6]|0,wt=Ve&8191,xt=Ve>>>13,Qe=m[7]|0,Mt=Qe&8191,Et=Qe>>>13,Je=m[8]|0,St=Je&8191,Nt=Je>>>13,Ye=m[9]|0,It=Ye&8191,_t=Ye>>>13;c.negative=f.negative^a.negative,c.length=19,l=Math.imul(u,ut),s=Math.imul(u,ht),s=s+Math.imul(E,ut)|0,v=Math.imul(E,ht);var xe=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(xe>>>26)|0,xe&=67108863,l=Math.imul(B,ut),s=Math.imul(B,ht),s=s+Math.imul(C,ut)|0,v=Math.imul(C,ht),l=l+Math.imul(u,ct)|0,s=s+Math.imul(u,lt)|0,s=s+Math.imul(E,ct)|0,v=v+Math.imul(E,lt)|0;var Me=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Me>>>26)|0,Me&=67108863,l=Math.imul(P,ut),s=Math.imul(P,ht),s=s+Math.imul(O,ut)|0,v=Math.imul(O,ht),l=l+Math.imul(B,ct)|0,s=s+Math.imul(B,lt)|0,s=s+Math.imul(C,ct)|0,v=v+Math.imul(C,lt)|0,l=l+Math.imul(u,dt)|0,s=s+Math.imul(u,pt)|0,s=s+Math.imul(E,dt)|0,v=v+Math.imul(E,pt)|0;var Ee=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,l=Math.imul(T,ut),s=Math.imul(T,ht),s=s+Math.imul(q,ut)|0,v=Math.imul(q,ht),l=l+Math.imul(P,ct)|0,s=s+Math.imul(P,lt)|0,s=s+Math.imul(O,ct)|0,v=v+Math.imul(O,lt)|0,l=l+Math.imul(B,dt)|0,s=s+Math.imul(B,pt)|0,s=s+Math.imul(C,dt)|0,v=v+Math.imul(C,pt)|0,l=l+Math.imul(u,vt)|0,s=s+Math.imul(u,gt)|0,s=s+Math.imul(E,vt)|0,v=v+Math.imul(E,gt)|0;var Se=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Se>>>26)|0,Se&=67108863,l=Math.imul(X,ut),s=Math.imul(X,ht),s=s+Math.imul(Z,ut)|0,v=Math.imul(Z,ht),l=l+Math.imul(T,ct)|0,s=s+Math.imul(T,lt)|0,s=s+Math.imul(q,ct)|0,v=v+Math.imul(q,lt)|0,l=l+Math.imul(P,dt)|0,s=s+Math.imul(P,pt)|0,s=s+Math.imul(O,dt)|0,v=v+Math.imul(O,pt)|0,l=l+Math.imul(B,vt)|0,s=s+Math.imul(B,gt)|0,s=s+Math.imul(C,vt)|0,v=v+Math.imul(C,gt)|0,l=l+Math.imul(u,mt)|0,s=s+Math.imul(u,At)|0,s=s+Math.imul(E,mt)|0,v=v+Math.imul(E,At)|0;var Ne=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,l=Math.imul($,ut),s=Math.imul($,ht),s=s+Math.imul(tt,ut)|0,v=Math.imul(tt,ht),l=l+Math.imul(X,ct)|0,s=s+Math.imul(X,lt)|0,s=s+Math.imul(Z,ct)|0,v=v+Math.imul(Z,lt)|0,l=l+Math.imul(T,dt)|0,s=s+Math.imul(T,pt)|0,s=s+Math.imul(q,dt)|0,v=v+Math.imul(q,pt)|0,l=l+Math.imul(P,vt)|0,s=s+Math.imul(P,gt)|0,s=s+Math.imul(O,vt)|0,v=v+Math.imul(O,gt)|0,l=l+Math.imul(B,mt)|0,s=s+Math.imul(B,At)|0,s=s+Math.imul(C,mt)|0,v=v+Math.imul(C,At)|0,l=l+Math.imul(u,bt)|0,s=s+Math.imul(u,yt)|0,s=s+Math.imul(E,bt)|0,v=v+Math.imul(E,yt)|0;var Xr=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Xr>>>26)|0,Xr&=67108863,l=Math.imul(et,ut),s=Math.imul(et,ht),s=s+Math.imul(rt,ut)|0,v=Math.imul(rt,ht),l=l+Math.imul($,ct)|0,s=s+Math.imul($,lt)|0,s=s+Math.imul(tt,ct)|0,v=v+Math.imul(tt,lt)|0,l=l+Math.imul(X,dt)|0,s=s+Math.imul(X,pt)|0,s=s+Math.imul(Z,dt)|0,v=v+Math.imul(Z,pt)|0,l=l+Math.imul(T,vt)|0,s=s+Math.imul(T,gt)|0,s=s+Math.imul(q,vt)|0,v=v+Math.imul(q,gt)|0,l=l+Math.imul(P,mt)|0,s=s+Math.imul(P,At)|0,s=s+Math.imul(O,mt)|0,v=v+Math.imul(O,At)|0,l=l+Math.imul(B,bt)|0,s=s+Math.imul(B,yt)|0,s=s+Math.imul(C,bt)|0,v=v+Math.imul(C,yt)|0,l=l+Math.imul(u,wt)|0,s=s+Math.imul(u,xt)|0,s=s+Math.imul(E,wt)|0,v=v+Math.imul(E,xt)|0;var Zr=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Zr>>>26)|0,Zr&=67108863,l=Math.imul(it,ut),s=Math.imul(it,ht),s=s+Math.imul(nt,ut)|0,v=Math.imul(nt,ht),l=l+Math.imul(et,ct)|0,s=s+Math.imul(et,lt)|0,s=s+Math.imul(rt,ct)|0,v=v+Math.imul(rt,lt)|0,l=l+Math.imul($,dt)|0,s=s+Math.imul($,pt)|0,s=s+Math.imul(tt,dt)|0,v=v+Math.imul(tt,pt)|0,l=l+Math.imul(X,vt)|0,s=s+Math.imul(X,gt)|0,s=s+Math.imul(Z,vt)|0,v=v+Math.imul(Z,gt)|0,l=l+Math.imul(T,mt)|0,s=s+Math.imul(T,At)|0,s=s+Math.imul(q,mt)|0,v=v+Math.imul(q,At)|0,l=l+Math.imul(P,bt)|0,s=s+Math.imul(P,yt)|0,s=s+Math.imul(O,bt)|0,v=v+Math.imul(O,yt)|0,l=l+Math.imul(B,wt)|0,s=s+Math.imul(B,xt)|0,s=s+Math.imul(C,wt)|0,v=v+Math.imul(C,xt)|0,l=l+Math.imul(u,Mt)|0,s=s+Math.imul(u,Et)|0,s=s+Math.imul(E,Mt)|0,v=v+Math.imul(E,Et)|0;var $r=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+($r>>>26)|0,$r&=67108863,l=Math.imul(ft,ut),s=Math.imul(ft,ht),s=s+Math.imul(ot,ut)|0,v=Math.imul(ot,ht),l=l+Math.imul(it,ct)|0,s=s+Math.imul(it,lt)|0,s=s+Math.imul(nt,ct)|0,v=v+Math.imul(nt,lt)|0,l=l+Math.imul(et,dt)|0,s=s+Math.imul(et,pt)|0,s=s+Math.imul(rt,dt)|0,v=v+Math.imul(rt,pt)|0,l=l+Math.imul($,vt)|0,s=s+Math.imul($,gt)|0,s=s+Math.imul(tt,vt)|0,v=v+Math.imul(tt,gt)|0,l=l+Math.imul(X,mt)|0,s=s+Math.imul(X,At)|0,s=s+Math.imul(Z,mt)|0,v=v+Math.imul(Z,At)|0,l=l+Math.imul(T,bt)|0,s=s+Math.imul(T,yt)|0,s=s+Math.imul(q,bt)|0,v=v+Math.imul(q,yt)|0,l=l+Math.imul(P,wt)|0,s=s+Math.imul(P,xt)|0,s=s+Math.imul(O,wt)|0,v=v+Math.imul(O,xt)|0,l=l+Math.imul(B,Mt)|0,s=s+Math.imul(B,Et)|0,s=s+Math.imul(C,Mt)|0,v=v+Math.imul(C,Et)|0,l=l+Math.imul(u,St)|0,s=s+Math.imul(u,Nt)|0,s=s+Math.imul(E,St)|0,v=v+Math.imul(E,Nt)|0;var ti=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ti>>>26)|0,ti&=67108863,l=Math.imul(st,ut),s=Math.imul(st,ht),s=s+Math.imul(at,ut)|0,v=Math.imul(at,ht),l=l+Math.imul(ft,ct)|0,s=s+Math.imul(ft,lt)|0,s=s+Math.imul(ot,ct)|0,v=v+Math.imul(ot,lt)|0,l=l+Math.imul(it,dt)|0,s=s+Math.imul(it,pt)|0,s=s+Math.imul(nt,dt)|0,v=v+Math.imul(nt,pt)|0,l=l+Math.imul(et,vt)|0,s=s+Math.imul(et,gt)|0,s=s+Math.imul(rt,vt)|0,v=v+Math.imul(rt,gt)|0,l=l+Math.imul($,mt)|0,s=s+Math.imul($,At)|0,s=s+Math.imul(tt,mt)|0,v=v+Math.imul(tt,At)|0,l=l+Math.imul(X,bt)|0,s=s+Math.imul(X,yt)|0,s=s+Math.imul(Z,bt)|0,v=v+Math.imul(Z,yt)|0,l=l+Math.imul(T,wt)|0,s=s+Math.imul(T,xt)|0,s=s+Math.imul(q,wt)|0,v=v+Math.imul(q,xt)|0,l=l+Math.imul(P,Mt)|0,s=s+Math.imul(P,Et)|0,s=s+Math.imul(O,Mt)|0,v=v+Math.imul(O,Et)|0,l=l+Math.imul(B,St)|0,s=s+Math.imul(B,Nt)|0,s=s+Math.imul(C,St)|0,v=v+Math.imul(C,Nt)|0,l=l+Math.imul(u,It)|0,s=s+Math.imul(u,_t)|0,s=s+Math.imul(E,It)|0,v=v+Math.imul(E,_t)|0;var ei=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ei>>>26)|0,ei&=67108863,l=Math.imul(st,ct),s=Math.imul(st,lt),s=s+Math.imul(at,ct)|0,v=Math.imul(at,lt),l=l+Math.imul(ft,dt)|0,s=s+Math.imul(ft,pt)|0,s=s+Math.imul(ot,dt)|0,v=v+Math.imul(ot,pt)|0,l=l+Math.imul(it,vt)|0,s=s+Math.imul(it,gt)|0,s=s+Math.imul(nt,vt)|0,v=v+Math.imul(nt,gt)|0,l=l+Math.imul(et,mt)|0,s=s+Math.imul(et,At)|0,s=s+Math.imul(rt,mt)|0,v=v+Math.imul(rt,At)|0,l=l+Math.imul($,bt)|0,s=s+Math.imul($,yt)|0,s=s+Math.imul(tt,bt)|0,v=v+Math.imul(tt,yt)|0,l=l+Math.imul(X,wt)|0,s=s+Math.imul(X,xt)|0,s=s+Math.imul(Z,wt)|0,v=v+Math.imul(Z,xt)|0,l=l+Math.imul(T,Mt)|0,s=s+Math.imul(T,Et)|0,s=s+Math.imul(q,Mt)|0,v=v+Math.imul(q,Et)|0,l=l+Math.imul(P,St)|0,s=s+Math.imul(P,Nt)|0,s=s+Math.imul(O,St)|0,v=v+Math.imul(O,Nt)|0,l=l+Math.imul(B,It)|0,s=s+Math.imul(B,_t)|0,s=s+Math.imul(C,It)|0,v=v+Math.imul(C,_t)|0;var ri=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ri>>>26)|0,ri&=67108863,l=Math.imul(st,dt),s=Math.imul(st,pt),s=s+Math.imul(at,dt)|0,v=Math.imul(at,pt),l=l+Math.imul(ft,vt)|0,s=s+Math.imul(ft,gt)|0,s=s+Math.imul(ot,vt)|0,v=v+Math.imul(ot,gt)|0,l=l+Math.imul(it,mt)|0,s=s+Math.imul(it,At)|0,s=s+Math.imul(nt,mt)|0,v=v+Math.imul(nt,At)|0,l=l+Math.imul(et,bt)|0,s=s+Math.imul(et,yt)|0,s=s+Math.imul(rt,bt)|0,v=v+Math.imul(rt,yt)|0,l=l+Math.imul($,wt)|0,s=s+Math.imul($,xt)|0,s=s+Math.imul(tt,wt)|0,v=v+Math.imul(tt,xt)|0,l=l+Math.imul(X,Mt)|0,s=s+Math.imul(X,Et)|0,s=s+Math.imul(Z,Mt)|0,v=v+Math.imul(Z,Et)|0,l=l+Math.imul(T,St)|0,s=s+Math.imul(T,Nt)|0,s=s+Math.imul(q,St)|0,v=v+Math.imul(q,Nt)|0,l=l+Math.imul(P,It)|0,s=s+Math.imul(P,_t)|0,s=s+Math.imul(O,It)|0,v=v+Math.imul(O,_t)|0;var ii=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ii>>>26)|0,ii&=67108863,l=Math.imul(st,vt),s=Math.imul(st,gt),s=s+Math.imul(at,vt)|0,v=Math.imul(at,gt),l=l+Math.imul(ft,mt)|0,s=s+Math.imul(ft,At)|0,s=s+Math.imul(ot,mt)|0,v=v+Math.imul(ot,At)|0,l=l+Math.imul(it,bt)|0,s=s+Math.imul(it,yt)|0,s=s+Math.imul(nt,bt)|0,v=v+Math.imul(nt,yt)|0,l=l+Math.imul(et,wt)|0,s=s+Math.imul(et,xt)|0,s=s+Math.imul(rt,wt)|0,v=v+Math.imul(rt,xt)|0,l=l+Math.imul($,Mt)|0,s=s+Math.imul($,Et)|0,s=s+Math.imul(tt,Mt)|0,v=v+Math.imul(tt,Et)|0,l=l+Math.imul(X,St)|0,s=s+Math.imul(X,Nt)|0,s=s+Math.imul(Z,St)|0,v=v+Math.imul(Z,Nt)|0,l=l+Math.imul(T,It)|0,s=s+Math.imul(T,_t)|0,s=s+Math.imul(q,It)|0,v=v+Math.imul(q,_t)|0;var ni=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ni>>>26)|0,ni&=67108863,l=Math.imul(st,mt),s=Math.imul(st,At),s=s+Math.imul(at,mt)|0,v=Math.imul(at,At),l=l+Math.imul(ft,bt)|0,s=s+Math.imul(ft,yt)|0,s=s+Math.imul(ot,bt)|0,v=v+Math.imul(ot,yt)|0,l=l+Math.imul(it,wt)|0,s=s+Math.imul(it,xt)|0,s=s+Math.imul(nt,wt)|0,v=v+Math.imul(nt,xt)|0,l=l+Math.imul(et,Mt)|0,s=s+Math.imul(et,Et)|0,s=s+Math.imul(rt,Mt)|0,v=v+Math.imul(rt,Et)|0,l=l+Math.imul($,St)|0,s=s+Math.imul($,Nt)|0,s=s+Math.imul(tt,St)|0,v=v+Math.imul(tt,Nt)|0,l=l+Math.imul(X,It)|0,s=s+Math.imul(X,_t)|0,s=s+Math.imul(Z,It)|0,v=v+Math.imul(Z,_t)|0;var fi=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(fi>>>26)|0,fi&=67108863,l=Math.imul(st,bt),s=Math.imul(st,yt),s=s+Math.imul(at,bt)|0,v=Math.imul(at,yt),l=l+Math.imul(ft,wt)|0,s=s+Math.imul(ft,xt)|0,s=s+Math.imul(ot,wt)|0,v=v+Math.imul(ot,xt)|0,l=l+Math.imul(it,Mt)|0,s=s+Math.imul(it,Et)|0,s=s+Math.imul(nt,Mt)|0,v=v+Math.imul(nt,Et)|0,l=l+Math.imul(et,St)|0,s=s+Math.imul(et,Nt)|0,s=s+Math.imul(rt,St)|0,v=v+Math.imul(rt,Nt)|0,l=l+Math.imul($,It)|0,s=s+Math.imul($,_t)|0,s=s+Math.imul(tt,It)|0,v=v+Math.imul(tt,_t)|0;var oi=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(oi>>>26)|0,oi&=67108863,l=Math.imul(st,wt),s=Math.imul(st,xt),s=s+Math.imul(at,wt)|0,v=Math.imul(at,xt),l=l+Math.imul(ft,Mt)|0,s=s+Math.imul(ft,Et)|0,s=s+Math.imul(ot,Mt)|0,v=v+Math.imul(ot,Et)|0,l=l+Math.imul(it,St)|0,s=s+Math.imul(it,Nt)|0,s=s+Math.imul(nt,St)|0,v=v+Math.imul(nt,Nt)|0,l=l+Math.imul(et,It)|0,s=s+Math.imul(et,_t)|0,s=s+Math.imul(rt,It)|0,v=v+Math.imul(rt,_t)|0;var si=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(si>>>26)|0,si&=67108863,l=Math.imul(st,Mt),s=Math.imul(st,Et),s=s+Math.imul(at,Mt)|0,v=Math.imul(at,Et),l=l+Math.imul(ft,St)|0,s=s+Math.imul(ft,Nt)|0,s=s+Math.imul(ot,St)|0,v=v+Math.imul(ot,Nt)|0,l=l+Math.imul(it,It)|0,s=s+Math.imul(it,_t)|0,s=s+Math.imul(nt,It)|0,v=v+Math.imul(nt,_t)|0;var ai=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ai>>>26)|0,ai&=67108863,l=Math.imul(st,St),s=Math.imul(st,Nt),s=s+Math.imul(at,St)|0,v=Math.imul(at,Nt),l=l+Math.imul(ft,It)|0,s=s+Math.imul(ft,_t)|0,s=s+Math.imul(ot,It)|0,v=v+Math.imul(ot,_t)|0;var ui=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ui>>>26)|0,ui&=67108863,l=Math.imul(st,It),s=Math.imul(st,_t),s=s+Math.imul(at,It)|0,v=Math.imul(at,_t);var hi=(M+l|0)+((s&8191)<<13)|0;return M=(v+(s>>>13)|0)+(hi>>>26)|0,hi&=67108863,x[0]=xe,x[1]=Me,x[2]=Ee,x[3]=Se,x[4]=Ne,x[5]=Xr,x[6]=Zr,x[7]=$r,x[8]=ti,x[9]=ei,x[10]=ri,x[11]=ii,x[12]=ni,x[13]=fi,x[14]=oi,x[15]=si,x[16]=ai,x[17]=ui,x[18]=hi,M!==0&&(x[19]=M,c.length++),c};Math.imul||(Q=U);function Bt(A,f,a){a.negative=f.negative^A.negative,a.length=A.length+f.length;for(var c=0,d=0,m=0;m>>26)|0,d+=x>>>26,x&=67108863}a.words[m]=M,c=x,x=d}return c!==0?a.words[m]=c:a.length--,a._strip()}function J(A,f,a){return Bt(A,f,a)}o.prototype.mulTo=function(f,a){var c,d=this.length+f.length;return this.length===10&&f.length===10?c=Q(this,f,a):d<63?c=U(this,f,a):d<1024?c=Bt(this,f,a):c=J(this,f,a),c},o.prototype.mul=function(f){var a=new o(null);return a.words=new Array(this.length+f.length),this.mulTo(f,a)},o.prototype.mulf=function(f){var a=new o(null);return a.words=new Array(this.length+f.length),J(this,f,a)},o.prototype.imul=function(f){return this.clone().mulTo(f,this)},o.prototype.imuln=function(f){var a=f<0;a&&(f=-f),i(typeof f=="number"),i(f<67108864);for(var c=0,d=0;d>=26,c+=m/67108864|0,c+=x>>>26,this.words[d]=x&67108863}return c!==0&&(this.words[d]=c,this.length++),a?this.ineg():this},o.prototype.muln=function(f){return this.clone().imuln(f)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(f){var a=F(f);if(a.length===0)return new o(1);for(var c=this,d=0;d=0);var a=f%26,c=(f-a)/26,d=67108863>>>26-a<<26-a,m;if(a!==0){var x=0;for(m=0;m>>26-a}x&&(this.words[m]=x,this.length++)}if(c!==0){for(m=this.length-1;m>=0;m--)this.words[m+c]=this.words[m];for(m=0;m=0);var d;a?d=(a-a%26)/26:d=0;var m=f%26,x=Math.min((f-m)/26,this.length),M=67108863^67108863>>>m<x)for(this.length-=x,s=0;s=0&&(v!==0||s>=d);s--){var k=this.words[s]|0;this.words[s]=v<<26-m|k>>>m,v=k&M}return l&&v!==0&&(l.words[l.length++]=v),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},o.prototype.ishrn=function(f,a,c){return i(this.negative===0),this.iushrn(f,a,c)},o.prototype.shln=function(f){return this.clone().ishln(f)},o.prototype.ushln=function(f){return this.clone().iushln(f)},o.prototype.shrn=function(f){return this.clone().ishrn(f)},o.prototype.ushrn=function(f){return this.clone().iushrn(f)},o.prototype.testn=function(f){i(typeof f=="number"&&f>=0);var a=f%26,c=(f-a)/26,d=1<=0);var a=f%26,c=(f-a)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=c)return this;if(a!==0&&c++,this.length=Math.min(c,this.length),a!==0){var d=67108863^67108863>>>a<=67108864;a++)this.words[a]-=67108864,a===this.length-1?this.words[a+1]=1:this.words[a+1]++;return this.length=Math.max(this.length,a+1),this},o.prototype.isubn=function(f){if(i(typeof f=="number"),i(f<67108864),f<0)return this.iaddn(-f);if(this.negative!==0)return this.negative=0,this.iaddn(f),this.negative=1,this;if(this.words[0]-=f,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var a=0;a>26)-(l/67108864|0),this.words[m+c]=x&67108863}for(;m>26,this.words[m+c]=x&67108863;if(M===0)return this._strip();for(i(M===-1),M=0,m=0;m>26,this.words[m]=x&67108863;return this.negative=1,this._strip()},o.prototype._wordDiv=function(f,a){var c=this.length-f.length,d=this.clone(),m=f,x=m.words[m.length-1]|0,M=this._countBits(x);c=26-M,c!==0&&(m=m.ushln(c),d.iushln(c),x=m.words[m.length-1]|0);var l=d.length-m.length,s;if(a!=="mod"){s=new o(null),s.length=l+1,s.words=new Array(s.length);for(var v=0;v=0;u--){var E=(d.words[m.length+u]|0)*67108864+(d.words[m.length+u-1]|0);for(E=Math.min(E/x|0,67108863),d._ishlnsubmul(m,E,u);d.negative!==0;)E--,d.negative=0,d._ishlnsubmul(m,1,u),d.isZero()||(d.negative^=1);s&&(s.words[u]=E)}return s&&s._strip(),d._strip(),a!=="div"&&c!==0&&d.iushrn(c),{div:s||null,mod:d}},o.prototype.divmod=function(f,a,c){if(i(!f.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var d,m,x;return this.negative!==0&&f.negative===0?(x=this.neg().divmod(f,a),a!=="mod"&&(d=x.div.neg()),a!=="div"&&(m=x.mod.neg(),c&&m.negative!==0&&m.iadd(f)),{div:d,mod:m}):this.negative===0&&f.negative!==0?(x=this.divmod(f.neg(),a),a!=="mod"&&(d=x.div.neg()),{div:d,mod:x.mod}):this.negative&f.negative?(x=this.neg().divmod(f.neg(),a),a!=="div"&&(m=x.mod.neg(),c&&m.negative!==0&&m.isub(f)),{div:x.div,mod:m}):f.length>this.length||this.cmp(f)<0?{div:new o(0),mod:this}:f.length===1?a==="div"?{div:this.divn(f.words[0]),mod:null}:a==="mod"?{div:null,mod:new o(this.modrn(f.words[0]))}:{div:this.divn(f.words[0]),mod:new o(this.modrn(f.words[0]))}:this._wordDiv(f,a)},o.prototype.div=function(f){return this.divmod(f,"div",!1).div},o.prototype.mod=function(f){return this.divmod(f,"mod",!1).mod},o.prototype.umod=function(f){return this.divmod(f,"mod",!0).mod},o.prototype.divRound=function(f){var a=this.divmod(f);if(a.mod.isZero())return a.div;var c=a.div.negative!==0?a.mod.isub(f):a.mod,d=f.ushrn(1),m=f.andln(1),x=c.cmp(d);return x<0||m===1&&x===0?a.div:a.div.negative!==0?a.div.isubn(1):a.div.iaddn(1)},o.prototype.modrn=function(f){var a=f<0;a&&(f=-f),i(f<=67108863);for(var c=(1<<26)%f,d=0,m=this.length-1;m>=0;m--)d=(c*d+(this.words[m]|0))%f;return a?-d:d},o.prototype.modn=function(f){return this.modrn(f)},o.prototype.idivn=function(f){var a=f<0;a&&(f=-f),i(f<=67108863);for(var c=0,d=this.length-1;d>=0;d--){var m=(this.words[d]|0)+c*67108864;this.words[d]=m/f|0,c=m%f}return this._strip(),a?this.ineg():this},o.prototype.divn=function(f){return this.clone().idivn(f)},o.prototype.egcd=function(f){i(f.negative===0),i(!f.isZero());var a=this,c=f.clone();a.negative!==0?a=a.umod(f):a=a.clone();for(var d=new o(1),m=new o(0),x=new o(0),M=new o(1),l=0;a.isEven()&&c.isEven();)a.iushrn(1),c.iushrn(1),++l;for(var s=c.clone(),v=a.clone();!a.isZero();){for(var k=0,u=1;!(a.words[0]&u)&&k<26;++k,u<<=1);if(k>0)for(a.iushrn(k);k-- >0;)(d.isOdd()||m.isOdd())&&(d.iadd(s),m.isub(v)),d.iushrn(1),m.iushrn(1);for(var E=0,_=1;!(c.words[0]&_)&&E<26;++E,_<<=1);if(E>0)for(c.iushrn(E);E-- >0;)(x.isOdd()||M.isOdd())&&(x.iadd(s),M.isub(v)),x.iushrn(1),M.iushrn(1);a.cmp(c)>=0?(a.isub(c),d.isub(x),m.isub(M)):(c.isub(a),x.isub(d),M.isub(m))}return{a:x,b:M,gcd:c.iushln(l)}},o.prototype._invmp=function(f){i(f.negative===0),i(!f.isZero());var a=this,c=f.clone();a.negative!==0?a=a.umod(f):a=a.clone();for(var d=new o(1),m=new o(0),x=c.clone();a.cmpn(1)>0&&c.cmpn(1)>0;){for(var M=0,l=1;!(a.words[0]&l)&&M<26;++M,l<<=1);if(M>0)for(a.iushrn(M);M-- >0;)d.isOdd()&&d.iadd(x),d.iushrn(1);for(var s=0,v=1;!(c.words[0]&v)&&s<26;++s,v<<=1);if(s>0)for(c.iushrn(s);s-- >0;)m.isOdd()&&m.iadd(x),m.iushrn(1);a.cmp(c)>=0?(a.isub(c),d.isub(m)):(c.isub(a),m.isub(d))}var k;return a.cmpn(1)===0?k=d:k=m,k.cmpn(0)<0&&k.iadd(f),k},o.prototype.gcd=function(f){if(this.isZero())return f.abs();if(f.isZero())return this.abs();var a=this.clone(),c=f.clone();a.negative=0,c.negative=0;for(var d=0;a.isEven()&&c.isEven();d++)a.iushrn(1),c.iushrn(1);do{for(;a.isEven();)a.iushrn(1);for(;c.isEven();)c.iushrn(1);var m=a.cmp(c);if(m<0){var x=a;a=c,c=x}else if(m===0||c.cmpn(1)===0)break;a.isub(c)}while(!0);return c.iushln(d)},o.prototype.invm=function(f){return this.egcd(f).a.umod(f)},o.prototype.isEven=function(){return(this.words[0]&1)===0},o.prototype.isOdd=function(){return(this.words[0]&1)===1},o.prototype.andln=function(f){return this.words[0]&f},o.prototype.bincn=function(f){i(typeof f=="number");var a=f%26,c=(f-a)/26,d=1<>>26,M&=67108863,this.words[x]=M}return m!==0&&(this.words[x]=m,this.length++),this},o.prototype.isZero=function(){return this.length===1&&this.words[0]===0},o.prototype.cmpn=function(f){var a=f<0;if(this.negative!==0&&!a)return-1;if(this.negative===0&&a)return 1;this._strip();var c;if(this.length>1)c=1;else{a&&(f=-f),i(f<=67108863,"Number is too big");var d=this.words[0]|0;c=d===f?0:df.length)return 1;if(this.length=0;c--){var d=this.words[c]|0,m=f.words[c]|0;if(d!==m){dm&&(a=1);break}}return a},o.prototype.gtn=function(f){return this.cmpn(f)===1},o.prototype.gt=function(f){return this.cmp(f)===1},o.prototype.gten=function(f){return this.cmpn(f)>=0},o.prototype.gte=function(f){return this.cmp(f)>=0},o.prototype.ltn=function(f){return this.cmpn(f)===-1},o.prototype.lt=function(f){return this.cmp(f)===-1},o.prototype.lten=function(f){return this.cmpn(f)<=0},o.prototype.lte=function(f){return this.cmp(f)<=0},o.prototype.eqn=function(f){return this.cmpn(f)===0},o.prototype.eq=function(f){return this.cmp(f)===0},o.red=function(f){return new Y(f)},o.prototype.toRed=function(f){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),f.convertTo(this)._forceRed(f)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(f){return this.red=f,this},o.prototype.forceRed=function(f){return i(!this.red,"Already a number in reduction context"),this._forceRed(f)},o.prototype.redAdd=function(f){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,f)},o.prototype.redIAdd=function(f){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,f)},o.prototype.redSub=function(f){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,f)},o.prototype.redISub=function(f){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,f)},o.prototype.redShl=function(f){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,f)},o.prototype.redMul=function(f){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.mul(this,f)},o.prototype.redIMul=function(f){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.imul(this,f)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(f){return i(this.red&&!f.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,f)};var H={k256:null,p224:null,p192:null,p25519:null};function L(A,f){this.name=A,this.p=new o(f,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}L.prototype._tmp=function(){var f=new o(null);return f.words=new Array(Math.ceil(this.n/13)),f},L.prototype.ireduce=function(f){var a=f,c;do this.split(a,this.tmp),a=this.imulK(a),a=a.iadd(this.tmp),c=a.bitLength();while(c>this.n);var d=c0?a.isub(this.p):a.strip!==void 0?a.strip():a._strip(),a},L.prototype.split=function(f,a){f.iushrn(this.n,0,a)},L.prototype.imulK=function(f){return f.imul(this.k)};function Tt(){L.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(Tt,L),Tt.prototype.split=function(f,a){for(var c=4194303,d=Math.min(f.length,9),m=0;m>>22,x=M}x>>>=22,f.words[m-10]=x,x===0&&f.length>10?f.length-=10:f.length-=9},Tt.prototype.imulK=function(f){f.words[f.length]=0,f.words[f.length+1]=0,f.length+=2;for(var a=0,c=0;c>>=26,f.words[c]=m,a=d}return a!==0&&(f.words[f.length++]=a),f},o._prime=function(f){if(H[f])return H[f];var a;if(f==="k256")a=new Tt;else if(f==="p224")a=new W;else if(f==="p192")a=new Ot;else if(f==="p25519")a=new Gt;else throw new Error("Unknown prime "+f);return H[f]=a,a};function Y(A){if(typeof A=="string"){var f=o._prime(A);this.m=f.p,this.prime=f}else i(A.gtn(1),"modulus must be greater than 1"),this.m=A,this.prime=null}Y.prototype._verify1=function(f){i(f.negative===0,"red works only with positives"),i(f.red,"red works only with red numbers")},Y.prototype._verify2=function(f,a){i((f.negative|a.negative)===0,"red works only with positives"),i(f.red&&f.red===a.red,"red works only with red numbers")},Y.prototype.imod=function(f){return this.prime?this.prime.ireduce(f)._forceRed(this):(w(f,f.umod(this.m)._forceRed(this)),f)},Y.prototype.neg=function(f){return f.isZero()?f.clone():this.m.sub(f)._forceRed(this)},Y.prototype.add=function(f,a){this._verify2(f,a);var c=f.add(a);return c.cmp(this.m)>=0&&c.isub(this.m),c._forceRed(this)},Y.prototype.iadd=function(f,a){this._verify2(f,a);var c=f.iadd(a);return c.cmp(this.m)>=0&&c.isub(this.m),c},Y.prototype.sub=function(f,a){this._verify2(f,a);var c=f.sub(a);return c.cmpn(0)<0&&c.iadd(this.m),c._forceRed(this)},Y.prototype.isub=function(f,a){this._verify2(f,a);var c=f.isub(a);return c.cmpn(0)<0&&c.iadd(this.m),c},Y.prototype.shl=function(f,a){return this._verify1(f),this.imod(f.ushln(a))},Y.prototype.imul=function(f,a){return this._verify2(f,a),this.imod(f.imul(a))},Y.prototype.mul=function(f,a){return this._verify2(f,a),this.imod(f.mul(a))},Y.prototype.isqr=function(f){return this.imul(f,f.clone())},Y.prototype.sqr=function(f){return this.mul(f,f)},Y.prototype.sqrt=function(f){if(f.isZero())return f.clone();var a=this.m.andln(3);if(i(a%2===1),a===3){var c=this.m.add(new o(1)).iushrn(2);return this.pow(f,c)}for(var d=this.m.subn(1),m=0;!d.isZero()&&d.andln(1)===0;)m++,d.iushrn(1);i(!d.isZero());var x=new o(1).toRed(this),M=x.redNeg(),l=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new o(2*s*s).toRed(this);this.pow(s,l).cmp(M)!==0;)s.redIAdd(M);for(var v=this.pow(s,d),k=this.pow(f,d.addn(1).iushrn(1)),u=this.pow(f,d),E=m;u.cmp(x)!==0;){for(var _=u,B=0;_.cmp(x)!==0;B++)_=_.redSqr();i(B=0;m--){for(var v=a.words[m],k=s-1;k>=0;k--){var u=v>>k&1;if(x!==d[0]&&(x=this.sqr(x)),u===0&&M===0){l=0;continue}M<<=1,M|=u,l++,!(l!==c&&(m!==0||k!==0))&&(x=this.mul(x,d[M]),l=0,M=0)}s=26}return x},Y.prototype.convertTo=function(f){var a=f.umod(this.m);return a===f?a.clone():a},Y.prototype.convertFrom=function(f){var a=f.clone();return a.red=null,a},o.mont=function(f){return new Wt(f)};function Wt(A){Y.call(this,A),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}n(Wt,Y),Wt.prototype.convertTo=function(f){return this.imod(f.ushln(this.shift))},Wt.prototype.convertFrom=function(f){var a=this.imod(f.mul(this.rinv));return a.red=null,a},Wt.prototype.imul=function(f,a){if(f.isZero()||a.isZero())return f.words[0]=0,f.length=1,f;var c=f.imul(a),d=c.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),m=c.isub(d).iushrn(this.shift),x=m;return m.cmp(this.m)>=0?x=m.isub(this.m):m.cmpn(0)<0&&(x=m.iadd(this.m)),x._forceRed(this)},Wt.prototype.mul=function(f,a){if(f.isZero()||a.isZero())return new o(0)._forceRed(this);var c=f.mul(a),d=c.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),m=c.isub(d).iushrn(this.shift),x=m;return m.cmp(this.m)>=0?x=m.isub(this.m):m.cmpn(0)<0&&(x=m.iadd(this.m)),x._forceRed(this)},Wt.prototype.invm=function(f){var a=this.imod(f._invmp(this.m).mul(this.r2));return a._forceRed(this)}})(e,_n)})(qn);var K=qn.exports;const Kn="bignumber/5.7.0";var Or=K.BN;const me=new z(Kn),xi={},Hn=9007199254740991;function Ns(e){return e!=null&&(G.isBigNumber(e)||typeof e=="number"&&e%1===0||typeof e=="string"&&!!e.match(/^-?[0-9]+$/)||Qt(e)||typeof e=="bigint"||nr(e))}let Ln=!1;class G{constructor(t,r){t!==xi&&me.throwError("cannot call constructor directly; use BigNumber.from",z.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=r,this._isBigNumber=!0,Object.freeze(this)}fromTwos(t){return jt(j(this).fromTwos(t))}toTwos(t){return jt(j(this).toTwos(t))}abs(){return this._hex[0]==="-"?G.from(this._hex.substring(1)):this}add(t){return jt(j(this).add(j(t)))}sub(t){return jt(j(this).sub(j(t)))}div(t){return G.from(t).isZero()&&Xt("division-by-zero","div"),jt(j(this).div(j(t)))}mul(t){return jt(j(this).mul(j(t)))}mod(t){const r=j(t);return r.isNeg()&&Xt("division-by-zero","mod"),jt(j(this).umod(r))}pow(t){const r=j(t);return r.isNeg()&&Xt("negative-power","pow"),jt(j(this).pow(r))}and(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Xt("unbound-bitwise-result","and"),jt(j(this).and(r))}or(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Xt("unbound-bitwise-result","or"),jt(j(this).or(r))}xor(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Xt("unbound-bitwise-result","xor"),jt(j(this).xor(r))}mask(t){return(this.isNegative()||t<0)&&Xt("negative-width","mask"),jt(j(this).maskn(t))}shl(t){return(this.isNegative()||t<0)&&Xt("negative-width","shl"),jt(j(this).shln(t))}shr(t){return(this.isNegative()||t<0)&&Xt("negative-width","shr"),jt(j(this).shrn(t))}eq(t){return j(this).eq(j(t))}lt(t){return j(this).lt(j(t))}lte(t){return j(this).lte(j(t))}gt(t){return j(this).gt(j(t))}gte(t){return j(this).gte(j(t))}isNegative(){return this._hex[0]==="-"}isZero(){return j(this).isZero()}toNumber(){try{return j(this).toNumber()}catch{Xt("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch{}return me.throwError("this platform does not support BigInt",z.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(arguments[0]===10?Ln||(Ln=!0,me.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?me.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",z.errors.UNEXPECTED_ARGUMENT,{}):me.throwError("BigNumber.toString does not accept parameters",z.errors.UNEXPECTED_ARGUMENT,{})),j(this).toString(10)}toHexString(){return this._hex}toJSON(t){return{type:"BigNumber",hex:this.toHexString()}}static from(t){if(t instanceof G)return t;if(typeof t=="string")return t.match(/^-?0x[0-9a-f]+$/i)?new G(xi,gr(t)):t.match(/^-?[0-9]+$/)?new G(xi,gr(new Or(t))):me.throwArgumentError("invalid BigNumber string","value",t);if(typeof t=="number")return t%1&&Xt("underflow","BigNumber.from",t),(t>=Hn||t<=-Hn)&&Xt("overflow","BigNumber.from",t),G.from(String(t));const r=t;if(typeof r=="bigint")return G.from(r.toString());if(nr(r))return G.from(Ht(r));if(r)if(r.toHexString){const i=r.toHexString();if(typeof i=="string")return G.from(i)}else{let i=r._hex;if(i==null&&r.type==="BigNumber"&&(i=r.hex),typeof i=="string"&&(Qt(i)||i[0]==="-"&&Qt(i.substring(1))))return G.from(i)}return me.throwArgumentError("invalid BigNumber value","value",t)}static isBigNumber(t){return!!(t&&t._isBigNumber)}}function gr(e){if(typeof e!="string")return gr(e.toString(16));if(e[0]==="-")return e=e.substring(1),e[0]==="-"&&me.throwArgumentError("invalid hex","value",e),e=gr(e),e==="0x00"?e:"-"+e;if(e.substring(0,2)!=="0x"&&(e="0x"+e),e==="0x")return"0x00";for(e.length%2&&(e="0x0"+e.substring(2));e.length>4&&e.substring(0,4)==="0x00";)e="0x"+e.substring(4);return e}function jt(e){return G.from(gr(e))}function j(e){const t=G.from(e).toHexString();return t[0]==="-"?new Or("-"+t.substring(3),16):new Or(t.substring(2),16)}function Xt(e,t,r){const i={fault:e,operation:t};return r!=null&&(i.value=r),me.throwError(e,z.errors.NUMERIC_FAULT,i)}function Is(e){return new Or(e,36).toString(16)}const Lt=new z(Kn),mr={},zn=G.from(0),jn=G.from(-1);function Vn(e,t,r,i){const n={fault:t,operation:r};return i!==void 0&&(n.value=i),Lt.throwError(e,z.errors.NUMERIC_FAULT,n)}let Ar="0";for(;Ar.length<256;)Ar+=Ar;function Mi(e){if(typeof e!="number")try{e=G.from(e).toNumber()}catch{}return typeof e=="number"&&e>=0&&e<=256&&!(e%1)?"1"+Ar.substring(0,e):Lt.throwArgumentError("invalid decimal size","decimals",e)}function Ei(e,t){t==null&&(t=0);const r=Mi(t);e=G.from(e);const i=e.lt(zn);i&&(e=e.mul(jn));let n=e.mod(r).toString();for(;n.length2&&Lt.throwArgumentError("too many decimal points","value",e);let o=n[0],h=n[1];for(o||(o="0"),h||(h="0");h[h.length-1]==="0";)h=h.substring(0,h.length-1);for(h.length>r.length-1&&Vn("fractional component exceeds decimals","underflow","parseFixed"),h===""&&(h="0");h.lengtht[h]==null?b:(typeof t[h]!==p&&Lt.throwArgumentError("invalid fixed format ("+h+" not "+p+")","format."+h,t[h]),t[h]);r=o("signed","boolean",r),i=o("width","number",i),n=o("decimals","number",n)}return i%8&&Lt.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",i),n>80&&Lt.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",n),new pr(mr,r,i,n)}}class kt{constructor(t,r,i,n){t!==mr&&Lt.throwError("cannot use FixedNumber constructor; use FixedNumber.from",z.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=n,this._hex=r,this._value=i,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(t){this.format.name!==t.format.name&&Lt.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",t)}addUnsafe(t){this._checkFormat(t);const r=Ae(this._value,this.format.decimals),i=Ae(t._value,t.format.decimals);return kt.fromValue(r.add(i),this.format.decimals,this.format)}subUnsafe(t){this._checkFormat(t);const r=Ae(this._value,this.format.decimals),i=Ae(t._value,t.format.decimals);return kt.fromValue(r.sub(i),this.format.decimals,this.format)}mulUnsafe(t){this._checkFormat(t);const r=Ae(this._value,this.format.decimals),i=Ae(t._value,t.format.decimals);return kt.fromValue(r.mul(i).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(t){this._checkFormat(t);const r=Ae(this._value,this.format.decimals),i=Ae(t._value,t.format.decimals);return kt.fromValue(r.mul(this.format._multiplier).div(i),this.format.decimals,this.format)}floor(){const t=this.toString().split(".");t.length===1&&t.push("0");let r=kt.from(t[0],this.format);const i=!t[1].match(/^(0*)$/);return this.isNegative()&&i&&(r=r.subUnsafe(Qn.toFormat(r.format))),r}ceiling(){const t=this.toString().split(".");t.length===1&&t.push("0");let r=kt.from(t[0],this.format);const i=!t[1].match(/^(0*)$/);return!this.isNegative()&&i&&(r=r.addUnsafe(Qn.toFormat(r.format))),r}round(t){t==null&&(t=0);const r=this.toString().split(".");if(r.length===1&&r.push("0"),(t<0||t>80||t%1)&&Lt.throwArgumentError("invalid decimal count","decimals",t),r[1].length<=t)return this;const i=kt.from("1"+Ar.substring(0,t),this.format),n=_s.toFormat(this.format);return this.mulUnsafe(i).addUnsafe(n).floor().divUnsafe(i)}isZero(){return this._value==="0.0"||this._value==="0"}isNegative(){return this._value[0]==="-"}toString(){return this._value}toHexString(t){if(t==null)return this._hex;t%8&&Lt.throwArgumentError("invalid byte width","width",t);const r=G.from(this._hex).fromTwos(this.format.width).toTwos(t).toHexString();return fe(r,t/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(t){return kt.fromString(this._value,t)}static fromValue(t,r,i){return i==null&&r!=null&&!Ns(r)&&(i=r,r=null),r==null&&(r=0),i==null&&(i="fixed"),kt.fromString(Ei(t,r),pr.from(i))}static fromString(t,r){r==null&&(r="fixed");const i=pr.from(r),n=Ae(t,i.decimals);!i.signed&&n.lt(zn)&&Vn("unsigned value cannot be negative","overflow","value",t);let o=null;i.signed?o=n.toTwos(i.width).toHexString():(o=n.toHexString(),o=fe(o,i.width/8));const h=Ei(n,i.decimals);return new kt(mr,o,h,i)}static fromBytes(t,r){r==null&&(r="fixed");const i=pr.from(r);if(Pt(t).length>i.width/8)throw new Error("overflow");let n=G.from(t);i.signed&&(n=n.fromTwos(i.width));const o=n.toTwos((i.signed?0:1)+i.width).toHexString(),h=Ei(n,i.decimals);return new kt(mr,o,h,i)}static from(t,r){if(typeof t=="string")return kt.fromString(t,r);if(nr(t))return kt.fromBytes(t,r);try{return kt.fromValue(t,0,r)}catch(i){if(i.code!==z.errors.INVALID_ARGUMENT)throw i}return Lt.throwArgumentError("invalid FixedNumber value","value",t)}static isFixedNumber(t){return!!(t&&t._isFixedNumber)}}const Qn=kt.from(1),_s=kt.from("0.5"),Bs="strings/5.7.0",Jn=new z(Bs);var Pr;(function(e){e.current="",e.NFC="NFC",e.NFD="NFD",e.NFKC="NFKC",e.NFKD="NFKD"})(Pr||(Pr={}));var fr;(function(e){e.UNEXPECTED_CONTINUE="unexpected continuation byte",e.BAD_PREFIX="bad codepoint prefix",e.OVERRUN="string overrun",e.MISSING_CONTINUE="missing continuation byte",e.OUT_OF_RANGE="out of UTF-8 range",e.UTF16_SURROGATE="UTF-16 surrogate",e.OVERLONG="overlong representation"})(fr||(fr={}));function Rs(e,t,r,i,n){return Jn.throwArgumentError(`invalid codepoint at offset ${t}; ${e}`,"bytes",r)}function Yn(e,t,r,i,n){if(e===fr.BAD_PREFIX||e===fr.UNEXPECTED_CONTINUE){let o=0;for(let h=t+1;h>6===2;h++)o++;return o}return e===fr.OVERRUN?r.length-t-1:0}function Cs(e,t,r,i,n){return e===fr.OVERLONG?(i.push(n),0):(i.push(65533),Yn(e,t,r))}Object.freeze({error:Rs,ignore:Yn,replace:Cs});function Si(e,t=Pr.current){t!=Pr.current&&(Jn.checkNormalize(),e=e.normalize(t));let r=[];for(let i=0;i>6|192),r.push(n&63|128);else if((n&64512)==55296){i++;const o=e.charCodeAt(i);if(i>=e.length||(o&64512)!==56320)throw new Error("invalid utf-8 string");const h=65536+((n&1023)<<10)+(o&1023);r.push(h>>18|240),r.push(h>>12&63|128),r.push(h>>6&63|128),r.push(h&63|128)}else r.push(n>>12|224),r.push(n>>6&63|128),r.push(n&63|128)}return Pt(r)}function Os(e){if(e.length%4!==0)throw new Error("bad data");let t=[];for(let r=0;r{let o=n.split(":");r+=parseInt(o[0],16),i[r]=t(o[1])}),i}function Gn(e){let t=0;return e.split(",").map(r=>{let i=r.split("-");i.length===1?i[1]="0":i[1]===""&&(i[1]="1");let n=t+parseInt(i[0],16);return t=parseInt(i[1],16),{l:n,h:t}})}Gn("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(e=>parseInt(e,16)),Ni("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),Ni("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),Ni("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",Os),Gn("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");const Wn="hash/5.7.0";function Ps(e){e=atob(e);const t=[];for(let r=0;r0&&Array.isArray(p)?n(p,h-1):r.push(p)})};return n(e,t),r}function Ts(e){const t={};for(let r=0;r>--b&1}const y=31,S=Math.pow(2,y),I=S>>>1,N=I>>1,R=S-1;let F=0;for(let H=0;H1;){let Gt=L+Tt>>>1;H>>1|w(),W=W<<1^I,Ot=(Ot^I)<<1|I|1;Q=W,Bt=1+Ot-W}let J=i-4;return U.map(H=>{switch(H-J){case 3:return J+65792+(e[p++]<<16|e[p++]<<8|e[p++]);case 2:return J+256+(e[p++]<<8|e[p++]);case 1:return J+e[p++];default:return H-1}})}function Ds(e){let t=0;return()=>e[t++]}function Us(e){return Ds(Fs(e))}function ks(e){return e&1?~e>>1:e>>1}function qs(e,t){let r=Array(e);for(let i=0;it[h]):r}function Hs(e){let t=[];for(;;){let r=e();if(r==0)break;t.push(zs(r,e))}for(;;){let r=e()-1;if(r<0)break;t.push(js(r,e))}return Ts(Xn(t))}function Ls(e){let t=[];for(;;){let r=e();if(r==0)break;t.push(r)}return t}function $n(e,t,r){let i=Array(e).fill(void 0).map(()=>[]);for(let n=0;ni[h].push(o));return i}function zs(e,t){let r=1+t(),i=t(),n=Ls(t),o=$n(n.length,1+e,t);return Xn(o.map((h,p)=>{const b=h[0],g=h.slice(1);return Array(n[p]).fill(void 0).map((w,y)=>{let S=y*i;return[b+y*r,g.map(I=>I+S)]})}))}function js(e,t){let r=1+t();return $n(r,1+e,t).map(n=>[n[0],n.slice(1)])}function Vs(e){let t=Tr(e).sort((i,n)=>i-n);return r();function r(){let i=[];for(;;){let g=Tr(e,t);if(g.length==0)break;i.push({set:new Set(g),node:r()})}i.sort((g,w)=>w.set.size-g.set.size);let n=e(),o=n%3;n=n/3|0;let h=!!(n&1);n>>=1;let p=n==1,b=n==2;return{branches:i,valid:o,fe0f:h,save:p,check:b}}}function Qs(){return Us(Ps("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"))}const Fr=Qs();new Set(Tr(Fr)),new Set(Tr(Fr)),Hs(Fr),Vs(Fr),new z(Wn);const Js=new Uint8Array(32);Js.fill(0);const Ys=`Ethereum Signed Message: +-`;function tf(e){return typeof e=="string"&&(e=Si(e)),wi(ys([Si(Ys),Si(String(e.length)),e]))}const Gs="rlp/5.7.0";new z(Gs);const Ws="address/5.7.0",br=new z(Ws);function ef(e){Qt(e,20)||br.throwArgumentError("invalid address","address",e),e=e.toLowerCase();const t=e.substring(2).split(""),r=new Uint8Array(40);for(let n=0;n<40;n++)r[n]=t[n].charCodeAt(0);const i=Pt(wi(r));for(let n=0;n<40;n+=2)i[n>>1]>>4>=8&&(t[n]=t[n].toUpperCase()),(i[n>>1]&15)>=8&&(t[n+1]=t[n+1].toUpperCase());return"0x"+t.join("")}const Xs=9007199254740991;function Zs(e){return Math.log10?Math.log10(e):Math.log(e)/Math.LN10}const Ii={};for(let e=0;e<10;e++)Ii[String(e)]=String(e);for(let e=0;e<26;e++)Ii[String.fromCharCode(65+e)]=String(10+e);const rf=Math.floor(Zs(Xs));function $s(e){e=e.toUpperCase(),e=e.substring(4)+e.substring(0,2)+"00";let t=e.split("").map(i=>Ii[i]).join("");for(;t.length>=rf;){let i=t.substring(0,rf);t=parseInt(i,10)%97+t.substring(i.length)}let r=String(98-parseInt(t,10)%97);for(;r.length<2;)r="0"+r;return r}function ta(e){let t=null;if(typeof e!="string"&&br.throwArgumentError("invalid address","address",e),e.match(/^(0x)?[0-9a-fA-F]{40}$/))e.substring(0,2)!=="0x"&&(e="0x"+e),t=ef(e),e.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&t!==e&&br.throwArgumentError("bad address checksum","address",e);else if(e.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(e.substring(2,4)!==$s(e)&&br.throwArgumentError("bad icap checksum","address",e),t=Is(e.substring(4));t.length<40;)t="0"+t;t=ef("0x"+t)}else br.throwArgumentError("invalid address","address",e);return t}const ea="properties/5.7.0";new z(ea);function yr(e,t,r){Object.defineProperty(e,t,{enumerable:!0,value:r,writable:!1})}new z(Wn);const ra=new Uint8Array(32);ra.fill(0),G.from(-1);const ia=G.from(0),na=G.from(1);G.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),fe(na.toHexString(),32),fe(ia.toHexString(),32);var oe={},V={},wr=nf;function nf(e,t){if(!e)throw new Error(t||"Assertion failed")}nf.equal=function(t,r,i){if(t!=r)throw new Error(i||"Assertion failed: "+t+" != "+r)};var _i={exports:{}};typeof Object.create=="function"?_i.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:_i.exports=function(t,r){if(r){t.super_=r;var i=function(){};i.prototype=r.prototype,t.prototype=new i,t.prototype.constructor=t}};var fa=wr,oa=_i.exports;V.inherits=oa;function sa(e,t){return(e.charCodeAt(t)&64512)!==55296||t<0||t+1>=e.length?!1:(e.charCodeAt(t+1)&64512)===56320}function aa(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if(typeof e=="string")if(t){if(t==="hex")for(e=e.replace(/[^a-z0-9]+/ig,""),e.length%2!==0&&(e="0"+e),n=0;n>6|192,r[i++]=o&63|128):sa(e,n)?(o=65536+((o&1023)<<10)+(e.charCodeAt(++n)&1023),r[i++]=o>>18|240,r[i++]=o>>12&63|128,r[i++]=o>>6&63|128,r[i++]=o&63|128):(r[i++]=o>>12|224,r[i++]=o>>6&63|128,r[i++]=o&63|128)}else for(n=0;n>>24|e>>>8&65280|e<<8&16711680|(e&255)<<24;return t>>>0}V.htonl=ff;function ha(e,t){for(var r="",i=0;i>>0}return o}V.join32=ca;function la(e,t){for(var r=new Array(e.length*4),i=0,n=0;i>>24,r[n+1]=o>>>16&255,r[n+2]=o>>>8&255,r[n+3]=o&255):(r[n+3]=o>>>24,r[n+2]=o>>>16&255,r[n+1]=o>>>8&255,r[n]=o&255)}return r}V.split32=la;function da(e,t){return e>>>t|e<<32-t}V.rotr32=da;function pa(e,t){return e<>>32-t}V.rotl32=pa;function va(e,t){return e+t>>>0}V.sum32=va;function ga(e,t,r){return e+t+r>>>0}V.sum32_3=ga;function ma(e,t,r,i){return e+t+r+i>>>0}V.sum32_4=ma;function Aa(e,t,r,i,n){return e+t+r+i+n>>>0}V.sum32_5=Aa;function ba(e,t,r,i){var n=e[t],o=e[t+1],h=i+o>>>0,p=(h>>0,e[t+1]=h}V.sum64=ba;function ya(e,t,r,i){var n=t+i>>>0,o=(n>>0}V.sum64_hi=ya;function wa(e,t,r,i){var n=t+i;return n>>>0}V.sum64_lo=wa;function xa(e,t,r,i,n,o,h,p){var b=0,g=t;g=g+i>>>0,b+=g>>0,b+=g>>0,b+=g>>0}V.sum64_4_hi=xa;function Ma(e,t,r,i,n,o,h,p){var b=t+i+o+p;return b>>>0}V.sum64_4_lo=Ma;function Ea(e,t,r,i,n,o,h,p,b,g){var w=0,y=t;y=y+i>>>0,w+=y>>0,w+=y>>0,w+=y>>0,w+=y>>0}V.sum64_5_hi=Ea;function Sa(e,t,r,i,n,o,h,p,b,g){var w=t+i+o+p+g;return w>>>0}V.sum64_5_lo=Sa;function Na(e,t,r){var i=t<<32-r|e>>>r;return i>>>0}V.rotr64_hi=Na;function Ia(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}V.rotr64_lo=Ia;function _a(e,t,r){return e>>>r}V.shr64_hi=_a;function Ba(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}V.shr64_lo=Ba;var or={},af=V,Ra=wr;function Dr(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}or.BlockHash=Dr,Dr.prototype.update=function(t,r){if(t=af.toArray(t,r),this.pending?this.pending=this.pending.concat(t):this.pending=t,this.pendingTotal+=t.length,this.pending.length>=this._delta8){t=this.pending;var i=t.length%this._delta8;this.pending=t.slice(t.length-i,t.length),this.pending.length===0&&(this.pending=null),t=af.join32(t,0,t.length-i,this.endian);for(var n=0;n>>24&255,n[o++]=t>>>16&255,n[o++]=t>>>8&255,n[o++]=t&255}else for(n[o++]=t&255,n[o++]=t>>>8&255,n[o++]=t>>>16&255,n[o++]=t>>>24&255,n[o++]=0,n[o++]=0,n[o++]=0,n[o++]=0,h=8;h>>3}se.g0_256=Fa;function Da(e){return ae(e,17)^ae(e,19)^e>>>10}se.g1_256=Da;var ar=V,Ua=or,ka=se,Bi=ar.rotl32,xr=ar.sum32,qa=ar.sum32_5,Ka=ka.ft_1,lf=Ua.BlockHash,Ha=[1518500249,1859775393,2400959708,3395469782];function ue(){if(!(this instanceof ue))return new ue;lf.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}ar.inherits(ue,lf);var La=ue;ue.blockSize=512,ue.outSize=160,ue.hmacStrength=80,ue.padLength=64,ue.prototype._update=function(t,r){for(var i=this.W,n=0;n<16;n++)i[n]=t[r+n];for(;nthis.blockSize&&(t=new this.Hash().update(t).digest()),B0(t.length<=this.blockSize);for(var r=t.length;r>8,S=w&255;y?b.push(y,S):b.push(S)}return b}r.toArray=i;function n(h){return h.length===1?"0"+h:h}r.zero2=n;function o(h){for(var p="",b=0;b(S>>1)-1?R=(S>>1)-F:R=F,I.isubn(R)):R=0,y[N]=R,I.iushrn(1)}return y}r.getNAF=i;function n(b,g){var w=[[],[]];b=b.clone(),g=g.clone();for(var y=0,S=0,I;b.cmpn(-y)>0||g.cmpn(-S)>0;){var N=b.andln(3)+y&3,R=g.andln(3)+S&3;N===3&&(N=-1),R===3&&(R=-1);var F;N&1?(I=b.andln(7)+y&7,(I===3||I===5)&&R===2?F=-N:F=N):F=0,w[0].push(F);var U;R&1?(I=g.andln(7)+S&7,(I===3||I===5)&&N===2?U=-R:U=R):U=0,w[1].push(U),2*y===F+1&&(y=1-y),2*S===U+1&&(S=1-S),b.iushrn(1),g.iushrn(1)}return w}r.getJSF=n;function o(b,g,w){var y="_"+g;b.prototype[g]=function(){return this[y]!==void 0?this[y]:this[y]=w.call(this)}}r.cachedProperty=o;function h(b){return typeof b=="string"?r.toArray(b,"hex"):b}r.parseBytes=h;function p(b){return new K(b,"hex","le")}r.intFromLE=p}),kr=Jt.getNAF,O0=Jt.getJSF,qr=Jt.assert;function Be(e,t){this.type=e,this.p=new K(t.p,16),this.red=t.prime?K.red(t.prime):K.mont(this.p),this.zero=new K(0).toRed(this.red),this.one=new K(1).toRed(this.red),this.two=new K(2).toRed(this.red),this.n=t.n&&new K(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var Xe=Be;Be.prototype.point=function(){throw new Error("Not implemented")},Be.prototype.validate=function(){throw new Error("Not implemented")},Be.prototype._fixedNafMul=function(t,r){qr(t.precomputed);var i=t._getDoubles(),n=kr(r,1,this._bitLength),o=(1<=p;g--)b=(b<<1)+n[g];h.push(b)}for(var w=this.jpoint(null,null,null),y=this.jpoint(null,null,null),S=o;S>0;S--){for(p=0;p=0;b--){for(var g=0;b>=0&&h[b]===0;b--)g++;if(b>=0&&g++,p=p.dblp(g),b<0)break;var w=h[b];qr(w!==0),t.type==="affine"?w>0?p=p.mixedAdd(o[w-1>>1]):p=p.mixedAdd(o[-w-1>>1].neg()):w>0?p=p.add(o[w-1>>1]):p=p.add(o[-w-1>>1].neg())}return t.type==="affine"?p.toP():p},Be.prototype._wnafMulAdd=function(t,r,i,n,o){var h=this._wnafT1,p=this._wnafT2,b=this._wnafT3,g=0,w,y,S;for(w=0;w=1;w-=2){var N=w-1,R=w;if(h[N]!==1||h[R]!==1){b[N]=kr(i[N],h[N],this._bitLength),b[R]=kr(i[R],h[R],this._bitLength),g=Math.max(b[N].length,g),g=Math.max(b[R].length,g);continue}var F=[r[N],null,null,r[R]];r[N].y.cmp(r[R].y)===0?(F[1]=r[N].add(r[R]),F[2]=r[N].toJ().mixedAdd(r[R].neg())):r[N].y.cmp(r[R].y.redNeg())===0?(F[1]=r[N].toJ().mixedAdd(r[R]),F[2]=r[N].add(r[R].neg())):(F[1]=r[N].toJ().mixedAdd(r[R]),F[2]=r[N].toJ().mixedAdd(r[R].neg()));var U=[-3,-1,-5,-7,0,7,5,1,3],Q=O0(i[N],i[R]);for(g=Math.max(Q[0].length,g),b[N]=new Array(g),b[R]=new Array(g),y=0;y=0;w--){for(var Tt=0;w>=0;){var W=!0;for(y=0;y=0&&Tt++,H=H.dblp(Tt),w<0)break;for(y=0;y0?S=p[y][Ot-1>>1]:Ot<0&&(S=p[y][-Ot-1>>1].neg()),S.type==="affine"?H=H.mixedAdd(S):H=H.add(S))}}for(w=0;w=Math.ceil((t.bitLength()+1)/r.step):!1},Zt.prototype._getDoubles=function(t,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var i=[this],n=this,o=0;o=0&&(I=g,N=w),y.negative&&(y=y.neg(),S=S.neg()),I.negative&&(I=I.neg(),N=N.neg()),[{a:y,b:S},{a:I,b:N}]},$t.prototype._endoSplit=function(t){var r=this.endo.basis,i=r[0],n=r[1],o=n.b.mul(t).divRound(this.n),h=i.b.neg().mul(t).divRound(this.n),p=o.mul(i.a),b=h.mul(n.a),g=o.mul(i.b),w=h.mul(n.b),y=t.sub(p).sub(b),S=g.add(w).neg();return{k1:y,k2:S}},$t.prototype.pointFromX=function(t,r){t=new K(t,16),t.red||(t=t.toRed(this.red));var i=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=i.redSqrt();if(n.redSqr().redSub(i).cmp(this.zero)!==0)throw new Error("invalid point");var o=n.fromRed().isOdd();return(r&&!o||!r&&o)&&(n=n.redNeg()),this.point(t,n)},$t.prototype.validate=function(t){if(t.inf)return!0;var r=t.x,i=t.y,n=this.a.redMul(r),o=r.redSqr().redMul(r).redIAdd(n).redIAdd(this.b);return i.redSqr().redISub(o).cmpn(0)===0},$t.prototype._endoWnafMulAdd=function(t,r,i){for(var n=this._endoWnafT1,o=this._endoWnafT2,h=0;h":""},Dt.prototype.isInfinity=function(){return this.inf},Dt.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(this.x.cmp(t.x)===0)return this.curve.point(null,null);var r=this.y.redSub(t.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(t.x).redInvm()));var i=r.redSqr().redISub(this.x).redISub(t.x),n=r.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,n)},Dt.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(t.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,i=this.x.redSqr(),n=t.redInvm(),o=i.redAdd(i).redIAdd(i).redIAdd(r).redMul(n),h=o.redSqr().redISub(this.x.redAdd(this.x)),p=o.redMul(this.x.redSub(h)).redISub(this.y);return this.curve.point(h,p)},Dt.prototype.getX=function(){return this.x.fromRed()},Dt.prototype.getY=function(){return this.y.fromRed()},Dt.prototype.mul=function(t){return t=new K(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},Dt.prototype.mulAdd=function(t,r,i){var n=[this,r],o=[t,i];return this.curve.endo?this.curve._endoWnafMulAdd(n,o):this.curve._wnafMulAdd(1,n,o,2)},Dt.prototype.jmulAdd=function(t,r,i){var n=[this,r],o=[t,i];return this.curve.endo?this.curve._endoWnafMulAdd(n,o,!0):this.curve._wnafMulAdd(1,n,o,2,!0)},Dt.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||this.x.cmp(t.x)===0&&this.y.cmp(t.y)===0)},Dt.prototype.neg=function(t){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var i=this.precomputed,n=function(o){return o.neg()};r.precomputed={naf:i.naf&&{wnd:i.naf.wnd,points:i.naf.points.map(n)},doubles:i.doubles&&{step:i.doubles.step,points:i.doubles.points.map(n)}}}return r},Dt.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var t=this.curve.jpoint(this.x,this.y,this.curve.one);return t};function Ut(e,t,r,i){Xe.BasePoint.call(this,e,"jacobian"),t===null&&r===null&&i===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new K(0)):(this.x=new K(t,16),this.y=new K(r,16),this.z=new K(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}Fi(Ut,Xe.BasePoint),$t.prototype.jpoint=function(t,r,i){return new Ut(this,t,r,i)},Ut.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),r=t.redSqr(),i=this.x.redMul(r),n=this.y.redMul(r).redMul(t);return this.curve.point(i,n)},Ut.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},Ut.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var r=t.z.redSqr(),i=this.z.redSqr(),n=this.x.redMul(r),o=t.x.redMul(i),h=this.y.redMul(r.redMul(t.z)),p=t.y.redMul(i.redMul(this.z)),b=n.redSub(o),g=h.redSub(p);if(b.cmpn(0)===0)return g.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var w=b.redSqr(),y=w.redMul(b),S=n.redMul(w),I=g.redSqr().redIAdd(y).redISub(S).redISub(S),N=g.redMul(S.redISub(I)).redISub(h.redMul(y)),R=this.z.redMul(t.z).redMul(b);return this.curve.jpoint(I,N,R)},Ut.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var r=this.z.redSqr(),i=this.x,n=t.x.redMul(r),o=this.y,h=t.y.redMul(r).redMul(this.z),p=i.redSub(n),b=o.redSub(h);if(p.cmpn(0)===0)return b.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var g=p.redSqr(),w=g.redMul(p),y=i.redMul(g),S=b.redSqr().redIAdd(w).redISub(y).redISub(y),I=b.redMul(y.redISub(S)).redISub(o.redMul(w)),N=this.z.redMul(p);return this.curve.jpoint(S,I,N)},Ut.prototype.dblp=function(t){if(t===0)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var i=this;for(r=0;r=0)return!1;if(i.redIAdd(o),this.x.cmp(i)===0)return!0}},Ut.prototype.inspect=function(){return this.isInfinity()?"":""},Ut.prototype.isInfinity=function(){return this.z.cmpn(0)===0};var Kr=lr(function(e,t){var r=t;r.base=Xe,r.short=T0,r.mont=null,r.edwards=null}),Hr=lr(function(e,t){var r=t,i=Jt.assert;function n(p){p.type==="short"?this.curve=new Kr.short(p):p.type==="edwards"?this.curve=new Kr.edwards(p):this.curve=new Kr.mont(p),this.g=this.curve.g,this.n=this.curve.n,this.hash=p.hash,i(this.g.validate(),"Invalid curve"),i(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}r.PresetCurve=n;function o(p,b){Object.defineProperty(r,p,{configurable:!0,enumerable:!0,get:function(){var g=new n(b);return Object.defineProperty(r,p,{configurable:!0,enumerable:!0,value:g}),g}})}o("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:oe.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),o("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:oe.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),o("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:oe.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),o("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:oe.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),o("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:oe.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),o("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:oe.sha256,gRed:!1,g:["9"]}),o("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:oe.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var h;try{h=null.crash()}catch{h=void 0}o("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:oe.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",h]})});function Re(e){if(!(this instanceof Re))return new Re(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=ne.toArray(e.entropy,e.entropyEnc||"hex"),r=ne.toArray(e.nonce,e.nonceEnc||"hex"),i=ne.toArray(e.pers,e.persEnc||"hex");Ti(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,r,i)}var If=Re;Re.prototype._init=function(t,r,i){var n=t.concat(r).concat(i);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var o=0;o=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(i||[])),this._reseed=1},Re.prototype.generate=function(t,r,i,n){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(n=i,i=r,r=null),i&&(i=ne.toArray(i,n||"hex"),this._update(i));for(var o=[];o.length"};var F0=Jt.assert;function Lr(e,t){if(e instanceof Lr)return e;this._importDER(e,t)||(F0(e.r&&e.s,"Signature without r or s"),this.r=new K(e.r,16),this.s=new K(e.s,16),e.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}var zr=Lr;function D0(){this.place=0}function ki(e,t){var r=e[t.place++];if(!(r&128))return r;var i=r&15;if(i===0||i>4)return!1;for(var n=0,o=0,h=t.place;o>>=0;return n<=127?!1:(t.place=h,n)}function _f(e){for(var t=0,r=e.length-1;!e[t]&&!(e[t+1]&128)&&t>>3);for(e.push(r|128);--r;)e.push(t>>>(r<<3)&255);e.push(t)}Lr.prototype.toDER=function(t){var r=this.r.toArray(),i=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),i[0]&128&&(i=[0].concat(i)),r=_f(r),i=_f(i);!i[0]&&!(i[1]&128);)i=i.slice(1);var n=[2];qi(n,r.length),n=n.concat(r),n.push(2),qi(n,i.length);var o=n.concat(i),h=[48];return qi(h,o.length),h=h.concat(o),Jt.encode(h,t)};var U0=function(){throw new Error("unsupported")},Bf=Jt.assert;function te(e){if(!(this instanceof te))return new te(e);typeof e=="string"&&(Bf(Object.prototype.hasOwnProperty.call(Hr,e),"Unknown curve "+e),e=Hr[e]),e instanceof Hr.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}var k0=te;te.prototype.keyPair=function(t){return new Ui(this,t)},te.prototype.keyFromPrivate=function(t,r){return Ui.fromPrivate(this,t,r)},te.prototype.keyFromPublic=function(t,r){return Ui.fromPublic(this,t,r)},te.prototype.genKeyPair=function(t){t||(t={});for(var r=new If({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||U0(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),i=this.n.byteLength(),n=this.n.sub(new K(2));;){var o=new K(r.generate(i));if(!(o.cmp(n)>0))return o.iaddn(1),this.keyFromPrivate(o)}},te.prototype._truncateToN=function(t,r){var i=t.byteLength()*8-this.n.bitLength();return i>0&&(t=t.ushrn(i)),!r&&t.cmp(this.n)>=0?t.sub(this.n):t},te.prototype.sign=function(t,r,i,n){typeof i=="object"&&(n=i,i=null),n||(n={}),r=this.keyFromPrivate(r,i),t=this._truncateToN(new K(t,16));for(var o=this.n.byteLength(),h=r.getPrivate().toArray("be",o),p=t.toArray("be",o),b=new If({hash:this.hash,entropy:h,nonce:p,pers:n.pers,persEnc:n.persEnc||"utf8"}),g=this.n.sub(new K(1)),w=0;;w++){var y=n.k?n.k(w):new K(b.generate(this.n.byteLength()));if(y=this._truncateToN(y,!0),!(y.cmpn(1)<=0||y.cmp(g)>=0)){var S=this.g.mul(y);if(!S.isInfinity()){var I=S.getX(),N=I.umod(this.n);if(N.cmpn(0)!==0){var R=y.invm(this.n).mul(N.mul(r.getPrivate()).iadd(t));if(R=R.umod(this.n),R.cmpn(0)!==0){var F=(S.getY().isOdd()?1:0)|(I.cmp(N)!==0?2:0);return n.canonical&&R.cmp(this.nh)>0&&(R=this.n.sub(R),F^=1),new zr({r:N,s:R,recoveryParam:F})}}}}}},te.prototype.verify=function(t,r,i,n){t=this._truncateToN(new K(t,16)),i=this.keyFromPublic(i,n),r=new zr(r,"hex");var o=r.r,h=r.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0||h.cmpn(1)<0||h.cmp(this.n)>=0)return!1;var p=h.invm(this.n),b=p.mul(t).umod(this.n),g=p.mul(o).umod(this.n),w;return this.curve._maxwellTrick?(w=this.g.jmulAdd(b,i.getPublic(),g),w.isInfinity()?!1:w.eqXToP(o)):(w=this.g.mulAdd(b,i.getPublic(),g),w.isInfinity()?!1:w.getX().umod(this.n).cmp(o)===0)},te.prototype.recoverPubKey=function(e,t,r,i){Bf((3&r)===r,"The recovery param is more than two bits"),t=new zr(t,i);var n=this.n,o=new K(e),h=t.r,p=t.s,b=r&1,g=r>>1;if(h.cmp(this.curve.p.umod(this.curve.n))>=0&&g)throw new Error("Unable to find sencond key candinate");g?h=this.curve.pointFromX(h.add(this.curve.n),b):h=this.curve.pointFromX(h,b);var w=t.r.invm(n),y=n.sub(o).mul(w).umod(n),S=p.mul(w).umod(n);return this.g.mulAdd(y,h,S)},te.prototype.getKeyRecoveryParam=function(e,t,r,i){if(t=new zr(t,i),t.recoveryParam!==null)return t.recoveryParam;for(var n=0;n<4;n++){var o;try{o=this.recoverPubKey(e,t,n)}catch{continue}if(o.eq(r))return n}throw new Error("Unable to find valid recovery factor")};var q0=lr(function(e,t){var r=t;r.version="6.5.4",r.utils=Jt,r.rand=function(){throw new Error("unsupported")},r.curve=Kr,r.curves=Hr,r.ec=k0,r.eddsa=null}),K0=q0.ec;const H0="signing-key/5.7.0",Ki=new z(H0);let Hi=null;function pe(){return Hi||(Hi=new K0("secp256k1")),Hi}class L0{constructor(t){yr(this,"curve","secp256k1"),yr(this,"privateKey",Ht(t)),xs(this.privateKey)!==32&&Ki.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const r=pe().keyFromPrivate(Pt(this.privateKey));yr(this,"publicKey","0x"+r.getPublic(!1,"hex")),yr(this,"compressedPublicKey","0x"+r.getPublic(!0,"hex")),yr(this,"_isSigningKey",!0)}_addPoint(t){const r=pe().keyFromPublic(Pt(this.publicKey)),i=pe().keyFromPublic(Pt(t));return"0x"+r.pub.add(i.pub).encodeCompressed("hex")}signDigest(t){const r=pe().keyFromPrivate(Pt(this.privateKey)),i=Pt(t);i.length!==32&&Ki.throwArgumentError("bad digest length","digest",t);const n=r.sign(i,{canonical:!0});return kn({recoveryParam:n.recoveryParam,r:fe("0x"+n.r.toString(16),32),s:fe("0x"+n.s.toString(16),32)})}computeSharedSecret(t){const r=pe().keyFromPrivate(Pt(this.privateKey)),i=pe().keyFromPublic(Pt(Rf(t)));return fe("0x"+r.derive(i.getPublic()).toString(16),32)}static isSigningKey(t){return!!(t&&t._isSigningKey)}}function z0(e,t){const r=kn(t),i={r:Pt(r.r),s:Pt(r.s)};return"0x"+pe().recoverPubKey(Pt(e),i,r.recoveryParam).encode("hex",!1)}function Rf(e,t){const r=Pt(e);if(r.length===32){const i=new L0(r);return t?"0x"+pe().keyFromPrivate(r).getPublic(!0,"hex"):i.publicKey}else{if(r.length===33)return t?Ht(r):"0x"+pe().keyFromPublic(r).getPublic(!1,"hex");if(r.length===65)return t?"0x"+pe().keyFromPublic(r).getPublic(!0,"hex"):Ht(r)}return Ki.throwArgumentError("invalid public or private key","key","[REDACTED]")}const j0="transactions/5.7.0";new z(j0);var Cf;(function(e){e[e.legacy=0]="legacy",e[e.eip2930=1]="eip2930",e[e.eip1559=2]="eip1559"})(Cf||(Cf={}));function V0(e){const t=Rf(e);return ta(Un(wi(Un(t,1)),12))}function Q0(e,t){return V0(z0(Pt(e),t))}const J0="https://rpc.walletconnect.com/v1";async function Of(e,t,r,i,n,o){switch(r.t){case"eip191":return Pf(e,t,r.s);case"eip1271":return await Tf(e,t,r.s,i,n,o);default:throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${r.t}`)}}function Pf(e,t,r){return Q0(tf(t),r).toLowerCase()===e.toLowerCase()}async function Tf(e,t,r,i,n,o){try{const h="0x1626ba7e",p="0000000000000000000000000000000000000000000000000000000000000040",b="0000000000000000000000000000000000000000000000000000000000000041",g=r.substring(2),w=tf(t).substring(2),y=h+w+p+b+g,S=await fetch(`${o||J0}/?chainId=${i}&projectId=${n}`,{method:"POST",body:JSON.stringify({id:Y0(),jsonrpc:"2.0",method:"eth_call",params:[{to:e,data:y},"latest"]})}),{result:I}=await S.json();return I?I.slice(0,h.length).toLowerCase()===h.toLowerCase():!1}catch(h){return console.error("isValidEip1271Signature: ",h),!1}}function Y0(){return Date.now()+Math.floor(Math.random()*1e3)}var G0=Object.defineProperty,W0=Object.defineProperties,X0=Object.getOwnPropertyDescriptors,Ff=Object.getOwnPropertySymbols,Z0=Object.prototype.hasOwnProperty,$0=Object.prototype.propertyIsEnumerable,Df=(e,t,r)=>t in e?G0(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Li=(e,t)=>{for(var r in t||(t={}))Z0.call(t,r)&&Df(e,r,t[r]);if(Ff)for(var r of Ff(t))$0.call(t,r)&&Df(e,r,t[r]);return e},Uf=(e,t)=>W0(e,X0(t));const tu="did:pkh:",jr=e=>e?.split(":"),zi=e=>{const t=e&&jr(e);if(t)return e.includes(tu)?t[3]:t[1]},eu=e=>{const t=e&&jr(e);if(t)return t[2]+":"+t[3]},ji=e=>{const t=e&&jr(e);if(t)return t.pop()};async function ru(e){const{cacao:t,projectId:r}=e,{s:i,p:n}=t,o=kf(n,n.iss),h=ji(n.iss);return await Of(h,o,i,zi(n.iss),r)}const kf=(e,t)=>{const r=`${e.domain} wants you to sign in with your Ethereum account:`,i=ji(t);if(!e.aud&&!e.uri)throw new Error("Either `aud` or `uri` is required to construct the message");let n=e.statement||void 0;const o=`URI: ${e.aud||e.uri}`,h=`Version: ${e.version}`,p=`Chain ID: ${zi(t)}`,b=`Nonce: ${e.nonce}`,g=`Issued At: ${e.iat}`,w=e.resources?`Resources:${e.resources.map(S=>` ++ */(function(e){(function(){var t="input is invalid type",r="finalize already called",i=typeof window=="object",n=i?window:{};n.JS_SHA3_NO_WINDOW&&(i=!1);var o=!i&&typeof self=="object",h=!n.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;h?n=Bn:o&&(n=self);var p=!n.JS_SHA3_NO_COMMON_JS&&!0&&e.exports,b=!n.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",g="0123456789abcdef".split(""),w=[31,7936,2031616,520093696],y=[4,1024,262144,67108864],S=[1,256,65536,16777216],I=[6,1536,393216,100663296],N=[0,8,16,24],R=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],F=[224,256,384,512],U=[128,256],Q=["hex","buffer","arrayBuffer","array","digest"],Bt={128:168,256:136};(n.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(u){return Object.prototype.toString.call(u)==="[object Array]"}),b&&(n.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(u){return typeof u=="object"&&u.buffer&&u.buffer.constructor===ArrayBuffer});for(var J=function(u,E,_){return function(B){return new s(u,E,u).update(B)[_]()}},H=function(u,E,_){return function(B,C){return new s(u,E,C).update(B)[_]()}},L=function(u,E,_){return function(B,C,D,P){return f["cshake"+u].update(B,C,D,P)[_]()}},Tt=function(u,E,_){return function(B,C,D,P){return f["kmac"+u].update(B,C,D,P)[_]()}},W=function(u,E,_,B){for(var C=0;C>5,this.byteCount=this.blockCount<<2,this.outputBlocks=_>>5,this.extraBytes=(_&31)>>3;for(var B=0;B<50;++B)this.s[B]=0}s.prototype.update=function(u){if(this.finalized)throw new Error(r);var E,_=typeof u;if(_!=="string"){if(_==="object"){if(u===null)throw new Error(t);if(b&&u.constructor===ArrayBuffer)u=new Uint8Array(u);else if(!Array.isArray(u)&&(!b||!ArrayBuffer.isView(u)))throw new Error(t)}else throw new Error(t);E=!0}for(var B=this.blocks,C=this.byteCount,D=u.length,P=this.blockCount,O=0,Ct=this.s,T,q;O>2]|=u[O]<>2]|=q<>2]|=(192|q>>6)<>2]|=(128|q&63)<=57344?(B[T>>2]|=(224|q>>12)<>2]|=(128|q>>6&63)<>2]|=(128|q&63)<>2]|=(240|q>>18)<>2]|=(128|q>>12&63)<>2]|=(128|q>>6&63)<>2]|=(128|q&63)<=C){for(this.start=T-C,this.block=B[P],T=0;T>8,_=u&255;_>0;)C.unshift(_),u=u>>8,_=u&255,++B;return E?C.push(B):C.unshift(B),this.update(C),C.length},s.prototype.encodeString=function(u){var E,_=typeof u;if(_!=="string"){if(_==="object"){if(u===null)throw new Error(t);if(b&&u.constructor===ArrayBuffer)u=new Uint8Array(u);else if(!Array.isArray(u)&&(!b||!ArrayBuffer.isView(u)))throw new Error(t)}else throw new Error(t);E=!0}var B=0,C=u.length;if(E)B=C;else for(var D=0;D=57344?B+=3:(P=65536+((P&1023)<<10|u.charCodeAt(++D)&1023),B+=4)}return B+=this.encode(B*8),this.update(u),B},s.prototype.bytepad=function(u,E){for(var _=this.encode(E),B=0;B>2]|=this.padding[E&3],this.lastByteIndex===this.byteCount)for(u[0]=u[_],E=1;E<_+1;++E)u[E]=0;for(u[_-1]|=2147483648,E=0;E<_;++E)B[E]^=u[E];k(B)}},s.prototype.toString=s.prototype.hex=function(){this.finalize();for(var u=this.blockCount,E=this.s,_=this.outputBlocks,B=this.extraBytes,C=0,D=0,P="",O;D<_;){for(C=0;C>4&15]+g[O&15]+g[O>>12&15]+g[O>>8&15]+g[O>>20&15]+g[O>>16&15]+g[O>>28&15]+g[O>>24&15];D%u===0&&(k(E),C=0)}return B&&(O=E[C],P+=g[O>>4&15]+g[O&15],B>1&&(P+=g[O>>12&15]+g[O>>8&15]),B>2&&(P+=g[O>>20&15]+g[O>>16&15])),P},s.prototype.arrayBuffer=function(){this.finalize();var u=this.blockCount,E=this.s,_=this.outputBlocks,B=this.extraBytes,C=0,D=0,P=this.outputBits>>3,O;B?O=new ArrayBuffer(_+1<<2):O=new ArrayBuffer(P);for(var Ct=new Uint32Array(O);D<_;){for(C=0;C>8&255,P[O+2]=Ct>>16&255,P[O+3]=Ct>>24&255;D%u===0&&k(E)}return B&&(O=D<<2,Ct=E[C],P[O]=Ct&255,B>1&&(P[O+1]=Ct>>8&255),B>2&&(P[O+2]=Ct>>16&255)),P};function v(u,E,_){s.call(this,u,E,_)}v.prototype=new s,v.prototype.finalize=function(){return this.encode(this.outputBits,!0),s.prototype.finalize.call(this)};var k=function(u){var E,_,B,C,D,P,O,Ct,T,q,Pe,X,Z,Te,$,tt,Fe,et,rt,De,it,nt,Ue,ft,ot,ke,st,at,qe,ut,ht,Ke,ct,lt,He,dt,pt,Le,vt,gt,ze,mt,At,je,bt,yt,Ve,wt,xt,Qe,Mt,Et,Je,St,Nt,Ye,It,_t,xe,Me,Ee,Se,Ne;for(B=0;B<48;B+=2)C=u[0]^u[10]^u[20]^u[30]^u[40],D=u[1]^u[11]^u[21]^u[31]^u[41],P=u[2]^u[12]^u[22]^u[32]^u[42],O=u[3]^u[13]^u[23]^u[33]^u[43],Ct=u[4]^u[14]^u[24]^u[34]^u[44],T=u[5]^u[15]^u[25]^u[35]^u[45],q=u[6]^u[16]^u[26]^u[36]^u[46],Pe=u[7]^u[17]^u[27]^u[37]^u[47],X=u[8]^u[18]^u[28]^u[38]^u[48],Z=u[9]^u[19]^u[29]^u[39]^u[49],E=X^(P<<1|O>>>31),_=Z^(O<<1|P>>>31),u[0]^=E,u[1]^=_,u[10]^=E,u[11]^=_,u[20]^=E,u[21]^=_,u[30]^=E,u[31]^=_,u[40]^=E,u[41]^=_,E=C^(Ct<<1|T>>>31),_=D^(T<<1|Ct>>>31),u[2]^=E,u[3]^=_,u[12]^=E,u[13]^=_,u[22]^=E,u[23]^=_,u[32]^=E,u[33]^=_,u[42]^=E,u[43]^=_,E=P^(q<<1|Pe>>>31),_=O^(Pe<<1|q>>>31),u[4]^=E,u[5]^=_,u[14]^=E,u[15]^=_,u[24]^=E,u[25]^=_,u[34]^=E,u[35]^=_,u[44]^=E,u[45]^=_,E=Ct^(X<<1|Z>>>31),_=T^(Z<<1|X>>>31),u[6]^=E,u[7]^=_,u[16]^=E,u[17]^=_,u[26]^=E,u[27]^=_,u[36]^=E,u[37]^=_,u[46]^=E,u[47]^=_,E=q^(C<<1|D>>>31),_=Pe^(D<<1|C>>>31),u[8]^=E,u[9]^=_,u[18]^=E,u[19]^=_,u[28]^=E,u[29]^=_,u[38]^=E,u[39]^=_,u[48]^=E,u[49]^=_,Te=u[0],$=u[1],yt=u[11]<<4|u[10]>>>28,Ve=u[10]<<4|u[11]>>>28,at=u[20]<<3|u[21]>>>29,qe=u[21]<<3|u[20]>>>29,Me=u[31]<<9|u[30]>>>23,Ee=u[30]<<9|u[31]>>>23,mt=u[40]<<18|u[41]>>>14,At=u[41]<<18|u[40]>>>14,lt=u[2]<<1|u[3]>>>31,He=u[3]<<1|u[2]>>>31,tt=u[13]<<12|u[12]>>>20,Fe=u[12]<<12|u[13]>>>20,wt=u[22]<<10|u[23]>>>22,xt=u[23]<<10|u[22]>>>22,ut=u[33]<<13|u[32]>>>19,ht=u[32]<<13|u[33]>>>19,Se=u[42]<<2|u[43]>>>30,Ne=u[43]<<2|u[42]>>>30,St=u[5]<<30|u[4]>>>2,Nt=u[4]<<30|u[5]>>>2,dt=u[14]<<6|u[15]>>>26,pt=u[15]<<6|u[14]>>>26,et=u[25]<<11|u[24]>>>21,rt=u[24]<<11|u[25]>>>21,Qe=u[34]<<15|u[35]>>>17,Mt=u[35]<<15|u[34]>>>17,Ke=u[45]<<29|u[44]>>>3,ct=u[44]<<29|u[45]>>>3,ft=u[6]<<28|u[7]>>>4,ot=u[7]<<28|u[6]>>>4,Ye=u[17]<<23|u[16]>>>9,It=u[16]<<23|u[17]>>>9,Le=u[26]<<25|u[27]>>>7,vt=u[27]<<25|u[26]>>>7,De=u[36]<<21|u[37]>>>11,it=u[37]<<21|u[36]>>>11,Et=u[47]<<24|u[46]>>>8,Je=u[46]<<24|u[47]>>>8,je=u[8]<<27|u[9]>>>5,bt=u[9]<<27|u[8]>>>5,ke=u[18]<<20|u[19]>>>12,st=u[19]<<20|u[18]>>>12,_t=u[29]<<7|u[28]>>>25,xe=u[28]<<7|u[29]>>>25,gt=u[38]<<8|u[39]>>>24,ze=u[39]<<8|u[38]>>>24,nt=u[48]<<14|u[49]>>>18,Ue=u[49]<<14|u[48]>>>18,u[0]=Te^~tt&et,u[1]=$^~Fe&rt,u[10]=ft^~ke&at,u[11]=ot^~st&qe,u[20]=lt^~dt&Le,u[21]=He^~pt&vt,u[30]=je^~yt&wt,u[31]=bt^~Ve&xt,u[40]=St^~Ye&_t,u[41]=Nt^~It&xe,u[2]=tt^~et&De,u[3]=Fe^~rt&it,u[12]=ke^~at&ut,u[13]=st^~qe&ht,u[22]=dt^~Le>,u[23]=pt^~vt&ze,u[32]=yt^~wt&Qe,u[33]=Ve^~xt&Mt,u[42]=Ye^~_t&Me,u[43]=It^~xe&Ee,u[4]=et^~De&nt,u[5]=rt^~it&Ue,u[14]=at^~ut&Ke,u[15]=qe^~ht&ct,u[24]=Le^~gt&mt,u[25]=vt^~ze&At,u[34]=wt^~Qe&Et,u[35]=xt^~Mt&Je,u[44]=_t^~Me&Se,u[45]=xe^~Ee&Ne,u[6]=De^~nt&Te,u[7]=it^~Ue&$,u[16]=ut^~Ke&ft,u[17]=ht^~ct&ot,u[26]=gt^~mt<,u[27]=ze^~At&He,u[36]=Qe^~Et&je,u[37]=Mt^~Je&bt,u[46]=Me^~Se&St,u[47]=Ee^~Ne&Nt,u[8]=nt^~Te&tt,u[9]=Ue^~$&Fe,u[18]=Ke^~ft&ke,u[19]=ct^~ot&st,u[28]=mt^~lt&dt,u[29]=At^~He&pt,u[38]=Et^~je&yt,u[39]=Je^~bt&Ve,u[48]=Se^~St&Ye,u[49]=Ne^~Nt&It,u[0]^=R[B],u[1]^=R[B+1]};if(p)e.exports=f;else for(c=0;c{try{if("test".normalize(t)!=="test")throw new Error("bad normalize")}catch{e.push(t)}}),e.length)throw new Error("missing "+e.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(e){return e.message}return null}const Tn=As();var bi;(function(e){e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.OFF="OFF"})(bi||(bi={}));var ee;(function(e){e.UNKNOWN_ERROR="UNKNOWN_ERROR",e.NOT_IMPLEMENTED="NOT_IMPLEMENTED",e.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",e.NETWORK_ERROR="NETWORK_ERROR",e.SERVER_ERROR="SERVER_ERROR",e.TIMEOUT="TIMEOUT",e.BUFFER_OVERRUN="BUFFER_OVERRUN",e.NUMERIC_FAULT="NUMERIC_FAULT",e.MISSING_NEW="MISSING_NEW",e.INVALID_ARGUMENT="INVALID_ARGUMENT",e.MISSING_ARGUMENT="MISSING_ARGUMENT",e.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",e.CALL_EXCEPTION="CALL_EXCEPTION",e.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",e.NONCE_EXPIRED="NONCE_EXPIRED",e.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",e.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",e.TRANSACTION_REPLACED="TRANSACTION_REPLACED",e.ACTION_REJECTED="ACTION_REJECTED"})(ee||(ee={}));const Fn="0123456789abcdef";class z{constructor(t){Object.defineProperty(this,"version",{enumerable:!0,value:t,writable:!1})}_log(t,r){const i=t.toLowerCase();Cr[i]==null&&this.throwArgumentError("invalid log level name","logLevel",t),!(Pn>Cr[i])&&console.log.apply(console,r)}debug(...t){this._log(z.levels.DEBUG,t)}info(...t){this._log(z.levels.INFO,t)}warn(...t){this._log(z.levels.WARNING,t)}makeError(t,r,i){if(On)return this.makeError("censored error",r,{});r||(r=z.errors.UNKNOWN_ERROR),i||(i={});const n=[];Object.keys(i).forEach(b=>{const g=i[b];try{if(g instanceof Uint8Array){let w="";for(let y=0;y>4],w+=Fn[g[y]&15];n.push(b+"=Uint8Array(0x"+w+")")}else n.push(b+"="+JSON.stringify(g))}catch{n.push(b+"="+JSON.stringify(i[b].toString()))}}),n.push(`code=${r}`),n.push(`version=${this.version}`);const o=t;let h="";switch(r){case ee.NUMERIC_FAULT:{h="NUMERIC_FAULT";const b=t;switch(b){case"overflow":case"underflow":case"division-by-zero":h+="-"+b;break;case"negative-power":case"negative-width":h+="-unsupported";break;case"unbound-bitwise-result":h+="-unbound-result";break}break}case ee.CALL_EXCEPTION:case ee.INSUFFICIENT_FUNDS:case ee.MISSING_NEW:case ee.NONCE_EXPIRED:case ee.REPLACEMENT_UNDERPRICED:case ee.TRANSACTION_REPLACED:case ee.UNPREDICTABLE_GAS_LIMIT:h=r;break}h&&(t+=" [ See: https://links.ethers.org/v5-errors-"+h+" ]"),n.length&&(t+=" ("+n.join(", ")+")");const p=new Error(t);return p.reason=o,p.code=r,Object.keys(i).forEach(function(b){p[b]=i[b]}),p}throwError(t,r,i){throw this.makeError(t,r,i)}throwArgumentError(t,r,i){return this.throwError(t,z.errors.INVALID_ARGUMENT,{argument:r,value:i})}assert(t,r,i,n){t||this.throwError(r,i,n)}assertArgument(t,r,i,n){t||this.throwArgumentError(r,i,n)}checkNormalize(t){Tn&&this.throwError("platform missing String.prototype.normalize",z.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:Tn})}checkSafeUint53(t,r){typeof t=="number"&&(r==null&&(r="value not safe"),(t<0||t>=9007199254740991)&&this.throwError(r,z.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:t}),t%1&&this.throwError(r,z.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:t}))}checkArgumentCount(t,r,i){i?i=": "+i:i="",tr&&this.throwError("too many arguments"+i,z.errors.UNEXPECTED_ARGUMENT,{count:t,expectedCount:r})}checkNew(t,r){(t===Object||t==null)&&this.throwError("missing new",z.errors.MISSING_NEW,{name:r.name})}checkAbstract(t,r){t===r?this.throwError("cannot instantiate abstract class "+JSON.stringify(r.name)+" directly; use a sub-class",z.errors.UNSUPPORTED_OPERATION,{name:t.name,operation:"new"}):(t===Object||t==null)&&this.throwError("missing new",z.errors.MISSING_NEW,{name:r.name})}static globalLogger(){return Ai||(Ai=new z(ms)),Ai}static setCensorship(t,r){if(!t&&r&&this.globalLogger().throwError("cannot permanently disable censorship",z.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),Cn){if(!t)return;this.globalLogger().throwError("error censorship permanent",z.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}On=!!t,Cn=!!r}static setLogLevel(t){const r=Cr[t.toLowerCase()];if(r==null){z.globalLogger().warn("invalid log level - "+t);return}Pn=r}static from(t){return new z(t)}}z.errors=ee,z.levels=bi;const bs="bytes/5.7.0",Ft=new z(bs);function Dn(e){return!!e.toHexString}function ir(e){return e.slice||(e.slice=function(){const t=Array.prototype.slice.call(arguments);return ir(new Uint8Array(Array.prototype.slice.apply(e,t)))}),e}function ys(e){return Qt(e)&&!(e.length%2)||nr(e)}function Un(e){return typeof e=="number"&&e==e&&e%1===0}function nr(e){if(e==null)return!1;if(e.constructor===Uint8Array)return!0;if(typeof e=="string"||!Un(e.length)||e.length<0)return!1;for(let t=0;t=256)return!1}return!0}function Pt(e,t){if(t||(t={}),typeof e=="number"){Ft.checkSafeUint53(e,"invalid arrayify value");const r=[];for(;e;)r.unshift(e&255),e=parseInt(String(e/256));return r.length===0&&r.push(0),ir(new Uint8Array(r))}if(t.allowMissingPrefix&&typeof e=="string"&&e.substring(0,2)!=="0x"&&(e="0x"+e),Dn(e)&&(e=e.toHexString()),Qt(e)){let r=e.substring(2);r.length%2&&(t.hexPad==="left"?r="0"+r:t.hexPad==="right"?r+="0":Ft.throwArgumentError("hex data is odd-length","value",e));const i=[];for(let n=0;nPt(n)),r=t.reduce((n,o)=>n+o.length,0),i=new Uint8Array(r);return t.reduce((n,o)=>(i.set(o,n),n+o.length),0),ir(i)}function xs(e,t){e=Pt(e),e.length>t&&Ft.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(t);return r.set(e,t-e.length),ir(r)}function Qt(e,t){return!(typeof e!="string"||!e.match(/^0x[0-9A-Fa-f]*$/)||t&&e.length!==2+2*t)}const yi="0123456789abcdef";function Ht(e,t){if(t||(t={}),typeof e=="number"){Ft.checkSafeUint53(e,"invalid hexlify value");let r="";for(;e;)r=yi[e&15]+r,e=Math.floor(e/16);return r.length?(r.length%2&&(r="0"+r),"0x"+r):"0x00"}if(typeof e=="bigint")return e=e.toString(16),e.length%2?"0x0"+e:"0x"+e;if(t.allowMissingPrefix&&typeof e=="string"&&e.substring(0,2)!=="0x"&&(e="0x"+e),Dn(e))return e.toHexString();if(Qt(e))return e.length%2&&(t.hexPad==="left"?e="0x0"+e.substring(2):t.hexPad==="right"?e+="0":Ft.throwArgumentError("hex data is odd-length","value",e)),e.toLowerCase();if(nr(e)){let r="0x";for(let i=0;i>4]+yi[n&15]}return r}return Ft.throwArgumentError("invalid hexlify value","value",e)}function Ms(e){if(typeof e!="string")e=Ht(e);else if(!Qt(e)||e.length%2)return null;return(e.length-2)/2}function kn(e,t,r){return typeof e!="string"?e=Ht(e):(!Qt(e)||e.length%2)&&Ft.throwArgumentError("invalid hexData","value",e),t=2+2*t,r!=null?"0x"+e.substring(t,2+2*r):"0x"+e.substring(t)}function fe(e,t){for(typeof e!="string"?e=Ht(e):Qt(e)||Ft.throwArgumentError("invalid hex string","value",e),e.length>2*t+2&&Ft.throwArgumentError("value out of range","value",arguments[1]);e.length<2*t+2;)e="0x0"+e.substring(2);return e}function qn(e){const t={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(ys(e)){let r=Pt(e);r.length===64?(t.v=27+(r[32]>>7),r[32]&=127,t.r=Ht(r.slice(0,32)),t.s=Ht(r.slice(32,64))):r.length===65?(t.r=Ht(r.slice(0,32)),t.s=Ht(r.slice(32,64)),t.v=r[64]):Ft.throwArgumentError("invalid signature string","signature",e),t.v<27&&(t.v===0||t.v===1?t.v+=27:Ft.throwArgumentError("signature invalid v byte","signature",e)),t.recoveryParam=1-t.v%2,t.recoveryParam&&(r[32]|=128),t._vs=Ht(r.slice(32,64))}else{if(t.r=e.r,t.s=e.s,t.v=e.v,t.recoveryParam=e.recoveryParam,t._vs=e._vs,t._vs!=null){const n=xs(Pt(t._vs),32);t._vs=Ht(n);const o=n[0]>=128?1:0;t.recoveryParam==null?t.recoveryParam=o:t.recoveryParam!==o&&Ft.throwArgumentError("signature recoveryParam mismatch _vs","signature",e),n[0]&=127;const h=Ht(n);t.s==null?t.s=h:t.s!==h&&Ft.throwArgumentError("signature v mismatch _vs","signature",e)}if(t.recoveryParam==null)t.v==null?Ft.throwArgumentError("signature missing v and recoveryParam","signature",e):t.v===0||t.v===1?t.recoveryParam=t.v:t.recoveryParam=1-t.v%2;else if(t.v==null)t.v=27+t.recoveryParam;else{const n=t.v===0||t.v===1?t.v:1-t.v%2;t.recoveryParam!==n&&Ft.throwArgumentError("signature recoveryParam mismatch v","signature",e)}t.r==null||!Qt(t.r)?Ft.throwArgumentError("signature missing or invalid r","signature",e):t.r=fe(t.r,32),t.s==null||!Qt(t.s)?Ft.throwArgumentError("signature missing or invalid s","signature",e):t.s=fe(t.s,32);const r=Pt(t.s);r[0]>=128&&Ft.throwArgumentError("signature s out of range","signature",e),t.recoveryParam&&(r[0]|=128);const i=Ht(r);t._vs&&(Qt(t._vs)||Ft.throwArgumentError("signature invalid _vs","signature",e),t._vs=fe(t._vs,32)),t._vs==null?t._vs=i:t._vs!==i&&Ft.throwArgumentError("signature _vs mismatch v and s","signature",e)}return t.yParityAndS=t._vs,t.compact=t.r+t.yParityAndS.substring(2),t}function wi(e){return"0x"+gs.keccak_256(Pt(e))}var Kn={exports:{}},Es={},Ss=Object.freeze({__proto__:null,default:Es}),Ns=vs(Ss);(function(e){(function(t,r){function i(A,f){if(!A)throw new Error(f||"Assertion failed")}function n(A,f){A.super_=f;var a=function(){};a.prototype=f.prototype,A.prototype=new a,A.prototype.constructor=A}function o(A,f,a){if(o.isBN(A))return A;this.negative=0,this.words=null,this.length=0,this.red=null,A!==null&&((f==="le"||f==="be")&&(a=f,f=10),this._init(A||0,f||10,a||"be"))}typeof t=="object"?t.exports=o:r.BN=o,o.BN=o,o.wordSize=26;var h;try{typeof window<"u"&&typeof window.Buffer<"u"?h=window.Buffer:h=Ns.Buffer}catch{}o.isBN=function(f){return f instanceof o?!0:f!==null&&typeof f=="object"&&f.constructor.wordSize===o.wordSize&&Array.isArray(f.words)},o.max=function(f,a){return f.cmp(a)>0?f:a},o.min=function(f,a){return f.cmp(a)<0?f:a},o.prototype._init=function(f,a,c){if(typeof f=="number")return this._initNumber(f,a,c);if(typeof f=="object")return this._initArray(f,a,c);a==="hex"&&(a=16),i(a===(a|0)&&a>=2&&a<=36),f=f.toString().replace(/\s+/g,"");var d=0;f[0]==="-"&&(d++,this.negative=1),d=0;d-=3)x=f[d]|f[d-1]<<8|f[d-2]<<16,this.words[m]|=x<>>26-M&67108863,M+=24,M>=26&&(M-=26,m++);else if(c==="le")for(d=0,m=0;d>>26-M&67108863,M+=24,M>=26&&(M-=26,m++);return this._strip()};function p(A,f){var a=A.charCodeAt(f);if(a>=48&&a<=57)return a-48;if(a>=65&&a<=70)return a-55;if(a>=97&&a<=102)return a-87;i(!1,"Invalid character in "+A)}function b(A,f,a){var c=p(A,a);return a-1>=f&&(c|=p(A,a-1)<<4),c}o.prototype._parseHex=function(f,a,c){this.length=Math.ceil((f.length-a)/6),this.words=new Array(this.length);for(var d=0;d=a;d-=2)M=b(f,a,d)<=18?(m-=18,x+=1,this.words[x]|=M>>>26):m+=8;else{var l=f.length-a;for(d=l%2===0?a+1:a;d=18?(m-=18,x+=1,this.words[x]|=M>>>26):m+=8}this._strip()};function g(A,f,a,c){for(var d=0,m=0,x=Math.min(A.length,a),M=f;M=49?m=l-49+10:l>=17?m=l-17+10:m=l,i(l>=0&&m1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},o.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{o.prototype[Symbol.for("nodejs.util.inspect.custom")]=y}catch{o.prototype.inspect=y}else o.prototype.inspect=y;function y(){return(this.red?""}var S=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],I=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],N=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(f,a){f=f||10,a=a|0||1;var c;if(f===16||f==="hex"){c="";for(var d=0,m=0,x=0;x>>24-d&16777215,d+=2,d>=26&&(d-=26,x--),m!==0||x!==this.length-1?c=S[6-l.length]+l+c:c=l+c}for(m!==0&&(c=m.toString(16)+c);c.length%a!==0;)c="0"+c;return this.negative!==0&&(c="-"+c),c}if(f===(f|0)&&f>=2&&f<=36){var s=I[f],v=N[f];c="";var k=this.clone();for(k.negative=0;!k.isZero();){var u=k.modrn(v).toString(f);k=k.idivn(v),k.isZero()?c=u+c:c=S[s-u.length]+u+c}for(this.isZero()&&(c="0"+c);c.length%a!==0;)c="0"+c;return this.negative!==0&&(c="-"+c),c}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var f=this.words[0];return this.length===2?f+=this.words[1]*67108864:this.length===3&&this.words[2]===1?f+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-f:f},o.prototype.toJSON=function(){return this.toString(16,2)},h&&(o.prototype.toBuffer=function(f,a){return this.toArrayLike(h,f,a)}),o.prototype.toArray=function(f,a){return this.toArrayLike(Array,f,a)};var R=function(f,a){return f.allocUnsafe?f.allocUnsafe(a):new f(a)};o.prototype.toArrayLike=function(f,a,c){this._strip();var d=this.byteLength(),m=c||Math.max(1,d);i(d<=m,"byte array longer than desired length"),i(m>0,"Requested array length <= 0");var x=R(f,m),M=a==="le"?"LE":"BE";return this["_toArrayLike"+M](x,d),x},o.prototype._toArrayLikeLE=function(f,a){for(var c=0,d=0,m=0,x=0;m>8&255),c>16&255),x===6?(c>24&255),d=0,x=0):(d=M>>>24,x+=2)}if(c=0&&(f[c--]=M>>8&255),c>=0&&(f[c--]=M>>16&255),x===6?(c>=0&&(f[c--]=M>>24&255),d=0,x=0):(d=M>>>24,x+=2)}if(c>=0)for(f[c--]=d;c>=0;)f[c--]=0},Math.clz32?o.prototype._countBits=function(f){return 32-Math.clz32(f)}:o.prototype._countBits=function(f){var a=f,c=0;return a>=4096&&(c+=13,a>>>=13),a>=64&&(c+=7,a>>>=7),a>=8&&(c+=4,a>>>=4),a>=2&&(c+=2,a>>>=2),c+a},o.prototype._zeroBits=function(f){if(f===0)return 26;var a=f,c=0;return a&8191||(c+=13,a>>>=13),a&127||(c+=7,a>>>=7),a&15||(c+=4,a>>>=4),a&3||(c+=2,a>>>=2),a&1||c++,c},o.prototype.bitLength=function(){var f=this.words[this.length-1],a=this._countBits(f);return(this.length-1)*26+a};function F(A){for(var f=new Array(A.bitLength()),a=0;a>>d&1}return f}o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var f=0,a=0;af.length?this.clone().ior(f):f.clone().ior(this)},o.prototype.uor=function(f){return this.length>f.length?this.clone().iuor(f):f.clone().iuor(this)},o.prototype.iuand=function(f){var a;this.length>f.length?a=f:a=this;for(var c=0;cf.length?this.clone().iand(f):f.clone().iand(this)},o.prototype.uand=function(f){return this.length>f.length?this.clone().iuand(f):f.clone().iuand(this)},o.prototype.iuxor=function(f){var a,c;this.length>f.length?(a=this,c=f):(a=f,c=this);for(var d=0;df.length?this.clone().ixor(f):f.clone().ixor(this)},o.prototype.uxor=function(f){return this.length>f.length?this.clone().iuxor(f):f.clone().iuxor(this)},o.prototype.inotn=function(f){i(typeof f=="number"&&f>=0);var a=Math.ceil(f/26)|0,c=f%26;this._expand(a),c>0&&a--;for(var d=0;d0&&(this.words[d]=~this.words[d]&67108863>>26-c),this._strip()},o.prototype.notn=function(f){return this.clone().inotn(f)},o.prototype.setn=function(f,a){i(typeof f=="number"&&f>=0);var c=f/26|0,d=f%26;return this._expand(c+1),a?this.words[c]=this.words[c]|1<f.length?(c=this,d=f):(c=f,d=this);for(var m=0,x=0;x>>26;for(;m!==0&&x>>26;if(this.length=c.length,m!==0)this.words[this.length]=m,this.length++;else if(c!==this)for(;xf.length?this.clone().iadd(f):f.clone().iadd(this)},o.prototype.isub=function(f){if(f.negative!==0){f.negative=0;var a=this.iadd(f);return f.negative=1,a._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(f),this.negative=1,this._normSign();var c=this.cmp(f);if(c===0)return this.negative=0,this.length=1,this.words[0]=0,this;var d,m;c>0?(d=this,m=f):(d=f,m=this);for(var x=0,M=0;M>26,this.words[M]=a&67108863;for(;x!==0&&M>26,this.words[M]=a&67108863;if(x===0&&M>>26,k=l&67108863,u=Math.min(s,f.length-1),E=Math.max(0,s-A.length+1);E<=u;E++){var _=s-E|0;d=A.words[_]|0,m=f.words[E]|0,x=d*m+k,v+=x/67108864|0,k=x&67108863}a.words[s]=k|0,l=v|0}return l!==0?a.words[s]=l|0:a.length--,a._strip()}var Q=function(f,a,c){var d=f.words,m=a.words,x=c.words,M=0,l,s,v,k=d[0]|0,u=k&8191,E=k>>>13,_=d[1]|0,B=_&8191,C=_>>>13,D=d[2]|0,P=D&8191,O=D>>>13,Ct=d[3]|0,T=Ct&8191,q=Ct>>>13,Pe=d[4]|0,X=Pe&8191,Z=Pe>>>13,Te=d[5]|0,$=Te&8191,tt=Te>>>13,Fe=d[6]|0,et=Fe&8191,rt=Fe>>>13,De=d[7]|0,it=De&8191,nt=De>>>13,Ue=d[8]|0,ft=Ue&8191,ot=Ue>>>13,ke=d[9]|0,st=ke&8191,at=ke>>>13,qe=m[0]|0,ut=qe&8191,ht=qe>>>13,Ke=m[1]|0,ct=Ke&8191,lt=Ke>>>13,He=m[2]|0,dt=He&8191,pt=He>>>13,Le=m[3]|0,vt=Le&8191,gt=Le>>>13,ze=m[4]|0,mt=ze&8191,At=ze>>>13,je=m[5]|0,bt=je&8191,yt=je>>>13,Ve=m[6]|0,wt=Ve&8191,xt=Ve>>>13,Qe=m[7]|0,Mt=Qe&8191,Et=Qe>>>13,Je=m[8]|0,St=Je&8191,Nt=Je>>>13,Ye=m[9]|0,It=Ye&8191,_t=Ye>>>13;c.negative=f.negative^a.negative,c.length=19,l=Math.imul(u,ut),s=Math.imul(u,ht),s=s+Math.imul(E,ut)|0,v=Math.imul(E,ht);var xe=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(xe>>>26)|0,xe&=67108863,l=Math.imul(B,ut),s=Math.imul(B,ht),s=s+Math.imul(C,ut)|0,v=Math.imul(C,ht),l=l+Math.imul(u,ct)|0,s=s+Math.imul(u,lt)|0,s=s+Math.imul(E,ct)|0,v=v+Math.imul(E,lt)|0;var Me=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Me>>>26)|0,Me&=67108863,l=Math.imul(P,ut),s=Math.imul(P,ht),s=s+Math.imul(O,ut)|0,v=Math.imul(O,ht),l=l+Math.imul(B,ct)|0,s=s+Math.imul(B,lt)|0,s=s+Math.imul(C,ct)|0,v=v+Math.imul(C,lt)|0,l=l+Math.imul(u,dt)|0,s=s+Math.imul(u,pt)|0,s=s+Math.imul(E,dt)|0,v=v+Math.imul(E,pt)|0;var Ee=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,l=Math.imul(T,ut),s=Math.imul(T,ht),s=s+Math.imul(q,ut)|0,v=Math.imul(q,ht),l=l+Math.imul(P,ct)|0,s=s+Math.imul(P,lt)|0,s=s+Math.imul(O,ct)|0,v=v+Math.imul(O,lt)|0,l=l+Math.imul(B,dt)|0,s=s+Math.imul(B,pt)|0,s=s+Math.imul(C,dt)|0,v=v+Math.imul(C,pt)|0,l=l+Math.imul(u,vt)|0,s=s+Math.imul(u,gt)|0,s=s+Math.imul(E,vt)|0,v=v+Math.imul(E,gt)|0;var Se=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Se>>>26)|0,Se&=67108863,l=Math.imul(X,ut),s=Math.imul(X,ht),s=s+Math.imul(Z,ut)|0,v=Math.imul(Z,ht),l=l+Math.imul(T,ct)|0,s=s+Math.imul(T,lt)|0,s=s+Math.imul(q,ct)|0,v=v+Math.imul(q,lt)|0,l=l+Math.imul(P,dt)|0,s=s+Math.imul(P,pt)|0,s=s+Math.imul(O,dt)|0,v=v+Math.imul(O,pt)|0,l=l+Math.imul(B,vt)|0,s=s+Math.imul(B,gt)|0,s=s+Math.imul(C,vt)|0,v=v+Math.imul(C,gt)|0,l=l+Math.imul(u,mt)|0,s=s+Math.imul(u,At)|0,s=s+Math.imul(E,mt)|0,v=v+Math.imul(E,At)|0;var Ne=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,l=Math.imul($,ut),s=Math.imul($,ht),s=s+Math.imul(tt,ut)|0,v=Math.imul(tt,ht),l=l+Math.imul(X,ct)|0,s=s+Math.imul(X,lt)|0,s=s+Math.imul(Z,ct)|0,v=v+Math.imul(Z,lt)|0,l=l+Math.imul(T,dt)|0,s=s+Math.imul(T,pt)|0,s=s+Math.imul(q,dt)|0,v=v+Math.imul(q,pt)|0,l=l+Math.imul(P,vt)|0,s=s+Math.imul(P,gt)|0,s=s+Math.imul(O,vt)|0,v=v+Math.imul(O,gt)|0,l=l+Math.imul(B,mt)|0,s=s+Math.imul(B,At)|0,s=s+Math.imul(C,mt)|0,v=v+Math.imul(C,At)|0,l=l+Math.imul(u,bt)|0,s=s+Math.imul(u,yt)|0,s=s+Math.imul(E,bt)|0,v=v+Math.imul(E,yt)|0;var Xr=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Xr>>>26)|0,Xr&=67108863,l=Math.imul(et,ut),s=Math.imul(et,ht),s=s+Math.imul(rt,ut)|0,v=Math.imul(rt,ht),l=l+Math.imul($,ct)|0,s=s+Math.imul($,lt)|0,s=s+Math.imul(tt,ct)|0,v=v+Math.imul(tt,lt)|0,l=l+Math.imul(X,dt)|0,s=s+Math.imul(X,pt)|0,s=s+Math.imul(Z,dt)|0,v=v+Math.imul(Z,pt)|0,l=l+Math.imul(T,vt)|0,s=s+Math.imul(T,gt)|0,s=s+Math.imul(q,vt)|0,v=v+Math.imul(q,gt)|0,l=l+Math.imul(P,mt)|0,s=s+Math.imul(P,At)|0,s=s+Math.imul(O,mt)|0,v=v+Math.imul(O,At)|0,l=l+Math.imul(B,bt)|0,s=s+Math.imul(B,yt)|0,s=s+Math.imul(C,bt)|0,v=v+Math.imul(C,yt)|0,l=l+Math.imul(u,wt)|0,s=s+Math.imul(u,xt)|0,s=s+Math.imul(E,wt)|0,v=v+Math.imul(E,xt)|0;var Zr=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Zr>>>26)|0,Zr&=67108863,l=Math.imul(it,ut),s=Math.imul(it,ht),s=s+Math.imul(nt,ut)|0,v=Math.imul(nt,ht),l=l+Math.imul(et,ct)|0,s=s+Math.imul(et,lt)|0,s=s+Math.imul(rt,ct)|0,v=v+Math.imul(rt,lt)|0,l=l+Math.imul($,dt)|0,s=s+Math.imul($,pt)|0,s=s+Math.imul(tt,dt)|0,v=v+Math.imul(tt,pt)|0,l=l+Math.imul(X,vt)|0,s=s+Math.imul(X,gt)|0,s=s+Math.imul(Z,vt)|0,v=v+Math.imul(Z,gt)|0,l=l+Math.imul(T,mt)|0,s=s+Math.imul(T,At)|0,s=s+Math.imul(q,mt)|0,v=v+Math.imul(q,At)|0,l=l+Math.imul(P,bt)|0,s=s+Math.imul(P,yt)|0,s=s+Math.imul(O,bt)|0,v=v+Math.imul(O,yt)|0,l=l+Math.imul(B,wt)|0,s=s+Math.imul(B,xt)|0,s=s+Math.imul(C,wt)|0,v=v+Math.imul(C,xt)|0,l=l+Math.imul(u,Mt)|0,s=s+Math.imul(u,Et)|0,s=s+Math.imul(E,Mt)|0,v=v+Math.imul(E,Et)|0;var $r=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+($r>>>26)|0,$r&=67108863,l=Math.imul(ft,ut),s=Math.imul(ft,ht),s=s+Math.imul(ot,ut)|0,v=Math.imul(ot,ht),l=l+Math.imul(it,ct)|0,s=s+Math.imul(it,lt)|0,s=s+Math.imul(nt,ct)|0,v=v+Math.imul(nt,lt)|0,l=l+Math.imul(et,dt)|0,s=s+Math.imul(et,pt)|0,s=s+Math.imul(rt,dt)|0,v=v+Math.imul(rt,pt)|0,l=l+Math.imul($,vt)|0,s=s+Math.imul($,gt)|0,s=s+Math.imul(tt,vt)|0,v=v+Math.imul(tt,gt)|0,l=l+Math.imul(X,mt)|0,s=s+Math.imul(X,At)|0,s=s+Math.imul(Z,mt)|0,v=v+Math.imul(Z,At)|0,l=l+Math.imul(T,bt)|0,s=s+Math.imul(T,yt)|0,s=s+Math.imul(q,bt)|0,v=v+Math.imul(q,yt)|0,l=l+Math.imul(P,wt)|0,s=s+Math.imul(P,xt)|0,s=s+Math.imul(O,wt)|0,v=v+Math.imul(O,xt)|0,l=l+Math.imul(B,Mt)|0,s=s+Math.imul(B,Et)|0,s=s+Math.imul(C,Mt)|0,v=v+Math.imul(C,Et)|0,l=l+Math.imul(u,St)|0,s=s+Math.imul(u,Nt)|0,s=s+Math.imul(E,St)|0,v=v+Math.imul(E,Nt)|0;var ti=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ti>>>26)|0,ti&=67108863,l=Math.imul(st,ut),s=Math.imul(st,ht),s=s+Math.imul(at,ut)|0,v=Math.imul(at,ht),l=l+Math.imul(ft,ct)|0,s=s+Math.imul(ft,lt)|0,s=s+Math.imul(ot,ct)|0,v=v+Math.imul(ot,lt)|0,l=l+Math.imul(it,dt)|0,s=s+Math.imul(it,pt)|0,s=s+Math.imul(nt,dt)|0,v=v+Math.imul(nt,pt)|0,l=l+Math.imul(et,vt)|0,s=s+Math.imul(et,gt)|0,s=s+Math.imul(rt,vt)|0,v=v+Math.imul(rt,gt)|0,l=l+Math.imul($,mt)|0,s=s+Math.imul($,At)|0,s=s+Math.imul(tt,mt)|0,v=v+Math.imul(tt,At)|0,l=l+Math.imul(X,bt)|0,s=s+Math.imul(X,yt)|0,s=s+Math.imul(Z,bt)|0,v=v+Math.imul(Z,yt)|0,l=l+Math.imul(T,wt)|0,s=s+Math.imul(T,xt)|0,s=s+Math.imul(q,wt)|0,v=v+Math.imul(q,xt)|0,l=l+Math.imul(P,Mt)|0,s=s+Math.imul(P,Et)|0,s=s+Math.imul(O,Mt)|0,v=v+Math.imul(O,Et)|0,l=l+Math.imul(B,St)|0,s=s+Math.imul(B,Nt)|0,s=s+Math.imul(C,St)|0,v=v+Math.imul(C,Nt)|0,l=l+Math.imul(u,It)|0,s=s+Math.imul(u,_t)|0,s=s+Math.imul(E,It)|0,v=v+Math.imul(E,_t)|0;var ei=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ei>>>26)|0,ei&=67108863,l=Math.imul(st,ct),s=Math.imul(st,lt),s=s+Math.imul(at,ct)|0,v=Math.imul(at,lt),l=l+Math.imul(ft,dt)|0,s=s+Math.imul(ft,pt)|0,s=s+Math.imul(ot,dt)|0,v=v+Math.imul(ot,pt)|0,l=l+Math.imul(it,vt)|0,s=s+Math.imul(it,gt)|0,s=s+Math.imul(nt,vt)|0,v=v+Math.imul(nt,gt)|0,l=l+Math.imul(et,mt)|0,s=s+Math.imul(et,At)|0,s=s+Math.imul(rt,mt)|0,v=v+Math.imul(rt,At)|0,l=l+Math.imul($,bt)|0,s=s+Math.imul($,yt)|0,s=s+Math.imul(tt,bt)|0,v=v+Math.imul(tt,yt)|0,l=l+Math.imul(X,wt)|0,s=s+Math.imul(X,xt)|0,s=s+Math.imul(Z,wt)|0,v=v+Math.imul(Z,xt)|0,l=l+Math.imul(T,Mt)|0,s=s+Math.imul(T,Et)|0,s=s+Math.imul(q,Mt)|0,v=v+Math.imul(q,Et)|0,l=l+Math.imul(P,St)|0,s=s+Math.imul(P,Nt)|0,s=s+Math.imul(O,St)|0,v=v+Math.imul(O,Nt)|0,l=l+Math.imul(B,It)|0,s=s+Math.imul(B,_t)|0,s=s+Math.imul(C,It)|0,v=v+Math.imul(C,_t)|0;var ri=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ri>>>26)|0,ri&=67108863,l=Math.imul(st,dt),s=Math.imul(st,pt),s=s+Math.imul(at,dt)|0,v=Math.imul(at,pt),l=l+Math.imul(ft,vt)|0,s=s+Math.imul(ft,gt)|0,s=s+Math.imul(ot,vt)|0,v=v+Math.imul(ot,gt)|0,l=l+Math.imul(it,mt)|0,s=s+Math.imul(it,At)|0,s=s+Math.imul(nt,mt)|0,v=v+Math.imul(nt,At)|0,l=l+Math.imul(et,bt)|0,s=s+Math.imul(et,yt)|0,s=s+Math.imul(rt,bt)|0,v=v+Math.imul(rt,yt)|0,l=l+Math.imul($,wt)|0,s=s+Math.imul($,xt)|0,s=s+Math.imul(tt,wt)|0,v=v+Math.imul(tt,xt)|0,l=l+Math.imul(X,Mt)|0,s=s+Math.imul(X,Et)|0,s=s+Math.imul(Z,Mt)|0,v=v+Math.imul(Z,Et)|0,l=l+Math.imul(T,St)|0,s=s+Math.imul(T,Nt)|0,s=s+Math.imul(q,St)|0,v=v+Math.imul(q,Nt)|0,l=l+Math.imul(P,It)|0,s=s+Math.imul(P,_t)|0,s=s+Math.imul(O,It)|0,v=v+Math.imul(O,_t)|0;var ii=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ii>>>26)|0,ii&=67108863,l=Math.imul(st,vt),s=Math.imul(st,gt),s=s+Math.imul(at,vt)|0,v=Math.imul(at,gt),l=l+Math.imul(ft,mt)|0,s=s+Math.imul(ft,At)|0,s=s+Math.imul(ot,mt)|0,v=v+Math.imul(ot,At)|0,l=l+Math.imul(it,bt)|0,s=s+Math.imul(it,yt)|0,s=s+Math.imul(nt,bt)|0,v=v+Math.imul(nt,yt)|0,l=l+Math.imul(et,wt)|0,s=s+Math.imul(et,xt)|0,s=s+Math.imul(rt,wt)|0,v=v+Math.imul(rt,xt)|0,l=l+Math.imul($,Mt)|0,s=s+Math.imul($,Et)|0,s=s+Math.imul(tt,Mt)|0,v=v+Math.imul(tt,Et)|0,l=l+Math.imul(X,St)|0,s=s+Math.imul(X,Nt)|0,s=s+Math.imul(Z,St)|0,v=v+Math.imul(Z,Nt)|0,l=l+Math.imul(T,It)|0,s=s+Math.imul(T,_t)|0,s=s+Math.imul(q,It)|0,v=v+Math.imul(q,_t)|0;var ni=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ni>>>26)|0,ni&=67108863,l=Math.imul(st,mt),s=Math.imul(st,At),s=s+Math.imul(at,mt)|0,v=Math.imul(at,At),l=l+Math.imul(ft,bt)|0,s=s+Math.imul(ft,yt)|0,s=s+Math.imul(ot,bt)|0,v=v+Math.imul(ot,yt)|0,l=l+Math.imul(it,wt)|0,s=s+Math.imul(it,xt)|0,s=s+Math.imul(nt,wt)|0,v=v+Math.imul(nt,xt)|0,l=l+Math.imul(et,Mt)|0,s=s+Math.imul(et,Et)|0,s=s+Math.imul(rt,Mt)|0,v=v+Math.imul(rt,Et)|0,l=l+Math.imul($,St)|0,s=s+Math.imul($,Nt)|0,s=s+Math.imul(tt,St)|0,v=v+Math.imul(tt,Nt)|0,l=l+Math.imul(X,It)|0,s=s+Math.imul(X,_t)|0,s=s+Math.imul(Z,It)|0,v=v+Math.imul(Z,_t)|0;var fi=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(fi>>>26)|0,fi&=67108863,l=Math.imul(st,bt),s=Math.imul(st,yt),s=s+Math.imul(at,bt)|0,v=Math.imul(at,yt),l=l+Math.imul(ft,wt)|0,s=s+Math.imul(ft,xt)|0,s=s+Math.imul(ot,wt)|0,v=v+Math.imul(ot,xt)|0,l=l+Math.imul(it,Mt)|0,s=s+Math.imul(it,Et)|0,s=s+Math.imul(nt,Mt)|0,v=v+Math.imul(nt,Et)|0,l=l+Math.imul(et,St)|0,s=s+Math.imul(et,Nt)|0,s=s+Math.imul(rt,St)|0,v=v+Math.imul(rt,Nt)|0,l=l+Math.imul($,It)|0,s=s+Math.imul($,_t)|0,s=s+Math.imul(tt,It)|0,v=v+Math.imul(tt,_t)|0;var oi=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(oi>>>26)|0,oi&=67108863,l=Math.imul(st,wt),s=Math.imul(st,xt),s=s+Math.imul(at,wt)|0,v=Math.imul(at,xt),l=l+Math.imul(ft,Mt)|0,s=s+Math.imul(ft,Et)|0,s=s+Math.imul(ot,Mt)|0,v=v+Math.imul(ot,Et)|0,l=l+Math.imul(it,St)|0,s=s+Math.imul(it,Nt)|0,s=s+Math.imul(nt,St)|0,v=v+Math.imul(nt,Nt)|0,l=l+Math.imul(et,It)|0,s=s+Math.imul(et,_t)|0,s=s+Math.imul(rt,It)|0,v=v+Math.imul(rt,_t)|0;var si=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(si>>>26)|0,si&=67108863,l=Math.imul(st,Mt),s=Math.imul(st,Et),s=s+Math.imul(at,Mt)|0,v=Math.imul(at,Et),l=l+Math.imul(ft,St)|0,s=s+Math.imul(ft,Nt)|0,s=s+Math.imul(ot,St)|0,v=v+Math.imul(ot,Nt)|0,l=l+Math.imul(it,It)|0,s=s+Math.imul(it,_t)|0,s=s+Math.imul(nt,It)|0,v=v+Math.imul(nt,_t)|0;var ai=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ai>>>26)|0,ai&=67108863,l=Math.imul(st,St),s=Math.imul(st,Nt),s=s+Math.imul(at,St)|0,v=Math.imul(at,Nt),l=l+Math.imul(ft,It)|0,s=s+Math.imul(ft,_t)|0,s=s+Math.imul(ot,It)|0,v=v+Math.imul(ot,_t)|0;var ui=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ui>>>26)|0,ui&=67108863,l=Math.imul(st,It),s=Math.imul(st,_t),s=s+Math.imul(at,It)|0,v=Math.imul(at,_t);var hi=(M+l|0)+((s&8191)<<13)|0;return M=(v+(s>>>13)|0)+(hi>>>26)|0,hi&=67108863,x[0]=xe,x[1]=Me,x[2]=Ee,x[3]=Se,x[4]=Ne,x[5]=Xr,x[6]=Zr,x[7]=$r,x[8]=ti,x[9]=ei,x[10]=ri,x[11]=ii,x[12]=ni,x[13]=fi,x[14]=oi,x[15]=si,x[16]=ai,x[17]=ui,x[18]=hi,M!==0&&(x[19]=M,c.length++),c};Math.imul||(Q=U);function Bt(A,f,a){a.negative=f.negative^A.negative,a.length=A.length+f.length;for(var c=0,d=0,m=0;m>>26)|0,d+=x>>>26,x&=67108863}a.words[m]=M,c=x,x=d}return c!==0?a.words[m]=c:a.length--,a._strip()}function J(A,f,a){return Bt(A,f,a)}o.prototype.mulTo=function(f,a){var c,d=this.length+f.length;return this.length===10&&f.length===10?c=Q(this,f,a):d<63?c=U(this,f,a):d<1024?c=Bt(this,f,a):c=J(this,f,a),c},o.prototype.mul=function(f){var a=new o(null);return a.words=new Array(this.length+f.length),this.mulTo(f,a)},o.prototype.mulf=function(f){var a=new o(null);return a.words=new Array(this.length+f.length),J(this,f,a)},o.prototype.imul=function(f){return this.clone().mulTo(f,this)},o.prototype.imuln=function(f){var a=f<0;a&&(f=-f),i(typeof f=="number"),i(f<67108864);for(var c=0,d=0;d>=26,c+=m/67108864|0,c+=x>>>26,this.words[d]=x&67108863}return c!==0&&(this.words[d]=c,this.length++),a?this.ineg():this},o.prototype.muln=function(f){return this.clone().imuln(f)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(f){var a=F(f);if(a.length===0)return new o(1);for(var c=this,d=0;d=0);var a=f%26,c=(f-a)/26,d=67108863>>>26-a<<26-a,m;if(a!==0){var x=0;for(m=0;m>>26-a}x&&(this.words[m]=x,this.length++)}if(c!==0){for(m=this.length-1;m>=0;m--)this.words[m+c]=this.words[m];for(m=0;m=0);var d;a?d=(a-a%26)/26:d=0;var m=f%26,x=Math.min((f-m)/26,this.length),M=67108863^67108863>>>m<x)for(this.length-=x,s=0;s=0&&(v!==0||s>=d);s--){var k=this.words[s]|0;this.words[s]=v<<26-m|k>>>m,v=k&M}return l&&v!==0&&(l.words[l.length++]=v),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},o.prototype.ishrn=function(f,a,c){return i(this.negative===0),this.iushrn(f,a,c)},o.prototype.shln=function(f){return this.clone().ishln(f)},o.prototype.ushln=function(f){return this.clone().iushln(f)},o.prototype.shrn=function(f){return this.clone().ishrn(f)},o.prototype.ushrn=function(f){return this.clone().iushrn(f)},o.prototype.testn=function(f){i(typeof f=="number"&&f>=0);var a=f%26,c=(f-a)/26,d=1<=0);var a=f%26,c=(f-a)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=c)return this;if(a!==0&&c++,this.length=Math.min(c,this.length),a!==0){var d=67108863^67108863>>>a<=67108864;a++)this.words[a]-=67108864,a===this.length-1?this.words[a+1]=1:this.words[a+1]++;return this.length=Math.max(this.length,a+1),this},o.prototype.isubn=function(f){if(i(typeof f=="number"),i(f<67108864),f<0)return this.iaddn(-f);if(this.negative!==0)return this.negative=0,this.iaddn(f),this.negative=1,this;if(this.words[0]-=f,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var a=0;a>26)-(l/67108864|0),this.words[m+c]=x&67108863}for(;m>26,this.words[m+c]=x&67108863;if(M===0)return this._strip();for(i(M===-1),M=0,m=0;m>26,this.words[m]=x&67108863;return this.negative=1,this._strip()},o.prototype._wordDiv=function(f,a){var c=this.length-f.length,d=this.clone(),m=f,x=m.words[m.length-1]|0,M=this._countBits(x);c=26-M,c!==0&&(m=m.ushln(c),d.iushln(c),x=m.words[m.length-1]|0);var l=d.length-m.length,s;if(a!=="mod"){s=new o(null),s.length=l+1,s.words=new Array(s.length);for(var v=0;v=0;u--){var E=(d.words[m.length+u]|0)*67108864+(d.words[m.length+u-1]|0);for(E=Math.min(E/x|0,67108863),d._ishlnsubmul(m,E,u);d.negative!==0;)E--,d.negative=0,d._ishlnsubmul(m,1,u),d.isZero()||(d.negative^=1);s&&(s.words[u]=E)}return s&&s._strip(),d._strip(),a!=="div"&&c!==0&&d.iushrn(c),{div:s||null,mod:d}},o.prototype.divmod=function(f,a,c){if(i(!f.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var d,m,x;return this.negative!==0&&f.negative===0?(x=this.neg().divmod(f,a),a!=="mod"&&(d=x.div.neg()),a!=="div"&&(m=x.mod.neg(),c&&m.negative!==0&&m.iadd(f)),{div:d,mod:m}):this.negative===0&&f.negative!==0?(x=this.divmod(f.neg(),a),a!=="mod"&&(d=x.div.neg()),{div:d,mod:x.mod}):this.negative&f.negative?(x=this.neg().divmod(f.neg(),a),a!=="div"&&(m=x.mod.neg(),c&&m.negative!==0&&m.isub(f)),{div:x.div,mod:m}):f.length>this.length||this.cmp(f)<0?{div:new o(0),mod:this}:f.length===1?a==="div"?{div:this.divn(f.words[0]),mod:null}:a==="mod"?{div:null,mod:new o(this.modrn(f.words[0]))}:{div:this.divn(f.words[0]),mod:new o(this.modrn(f.words[0]))}:this._wordDiv(f,a)},o.prototype.div=function(f){return this.divmod(f,"div",!1).div},o.prototype.mod=function(f){return this.divmod(f,"mod",!1).mod},o.prototype.umod=function(f){return this.divmod(f,"mod",!0).mod},o.prototype.divRound=function(f){var a=this.divmod(f);if(a.mod.isZero())return a.div;var c=a.div.negative!==0?a.mod.isub(f):a.mod,d=f.ushrn(1),m=f.andln(1),x=c.cmp(d);return x<0||m===1&&x===0?a.div:a.div.negative!==0?a.div.isubn(1):a.div.iaddn(1)},o.prototype.modrn=function(f){var a=f<0;a&&(f=-f),i(f<=67108863);for(var c=(1<<26)%f,d=0,m=this.length-1;m>=0;m--)d=(c*d+(this.words[m]|0))%f;return a?-d:d},o.prototype.modn=function(f){return this.modrn(f)},o.prototype.idivn=function(f){var a=f<0;a&&(f=-f),i(f<=67108863);for(var c=0,d=this.length-1;d>=0;d--){var m=(this.words[d]|0)+c*67108864;this.words[d]=m/f|0,c=m%f}return this._strip(),a?this.ineg():this},o.prototype.divn=function(f){return this.clone().idivn(f)},o.prototype.egcd=function(f){i(f.negative===0),i(!f.isZero());var a=this,c=f.clone();a.negative!==0?a=a.umod(f):a=a.clone();for(var d=new o(1),m=new o(0),x=new o(0),M=new o(1),l=0;a.isEven()&&c.isEven();)a.iushrn(1),c.iushrn(1),++l;for(var s=c.clone(),v=a.clone();!a.isZero();){for(var k=0,u=1;!(a.words[0]&u)&&k<26;++k,u<<=1);if(k>0)for(a.iushrn(k);k-- >0;)(d.isOdd()||m.isOdd())&&(d.iadd(s),m.isub(v)),d.iushrn(1),m.iushrn(1);for(var E=0,_=1;!(c.words[0]&_)&&E<26;++E,_<<=1);if(E>0)for(c.iushrn(E);E-- >0;)(x.isOdd()||M.isOdd())&&(x.iadd(s),M.isub(v)),x.iushrn(1),M.iushrn(1);a.cmp(c)>=0?(a.isub(c),d.isub(x),m.isub(M)):(c.isub(a),x.isub(d),M.isub(m))}return{a:x,b:M,gcd:c.iushln(l)}},o.prototype._invmp=function(f){i(f.negative===0),i(!f.isZero());var a=this,c=f.clone();a.negative!==0?a=a.umod(f):a=a.clone();for(var d=new o(1),m=new o(0),x=c.clone();a.cmpn(1)>0&&c.cmpn(1)>0;){for(var M=0,l=1;!(a.words[0]&l)&&M<26;++M,l<<=1);if(M>0)for(a.iushrn(M);M-- >0;)d.isOdd()&&d.iadd(x),d.iushrn(1);for(var s=0,v=1;!(c.words[0]&v)&&s<26;++s,v<<=1);if(s>0)for(c.iushrn(s);s-- >0;)m.isOdd()&&m.iadd(x),m.iushrn(1);a.cmp(c)>=0?(a.isub(c),d.isub(m)):(c.isub(a),m.isub(d))}var k;return a.cmpn(1)===0?k=d:k=m,k.cmpn(0)<0&&k.iadd(f),k},o.prototype.gcd=function(f){if(this.isZero())return f.abs();if(f.isZero())return this.abs();var a=this.clone(),c=f.clone();a.negative=0,c.negative=0;for(var d=0;a.isEven()&&c.isEven();d++)a.iushrn(1),c.iushrn(1);do{for(;a.isEven();)a.iushrn(1);for(;c.isEven();)c.iushrn(1);var m=a.cmp(c);if(m<0){var x=a;a=c,c=x}else if(m===0||c.cmpn(1)===0)break;a.isub(c)}while(!0);return c.iushln(d)},o.prototype.invm=function(f){return this.egcd(f).a.umod(f)},o.prototype.isEven=function(){return(this.words[0]&1)===0},o.prototype.isOdd=function(){return(this.words[0]&1)===1},o.prototype.andln=function(f){return this.words[0]&f},o.prototype.bincn=function(f){i(typeof f=="number");var a=f%26,c=(f-a)/26,d=1<>>26,M&=67108863,this.words[x]=M}return m!==0&&(this.words[x]=m,this.length++),this},o.prototype.isZero=function(){return this.length===1&&this.words[0]===0},o.prototype.cmpn=function(f){var a=f<0;if(this.negative!==0&&!a)return-1;if(this.negative===0&&a)return 1;this._strip();var c;if(this.length>1)c=1;else{a&&(f=-f),i(f<=67108863,"Number is too big");var d=this.words[0]|0;c=d===f?0:df.length)return 1;if(this.length=0;c--){var d=this.words[c]|0,m=f.words[c]|0;if(d!==m){dm&&(a=1);break}}return a},o.prototype.gtn=function(f){return this.cmpn(f)===1},o.prototype.gt=function(f){return this.cmp(f)===1},o.prototype.gten=function(f){return this.cmpn(f)>=0},o.prototype.gte=function(f){return this.cmp(f)>=0},o.prototype.ltn=function(f){return this.cmpn(f)===-1},o.prototype.lt=function(f){return this.cmp(f)===-1},o.prototype.lten=function(f){return this.cmpn(f)<=0},o.prototype.lte=function(f){return this.cmp(f)<=0},o.prototype.eqn=function(f){return this.cmpn(f)===0},o.prototype.eq=function(f){return this.cmp(f)===0},o.red=function(f){return new Y(f)},o.prototype.toRed=function(f){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),f.convertTo(this)._forceRed(f)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(f){return this.red=f,this},o.prototype.forceRed=function(f){return i(!this.red,"Already a number in reduction context"),this._forceRed(f)},o.prototype.redAdd=function(f){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,f)},o.prototype.redIAdd=function(f){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,f)},o.prototype.redSub=function(f){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,f)},o.prototype.redISub=function(f){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,f)},o.prototype.redShl=function(f){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,f)},o.prototype.redMul=function(f){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.mul(this,f)},o.prototype.redIMul=function(f){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.imul(this,f)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(f){return i(this.red&&!f.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,f)};var H={k256:null,p224:null,p192:null,p25519:null};function L(A,f){this.name=A,this.p=new o(f,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}L.prototype._tmp=function(){var f=new o(null);return f.words=new Array(Math.ceil(this.n/13)),f},L.prototype.ireduce=function(f){var a=f,c;do this.split(a,this.tmp),a=this.imulK(a),a=a.iadd(this.tmp),c=a.bitLength();while(c>this.n);var d=c0?a.isub(this.p):a.strip!==void 0?a.strip():a._strip(),a},L.prototype.split=function(f,a){f.iushrn(this.n,0,a)},L.prototype.imulK=function(f){return f.imul(this.k)};function Tt(){L.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(Tt,L),Tt.prototype.split=function(f,a){for(var c=4194303,d=Math.min(f.length,9),m=0;m>>22,x=M}x>>>=22,f.words[m-10]=x,x===0&&f.length>10?f.length-=10:f.length-=9},Tt.prototype.imulK=function(f){f.words[f.length]=0,f.words[f.length+1]=0,f.length+=2;for(var a=0,c=0;c>>=26,f.words[c]=m,a=d}return a!==0&&(f.words[f.length++]=a),f},o._prime=function(f){if(H[f])return H[f];var a;if(f==="k256")a=new Tt;else if(f==="p224")a=new W;else if(f==="p192")a=new Ot;else if(f==="p25519")a=new Gt;else throw new Error("Unknown prime "+f);return H[f]=a,a};function Y(A){if(typeof A=="string"){var f=o._prime(A);this.m=f.p,this.prime=f}else i(A.gtn(1),"modulus must be greater than 1"),this.m=A,this.prime=null}Y.prototype._verify1=function(f){i(f.negative===0,"red works only with positives"),i(f.red,"red works only with red numbers")},Y.prototype._verify2=function(f,a){i((f.negative|a.negative)===0,"red works only with positives"),i(f.red&&f.red===a.red,"red works only with red numbers")},Y.prototype.imod=function(f){return this.prime?this.prime.ireduce(f)._forceRed(this):(w(f,f.umod(this.m)._forceRed(this)),f)},Y.prototype.neg=function(f){return f.isZero()?f.clone():this.m.sub(f)._forceRed(this)},Y.prototype.add=function(f,a){this._verify2(f,a);var c=f.add(a);return c.cmp(this.m)>=0&&c.isub(this.m),c._forceRed(this)},Y.prototype.iadd=function(f,a){this._verify2(f,a);var c=f.iadd(a);return c.cmp(this.m)>=0&&c.isub(this.m),c},Y.prototype.sub=function(f,a){this._verify2(f,a);var c=f.sub(a);return c.cmpn(0)<0&&c.iadd(this.m),c._forceRed(this)},Y.prototype.isub=function(f,a){this._verify2(f,a);var c=f.isub(a);return c.cmpn(0)<0&&c.iadd(this.m),c},Y.prototype.shl=function(f,a){return this._verify1(f),this.imod(f.ushln(a))},Y.prototype.imul=function(f,a){return this._verify2(f,a),this.imod(f.imul(a))},Y.prototype.mul=function(f,a){return this._verify2(f,a),this.imod(f.mul(a))},Y.prototype.isqr=function(f){return this.imul(f,f.clone())},Y.prototype.sqr=function(f){return this.mul(f,f)},Y.prototype.sqrt=function(f){if(f.isZero())return f.clone();var a=this.m.andln(3);if(i(a%2===1),a===3){var c=this.m.add(new o(1)).iushrn(2);return this.pow(f,c)}for(var d=this.m.subn(1),m=0;!d.isZero()&&d.andln(1)===0;)m++,d.iushrn(1);i(!d.isZero());var x=new o(1).toRed(this),M=x.redNeg(),l=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new o(2*s*s).toRed(this);this.pow(s,l).cmp(M)!==0;)s.redIAdd(M);for(var v=this.pow(s,d),k=this.pow(f,d.addn(1).iushrn(1)),u=this.pow(f,d),E=m;u.cmp(x)!==0;){for(var _=u,B=0;_.cmp(x)!==0;B++)_=_.redSqr();i(B=0;m--){for(var v=a.words[m],k=s-1;k>=0;k--){var u=v>>k&1;if(x!==d[0]&&(x=this.sqr(x)),u===0&&M===0){l=0;continue}M<<=1,M|=u,l++,!(l!==c&&(m!==0||k!==0))&&(x=this.mul(x,d[M]),l=0,M=0)}s=26}return x},Y.prototype.convertTo=function(f){var a=f.umod(this.m);return a===f?a.clone():a},Y.prototype.convertFrom=function(f){var a=f.clone();return a.red=null,a},o.mont=function(f){return new Wt(f)};function Wt(A){Y.call(this,A),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}n(Wt,Y),Wt.prototype.convertTo=function(f){return this.imod(f.ushln(this.shift))},Wt.prototype.convertFrom=function(f){var a=this.imod(f.mul(this.rinv));return a.red=null,a},Wt.prototype.imul=function(f,a){if(f.isZero()||a.isZero())return f.words[0]=0,f.length=1,f;var c=f.imul(a),d=c.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),m=c.isub(d).iushrn(this.shift),x=m;return m.cmp(this.m)>=0?x=m.isub(this.m):m.cmpn(0)<0&&(x=m.iadd(this.m)),x._forceRed(this)},Wt.prototype.mul=function(f,a){if(f.isZero()||a.isZero())return new o(0)._forceRed(this);var c=f.mul(a),d=c.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),m=c.isub(d).iushrn(this.shift),x=m;return m.cmp(this.m)>=0?x=m.isub(this.m):m.cmpn(0)<0&&(x=m.iadd(this.m)),x._forceRed(this)},Wt.prototype.invm=function(f){var a=this.imod(f._invmp(this.m).mul(this.r2));return a._forceRed(this)}})(e,Bn)})(Kn);var K=Kn.exports;const Hn="bignumber/5.7.0";var Or=K.BN;const me=new z(Hn),xi={},Ln=9007199254740991;function Is(e){return e!=null&&(G.isBigNumber(e)||typeof e=="number"&&e%1===0||typeof e=="string"&&!!e.match(/^-?[0-9]+$/)||Qt(e)||typeof e=="bigint"||nr(e))}let zn=!1;class G{constructor(t,r){t!==xi&&me.throwError("cannot call constructor directly; use BigNumber.from",z.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=r,this._isBigNumber=!0,Object.freeze(this)}fromTwos(t){return jt(j(this).fromTwos(t))}toTwos(t){return jt(j(this).toTwos(t))}abs(){return this._hex[0]==="-"?G.from(this._hex.substring(1)):this}add(t){return jt(j(this).add(j(t)))}sub(t){return jt(j(this).sub(j(t)))}div(t){return G.from(t).isZero()&&Xt("division-by-zero","div"),jt(j(this).div(j(t)))}mul(t){return jt(j(this).mul(j(t)))}mod(t){const r=j(t);return r.isNeg()&&Xt("division-by-zero","mod"),jt(j(this).umod(r))}pow(t){const r=j(t);return r.isNeg()&&Xt("negative-power","pow"),jt(j(this).pow(r))}and(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Xt("unbound-bitwise-result","and"),jt(j(this).and(r))}or(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Xt("unbound-bitwise-result","or"),jt(j(this).or(r))}xor(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Xt("unbound-bitwise-result","xor"),jt(j(this).xor(r))}mask(t){return(this.isNegative()||t<0)&&Xt("negative-width","mask"),jt(j(this).maskn(t))}shl(t){return(this.isNegative()||t<0)&&Xt("negative-width","shl"),jt(j(this).shln(t))}shr(t){return(this.isNegative()||t<0)&&Xt("negative-width","shr"),jt(j(this).shrn(t))}eq(t){return j(this).eq(j(t))}lt(t){return j(this).lt(j(t))}lte(t){return j(this).lte(j(t))}gt(t){return j(this).gt(j(t))}gte(t){return j(this).gte(j(t))}isNegative(){return this._hex[0]==="-"}isZero(){return j(this).isZero()}toNumber(){try{return j(this).toNumber()}catch{Xt("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch{}return me.throwError("this platform does not support BigInt",z.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(arguments[0]===10?zn||(zn=!0,me.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?me.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",z.errors.UNEXPECTED_ARGUMENT,{}):me.throwError("BigNumber.toString does not accept parameters",z.errors.UNEXPECTED_ARGUMENT,{})),j(this).toString(10)}toHexString(){return this._hex}toJSON(t){return{type:"BigNumber",hex:this.toHexString()}}static from(t){if(t instanceof G)return t;if(typeof t=="string")return t.match(/^-?0x[0-9a-f]+$/i)?new G(xi,gr(t)):t.match(/^-?[0-9]+$/)?new G(xi,gr(new Or(t))):me.throwArgumentError("invalid BigNumber string","value",t);if(typeof t=="number")return t%1&&Xt("underflow","BigNumber.from",t),(t>=Ln||t<=-Ln)&&Xt("overflow","BigNumber.from",t),G.from(String(t));const r=t;if(typeof r=="bigint")return G.from(r.toString());if(nr(r))return G.from(Ht(r));if(r)if(r.toHexString){const i=r.toHexString();if(typeof i=="string")return G.from(i)}else{let i=r._hex;if(i==null&&r.type==="BigNumber"&&(i=r.hex),typeof i=="string"&&(Qt(i)||i[0]==="-"&&Qt(i.substring(1))))return G.from(i)}return me.throwArgumentError("invalid BigNumber value","value",t)}static isBigNumber(t){return!!(t&&t._isBigNumber)}}function gr(e){if(typeof e!="string")return gr(e.toString(16));if(e[0]==="-")return e=e.substring(1),e[0]==="-"&&me.throwArgumentError("invalid hex","value",e),e=gr(e),e==="0x00"?e:"-"+e;if(e.substring(0,2)!=="0x"&&(e="0x"+e),e==="0x")return"0x00";for(e.length%2&&(e="0x0"+e.substring(2));e.length>4&&e.substring(0,4)==="0x00";)e="0x"+e.substring(4);return e}function jt(e){return G.from(gr(e))}function j(e){const t=G.from(e).toHexString();return t[0]==="-"?new Or("-"+t.substring(3),16):new Or(t.substring(2),16)}function Xt(e,t,r){const i={fault:e,operation:t};return r!=null&&(i.value=r),me.throwError(e,z.errors.NUMERIC_FAULT,i)}function _s(e){return new Or(e,36).toString(16)}const Lt=new z(Hn),mr={},jn=G.from(0),Vn=G.from(-1);function Qn(e,t,r,i){const n={fault:t,operation:r};return i!==void 0&&(n.value=i),Lt.throwError(e,z.errors.NUMERIC_FAULT,n)}let Ar="0";for(;Ar.length<256;)Ar+=Ar;function Mi(e){if(typeof e!="number")try{e=G.from(e).toNumber()}catch{}return typeof e=="number"&&e>=0&&e<=256&&!(e%1)?"1"+Ar.substring(0,e):Lt.throwArgumentError("invalid decimal size","decimals",e)}function Ei(e,t){t==null&&(t=0);const r=Mi(t);e=G.from(e);const i=e.lt(jn);i&&(e=e.mul(Vn));let n=e.mod(r).toString();for(;n.length2&&Lt.throwArgumentError("too many decimal points","value",e);let o=n[0],h=n[1];for(o||(o="0"),h||(h="0");h[h.length-1]==="0";)h=h.substring(0,h.length-1);for(h.length>r.length-1&&Qn("fractional component exceeds decimals","underflow","parseFixed"),h===""&&(h="0");h.lengtht[h]==null?b:(typeof t[h]!==p&&Lt.throwArgumentError("invalid fixed format ("+h+" not "+p+")","format."+h,t[h]),t[h]);r=o("signed","boolean",r),i=o("width","number",i),n=o("decimals","number",n)}return i%8&&Lt.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",i),n>80&&Lt.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",n),new pr(mr,r,i,n)}}class kt{constructor(t,r,i,n){t!==mr&&Lt.throwError("cannot use FixedNumber constructor; use FixedNumber.from",z.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=n,this._hex=r,this._value=i,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(t){this.format.name!==t.format.name&&Lt.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",t)}addUnsafe(t){this._checkFormat(t);const r=Ae(this._value,this.format.decimals),i=Ae(t._value,t.format.decimals);return kt.fromValue(r.add(i),this.format.decimals,this.format)}subUnsafe(t){this._checkFormat(t);const r=Ae(this._value,this.format.decimals),i=Ae(t._value,t.format.decimals);return kt.fromValue(r.sub(i),this.format.decimals,this.format)}mulUnsafe(t){this._checkFormat(t);const r=Ae(this._value,this.format.decimals),i=Ae(t._value,t.format.decimals);return kt.fromValue(r.mul(i).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(t){this._checkFormat(t);const r=Ae(this._value,this.format.decimals),i=Ae(t._value,t.format.decimals);return kt.fromValue(r.mul(this.format._multiplier).div(i),this.format.decimals,this.format)}floor(){const t=this.toString().split(".");t.length===1&&t.push("0");let r=kt.from(t[0],this.format);const i=!t[1].match(/^(0*)$/);return this.isNegative()&&i&&(r=r.subUnsafe(Jn.toFormat(r.format))),r}ceiling(){const t=this.toString().split(".");t.length===1&&t.push("0");let r=kt.from(t[0],this.format);const i=!t[1].match(/^(0*)$/);return!this.isNegative()&&i&&(r=r.addUnsafe(Jn.toFormat(r.format))),r}round(t){t==null&&(t=0);const r=this.toString().split(".");if(r.length===1&&r.push("0"),(t<0||t>80||t%1)&&Lt.throwArgumentError("invalid decimal count","decimals",t),r[1].length<=t)return this;const i=kt.from("1"+Ar.substring(0,t),this.format),n=Bs.toFormat(this.format);return this.mulUnsafe(i).addUnsafe(n).floor().divUnsafe(i)}isZero(){return this._value==="0.0"||this._value==="0"}isNegative(){return this._value[0]==="-"}toString(){return this._value}toHexString(t){if(t==null)return this._hex;t%8&&Lt.throwArgumentError("invalid byte width","width",t);const r=G.from(this._hex).fromTwos(this.format.width).toTwos(t).toHexString();return fe(r,t/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(t){return kt.fromString(this._value,t)}static fromValue(t,r,i){return i==null&&r!=null&&!Is(r)&&(i=r,r=null),r==null&&(r=0),i==null&&(i="fixed"),kt.fromString(Ei(t,r),pr.from(i))}static fromString(t,r){r==null&&(r="fixed");const i=pr.from(r),n=Ae(t,i.decimals);!i.signed&&n.lt(jn)&&Qn("unsigned value cannot be negative","overflow","value",t);let o=null;i.signed?o=n.toTwos(i.width).toHexString():(o=n.toHexString(),o=fe(o,i.width/8));const h=Ei(n,i.decimals);return new kt(mr,o,h,i)}static fromBytes(t,r){r==null&&(r="fixed");const i=pr.from(r);if(Pt(t).length>i.width/8)throw new Error("overflow");let n=G.from(t);i.signed&&(n=n.fromTwos(i.width));const o=n.toTwos((i.signed?0:1)+i.width).toHexString(),h=Ei(n,i.decimals);return new kt(mr,o,h,i)}static from(t,r){if(typeof t=="string")return kt.fromString(t,r);if(nr(t))return kt.fromBytes(t,r);try{return kt.fromValue(t,0,r)}catch(i){if(i.code!==z.errors.INVALID_ARGUMENT)throw i}return Lt.throwArgumentError("invalid FixedNumber value","value",t)}static isFixedNumber(t){return!!(t&&t._isFixedNumber)}}const Jn=kt.from(1),Bs=kt.from("0.5"),Rs="strings/5.7.0",Yn=new z(Rs);var Pr;(function(e){e.current="",e.NFC="NFC",e.NFD="NFD",e.NFKC="NFKC",e.NFKD="NFKD"})(Pr||(Pr={}));var fr;(function(e){e.UNEXPECTED_CONTINUE="unexpected continuation byte",e.BAD_PREFIX="bad codepoint prefix",e.OVERRUN="string overrun",e.MISSING_CONTINUE="missing continuation byte",e.OUT_OF_RANGE="out of UTF-8 range",e.UTF16_SURROGATE="UTF-16 surrogate",e.OVERLONG="overlong representation"})(fr||(fr={}));function Cs(e,t,r,i,n){return Yn.throwArgumentError(`invalid codepoint at offset ${t}; ${e}`,"bytes",r)}function Gn(e,t,r,i,n){if(e===fr.BAD_PREFIX||e===fr.UNEXPECTED_CONTINUE){let o=0;for(let h=t+1;h>6===2;h++)o++;return o}return e===fr.OVERRUN?r.length-t-1:0}function Os(e,t,r,i,n){return e===fr.OVERLONG?(i.push(n),0):(i.push(65533),Gn(e,t,r))}Object.freeze({error:Cs,ignore:Gn,replace:Os});function Si(e,t=Pr.current){t!=Pr.current&&(Yn.checkNormalize(),e=e.normalize(t));let r=[];for(let i=0;i>6|192),r.push(n&63|128);else if((n&64512)==55296){i++;const o=e.charCodeAt(i);if(i>=e.length||(o&64512)!==56320)throw new Error("invalid utf-8 string");const h=65536+((n&1023)<<10)+(o&1023);r.push(h>>18|240),r.push(h>>12&63|128),r.push(h>>6&63|128),r.push(h&63|128)}else r.push(n>>12|224),r.push(n>>6&63|128),r.push(n&63|128)}return Pt(r)}function Ps(e){if(e.length%4!==0)throw new Error("bad data");let t=[];for(let r=0;r{let o=n.split(":");r+=parseInt(o[0],16),i[r]=t(o[1])}),i}function Wn(e){let t=0;return e.split(",").map(r=>{let i=r.split("-");i.length===1?i[1]="0":i[1]===""&&(i[1]="1");let n=t+parseInt(i[0],16);return t=parseInt(i[1],16),{l:n,h:t}})}Wn("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(e=>parseInt(e,16)),Ni("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),Ni("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),Ni("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",Ps),Wn("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");const Xn="hash/5.7.0";function Ts(e){e=atob(e);const t=[];for(let r=0;r0&&Array.isArray(p)?n(p,h-1):r.push(p)})};return n(e,t),r}function Fs(e){const t={};for(let r=0;r>--b&1}const y=31,S=Math.pow(2,y),I=S>>>1,N=I>>1,R=S-1;let F=0;for(let H=0;H1;){let Gt=L+Tt>>>1;H>>1|w(),W=W<<1^I,Ot=(Ot^I)<<1|I|1;Q=W,Bt=1+Ot-W}let J=i-4;return U.map(H=>{switch(H-J){case 3:return J+65792+(e[p++]<<16|e[p++]<<8|e[p++]);case 2:return J+256+(e[p++]<<8|e[p++]);case 1:return J+e[p++];default:return H-1}})}function Us(e){let t=0;return()=>e[t++]}function ks(e){return Us(Ds(e))}function qs(e){return e&1?~e>>1:e>>1}function Ks(e,t){let r=Array(e);for(let i=0;it[h]):r}function Ls(e){let t=[];for(;;){let r=e();if(r==0)break;t.push(js(r,e))}for(;;){let r=e()-1;if(r<0)break;t.push(Vs(r,e))}return Fs(Zn(t))}function zs(e){let t=[];for(;;){let r=e();if(r==0)break;t.push(r)}return t}function tf(e,t,r){let i=Array(e).fill(void 0).map(()=>[]);for(let n=0;ni[h].push(o));return i}function js(e,t){let r=1+t(),i=t(),n=zs(t),o=tf(n.length,1+e,t);return Zn(o.map((h,p)=>{const b=h[0],g=h.slice(1);return Array(n[p]).fill(void 0).map((w,y)=>{let S=y*i;return[b+y*r,g.map(I=>I+S)]})}))}function Vs(e,t){let r=1+t();return tf(r,1+e,t).map(n=>[n[0],n.slice(1)])}function Qs(e){let t=Tr(e).sort((i,n)=>i-n);return r();function r(){let i=[];for(;;){let g=Tr(e,t);if(g.length==0)break;i.push({set:new Set(g),node:r()})}i.sort((g,w)=>w.set.size-g.set.size);let n=e(),o=n%3;n=n/3|0;let h=!!(n&1);n>>=1;let p=n==1,b=n==2;return{branches:i,valid:o,fe0f:h,save:p,check:b}}}function Js(){return ks(Ts("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"))}const Fr=Js();new Set(Tr(Fr)),new Set(Tr(Fr)),Ls(Fr),Qs(Fr),new z(Xn);const Ys=new Uint8Array(32);Ys.fill(0);const Gs=`Ethereum Signed Message: ++`;function ef(e){return typeof e=="string"&&(e=Si(e)),wi(ws([Si(Gs),Si(String(e.length)),e]))}const Ws="rlp/5.7.0";new z(Ws);const Xs="address/5.7.0",br=new z(Xs);function rf(e){Qt(e,20)||br.throwArgumentError("invalid address","address",e),e=e.toLowerCase();const t=e.substring(2).split(""),r=new Uint8Array(40);for(let n=0;n<40;n++)r[n]=t[n].charCodeAt(0);const i=Pt(wi(r));for(let n=0;n<40;n+=2)i[n>>1]>>4>=8&&(t[n]=t[n].toUpperCase()),(i[n>>1]&15)>=8&&(t[n+1]=t[n+1].toUpperCase());return"0x"+t.join("")}const Zs=9007199254740991;function $s(e){return Math.log10?Math.log10(e):Math.log(e)/Math.LN10}const Ii={};for(let e=0;e<10;e++)Ii[String(e)]=String(e);for(let e=0;e<26;e++)Ii[String.fromCharCode(65+e)]=String(10+e);const nf=Math.floor($s(Zs));function ta(e){e=e.toUpperCase(),e=e.substring(4)+e.substring(0,2)+"00";let t=e.split("").map(i=>Ii[i]).join("");for(;t.length>=nf;){let i=t.substring(0,nf);t=parseInt(i,10)%97+t.substring(i.length)}let r=String(98-parseInt(t,10)%97);for(;r.length<2;)r="0"+r;return r}function ea(e){let t=null;if(typeof e!="string"&&br.throwArgumentError("invalid address","address",e),e.match(/^(0x)?[0-9a-fA-F]{40}$/))e.substring(0,2)!=="0x"&&(e="0x"+e),t=rf(e),e.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&t!==e&&br.throwArgumentError("bad address checksum","address",e);else if(e.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(e.substring(2,4)!==ta(e)&&br.throwArgumentError("bad icap checksum","address",e),t=_s(e.substring(4));t.length<40;)t="0"+t;t=rf("0x"+t)}else br.throwArgumentError("invalid address","address",e);return t}const ra="properties/5.7.0";new z(ra);function yr(e,t,r){Object.defineProperty(e,t,{enumerable:!0,value:r,writable:!1})}new z(Xn);const ia=new Uint8Array(32);ia.fill(0),G.from(-1);const na=G.from(0),fa=G.from(1);G.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),fe(fa.toHexString(),32),fe(na.toHexString(),32);var oe={},V={},wr=ff;function ff(e,t){if(!e)throw new Error(t||"Assertion failed")}ff.equal=function(t,r,i){if(t!=r)throw new Error(i||"Assertion failed: "+t+" != "+r)};var _i={exports:{}};typeof Object.create=="function"?_i.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:_i.exports=function(t,r){if(r){t.super_=r;var i=function(){};i.prototype=r.prototype,t.prototype=new i,t.prototype.constructor=t}};var oa=wr,sa=_i.exports;V.inherits=sa;function aa(e,t){return(e.charCodeAt(t)&64512)!==55296||t<0||t+1>=e.length?!1:(e.charCodeAt(t+1)&64512)===56320}function ua(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if(typeof e=="string")if(t){if(t==="hex")for(e=e.replace(/[^a-z0-9]+/ig,""),e.length%2!==0&&(e="0"+e),n=0;n>6|192,r[i++]=o&63|128):aa(e,n)?(o=65536+((o&1023)<<10)+(e.charCodeAt(++n)&1023),r[i++]=o>>18|240,r[i++]=o>>12&63|128,r[i++]=o>>6&63|128,r[i++]=o&63|128):(r[i++]=o>>12|224,r[i++]=o>>6&63|128,r[i++]=o&63|128)}else for(n=0;n>>24|e>>>8&65280|e<<8&16711680|(e&255)<<24;return t>>>0}V.htonl=of;function ca(e,t){for(var r="",i=0;i>>0}return o}V.join32=la;function da(e,t){for(var r=new Array(e.length*4),i=0,n=0;i>>24,r[n+1]=o>>>16&255,r[n+2]=o>>>8&255,r[n+3]=o&255):(r[n+3]=o>>>24,r[n+2]=o>>>16&255,r[n+1]=o>>>8&255,r[n]=o&255)}return r}V.split32=da;function pa(e,t){return e>>>t|e<<32-t}V.rotr32=pa;function va(e,t){return e<>>32-t}V.rotl32=va;function ga(e,t){return e+t>>>0}V.sum32=ga;function ma(e,t,r){return e+t+r>>>0}V.sum32_3=ma;function Aa(e,t,r,i){return e+t+r+i>>>0}V.sum32_4=Aa;function ba(e,t,r,i,n){return e+t+r+i+n>>>0}V.sum32_5=ba;function ya(e,t,r,i){var n=e[t],o=e[t+1],h=i+o>>>0,p=(h>>0,e[t+1]=h}V.sum64=ya;function wa(e,t,r,i){var n=t+i>>>0,o=(n>>0}V.sum64_hi=wa;function xa(e,t,r,i){var n=t+i;return n>>>0}V.sum64_lo=xa;function Ma(e,t,r,i,n,o,h,p){var b=0,g=t;g=g+i>>>0,b+=g>>0,b+=g>>0,b+=g>>0}V.sum64_4_hi=Ma;function Ea(e,t,r,i,n,o,h,p){var b=t+i+o+p;return b>>>0}V.sum64_4_lo=Ea;function Sa(e,t,r,i,n,o,h,p,b,g){var w=0,y=t;y=y+i>>>0,w+=y>>0,w+=y>>0,w+=y>>0,w+=y>>0}V.sum64_5_hi=Sa;function Na(e,t,r,i,n,o,h,p,b,g){var w=t+i+o+p+g;return w>>>0}V.sum64_5_lo=Na;function Ia(e,t,r){var i=t<<32-r|e>>>r;return i>>>0}V.rotr64_hi=Ia;function _a(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}V.rotr64_lo=_a;function Ba(e,t,r){return e>>>r}V.shr64_hi=Ba;function Ra(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}V.shr64_lo=Ra;var or={},uf=V,Ca=wr;function Dr(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}or.BlockHash=Dr,Dr.prototype.update=function(t,r){if(t=uf.toArray(t,r),this.pending?this.pending=this.pending.concat(t):this.pending=t,this.pendingTotal+=t.length,this.pending.length>=this._delta8){t=this.pending;var i=t.length%this._delta8;this.pending=t.slice(t.length-i,t.length),this.pending.length===0&&(this.pending=null),t=uf.join32(t,0,t.length-i,this.endian);for(var n=0;n>>24&255,n[o++]=t>>>16&255,n[o++]=t>>>8&255,n[o++]=t&255}else for(n[o++]=t&255,n[o++]=t>>>8&255,n[o++]=t>>>16&255,n[o++]=t>>>24&255,n[o++]=0,n[o++]=0,n[o++]=0,n[o++]=0,h=8;h>>3}se.g0_256=Da;function Ua(e){return ae(e,17)^ae(e,19)^e>>>10}se.g1_256=Ua;var ar=V,ka=or,qa=se,Bi=ar.rotl32,xr=ar.sum32,Ka=ar.sum32_5,Ha=qa.ft_1,df=ka.BlockHash,La=[1518500249,1859775393,2400959708,3395469782];function ue(){if(!(this instanceof ue))return new ue;df.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}ar.inherits(ue,df);var za=ue;ue.blockSize=512,ue.outSize=160,ue.hmacStrength=80,ue.padLength=64,ue.prototype._update=function(t,r){for(var i=this.W,n=0;n<16;n++)i[n]=t[r+n];for(;nthis.blockSize&&(t=new this.Hash().update(t).digest()),R0(t.length<=this.blockSize);for(var r=t.length;r>8,S=w&255;y?b.push(y,S):b.push(S)}return b}r.toArray=i;function n(h){return h.length===1?"0"+h:h}r.zero2=n;function o(h){for(var p="",b=0;b(S>>1)-1?R=(S>>1)-F:R=F,I.isubn(R)):R=0,y[N]=R,I.iushrn(1)}return y}r.getNAF=i;function n(b,g){var w=[[],[]];b=b.clone(),g=g.clone();for(var y=0,S=0,I;b.cmpn(-y)>0||g.cmpn(-S)>0;){var N=b.andln(3)+y&3,R=g.andln(3)+S&3;N===3&&(N=-1),R===3&&(R=-1);var F;N&1?(I=b.andln(7)+y&7,(I===3||I===5)&&R===2?F=-N:F=N):F=0,w[0].push(F);var U;R&1?(I=g.andln(7)+S&7,(I===3||I===5)&&N===2?U=-R:U=R):U=0,w[1].push(U),2*y===F+1&&(y=1-y),2*S===U+1&&(S=1-S),b.iushrn(1),g.iushrn(1)}return w}r.getJSF=n;function o(b,g,w){var y="_"+g;b.prototype[g]=function(){return this[y]!==void 0?this[y]:this[y]=w.call(this)}}r.cachedProperty=o;function h(b){return typeof b=="string"?r.toArray(b,"hex"):b}r.parseBytes=h;function p(b){return new K(b,"hex","le")}r.intFromLE=p}),kr=Jt.getNAF,P0=Jt.getJSF,qr=Jt.assert;function Be(e,t){this.type=e,this.p=new K(t.p,16),this.red=t.prime?K.red(t.prime):K.mont(this.p),this.zero=new K(0).toRed(this.red),this.one=new K(1).toRed(this.red),this.two=new K(2).toRed(this.red),this.n=t.n&&new K(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var Xe=Be;Be.prototype.point=function(){throw new Error("Not implemented")},Be.prototype.validate=function(){throw new Error("Not implemented")},Be.prototype._fixedNafMul=function(t,r){qr(t.precomputed);var i=t._getDoubles(),n=kr(r,1,this._bitLength),o=(1<=p;g--)b=(b<<1)+n[g];h.push(b)}for(var w=this.jpoint(null,null,null),y=this.jpoint(null,null,null),S=o;S>0;S--){for(p=0;p=0;b--){for(var g=0;b>=0&&h[b]===0;b--)g++;if(b>=0&&g++,p=p.dblp(g),b<0)break;var w=h[b];qr(w!==0),t.type==="affine"?w>0?p=p.mixedAdd(o[w-1>>1]):p=p.mixedAdd(o[-w-1>>1].neg()):w>0?p=p.add(o[w-1>>1]):p=p.add(o[-w-1>>1].neg())}return t.type==="affine"?p.toP():p},Be.prototype._wnafMulAdd=function(t,r,i,n,o){var h=this._wnafT1,p=this._wnafT2,b=this._wnafT3,g=0,w,y,S;for(w=0;w=1;w-=2){var N=w-1,R=w;if(h[N]!==1||h[R]!==1){b[N]=kr(i[N],h[N],this._bitLength),b[R]=kr(i[R],h[R],this._bitLength),g=Math.max(b[N].length,g),g=Math.max(b[R].length,g);continue}var F=[r[N],null,null,r[R]];r[N].y.cmp(r[R].y)===0?(F[1]=r[N].add(r[R]),F[2]=r[N].toJ().mixedAdd(r[R].neg())):r[N].y.cmp(r[R].y.redNeg())===0?(F[1]=r[N].toJ().mixedAdd(r[R]),F[2]=r[N].add(r[R].neg())):(F[1]=r[N].toJ().mixedAdd(r[R]),F[2]=r[N].toJ().mixedAdd(r[R].neg()));var U=[-3,-1,-5,-7,0,7,5,1,3],Q=P0(i[N],i[R]);for(g=Math.max(Q[0].length,g),b[N]=new Array(g),b[R]=new Array(g),y=0;y=0;w--){for(var Tt=0;w>=0;){var W=!0;for(y=0;y=0&&Tt++,H=H.dblp(Tt),w<0)break;for(y=0;y0?S=p[y][Ot-1>>1]:Ot<0&&(S=p[y][-Ot-1>>1].neg()),S.type==="affine"?H=H.mixedAdd(S):H=H.add(S))}}for(w=0;w=Math.ceil((t.bitLength()+1)/r.step):!1},Zt.prototype._getDoubles=function(t,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var i=[this],n=this,o=0;o=0&&(I=g,N=w),y.negative&&(y=y.neg(),S=S.neg()),I.negative&&(I=I.neg(),N=N.neg()),[{a:y,b:S},{a:I,b:N}]},$t.prototype._endoSplit=function(t){var r=this.endo.basis,i=r[0],n=r[1],o=n.b.mul(t).divRound(this.n),h=i.b.neg().mul(t).divRound(this.n),p=o.mul(i.a),b=h.mul(n.a),g=o.mul(i.b),w=h.mul(n.b),y=t.sub(p).sub(b),S=g.add(w).neg();return{k1:y,k2:S}},$t.prototype.pointFromX=function(t,r){t=new K(t,16),t.red||(t=t.toRed(this.red));var i=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=i.redSqrt();if(n.redSqr().redSub(i).cmp(this.zero)!==0)throw new Error("invalid point");var o=n.fromRed().isOdd();return(r&&!o||!r&&o)&&(n=n.redNeg()),this.point(t,n)},$t.prototype.validate=function(t){if(t.inf)return!0;var r=t.x,i=t.y,n=this.a.redMul(r),o=r.redSqr().redMul(r).redIAdd(n).redIAdd(this.b);return i.redSqr().redISub(o).cmpn(0)===0},$t.prototype._endoWnafMulAdd=function(t,r,i){for(var n=this._endoWnafT1,o=this._endoWnafT2,h=0;h":""},Dt.prototype.isInfinity=function(){return this.inf},Dt.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(this.x.cmp(t.x)===0)return this.curve.point(null,null);var r=this.y.redSub(t.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(t.x).redInvm()));var i=r.redSqr().redISub(this.x).redISub(t.x),n=r.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,n)},Dt.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(t.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,i=this.x.redSqr(),n=t.redInvm(),o=i.redAdd(i).redIAdd(i).redIAdd(r).redMul(n),h=o.redSqr().redISub(this.x.redAdd(this.x)),p=o.redMul(this.x.redSub(h)).redISub(this.y);return this.curve.point(h,p)},Dt.prototype.getX=function(){return this.x.fromRed()},Dt.prototype.getY=function(){return this.y.fromRed()},Dt.prototype.mul=function(t){return t=new K(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},Dt.prototype.mulAdd=function(t,r,i){var n=[this,r],o=[t,i];return this.curve.endo?this.curve._endoWnafMulAdd(n,o):this.curve._wnafMulAdd(1,n,o,2)},Dt.prototype.jmulAdd=function(t,r,i){var n=[this,r],o=[t,i];return this.curve.endo?this.curve._endoWnafMulAdd(n,o,!0):this.curve._wnafMulAdd(1,n,o,2,!0)},Dt.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||this.x.cmp(t.x)===0&&this.y.cmp(t.y)===0)},Dt.prototype.neg=function(t){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var i=this.precomputed,n=function(o){return o.neg()};r.precomputed={naf:i.naf&&{wnd:i.naf.wnd,points:i.naf.points.map(n)},doubles:i.doubles&&{step:i.doubles.step,points:i.doubles.points.map(n)}}}return r},Dt.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var t=this.curve.jpoint(this.x,this.y,this.curve.one);return t};function Ut(e,t,r,i){Xe.BasePoint.call(this,e,"jacobian"),t===null&&r===null&&i===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new K(0)):(this.x=new K(t,16),this.y=new K(r,16),this.z=new K(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}Fi(Ut,Xe.BasePoint),$t.prototype.jpoint=function(t,r,i){return new Ut(this,t,r,i)},Ut.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),r=t.redSqr(),i=this.x.redMul(r),n=this.y.redMul(r).redMul(t);return this.curve.point(i,n)},Ut.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},Ut.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var r=t.z.redSqr(),i=this.z.redSqr(),n=this.x.redMul(r),o=t.x.redMul(i),h=this.y.redMul(r.redMul(t.z)),p=t.y.redMul(i.redMul(this.z)),b=n.redSub(o),g=h.redSub(p);if(b.cmpn(0)===0)return g.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var w=b.redSqr(),y=w.redMul(b),S=n.redMul(w),I=g.redSqr().redIAdd(y).redISub(S).redISub(S),N=g.redMul(S.redISub(I)).redISub(h.redMul(y)),R=this.z.redMul(t.z).redMul(b);return this.curve.jpoint(I,N,R)},Ut.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var r=this.z.redSqr(),i=this.x,n=t.x.redMul(r),o=this.y,h=t.y.redMul(r).redMul(this.z),p=i.redSub(n),b=o.redSub(h);if(p.cmpn(0)===0)return b.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var g=p.redSqr(),w=g.redMul(p),y=i.redMul(g),S=b.redSqr().redIAdd(w).redISub(y).redISub(y),I=b.redMul(y.redISub(S)).redISub(o.redMul(w)),N=this.z.redMul(p);return this.curve.jpoint(S,I,N)},Ut.prototype.dblp=function(t){if(t===0)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var i=this;for(r=0;r=0)return!1;if(i.redIAdd(o),this.x.cmp(i)===0)return!0}},Ut.prototype.inspect=function(){return this.isInfinity()?"":""},Ut.prototype.isInfinity=function(){return this.z.cmpn(0)===0};var Kr=lr(function(e,t){var r=t;r.base=Xe,r.short=F0,r.mont=null,r.edwards=null}),Hr=lr(function(e,t){var r=t,i=Jt.assert;function n(p){p.type==="short"?this.curve=new Kr.short(p):p.type==="edwards"?this.curve=new Kr.edwards(p):this.curve=new Kr.mont(p),this.g=this.curve.g,this.n=this.curve.n,this.hash=p.hash,i(this.g.validate(),"Invalid curve"),i(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}r.PresetCurve=n;function o(p,b){Object.defineProperty(r,p,{configurable:!0,enumerable:!0,get:function(){var g=new n(b);return Object.defineProperty(r,p,{configurable:!0,enumerable:!0,value:g}),g}})}o("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:oe.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),o("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:oe.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),o("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:oe.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),o("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:oe.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),o("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:oe.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),o("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:oe.sha256,gRed:!1,g:["9"]}),o("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:oe.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var h;try{h=null.crash()}catch{h=void 0}o("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:oe.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",h]})});function Re(e){if(!(this instanceof Re))return new Re(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=ne.toArray(e.entropy,e.entropyEnc||"hex"),r=ne.toArray(e.nonce,e.nonceEnc||"hex"),i=ne.toArray(e.pers,e.persEnc||"hex");Ti(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,r,i)}var _f=Re;Re.prototype._init=function(t,r,i){var n=t.concat(r).concat(i);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var o=0;o=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(i||[])),this._reseed=1},Re.prototype.generate=function(t,r,i,n){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(n=i,i=r,r=null),i&&(i=ne.toArray(i,n||"hex"),this._update(i));for(var o=[];o.length"};var D0=Jt.assert;function Lr(e,t){if(e instanceof Lr)return e;this._importDER(e,t)||(D0(e.r&&e.s,"Signature without r or s"),this.r=new K(e.r,16),this.s=new K(e.s,16),e.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}var zr=Lr;function U0(){this.place=0}function ki(e,t){var r=e[t.place++];if(!(r&128))return r;var i=r&15;if(i===0||i>4)return!1;for(var n=0,o=0,h=t.place;o>>=0;return n<=127?!1:(t.place=h,n)}function Bf(e){for(var t=0,r=e.length-1;!e[t]&&!(e[t+1]&128)&&t>>3);for(e.push(r|128);--r;)e.push(t>>>(r<<3)&255);e.push(t)}Lr.prototype.toDER=function(t){var r=this.r.toArray(),i=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),i[0]&128&&(i=[0].concat(i)),r=Bf(r),i=Bf(i);!i[0]&&!(i[1]&128);)i=i.slice(1);var n=[2];qi(n,r.length),n=n.concat(r),n.push(2),qi(n,i.length);var o=n.concat(i),h=[48];return qi(h,o.length),h=h.concat(o),Jt.encode(h,t)};var k0=function(){throw new Error("unsupported")},Rf=Jt.assert;function te(e){if(!(this instanceof te))return new te(e);typeof e=="string"&&(Rf(Object.prototype.hasOwnProperty.call(Hr,e),"Unknown curve "+e),e=Hr[e]),e instanceof Hr.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}var q0=te;te.prototype.keyPair=function(t){return new Ui(this,t)},te.prototype.keyFromPrivate=function(t,r){return Ui.fromPrivate(this,t,r)},te.prototype.keyFromPublic=function(t,r){return Ui.fromPublic(this,t,r)},te.prototype.genKeyPair=function(t){t||(t={});for(var r=new _f({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||k0(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),i=this.n.byteLength(),n=this.n.sub(new K(2));;){var o=new K(r.generate(i));if(!(o.cmp(n)>0))return o.iaddn(1),this.keyFromPrivate(o)}},te.prototype._truncateToN=function(t,r){var i=t.byteLength()*8-this.n.bitLength();return i>0&&(t=t.ushrn(i)),!r&&t.cmp(this.n)>=0?t.sub(this.n):t},te.prototype.sign=function(t,r,i,n){typeof i=="object"&&(n=i,i=null),n||(n={}),r=this.keyFromPrivate(r,i),t=this._truncateToN(new K(t,16));for(var o=this.n.byteLength(),h=r.getPrivate().toArray("be",o),p=t.toArray("be",o),b=new _f({hash:this.hash,entropy:h,nonce:p,pers:n.pers,persEnc:n.persEnc||"utf8"}),g=this.n.sub(new K(1)),w=0;;w++){var y=n.k?n.k(w):new K(b.generate(this.n.byteLength()));if(y=this._truncateToN(y,!0),!(y.cmpn(1)<=0||y.cmp(g)>=0)){var S=this.g.mul(y);if(!S.isInfinity()){var I=S.getX(),N=I.umod(this.n);if(N.cmpn(0)!==0){var R=y.invm(this.n).mul(N.mul(r.getPrivate()).iadd(t));if(R=R.umod(this.n),R.cmpn(0)!==0){var F=(S.getY().isOdd()?1:0)|(I.cmp(N)!==0?2:0);return n.canonical&&R.cmp(this.nh)>0&&(R=this.n.sub(R),F^=1),new zr({r:N,s:R,recoveryParam:F})}}}}}},te.prototype.verify=function(t,r,i,n){t=this._truncateToN(new K(t,16)),i=this.keyFromPublic(i,n),r=new zr(r,"hex");var o=r.r,h=r.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0||h.cmpn(1)<0||h.cmp(this.n)>=0)return!1;var p=h.invm(this.n),b=p.mul(t).umod(this.n),g=p.mul(o).umod(this.n),w;return this.curve._maxwellTrick?(w=this.g.jmulAdd(b,i.getPublic(),g),w.isInfinity()?!1:w.eqXToP(o)):(w=this.g.mulAdd(b,i.getPublic(),g),w.isInfinity()?!1:w.getX().umod(this.n).cmp(o)===0)},te.prototype.recoverPubKey=function(e,t,r,i){Rf((3&r)===r,"The recovery param is more than two bits"),t=new zr(t,i);var n=this.n,o=new K(e),h=t.r,p=t.s,b=r&1,g=r>>1;if(h.cmp(this.curve.p.umod(this.curve.n))>=0&&g)throw new Error("Unable to find sencond key candinate");g?h=this.curve.pointFromX(h.add(this.curve.n),b):h=this.curve.pointFromX(h,b);var w=t.r.invm(n),y=n.sub(o).mul(w).umod(n),S=p.mul(w).umod(n);return this.g.mulAdd(y,h,S)},te.prototype.getKeyRecoveryParam=function(e,t,r,i){if(t=new zr(t,i),t.recoveryParam!==null)return t.recoveryParam;for(var n=0;n<4;n++){var o;try{o=this.recoverPubKey(e,t,n)}catch{continue}if(o.eq(r))return n}throw new Error("Unable to find valid recovery factor")};var K0=lr(function(e,t){var r=t;r.version="6.5.4",r.utils=Jt,r.rand=function(){throw new Error("unsupported")},r.curve=Kr,r.curves=Hr,r.ec=q0,r.eddsa=null}),H0=K0.ec;const L0="signing-key/5.7.0",Ki=new z(L0);let Hi=null;function pe(){return Hi||(Hi=new H0("secp256k1")),Hi}class z0{constructor(t){yr(this,"curve","secp256k1"),yr(this,"privateKey",Ht(t)),Ms(this.privateKey)!==32&&Ki.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const r=pe().keyFromPrivate(Pt(this.privateKey));yr(this,"publicKey","0x"+r.getPublic(!1,"hex")),yr(this,"compressedPublicKey","0x"+r.getPublic(!0,"hex")),yr(this,"_isSigningKey",!0)}_addPoint(t){const r=pe().keyFromPublic(Pt(this.publicKey)),i=pe().keyFromPublic(Pt(t));return"0x"+r.pub.add(i.pub).encodeCompressed("hex")}signDigest(t){const r=pe().keyFromPrivate(Pt(this.privateKey)),i=Pt(t);i.length!==32&&Ki.throwArgumentError("bad digest length","digest",t);const n=r.sign(i,{canonical:!0});return qn({recoveryParam:n.recoveryParam,r:fe("0x"+n.r.toString(16),32),s:fe("0x"+n.s.toString(16),32)})}computeSharedSecret(t){const r=pe().keyFromPrivate(Pt(this.privateKey)),i=pe().keyFromPublic(Pt(Cf(t)));return fe("0x"+r.derive(i.getPublic()).toString(16),32)}static isSigningKey(t){return!!(t&&t._isSigningKey)}}function j0(e,t){const r=qn(t),i={r:Pt(r.r),s:Pt(r.s)};return"0x"+pe().recoverPubKey(Pt(e),i,r.recoveryParam).encode("hex",!1)}function Cf(e,t){const r=Pt(e);if(r.length===32){const i=new z0(r);return t?"0x"+pe().keyFromPrivate(r).getPublic(!0,"hex"):i.publicKey}else{if(r.length===33)return t?Ht(r):"0x"+pe().keyFromPublic(r).getPublic(!1,"hex");if(r.length===65)return t?"0x"+pe().keyFromPublic(r).getPublic(!0,"hex"):Ht(r)}return Ki.throwArgumentError("invalid public or private key","key","[REDACTED]")}const V0="transactions/5.7.0";new z(V0);var Of;(function(e){e[e.legacy=0]="legacy",e[e.eip2930=1]="eip2930",e[e.eip1559=2]="eip1559"})(Of||(Of={}));function Q0(e){const t=Cf(e);return ea(kn(wi(kn(t,1)),12))}function J0(e,t){return Q0(j0(Pt(e),t))}const Y0="https://rpc.walletconnect.com/v1";async function Pf(e,t,r,i,n,o){switch(r.t){case"eip191":return Tf(e,t,r.s);case"eip1271":return await Ff(e,t,r.s,i,n,o);default:throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${r.t}`)}}function Tf(e,t,r){return J0(ef(t),r).toLowerCase()===e.toLowerCase()}async function Ff(e,t,r,i,n,o){try{const h="0x1626ba7e",p="0000000000000000000000000000000000000000000000000000000000000040",b="0000000000000000000000000000000000000000000000000000000000000041",g=r.substring(2),w=ef(t).substring(2),y=h+w+p+b+g,S=await fetch(`${o||Y0}/?chainId=${i}&projectId=${n}`,{method:"POST",body:JSON.stringify({id:G0(),jsonrpc:"2.0",method:"eth_call",params:[{to:e,data:y},"latest"]})}),{result:I}=await S.json();return I?I.slice(0,h.length).toLowerCase()===h.toLowerCase():!1}catch(h){return console.error("isValidEip1271Signature: ",h),!1}}function G0(){return Date.now()+Math.floor(Math.random()*1e3)}var W0=Object.defineProperty,X0=Object.defineProperties,Z0=Object.getOwnPropertyDescriptors,Df=Object.getOwnPropertySymbols,$0=Object.prototype.hasOwnProperty,tu=Object.prototype.propertyIsEnumerable,Uf=(e,t,r)=>t in e?W0(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Li=(e,t)=>{for(var r in t||(t={}))$0.call(t,r)&&Uf(e,r,t[r]);if(Df)for(var r of Df(t))tu.call(t,r)&&Uf(e,r,t[r]);return e},kf=(e,t)=>X0(e,Z0(t));const eu="did:pkh:",jr=e=>e?.split(":"),zi=e=>{const t=e&&jr(e);if(t)return e.includes(eu)?t[3]:t[1]},ru=e=>{const t=e&&jr(e);if(t)return t[2]+":"+t[3]},ji=e=>{const t=e&&jr(e);if(t)return t.pop()};async function iu(e){const{cacao:t,projectId:r}=e,{s:i,p:n}=t,o=qf(n,n.iss),h=ji(n.iss);return await Pf(h,o,i,zi(n.iss),r)}const qf=(e,t)=>{const r=`${e.domain} wants you to sign in with your Ethereum account:`,i=ji(t);if(!e.aud&&!e.uri)throw new Error("Either `aud` or `uri` is required to construct the message");let n=e.statement||void 0;const o=`URI: ${e.aud||e.uri}`,h=`Version: ${e.version}`,p=`Chain ID: ${zi(t)}`,b=`Nonce: ${e.nonce}`,g=`Issued At: ${e.iat}`,w=e.resources?`Resources:${e.resources.map(S=>` + - ${S}`).join("")}`:void 0,y=Qr(e.resources);if(y){const S=Ce(y);n=Ji(n,S)}return[r,i,"",n,"",o,h,p,b,g,w].filter(S=>S!=null).join(` +-`)};function iu(e,t,r){return r.includes("did:pkh:")||(r=`did:pkh:${r}`),{h:{t:"caip122"},p:{iss:r,domain:e.domain,aud:e.aud,version:e.version,nonce:e.nonce,iat:e.iat,statement:e.statement,requestId:e.requestId,resources:e.resources,nbf:e.nbf,exp:e.exp},s:t}}function nu(e){var t;const{authPayload:r,chains:i,methods:n}=e,o=r.statement||"";if(!(i!=null&&i.length))return r;const h=r.chains,p=mi(h,i);if(!(p!=null&&p.length))throw new Error("No supported chains");const b=qf(r.resources);if(!b)return r;ve(b);const g=Kf(b,"eip155");let w=r?.resources||[];if(g!=null&&g.length){const y=Hf(g),S=mi(y,n);if(!(S!=null&&S.length))throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(y)}, supported: ${JSON.stringify(n)}`);const I=Vi("request",S,{chains:p}),N=Vf(b,"eip155",I);w=((t=r?.resources)==null?void 0:t.slice(0,-1))||[],w.push(Vr(N))}return Uf(Li({},r),{statement:Jf(o,Qr(w)),chains:p,resources:r!=null&&r.resources||w.length>0?w:void 0})}function qf(e){const t=Qr(e);if(t&&Qi(t))return Ce(t)}function fu(e,t){var r;return(r=e?.att)==null?void 0:r.hasOwnProperty(t)}function Kf(e,t){var r,i;return(r=e?.att)!=null&&r[t]?Object.keys((i=e?.att)==null?void 0:i[t]):[]}function ou(e){return e?.map(t=>Object.keys(t))||[]}function Hf(e){return e?.map(t=>{var r;return(r=t.split("/"))==null?void 0:r[1]})||[]}function Lf(e){return Buffer.from(JSON.stringify(e)).toString("base64")}function zf(e){return JSON.parse(Buffer.from(e,"base64").toString("utf-8"))}function ve(e){if(!e)throw new Error("No recap provided, value is undefined");if(!e.att)throw new Error("No `att` property found");const t=Object.keys(e.att);if(!(t!=null&&t.length))throw new Error("No resources found in `att` property");t.forEach(r=>{const i=e.att[r];if(Array.isArray(i))throw new Error(`Resource must be an object: ${r}`);if(typeof i!="object")throw new Error(`Resource must be an object: ${r}`);if(!Object.keys(i).length)throw new Error(`Resource object is empty: ${r}`);Object.keys(i).forEach(n=>{const o=i[n];if(!Array.isArray(o))throw new Error(`Ability limits ${n} must be an array of objects, found: ${o}`);if(!o.length)throw new Error(`Value of ${n} is empty array, must be an array with objects`);o.forEach(h=>{if(typeof h!="object")throw new Error(`Ability limits (${n}) must be an array of objects, found: ${h}`)})})})}function jf(e,t,r,i={}){return r?.sort((n,o)=>n.localeCompare(o)),{att:{[e]:Vi(t,r,i)}}}function Vf(e,t,r){var i;return e.att[t]=Li({},r),((i=Object.keys(e.att))==null?void 0:i.sort((n,o)=>n.localeCompare(o))).reduce((n,o)=>(n.att[o]=e.att[o],n),{att:{}})}function Vi(e,t,r={}){t=t?.sort((n,o)=>n.localeCompare(o));const i=t.map(n=>({[`${e}/${n}`]:[r]}));return Object.assign({},...i)}function Vr(e){return ve(e),`urn:recap:${Lf(e).replace(/=/g,"")}`}function Ce(e){const t=zf(e.replace("urn:recap:",""));return ve(t),t}function su(e,t,r){const i=jf(e,t,r);return Vr(i)}function Qi(e){return e&&e.includes("urn:recap:")}function au(e,t){const r=Ce(e),i=Ce(t),n=Qf(r,i);return Vr(n)}function Qf(e,t){ve(e),ve(t);const r=Object.keys(e.att).concat(Object.keys(t.att)).sort((n,o)=>n.localeCompare(o)),i={att:{}};return r.forEach(n=>{var o,h;Object.keys(((o=e.att)==null?void 0:o[n])||{}).concat(Object.keys(((h=t.att)==null?void 0:h[n])||{})).sort((p,b)=>p.localeCompare(b)).forEach(p=>{var b,g;i.att[n]=Uf(Li({},i.att[n]),{[p]:((b=e.att[n])==null?void 0:b[p])||((g=t.att[n])==null?void 0:g[p])})})}),i}function Ji(e="",t){ve(t);const r="I further authorize the stated URI to perform the following actions on my behalf: ";if(e.includes(r))return e;const i=[];let n=0;Object.keys(t.att).forEach(p=>{const b=Object.keys(t.att[p]).map(y=>({ability:y.split("/")[0],action:y.split("/")[1]}));b.sort((y,S)=>y.action.localeCompare(S.action));const g={};b.forEach(y=>{g[y.ability]||(g[y.ability]=[]),g[y.ability].push(y.action)});const w=Object.keys(g).map(y=>(n++,`(${n}) '${y}': '${g[y].join("', '")}' for '${p}'.`));i.push(w.join(", ").replace(".,","."))});const o=i.join(" "),h=`${r}${o}`;return`${e?e+" ":""}${h}`}function uu(e){var t;const r=Ce(e);ve(r);const i=(t=r.att)==null?void 0:t.eip155;return i?Object.keys(i).map(n=>n.split("/")[1]):[]}function hu(e){const t=Ce(e);ve(t);const r=[];return Object.values(t.att).forEach(i=>{Object.values(i).forEach(n=>{var o;(o=n?.[0])!=null&&o.chains&&r.push(n[0].chains)})}),[...new Set(r.flat())]}function Jf(e,t){if(!t)return e;const r=Ce(t);return ve(r),Ji(e,r)}function Qr(e){if(!e)return;const t=e?.[e.length-1];return Qi(t)?t:void 0}const Yi="base10",zt="base16",Jr="base64pad",Yr="utf8",Gi=0,dr=1,cu=0,Yf=1,Wi=12,Xi=32;function lu(){const e=an.generateKeyPair();return{privateKey:Rt.toString(e.secretKey,zt),publicKey:Rt.toString(e.publicKey,zt)}}function du(){const e=on.randomBytes(Xi);return Rt.toString(e,zt)}function pu(e,t){const r=an.sharedKey(Rt.fromString(e,zt),Rt.fromString(t,zt),!0),i=new Po.HKDF(ci.SHA256,r).expand(Xi);return Rt.toString(i,zt)}function vu(e){const t=ci.hash(Rt.fromString(e,zt));return Rt.toString(t,zt)}function gu(e){const t=ci.hash(Rt.fromString(e,Yr));return Rt.toString(t,zt)}function Gf(e){return Rt.fromString(`${e}`,Yi)}function Er(e){return Number(Rt.toString(e,Yi))}function mu(e){const t=Gf(typeof e.type<"u"?e.type:Gi);if(Er(t)===dr&&typeof e.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");const r=typeof e.senderPublicKey<"u"?Rt.fromString(e.senderPublicKey,zt):void 0,i=typeof e.iv<"u"?Rt.fromString(e.iv,zt):on.randomBytes(Wi),n=new fn.ChaCha20Poly1305(Rt.fromString(e.symKey,zt)).seal(i,Rt.fromString(e.message,Yr));return Wf({type:t,sealed:n,iv:i,senderPublicKey:r})}function Au(e){const t=new fn.ChaCha20Poly1305(Rt.fromString(e.symKey,zt)),{sealed:r,iv:i}=Zi(e.encoded),n=t.open(i,r);if(n===null)throw new Error("Failed to decrypt");return Rt.toString(n,Yr)}function Wf(e){if(Er(e.type)===dr){if(typeof e.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");return Rt.toString(Rt.concat([e.type,e.senderPublicKey,e.iv,e.sealed]),Jr)}return Rt.toString(Rt.concat([e.type,e.iv,e.sealed]),Jr)}function Zi(e){const t=Rt.fromString(e,Jr),r=t.slice(cu,Yf),i=Yf;if(Er(r)===dr){const p=i+Xi,b=p+Wi,g=t.slice(i,p),w=t.slice(p,b),y=t.slice(b);return{type:r,sealed:y,iv:w,senderPublicKey:g}}const n=i+Wi,o=t.slice(i,n),h=t.slice(n);return{type:r,sealed:h,iv:o}}function bu(e,t){const r=Zi(e);return Xf({type:Er(r.type),senderPublicKey:typeof r.senderPublicKey<"u"?Rt.toString(r.senderPublicKey,zt):void 0,receiverPublicKey:t?.receiverPublicKey})}function Xf(e){const t=e?.type||Gi;if(t===dr){if(typeof e?.senderPublicKey>"u")throw new Error("missing sender public key");if(typeof e?.receiverPublicKey>"u")throw new Error("missing receiver public key")}return{type:t,senderPublicKey:e?.senderPublicKey,receiverPublicKey:e?.receiverPublicKey}}function yu(e){return e.type===dr&&typeof e.senderPublicKey=="string"&&typeof e.receiverPublicKey=="string"}const Zf="irn";function wu(e){return e?.relay||{protocol:Zf}}function xu(e){const t=Fo.RELAY_JSONRPC[e];if(typeof t>"u")throw new Error(`Relay Protocol not supported: ${e}`);return t}var Mu=Object.defineProperty,Eu=Object.defineProperties,Su=Object.getOwnPropertyDescriptors,$f=Object.getOwnPropertySymbols,Nu=Object.prototype.hasOwnProperty,Iu=Object.prototype.propertyIsEnumerable,to=(e,t,r)=>t in e?Mu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,eo=(e,t)=>{for(var r in t||(t={}))Nu.call(t,r)&&to(e,r,t[r]);if($f)for(var r of $f(t))Iu.call(t,r)&&to(e,r,t[r]);return e},_u=(e,t)=>Eu(e,Su(t));function ro(e,t="-"){const r={},i="relay"+t;return Object.keys(e).forEach(n=>{if(n.startsWith(i)){const o=n.replace(i,""),h=e[n];r[o]=h}}),r}function Bu(e){e=e.includes("wc://")?e.replace("wc://",""):e,e=e.includes("wc:")?e.replace("wc:",""):e;const t=e.indexOf(":"),r=e.indexOf("?")!==-1?e.indexOf("?"):void 0,i=e.substring(0,t),n=e.substring(t+1,r).split("@"),o=typeof r<"u"?e.substring(r):"",h=Ir.parse(o),p=typeof h.methods=="string"?h.methods.split(","):void 0;return{protocol:i,topic:io(n[0]),version:parseInt(n[1],10),symKey:h.symKey,relay:ro(h),methods:p,expiryTimestamp:h.expiryTimestamp?parseInt(h.expiryTimestamp,10):void 0}}function io(e){return e.startsWith("//")?e.substring(2):e}function no(e,t="-"){const r="relay",i={};return Object.keys(e).forEach(n=>{const o=r+t+n;e[n]&&(i[o]=e[n])}),i}function Ru(e){return`${e.protocol}:${e.topic}@${e.version}?`+Ir.stringify(eo(_u(eo({symKey:e.symKey},no(e.relay)),{expiryTimestamp:e.expiryTimestamp}),e.methods?{methods:e.methods.join(",")}:{}))}var Cu=Object.defineProperty,Ou=Object.defineProperties,Pu=Object.getOwnPropertyDescriptors,fo=Object.getOwnPropertySymbols,Tu=Object.prototype.hasOwnProperty,Fu=Object.prototype.propertyIsEnumerable,oo=(e,t,r)=>t in e?Cu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Du=(e,t)=>{for(var r in t||(t={}))Tu.call(t,r)&&oo(e,r,t[r]);if(fo)for(var r of fo(t))Fu.call(t,r)&&oo(e,r,t[r]);return e},Uu=(e,t)=>Ou(e,Pu(t));function Ze(e){const t=[];return e.forEach(r=>{const[i,n]=r.split(":");t.push(`${i}:${n}`)}),t}function so(e){const t=[];return Object.values(e).forEach(r=>{t.push(...Ze(r.accounts))}),t}function ao(e,t){const r=[];return Object.values(e).forEach(i=>{Ze(i.accounts).includes(t)&&r.push(...i.methods)}),r}function uo(e,t){const r=[];return Object.values(e).forEach(i=>{Ze(i.accounts).includes(t)&&r.push(...i.events)}),r}function ku(e,t){const r=wo(e,t);if(r)throw new Error(r.message);const i={};for(const[n,o]of Object.entries(e))i[n]={methods:o.methods,events:o.events,chains:o.accounts.map(h=>`${h.split(":")[0]}:${h.split(":")[1]}`)};return i}function qu(e){const{proposal:{requiredNamespaces:t,optionalNamespaces:r={}},supportedNamespaces:i}=e,n=tn(t),o=tn(r),h={};Object.keys(i).forEach(g=>{const w=i[g].chains,y=i[g].methods,S=i[g].events,I=i[g].accounts;w.forEach(N=>{if(!I.some(R=>R.includes(N)))throw new Error(`No accounts provided for chain ${N} in namespace ${g}`)}),h[g]={chains:w,methods:y,events:S,accounts:I}});const p=Mo(t,h,"approve()");if(p)throw new Error(p.message);const b={};return!Object.keys(t).length&&!Object.keys(r).length?h:(Object.keys(n).forEach(g=>{const w=i[g].chains.filter(N=>{var R,F;return(F=(R=n[g])==null?void 0:R.chains)==null?void 0:F.includes(N)}),y=i[g].methods.filter(N=>{var R,F;return(F=(R=n[g])==null?void 0:R.methods)==null?void 0:F.includes(N)}),S=i[g].events.filter(N=>{var R,F;return(F=(R=n[g])==null?void 0:R.events)==null?void 0:F.includes(N)}),I=w.map(N=>i[g].accounts.filter(R=>R.includes(`${N}:`))).flat();b[g]={chains:w,methods:y,events:S,accounts:I}}),Object.keys(o).forEach(g=>{var w,y,S,I,N,R;if(!i[g])return;const F=(y=(w=o[g])==null?void 0:w.chains)==null?void 0:y.filter(J=>i[g].chains.includes(J)),U=i[g].methods.filter(J=>{var H,L;return(L=(H=o[g])==null?void 0:H.methods)==null?void 0:L.includes(J)}),Q=i[g].events.filter(J=>{var H,L;return(L=(H=o[g])==null?void 0:H.events)==null?void 0:L.includes(J)}),Bt=F?.map(J=>i[g].accounts.filter(H=>H.includes(`${J}:`))).flat();b[g]={chains:ge((S=b[g])==null?void 0:S.chains,F),methods:ge((I=b[g])==null?void 0:I.methods,U),events:ge((N=b[g])==null?void 0:N.events,Q),accounts:ge((R=b[g])==null?void 0:R.accounts,Bt)}}),b)}function $i(e){return e.includes(":")}function ho(e){return $i(e)?e.split(":")[0]:e}function tn(e){var t,r,i;const n={};if(!Gr(e))return n;for(const[o,h]of Object.entries(e)){const p=$i(o)?[o]:h.chains,b=h.methods||[],g=h.events||[],w=ho(o);n[w]=Uu(Du({},n[w]),{chains:ge(p,(t=n[w])==null?void 0:t.chains),methods:ge(b,(r=n[w])==null?void 0:r.methods),events:ge(g,(i=n[w])==null?void 0:i.events)})}return n}function co(e){const t={};return e?.forEach(r=>{const[i,n]=r.split(":");t[i]||(t[i]={accounts:[],chains:[],events:[]}),t[i].accounts.push(r),t[i].chains.push(`${i}:${n}`)}),t}function Ku(e,t){t=t.map(i=>i.replace("did:pkh:",""));const r=co(t);for(const[i,n]of Object.entries(r))n.methods?n.methods=ge(n.methods,e):n.methods=e,n.events=["chainChanged","accountsChanged"];return r}const lo={INVALID_METHOD:{message:"Invalid method.",code:1001},INVALID_EVENT:{message:"Invalid event.",code:1002},INVALID_UPDATE_REQUEST:{message:"Invalid update request.",code:1003},INVALID_EXTEND_REQUEST:{message:"Invalid extend request.",code:1004},INVALID_SESSION_SETTLE_REQUEST:{message:"Invalid session settle request.",code:1005},UNAUTHORIZED_METHOD:{message:"Unauthorized method.",code:3001},UNAUTHORIZED_EVENT:{message:"Unauthorized event.",code:3002},UNAUTHORIZED_UPDATE_REQUEST:{message:"Unauthorized update request.",code:3003},UNAUTHORIZED_EXTEND_REQUEST:{message:"Unauthorized extend request.",code:3004},USER_REJECTED:{message:"User rejected.",code:5e3},USER_REJECTED_CHAINS:{message:"User rejected chains.",code:5001},USER_REJECTED_METHODS:{message:"User rejected methods.",code:5002},USER_REJECTED_EVENTS:{message:"User rejected events.",code:5003},UNSUPPORTED_CHAINS:{message:"Unsupported chains.",code:5100},UNSUPPORTED_METHODS:{message:"Unsupported methods.",code:5101},UNSUPPORTED_EVENTS:{message:"Unsupported events.",code:5102},UNSUPPORTED_ACCOUNTS:{message:"Unsupported accounts.",code:5103},UNSUPPORTED_NAMESPACE_KEY:{message:"Unsupported namespace key.",code:5104},USER_DISCONNECTED:{message:"User disconnected.",code:6e3},SESSION_SETTLEMENT_FAILED:{message:"Session settlement failed.",code:7e3},WC_METHOD_UNSUPPORTED:{message:"Unsupported wc_ method.",code:10001}},po={NOT_INITIALIZED:{message:"Not initialized.",code:1},NO_MATCHING_KEY:{message:"No matching key.",code:2},RESTORE_WILL_OVERRIDE:{message:"Restore will override.",code:3},RESUBSCRIBED:{message:"Resubscribed.",code:4},MISSING_OR_INVALID:{message:"Missing or invalid.",code:5},EXPIRED:{message:"Expired.",code:6},UNKNOWN_TYPE:{message:"Unknown type.",code:7},MISMATCHED_TOPIC:{message:"Mismatched topic.",code:8},NON_CONFORMING_NAMESPACES:{message:"Non conforming namespaces.",code:9}};function we(e,t){const{message:r,code:i}=po[e];return{message:t?`${r} ${t}`:r,code:i}}function $e(e,t){const{message:r,code:i}=lo[e];return{message:t?`${r} ${t}`:r,code:i}}function Sr(e,t){return Array.isArray(e)?typeof t<"u"&&e.length?e.every(t):!0:!1}function Gr(e){return Object.getPrototypeOf(e)===Object.prototype&&Object.keys(e).length}function Oe(e){return typeof e>"u"}function Yt(e,t){return t&&Oe(e)?!0:typeof e=="string"&&!!e.trim().length}function Wr(e,t){return t&&Oe(e)?!0:typeof e=="number"&&!isNaN(e)}function Hu(e,t){const{requiredNamespaces:r}=t,i=Object.keys(e.namespaces),n=Object.keys(r);let o=!0;return Ie(n,i)?(i.forEach(h=>{const{accounts:p,methods:b,events:g}=e.namespaces[h],w=Ze(p),y=r[h];(!Ie(Br(h,y),w)||!Ie(y.methods,b)||!Ie(y.events,g))&&(o=!1)}),o):!1}function Nr(e){return Yt(e,!1)&&e.includes(":")?e.split(":").length===2:!1}function vo(e){if(Yt(e,!1)&&e.includes(":")){const t=e.split(":");if(t.length===3){const r=t[0]+":"+t[1];return!!t[2]&&Nr(r)}}return!1}function Lu(e){if(Yt(e,!1))try{return typeof new URL(e)<"u"}catch{return!1}return!1}function zu(e){var t;return(t=e?.proposer)==null?void 0:t.publicKey}function ju(e){return e?.topic}function Vu(e,t){let r=null;return Yt(e?.publicKey,!1)||(r=we("MISSING_OR_INVALID",`${t} controller public key should be a string`)),r}function en(e){let t=!0;return Sr(e)?e.length&&(t=e.every(r=>Yt(r,!1))):t=!1,t}function go(e,t,r){let i=null;return Sr(t)&&t.length?t.forEach(n=>{i||Nr(n)||(i=$e("UNSUPPORTED_CHAINS",`${r}, chain ${n} should be a string and conform to "namespace:chainId" format`))}):Nr(e)||(i=$e("UNSUPPORTED_CHAINS",`${r}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)),i}function mo(e,t,r){let i=null;return Object.entries(e).forEach(([n,o])=>{if(i)return;const h=go(n,Br(n,o),`${t} ${r}`);h&&(i=h)}),i}function Ao(e,t){let r=null;return Sr(e)?e.forEach(i=>{r||vo(i)||(r=$e("UNSUPPORTED_ACCOUNTS",`${t}, account ${i} should be a string and conform to "namespace:chainId:address" format`))}):r=$e("UNSUPPORTED_ACCOUNTS",`${t}, accounts should be an array of strings conforming to "namespace:chainId:address" format`),r}function bo(e,t){let r=null;return Object.values(e).forEach(i=>{if(r)return;const n=Ao(i?.accounts,`${t} namespace`);n&&(r=n)}),r}function yo(e,t){let r=null;return en(e?.methods)?en(e?.events)||(r=$e("UNSUPPORTED_EVENTS",`${t}, events should be an array of strings or empty array for no events`)):r=$e("UNSUPPORTED_METHODS",`${t}, methods should be an array of strings or empty array for no methods`),r}function rn(e,t){let r=null;return Object.values(e).forEach(i=>{if(r)return;const n=yo(i,`${t}, namespace`);n&&(r=n)}),r}function Qu(e,t,r){let i=null;if(e&&Gr(e)){const n=rn(e,t);n&&(i=n);const o=mo(e,t,r);o&&(i=o)}else i=we("MISSING_OR_INVALID",`${t}, ${r} should be an object with data`);return i}function wo(e,t){let r=null;if(e&&Gr(e)){const i=rn(e,t);i&&(r=i);const n=bo(e,t);n&&(r=n)}else r=we("MISSING_OR_INVALID",`${t}, namespaces should be an object with data`);return r}function xo(e){return Yt(e.protocol,!0)}function Ju(e,t){let r=!1;return t&&!e?r=!0:e&&Sr(e)&&e.length&&e.forEach(i=>{r=xo(i)}),r}function Yu(e){return typeof e=="number"}function Gu(e){return typeof e<"u"&&typeof e!==null}function Wu(e){return!(!e||typeof e!="object"||!e.code||!Wr(e.code,!1)||!e.message||!Yt(e.message,!1))}function Xu(e){return!(Oe(e)||!Yt(e.method,!1))}function Zu(e){return!(Oe(e)||Oe(e.result)&&Oe(e.error)||!Wr(e.id,!1)||!Yt(e.jsonrpc,!1))}function $u(e){return!(Oe(e)||!Yt(e.name,!1))}function th(e,t){return!(!Nr(t)||!so(e).includes(t))}function eh(e,t,r){return Yt(r,!1)?ao(e,t).includes(r):!1}function rh(e,t,r){return Yt(r,!1)?uo(e,t).includes(r):!1}function Mo(e,t,r){let i=null;const n=ih(e),o=nh(t),h=Object.keys(n),p=Object.keys(o),b=Eo(Object.keys(e)),g=Eo(Object.keys(t)),w=b.filter(y=>!g.includes(y));return w.length&&(i=we("NON_CONFORMING_NAMESPACES",`${r} namespaces keys don't satisfy requiredNamespaces. ++`)};function nu(e,t,r){return r.includes("did:pkh:")||(r=`did:pkh:${r}`),{h:{t:"caip122"},p:{iss:r,domain:e.domain,aud:e.aud,version:e.version,nonce:e.nonce,iat:e.iat,statement:e.statement,requestId:e.requestId,resources:e.resources,nbf:e.nbf,exp:e.exp},s:t}}function fu(e){var t;const{authPayload:r,chains:i,methods:n}=e,o=r.statement||"";if(!(i!=null&&i.length))return r;const h=r.chains,p=mi(h,i);if(!(p!=null&&p.length))throw new Error("No supported chains");const b=Kf(r.resources);if(!b)return r;ve(b);const g=Hf(b,"eip155");let w=r?.resources||[];if(g!=null&&g.length){const y=Lf(g),S=mi(y,n);if(!(S!=null&&S.length))throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(y)}, supported: ${JSON.stringify(n)}`);const I=Vi("request",S,{chains:p}),N=Qf(b,"eip155",I);w=((t=r?.resources)==null?void 0:t.slice(0,-1))||[],w.push(Vr(N))}return kf(Li({},r),{statement:Yf(o,Qr(w)),chains:p,resources:r!=null&&r.resources||w.length>0?w:void 0})}function Kf(e){const t=Qr(e);if(t&&Qi(t))return Ce(t)}function ou(e,t){var r;return(r=e?.att)==null?void 0:r.hasOwnProperty(t)}function Hf(e,t){var r,i;return(r=e?.att)!=null&&r[t]?Object.keys((i=e?.att)==null?void 0:i[t]):[]}function su(e){return e?.map(t=>Object.keys(t))||[]}function Lf(e){return e?.map(t=>{var r;return(r=t.split("/"))==null?void 0:r[1]})||[]}function zf(e){return Buffer.from(JSON.stringify(e)).toString("base64")}function jf(e){return JSON.parse(Buffer.from(e,"base64").toString("utf-8"))}function ve(e){if(!e)throw new Error("No recap provided, value is undefined");if(!e.att)throw new Error("No `att` property found");const t=Object.keys(e.att);if(!(t!=null&&t.length))throw new Error("No resources found in `att` property");t.forEach(r=>{const i=e.att[r];if(Array.isArray(i))throw new Error(`Resource must be an object: ${r}`);if(typeof i!="object")throw new Error(`Resource must be an object: ${r}`);if(!Object.keys(i).length)throw new Error(`Resource object is empty: ${r}`);Object.keys(i).forEach(n=>{const o=i[n];if(!Array.isArray(o))throw new Error(`Ability limits ${n} must be an array of objects, found: ${o}`);if(!o.length)throw new Error(`Value of ${n} is empty array, must be an array with objects`);o.forEach(h=>{if(typeof h!="object")throw new Error(`Ability limits (${n}) must be an array of objects, found: ${h}`)})})})}function Vf(e,t,r,i={}){return r?.sort((n,o)=>n.localeCompare(o)),{att:{[e]:Vi(t,r,i)}}}function Qf(e,t,r){var i;return e.att[t]=Li({},r),((i=Object.keys(e.att))==null?void 0:i.sort((n,o)=>n.localeCompare(o))).reduce((n,o)=>(n.att[o]=e.att[o],n),{att:{}})}function Vi(e,t,r={}){t=t?.sort((n,o)=>n.localeCompare(o));const i=t.map(n=>({[`${e}/${n}`]:[r]}));return Object.assign({},...i)}function Vr(e){return ve(e),`urn:recap:${zf(e).replace(/=/g,"")}`}function Ce(e){const t=jf(e.replace("urn:recap:",""));return ve(t),t}function au(e,t,r){const i=Vf(e,t,r);return Vr(i)}function Qi(e){return e&&e.includes("urn:recap:")}function uu(e,t){const r=Ce(e),i=Ce(t),n=Jf(r,i);return Vr(n)}function Jf(e,t){ve(e),ve(t);const r=Object.keys(e.att).concat(Object.keys(t.att)).sort((n,o)=>n.localeCompare(o)),i={att:{}};return r.forEach(n=>{var o,h;Object.keys(((o=e.att)==null?void 0:o[n])||{}).concat(Object.keys(((h=t.att)==null?void 0:h[n])||{})).sort((p,b)=>p.localeCompare(b)).forEach(p=>{var b,g;i.att[n]=kf(Li({},i.att[n]),{[p]:((b=e.att[n])==null?void 0:b[p])||((g=t.att[n])==null?void 0:g[p])})})}),i}function Ji(e="",t){ve(t);const r="I further authorize the stated URI to perform the following actions on my behalf: ";if(e.includes(r))return e;const i=[];let n=0;Object.keys(t.att).forEach(p=>{const b=Object.keys(t.att[p]).map(y=>({ability:y.split("/")[0],action:y.split("/")[1]}));b.sort((y,S)=>y.action.localeCompare(S.action));const g={};b.forEach(y=>{g[y.ability]||(g[y.ability]=[]),g[y.ability].push(y.action)});const w=Object.keys(g).map(y=>(n++,`(${n}) '${y}': '${g[y].join("', '")}' for '${p}'.`));i.push(w.join(", ").replace(".,","."))});const o=i.join(" "),h=`${r}${o}`;return`${e?e+" ":""}${h}`}function hu(e){var t;const r=Ce(e);ve(r);const i=(t=r.att)==null?void 0:t.eip155;return i?Object.keys(i).map(n=>n.split("/")[1]):[]}function cu(e){const t=Ce(e);ve(t);const r=[];return Object.values(t.att).forEach(i=>{Object.values(i).forEach(n=>{var o;(o=n?.[0])!=null&&o.chains&&r.push(n[0].chains)})}),[...new Set(r.flat())]}function Yf(e,t){if(!t)return e;const r=Ce(t);return ve(r),Ji(e,r)}function Qr(e){if(!e)return;const t=e?.[e.length-1];return Qi(t)?t:void 0}const Yi="base10",zt="base16",Jr="base64pad",Yr="utf8",Gi=0,dr=1,lu=0,Gf=1,Wi=12,Xi=32;function du(){const e=an.generateKeyPair();return{privateKey:Rt.toString(e.secretKey,zt),publicKey:Rt.toString(e.publicKey,zt)}}function pu(){const e=on.randomBytes(Xi);return Rt.toString(e,zt)}function vu(e,t){const r=an.sharedKey(Rt.fromString(e,zt),Rt.fromString(t,zt),!0),i=new To.HKDF(ci.SHA256,r).expand(Xi);return Rt.toString(i,zt)}function gu(e){const t=ci.hash(Rt.fromString(e,zt));return Rt.toString(t,zt)}function mu(e){const t=ci.hash(Rt.fromString(e,Yr));return Rt.toString(t,zt)}function Wf(e){return Rt.fromString(`${e}`,Yi)}function Er(e){return Number(Rt.toString(e,Yi))}function Au(e){const t=Wf(typeof e.type<"u"?e.type:Gi);if(Er(t)===dr&&typeof e.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");const r=typeof e.senderPublicKey<"u"?Rt.fromString(e.senderPublicKey,zt):void 0,i=typeof e.iv<"u"?Rt.fromString(e.iv,zt):on.randomBytes(Wi),n=new fn.ChaCha20Poly1305(Rt.fromString(e.symKey,zt)).seal(i,Rt.fromString(e.message,Yr));return Xf({type:t,sealed:n,iv:i,senderPublicKey:r})}function bu(e){const t=new fn.ChaCha20Poly1305(Rt.fromString(e.symKey,zt)),{sealed:r,iv:i}=Zi(e.encoded),n=t.open(i,r);if(n===null)throw new Error("Failed to decrypt");return Rt.toString(n,Yr)}function Xf(e){if(Er(e.type)===dr){if(typeof e.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");return Rt.toString(Rt.concat([e.type,e.senderPublicKey,e.iv,e.sealed]),Jr)}return Rt.toString(Rt.concat([e.type,e.iv,e.sealed]),Jr)}function Zi(e){const t=Rt.fromString(e,Jr),r=t.slice(lu,Gf),i=Gf;if(Er(r)===dr){const p=i+Xi,b=p+Wi,g=t.slice(i,p),w=t.slice(p,b),y=t.slice(b);return{type:r,sealed:y,iv:w,senderPublicKey:g}}const n=i+Wi,o=t.slice(i,n),h=t.slice(n);return{type:r,sealed:h,iv:o}}function yu(e,t){const r=Zi(e);return Zf({type:Er(r.type),senderPublicKey:typeof r.senderPublicKey<"u"?Rt.toString(r.senderPublicKey,zt):void 0,receiverPublicKey:t?.receiverPublicKey})}function Zf(e){const t=e?.type||Gi;if(t===dr){if(typeof e?.senderPublicKey>"u")throw new Error("missing sender public key");if(typeof e?.receiverPublicKey>"u")throw new Error("missing receiver public key")}return{type:t,senderPublicKey:e?.senderPublicKey,receiverPublicKey:e?.receiverPublicKey}}function wu(e){return e.type===dr&&typeof e.senderPublicKey=="string"&&typeof e.receiverPublicKey=="string"}const $f="irn";function xu(e){return e?.relay||{protocol:$f}}function Mu(e){const t=Do.RELAY_JSONRPC[e];if(typeof t>"u")throw new Error(`Relay Protocol not supported: ${e}`);return t}var Eu=Object.defineProperty,Su=Object.defineProperties,Nu=Object.getOwnPropertyDescriptors,to=Object.getOwnPropertySymbols,Iu=Object.prototype.hasOwnProperty,_u=Object.prototype.propertyIsEnumerable,eo=(e,t,r)=>t in e?Eu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,ro=(e,t)=>{for(var r in t||(t={}))Iu.call(t,r)&&eo(e,r,t[r]);if(to)for(var r of to(t))_u.call(t,r)&&eo(e,r,t[r]);return e},Bu=(e,t)=>Su(e,Nu(t));function io(e,t="-"){const r={},i="relay"+t;return Object.keys(e).forEach(n=>{if(n.startsWith(i)){const o=n.replace(i,""),h=e[n];r[o]=h}}),r}function Ru(e){e=e.includes("wc://")?e.replace("wc://",""):e,e=e.includes("wc:")?e.replace("wc:",""):e;const t=e.indexOf(":"),r=e.indexOf("?")!==-1?e.indexOf("?"):void 0,i=e.substring(0,t),n=e.substring(t+1,r).split("@"),o=typeof r<"u"?e.substring(r):"",h=Ir.parse(o),p=typeof h.methods=="string"?h.methods.split(","):void 0;return{protocol:i,topic:no(n[0]),version:parseInt(n[1],10),symKey:h.symKey,relay:io(h),methods:p,expiryTimestamp:h.expiryTimestamp?parseInt(h.expiryTimestamp,10):void 0}}function no(e){return e.startsWith("//")?e.substring(2):e}function fo(e,t="-"){const r="relay",i={};return Object.keys(e).forEach(n=>{const o=r+t+n;e[n]&&(i[o]=e[n])}),i}function Cu(e){return`${e.protocol}:${e.topic}@${e.version}?`+Ir.stringify(ro(Bu(ro({symKey:e.symKey},fo(e.relay)),{expiryTimestamp:e.expiryTimestamp}),e.methods?{methods:e.methods.join(",")}:{}))}var Ou=Object.defineProperty,Pu=Object.defineProperties,Tu=Object.getOwnPropertyDescriptors,oo=Object.getOwnPropertySymbols,Fu=Object.prototype.hasOwnProperty,Du=Object.prototype.propertyIsEnumerable,so=(e,t,r)=>t in e?Ou(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Uu=(e,t)=>{for(var r in t||(t={}))Fu.call(t,r)&&so(e,r,t[r]);if(oo)for(var r of oo(t))Du.call(t,r)&&so(e,r,t[r]);return e},ku=(e,t)=>Pu(e,Tu(t));function Ze(e){const t=[];return e.forEach(r=>{const[i,n]=r.split(":");t.push(`${i}:${n}`)}),t}function ao(e){const t=[];return Object.values(e).forEach(r=>{t.push(...Ze(r.accounts))}),t}function uo(e,t){const r=[];return Object.values(e).forEach(i=>{Ze(i.accounts).includes(t)&&r.push(...i.methods)}),r}function ho(e,t){const r=[];return Object.values(e).forEach(i=>{Ze(i.accounts).includes(t)&&r.push(...i.events)}),r}function qu(e,t){const r=xo(e,t);if(r)throw new Error(r.message);const i={};for(const[n,o]of Object.entries(e))i[n]={methods:o.methods,events:o.events,chains:o.accounts.map(h=>`${h.split(":")[0]}:${h.split(":")[1]}`)};return i}function Ku(e){const{proposal:{requiredNamespaces:t,optionalNamespaces:r={}},supportedNamespaces:i}=e,n=tn(t),o=tn(r),h={};Object.keys(i).forEach(g=>{const w=i[g].chains,y=i[g].methods,S=i[g].events,I=i[g].accounts;w.forEach(N=>{if(!I.some(R=>R.includes(N)))throw new Error(`No accounts provided for chain ${N} in namespace ${g}`)}),h[g]={chains:w,methods:y,events:S,accounts:I}});const p=Eo(t,h,"approve()");if(p)throw new Error(p.message);const b={};return!Object.keys(t).length&&!Object.keys(r).length?h:(Object.keys(n).forEach(g=>{const w=i[g].chains.filter(N=>{var R,F;return(F=(R=n[g])==null?void 0:R.chains)==null?void 0:F.includes(N)}),y=i[g].methods.filter(N=>{var R,F;return(F=(R=n[g])==null?void 0:R.methods)==null?void 0:F.includes(N)}),S=i[g].events.filter(N=>{var R,F;return(F=(R=n[g])==null?void 0:R.events)==null?void 0:F.includes(N)}),I=w.map(N=>i[g].accounts.filter(R=>R.includes(`${N}:`))).flat();b[g]={chains:w,methods:y,events:S,accounts:I}}),Object.keys(o).forEach(g=>{var w,y,S,I,N,R;if(!i[g])return;const F=(y=(w=o[g])==null?void 0:w.chains)==null?void 0:y.filter(J=>i[g].chains.includes(J)),U=i[g].methods.filter(J=>{var H,L;return(L=(H=o[g])==null?void 0:H.methods)==null?void 0:L.includes(J)}),Q=i[g].events.filter(J=>{var H,L;return(L=(H=o[g])==null?void 0:H.events)==null?void 0:L.includes(J)}),Bt=F?.map(J=>i[g].accounts.filter(H=>H.includes(`${J}:`))).flat();b[g]={chains:ge((S=b[g])==null?void 0:S.chains,F),methods:ge((I=b[g])==null?void 0:I.methods,U),events:ge((N=b[g])==null?void 0:N.events,Q),accounts:ge((R=b[g])==null?void 0:R.accounts,Bt)}}),b)}function $i(e){return e.includes(":")}function co(e){return $i(e)?e.split(":")[0]:e}function tn(e){var t,r,i;const n={};if(!Gr(e))return n;for(const[o,h]of Object.entries(e)){const p=$i(o)?[o]:h.chains,b=h.methods||[],g=h.events||[],w=co(o);n[w]=ku(Uu({},n[w]),{chains:ge(p,(t=n[w])==null?void 0:t.chains),methods:ge(b,(r=n[w])==null?void 0:r.methods),events:ge(g,(i=n[w])==null?void 0:i.events)})}return n}function lo(e){const t={};return e?.forEach(r=>{const[i,n]=r.split(":");t[i]||(t[i]={accounts:[],chains:[],events:[]}),t[i].accounts.push(r),t[i].chains.push(`${i}:${n}`)}),t}function Hu(e,t){t=t.map(i=>i.replace("did:pkh:",""));const r=lo(t);for(const[i,n]of Object.entries(r))n.methods?n.methods=ge(n.methods,e):n.methods=e,n.events=["chainChanged","accountsChanged"];return r}const po={INVALID_METHOD:{message:"Invalid method.",code:1001},INVALID_EVENT:{message:"Invalid event.",code:1002},INVALID_UPDATE_REQUEST:{message:"Invalid update request.",code:1003},INVALID_EXTEND_REQUEST:{message:"Invalid extend request.",code:1004},INVALID_SESSION_SETTLE_REQUEST:{message:"Invalid session settle request.",code:1005},UNAUTHORIZED_METHOD:{message:"Unauthorized method.",code:3001},UNAUTHORIZED_EVENT:{message:"Unauthorized event.",code:3002},UNAUTHORIZED_UPDATE_REQUEST:{message:"Unauthorized update request.",code:3003},UNAUTHORIZED_EXTEND_REQUEST:{message:"Unauthorized extend request.",code:3004},USER_REJECTED:{message:"User rejected.",code:5e3},USER_REJECTED_CHAINS:{message:"User rejected chains.",code:5001},USER_REJECTED_METHODS:{message:"User rejected methods.",code:5002},USER_REJECTED_EVENTS:{message:"User rejected events.",code:5003},UNSUPPORTED_CHAINS:{message:"Unsupported chains.",code:5100},UNSUPPORTED_METHODS:{message:"Unsupported methods.",code:5101},UNSUPPORTED_EVENTS:{message:"Unsupported events.",code:5102},UNSUPPORTED_ACCOUNTS:{message:"Unsupported accounts.",code:5103},UNSUPPORTED_NAMESPACE_KEY:{message:"Unsupported namespace key.",code:5104},USER_DISCONNECTED:{message:"User disconnected.",code:6e3},SESSION_SETTLEMENT_FAILED:{message:"Session settlement failed.",code:7e3},WC_METHOD_UNSUPPORTED:{message:"Unsupported wc_ method.",code:10001}},vo={NOT_INITIALIZED:{message:"Not initialized.",code:1},NO_MATCHING_KEY:{message:"No matching key.",code:2},RESTORE_WILL_OVERRIDE:{message:"Restore will override.",code:3},RESUBSCRIBED:{message:"Resubscribed.",code:4},MISSING_OR_INVALID:{message:"Missing or invalid.",code:5},EXPIRED:{message:"Expired.",code:6},UNKNOWN_TYPE:{message:"Unknown type.",code:7},MISMATCHED_TOPIC:{message:"Mismatched topic.",code:8},NON_CONFORMING_NAMESPACES:{message:"Non conforming namespaces.",code:9}};function we(e,t){const{message:r,code:i}=vo[e];return{message:t?`${r} ${t}`:r,code:i}}function $e(e,t){const{message:r,code:i}=po[e];return{message:t?`${r} ${t}`:r,code:i}}function Sr(e,t){return Array.isArray(e)?typeof t<"u"&&e.length?e.every(t):!0:!1}function Gr(e){return Object.getPrototypeOf(e)===Object.prototype&&Object.keys(e).length}function Oe(e){return typeof e>"u"}function Yt(e,t){return t&&Oe(e)?!0:typeof e=="string"&&!!e.trim().length}function Wr(e,t){return t&&Oe(e)?!0:typeof e=="number"&&!isNaN(e)}function Lu(e,t){const{requiredNamespaces:r}=t,i=Object.keys(e.namespaces),n=Object.keys(r);let o=!0;return Ie(n,i)?(i.forEach(h=>{const{accounts:p,methods:b,events:g}=e.namespaces[h],w=Ze(p),y=r[h];(!Ie(Br(h,y),w)||!Ie(y.methods,b)||!Ie(y.events,g))&&(o=!1)}),o):!1}function Nr(e){return Yt(e,!1)&&e.includes(":")?e.split(":").length===2:!1}function go(e){if(Yt(e,!1)&&e.includes(":")){const t=e.split(":");if(t.length===3){const r=t[0]+":"+t[1];return!!t[2]&&Nr(r)}}return!1}function zu(e){if(Yt(e,!1))try{return typeof new URL(e)<"u"}catch{return!1}return!1}function ju(e){var t;return(t=e?.proposer)==null?void 0:t.publicKey}function Vu(e){return e?.topic}function Qu(e,t){let r=null;return Yt(e?.publicKey,!1)||(r=we("MISSING_OR_INVALID",`${t} controller public key should be a string`)),r}function en(e){let t=!0;return Sr(e)?e.length&&(t=e.every(r=>Yt(r,!1))):t=!1,t}function mo(e,t,r){let i=null;return Sr(t)&&t.length?t.forEach(n=>{i||Nr(n)||(i=$e("UNSUPPORTED_CHAINS",`${r}, chain ${n} should be a string and conform to "namespace:chainId" format`))}):Nr(e)||(i=$e("UNSUPPORTED_CHAINS",`${r}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)),i}function Ao(e,t,r){let i=null;return Object.entries(e).forEach(([n,o])=>{if(i)return;const h=mo(n,Br(n,o),`${t} ${r}`);h&&(i=h)}),i}function bo(e,t){let r=null;return Sr(e)?e.forEach(i=>{r||go(i)||(r=$e("UNSUPPORTED_ACCOUNTS",`${t}, account ${i} should be a string and conform to "namespace:chainId:address" format`))}):r=$e("UNSUPPORTED_ACCOUNTS",`${t}, accounts should be an array of strings conforming to "namespace:chainId:address" format`),r}function yo(e,t){let r=null;return Object.values(e).forEach(i=>{if(r)return;const n=bo(i?.accounts,`${t} namespace`);n&&(r=n)}),r}function wo(e,t){let r=null;return en(e?.methods)?en(e?.events)||(r=$e("UNSUPPORTED_EVENTS",`${t}, events should be an array of strings or empty array for no events`)):r=$e("UNSUPPORTED_METHODS",`${t}, methods should be an array of strings or empty array for no methods`),r}function rn(e,t){let r=null;return Object.values(e).forEach(i=>{if(r)return;const n=wo(i,`${t}, namespace`);n&&(r=n)}),r}function Ju(e,t,r){let i=null;if(e&&Gr(e)){const n=rn(e,t);n&&(i=n);const o=Ao(e,t,r);o&&(i=o)}else i=we("MISSING_OR_INVALID",`${t}, ${r} should be an object with data`);return i}function xo(e,t){let r=null;if(e&&Gr(e)){const i=rn(e,t);i&&(r=i);const n=yo(e,t);n&&(r=n)}else r=we("MISSING_OR_INVALID",`${t}, namespaces should be an object with data`);return r}function Mo(e){return Yt(e.protocol,!0)}function Yu(e,t){let r=!1;return t&&!e?r=!0:e&&Sr(e)&&e.length&&e.forEach(i=>{r=Mo(i)}),r}function Gu(e){return typeof e=="number"}function Wu(e){return typeof e<"u"&&typeof e!==null}function Xu(e){return!(!e||typeof e!="object"||!e.code||!Wr(e.code,!1)||!e.message||!Yt(e.message,!1))}function Zu(e){return!(Oe(e)||!Yt(e.method,!1))}function $u(e){return!(Oe(e)||Oe(e.result)&&Oe(e.error)||!Wr(e.id,!1)||!Yt(e.jsonrpc,!1))}function th(e){return!(Oe(e)||!Yt(e.name,!1))}function eh(e,t){return!(!Nr(t)||!ao(e).includes(t))}function rh(e,t,r){return Yt(r,!1)?uo(e,t).includes(r):!1}function ih(e,t,r){return Yt(r,!1)?ho(e,t).includes(r):!1}function Eo(e,t,r){let i=null;const n=nh(e),o=fh(t),h=Object.keys(n),p=Object.keys(o),b=So(Object.keys(e)),g=So(Object.keys(t)),w=b.filter(y=>!g.includes(y));return w.length&&(i=we("NON_CONFORMING_NAMESPACES",`${r} namespaces keys don't satisfy requiredNamespaces. + Required: ${w.toString()} + Received: ${Object.keys(t).toString()}`)),Ie(h,p)||(i=we("NON_CONFORMING_NAMESPACES",`${r} namespaces chains don't satisfy required namespaces. + Required: ${h.toString()} + Approved: ${p.toString()}`)),Object.keys(t).forEach(y=>{if(!y.includes(":")||i)return;const S=Ze(t[y].accounts);S.includes(y)||(i=we("NON_CONFORMING_NAMESPACES",`${r} namespaces accounts don't satisfy namespace accounts for ${y} + Required: ${y} +- Approved: ${S.toString()}`))}),h.forEach(y=>{i||(Ie(n[y].methods,o[y].methods)?Ie(n[y].events,o[y].events)||(i=we("NON_CONFORMING_NAMESPACES",`${r} namespaces events don't satisfy namespace events for ${y}`)):i=we("NON_CONFORMING_NAMESPACES",`${r} namespaces methods don't satisfy namespace methods for ${y}`))}),i}function ih(e){const t={};return Object.keys(e).forEach(r=>{var i;r.includes(":")?t[r]=e[r]:(i=e[r].chains)==null||i.forEach(n=>{t[n]={methods:e[r].methods,events:e[r].events}})}),t}function Eo(e){return[...new Set(e.map(t=>t.includes(":")?t.split(":")[0]:t))]}function nh(e){const t={};return Object.keys(e).forEach(r=>{if(r.includes(":"))t[r]=e[r];else{const i=Ze(e[r].accounts);i?.forEach(n=>{t[n]={accounts:e[r].accounts.filter(o=>o.includes(`${n}:`)),methods:e[r].methods,events:e[r].events}})}}),t}function fh(e,t){return Wr(e,!1)&&e<=t.max&&e>=t.min}function oh(){const e=Ge();return new Promise(t=>{switch(e){case Kt.browser:t(So());break;case Kt.reactNative:t(No());break;case Kt.node:t(Io());break;default:t(!0)}})}function So(){return vr()&&navigator?.onLine}async function No(){if(rr()&&typeof global<"u"&&global!=null&&global.NetInfo){const e=await(global==null?void 0:global.NetInfo.fetch());return e?.isConnected}return!0}function Io(){return!0}function sh(e){switch(Ge()){case Kt.browser:_o(e);break;case Kt.reactNative:Bo(e);break;case Kt.node:break}}function _o(e){!rr()&&vr()&&(window.addEventListener("online",()=>e(!0)),window.addEventListener("offline",()=>e(!1)))}function Bo(e){rr()&&typeof global<"u"&&global!=null&&global.NetInfo&&global?.NetInfo.addEventListener(t=>e(t?.isConnected))}const nn={};class ah{static get(t){return nn[t]}static set(t,r){nn[t]=r}static delete(t){delete nn[t]}}exports.BASE10=Yi,exports.BASE16=zt,exports.BASE64=Jr,exports.COLON=jo,exports.DEFAULT_DEPTH=pi,exports.EMPTY_SPACE=Rr,exports.ENV_MAP=Kt,exports.INTERNAL_ERRORS=po,exports.MemoryStore=ah,exports.ONE_THOUSAND=Vo,exports.REACT_NATIVE_PRODUCT=An,exports.RELAYER_DEFAULT_PROTOCOL=Zf,exports.SDK_ERRORS=lo,exports.SDK_TYPE=yn,exports.SLASH=bn,exports.TYPE_0=Gi,exports.TYPE_1=dr,exports.UTF8=Yr,exports.addResourceToRecap=Vf,exports.appendToQueryString=wn,exports.assertType=Xo,exports.assignAbilityToActions=Vi,exports.base64Decode=zf,exports.base64Encode=Lf,exports.buildApprovedNamespaces=qu,exports.buildAuthObject=iu,exports.buildNamespacesFromAuth=Ku,exports.buildRecapStatement=Jf,exports.calcExpiry=us,exports.capitalize=is,exports.capitalizeWord=In,exports.createDelayedPromise=ns,exports.createEncodedRecap=su,exports.createExpiringPromise=fs,exports.createRecap=jf,exports.decodeRecap=Ce,exports.decodeTypeByte=Er,exports.decrypt=Au,exports.deriveSymKey=pu,exports.deserialize=Zi,exports.encodeRecap=Vr,exports.encodeTypeByte=Gf,exports.encrypt=mu,exports.engineEvent=cs,exports.enumify=rs,exports.formatAccountId=cn,exports.formatAccountWithChain=Do,exports.formatChainId=hn,exports.formatExpirerTarget=gi,exports.formatIdTarget=ss,exports.formatMessage=kf,exports.formatMessageContext=Zo,exports.formatRelayParams=no,exports.formatRelayRpcUrl=Go,exports.formatStatementFromRecap=Ji,exports.formatTopicTarget=os,exports.formatUA=En,exports.formatUri=Ru,exports.generateKeyPair=lu,exports.generateRandomBytes32=du,exports.getAccountsChains=Ze,exports.getAccountsFromNamespaces=ko,exports.getAddressFromAccount=ln,exports.getAddressesFromAccounts=Uo,exports.getAppMetadata=Jo,exports.getBrowserOnlineStatus=So,exports.getBundleId=Qo,exports.getChainFromAccount=dn,exports.getChainsFromAccounts=pn,exports.getChainsFromNamespace=Br,exports.getChainsFromNamespaces=qo,exports.getChainsFromRecap=hu,exports.getChainsFromRequiredNamespaces=Ko,exports.getCommonValuesInArrays=mi,exports.getDecodedRecapFromResources=qf,exports.getDeepLink=ds,exports.getDidAddress=ji,exports.getDidAddressSegments=jr,exports.getDidChainId=zi,exports.getEnvironment=Ge,exports.getHttpUrl=Wo,exports.getInternalError=we,exports.getJavascriptID=Mn,exports.getJavascriptOS=xn,exports.getLastItems=Nn,exports.getMethodsFromRecap=uu,exports.getNamespacedDidChainId=eu,exports.getNamespacesChains=so,exports.getNamespacesEventsForChainId=uo,exports.getNamespacesFromAccounts=co,exports.getNamespacesMethodsForChainId=ao,exports.getNodeOnlineStatus=Io,exports.getReCapActions=Hf,exports.getReactNativeOnlineStatus=No,exports.getRecapAbilitiesFromResource=ou,exports.getRecapFromResources=Qr,exports.getRecapResource=Kf,exports.getRelayClientMetadata=Yo,exports.getRelayProtocolApi=xu,exports.getRelayProtocolName=wu,exports.getRequiredNamespacesFromNamespaces=ku,exports.getSdkError=$e,exports.getUniqueValues=di,exports.handleDeeplinkRedirect=ls,exports.hasOverlap=Ie,exports.hashKey=vu,exports.hashMessage=gu,exports.isBrowser=vr,exports.isCaipNamespace=$i,exports.isConformingNamespaces=Mo,exports.isExpired=hs,exports.isNode=vi,exports.isOnline=oh,exports.isProposalStruct=zu,exports.isReactNative=rr,exports.isRecap=Qi,exports.isSessionCompatible=Hu,exports.isSessionStruct=ju,exports.isTypeOneEnvelope=yu,exports.isUndefined=Oe,exports.isValidAccountId=vo,exports.isValidAccounts=Ao,exports.isValidActions=yo,exports.isValidArray=Sr,exports.isValidChainId=Nr,exports.isValidChains=go,exports.isValidController=Vu,exports.isValidEip1271Signature=Tf,exports.isValidEip191Signature=Pf,exports.isValidErrorReason=Wu,exports.isValidEvent=$u,exports.isValidId=Yu,exports.isValidNamespaceAccounts=bo,exports.isValidNamespaceActions=rn,exports.isValidNamespaceChains=mo,exports.isValidNamespaceMethodsOrEvents=en,exports.isValidNamespaces=wo,exports.isValidNamespacesChainId=th,exports.isValidNamespacesEvent=rh,exports.isValidNamespacesRequest=eh,exports.isValidNumber=Wr,exports.isValidObject=Gr,exports.isValidParams=Gu,exports.isValidRecap=ve,exports.isValidRelay=xo,exports.isValidRelays=Ju,exports.isValidRequest=Xu,exports.isValidRequestExpiry=fh,exports.isValidRequiredNamespaces=Qu,exports.isValidResponse=Zu,exports.isValidString=Yt,exports.isValidUrl=Lu,exports.mapEntries=es,exports.mapToObj=$o,exports.mergeArrays=ge,exports.mergeEncodedRecaps=au,exports.mergeRecaps=Qf,exports.normalizeNamespaces=tn,exports.objToMap=ts,exports.parseAccountId=li,exports.parseChainId=un,exports.parseContextNames=Sn,exports.parseExpirerTarget=as,exports.parseNamespaceKey=ho,exports.parseRelayParams=ro,exports.parseTopic=io,exports.parseUri=Bu,exports.populateAuthPayload=nu,exports.recapHasResource=fu,exports.serialize=Wf,exports.subscribeToBrowserNetworkChange=_o,exports.subscribeToNetworkChange=sh,exports.subscribeToReactNativeNetworkChange=Bo,exports.validateDecoding=bu,exports.validateEncoding=Xf,exports.validateSignedCacao=ru,exports.verifySignature=Of; ++ Approved: ${S.toString()}`))}),h.forEach(y=>{i||(Ie(n[y].methods,o[y].methods)?Ie(n[y].events,o[y].events)||(i=we("NON_CONFORMING_NAMESPACES",`${r} namespaces events don't satisfy namespace events for ${y}`)):i=we("NON_CONFORMING_NAMESPACES",`${r} namespaces methods don't satisfy namespace methods for ${y}`))}),i}function nh(e){const t={};return Object.keys(e).forEach(r=>{var i;r.includes(":")?t[r]=e[r]:(i=e[r].chains)==null||i.forEach(n=>{t[n]={methods:e[r].methods,events:e[r].events}})}),t}function So(e){return[...new Set(e.map(t=>t.includes(":")?t.split(":")[0]:t))]}function fh(e){const t={};return Object.keys(e).forEach(r=>{if(r.includes(":"))t[r]=e[r];else{const i=Ze(e[r].accounts);i?.forEach(n=>{t[n]={accounts:e[r].accounts.filter(o=>o.includes(`${n}:`)),methods:e[r].methods,events:e[r].events}})}}),t}function oh(e,t){return Wr(e,!1)&&e<=t.max&&e>=t.min}function sh(){const e=Ge();return new Promise(t=>{switch(e){case Kt.browser:t(No());break;case Kt.reactNative:t(Io());break;case Kt.node:t(_o());break;default:t(!0)}})}function No(){return vr()&&navigator?.onLine}async function Io(){if(rr()&&typeof global<"u"&&global!=null&&global.NetInfo){const e=await(global==null?void 0:global.NetInfo.fetch());return e?.isConnected}return!0}function _o(){return!0}function ah(e){switch(Ge()){case Kt.browser:Bo(e);break;case Kt.reactNative:Ro(e);break;case Kt.node:break}}function Bo(e){!rr()&&vr()&&(window.addEventListener("online",()=>e(!0)),window.addEventListener("offline",()=>e(!1)))}function Ro(e){rr()&&typeof global<"u"&&global!=null&&global.NetInfo&&global?.NetInfo.addEventListener(t=>e(t?.isConnected))}const nn={};class uh{static get(t){return nn[t]}static set(t,r){nn[t]=r}static delete(t){delete nn[t]}}exports.BASE10=Yi,exports.BASE16=zt,exports.BASE64=Jr,exports.COLON=Vo,exports.DEFAULT_DEPTH=pi,exports.EMPTY_SPACE=Rr,exports.ENV_MAP=Kt,exports.INTERNAL_ERRORS=vo,exports.MemoryStore=uh,exports.ONE_THOUSAND=Qo,exports.REACT_NATIVE_PRODUCT=An,exports.RELAYER_DEFAULT_PROTOCOL=$f,exports.SDK_ERRORS=po,exports.SDK_TYPE=yn,exports.SLASH=bn,exports.TYPE_0=Gi,exports.TYPE_1=dr,exports.UTF8=Yr,exports.addResourceToRecap=Qf,exports.appendToQueryString=wn,exports.assertType=Zo,exports.assignAbilityToActions=Vi,exports.base64Decode=jf,exports.base64Encode=zf,exports.buildApprovedNamespaces=Ku,exports.buildAuthObject=nu,exports.buildNamespacesFromAuth=Hu,exports.buildRecapStatement=Yf,exports.calcExpiry=hs,exports.capitalize=ns,exports.capitalizeWord=In,exports.createDelayedPromise=fs,exports.createEncodedRecap=au,exports.createExpiringPromise=os,exports.createRecap=Vf,exports.decodeRecap=Ce,exports.decodeTypeByte=Er,exports.decrypt=bu,exports.deriveSymKey=vu,exports.deserialize=Zi,exports.encodeRecap=Vr,exports.encodeTypeByte=Wf,exports.encrypt=Au,exports.engineEvent=ls,exports.enumify=is,exports.formatAccountId=cn,exports.formatAccountWithChain=Uo,exports.formatChainId=hn,exports.formatExpirerTarget=gi,exports.formatIdTarget=as,exports.formatMessage=qf,exports.formatMessageContext=$o,exports.formatRelayParams=fo,exports.formatRelayRpcUrl=Wo,exports.formatStatementFromRecap=Ji,exports.formatTopicTarget=ss,exports.formatUA=En,exports.formatUri=Cu,exports.generateKeyPair=du,exports.generateRandomBytes32=pu,exports.getAccountsChains=Ze,exports.getAccountsFromNamespaces=qo,exports.getAddressFromAccount=ln,exports.getAddressesFromAccounts=ko,exports.getAppMetadata=Yo,exports.getBrowserOnlineStatus=No,exports.getBundleId=Jo,exports.getChainFromAccount=dn,exports.getChainsFromAccounts=pn,exports.getChainsFromNamespace=Br,exports.getChainsFromNamespaces=Ko,exports.getChainsFromRecap=cu,exports.getChainsFromRequiredNamespaces=Ho,exports.getCommonValuesInArrays=mi,exports.getDecodedRecapFromResources=Kf,exports.getDeepLink=ps,exports.getDidAddress=ji,exports.getDidAddressSegments=jr,exports.getDidChainId=zi,exports.getEnvironment=Ge,exports.getHttpUrl=Xo,exports.getInternalError=we,exports.getJavascriptID=Mn,exports.getJavascriptOS=xn,exports.getLastItems=Nn,exports.getMethodsFromRecap=hu,exports.getNamespacedDidChainId=ru,exports.getNamespacesChains=ao,exports.getNamespacesEventsForChainId=ho,exports.getNamespacesFromAccounts=lo,exports.getNamespacesMethodsForChainId=uo,exports.getNodeOnlineStatus=_o,exports.getReCapActions=Lf,exports.getReactNativeOnlineStatus=Io,exports.getRecapAbilitiesFromResource=su,exports.getRecapFromResources=Qr,exports.getRecapResource=Hf,exports.getRelayClientMetadata=Go,exports.getRelayProtocolApi=Mu,exports.getRelayProtocolName=xu,exports.getRequiredNamespacesFromNamespaces=qu,exports.getSdkError=$e,exports.getUniqueValues=di,exports.handleDeeplinkRedirect=ds,exports.hasOverlap=Ie,exports.hashKey=gu,exports.hashMessage=mu,exports.isBrowser=vr,exports.isCaipNamespace=$i,exports.isConformingNamespaces=Eo,exports.isExpired=cs,exports.isNode=vi,exports.isOnline=sh,exports.isProposalStruct=ju,exports.isReactNative=rr,exports.isRecap=Qi,exports.isSessionCompatible=Lu,exports.isSessionStruct=Vu,exports.isTelegram=_n,exports.isTypeOneEnvelope=wu,exports.isUndefined=Oe,exports.isValidAccountId=go,exports.isValidAccounts=bo,exports.isValidActions=wo,exports.isValidArray=Sr,exports.isValidChainId=Nr,exports.isValidChains=mo,exports.isValidController=Qu,exports.isValidEip1271Signature=Ff,exports.isValidEip191Signature=Tf,exports.isValidErrorReason=Xu,exports.isValidEvent=th,exports.isValidId=Gu,exports.isValidNamespaceAccounts=yo,exports.isValidNamespaceActions=rn,exports.isValidNamespaceChains=Ao,exports.isValidNamespaceMethodsOrEvents=en,exports.isValidNamespaces=xo,exports.isValidNamespacesChainId=eh,exports.isValidNamespacesEvent=ih,exports.isValidNamespacesRequest=rh,exports.isValidNumber=Wr,exports.isValidObject=Gr,exports.isValidParams=Wu,exports.isValidRecap=ve,exports.isValidRelay=Mo,exports.isValidRelays=Yu,exports.isValidRequest=Zu,exports.isValidRequestExpiry=oh,exports.isValidRequiredNamespaces=Ju,exports.isValidResponse=$u,exports.isValidString=Yt,exports.isValidUrl=zu,exports.mapEntries=rs,exports.mapToObj=ts,exports.mergeArrays=ge,exports.mergeEncodedRecaps=uu,exports.mergeRecaps=Jf,exports.normalizeNamespaces=tn,exports.objToMap=es,exports.parseAccountId=li,exports.parseChainId=un,exports.parseContextNames=Sn,exports.parseExpirerTarget=us,exports.parseNamespaceKey=co,exports.parseRelayParams=io,exports.parseTopic=no,exports.parseUri=Ru,exports.populateAuthPayload=fu,exports.recapHasResource=ou,exports.serialize=Xf,exports.subscribeToBrowserNetworkChange=Bo,exports.subscribeToNetworkChange=ah,exports.subscribeToReactNativeNetworkChange=Ro,exports.validateDecoding=yu,exports.validateEncoding=Zf,exports.validateSignedCacao=iu,exports.verifySignature=Pf; + //# sourceMappingURL=index.cjs.js.map +diff --git a/node_modules/@walletconnect/utils/dist/index.cjs.js.map b/node_modules/@walletconnect/utils/dist/index.cjs.js.map +index c002dfb..f9f9ad5 100644 +--- a/node_modules/@walletconnect/utils/dist/index.cjs.js.map ++++ b/node_modules/@walletconnect/utils/dist/index.cjs.js.map +@@ -1 +1 @@ +-{"version":3,"file":"index.cjs.js","sources":["../src/caip.ts","../src/misc.ts","../../../node_modules/js-sha3/src/sha3.js","../../../node_modules/@ethersproject/logger/lib.esm/_version.js","../../../node_modules/@ethersproject/logger/lib.esm/index.js","../../../node_modules/@ethersproject/bytes/lib.esm/_version.js","../../../node_modules/@ethersproject/bytes/lib.esm/index.js","../../../node_modules/@ethersproject/keccak256/lib.esm/index.js","../../../node_modules/bn.js/lib/bn.js","../../../node_modules/@ethersproject/bignumber/lib.esm/_version.js","../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js","../../../node_modules/@ethersproject/bignumber/lib.esm/fixednumber.js","../../../node_modules/@ethersproject/strings/lib.esm/_version.js","../../../node_modules/@ethersproject/strings/lib.esm/utf8.js","../../../node_modules/@ethersproject/strings/lib.esm/idna.js","../../../node_modules/@ethersproject/hash/lib.esm/_version.js","../../../node_modules/@ethersproject/base64/lib.esm/base64.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js","../../../node_modules/@ethersproject/hash/lib.esm/namehash.js","../../../node_modules/@ethersproject/hash/lib.esm/message.js","../../../node_modules/@ethersproject/rlp/lib.esm/_version.js","../../../node_modules/@ethersproject/rlp/lib.esm/index.js","../../../node_modules/@ethersproject/address/lib.esm/_version.js","../../../node_modules/@ethersproject/address/lib.esm/index.js","../../../node_modules/@ethersproject/properties/lib.esm/_version.js","../../../node_modules/@ethersproject/properties/lib.esm/index.js","../../../node_modules/@ethersproject/hash/lib.esm/typed-data.js","../../../node_modules/minimalistic-assert/index.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/hash.js/lib/hash/utils.js","../../../node_modules/hash.js/lib/hash/common.js","../../../node_modules/hash.js/lib/hash/sha/common.js","../../../node_modules/hash.js/lib/hash/sha/1.js","../../../node_modules/hash.js/lib/hash/sha/256.js","../../../node_modules/hash.js/lib/hash/sha/224.js","../../../node_modules/hash.js/lib/hash/sha/512.js","../../../node_modules/hash.js/lib/hash/sha/384.js","../../../node_modules/hash.js/lib/hash/sha.js","../../../node_modules/hash.js/lib/hash/ripemd.js","../../../node_modules/hash.js/lib/hash/hmac.js","../../../node_modules/hash.js/lib/hash.js","../../../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../../../node_modules/@ethersproject/signing-key/lib.esm/_version.js","../../../node_modules/@ethersproject/signing-key/lib.esm/index.js","../../../node_modules/@ethersproject/transactions/lib.esm/_version.js","../../../node_modules/@ethersproject/transactions/lib.esm/index.js","../src/signatures.ts","../src/cacao.ts","../src/crypto.ts","../src/relay.ts","../src/uri.ts","../src/namespaces.ts","../src/errors.ts","../src/validators.ts","../src/network.ts","../src/memoryStore.ts"],"sourcesContent":["import { SessionTypes, ProposalTypes } from \"@walletconnect/types\";\n\ninterface ChainIdParams {\n namespace: string;\n reference: string;\n}\n\ninterface AccountIdParams extends ChainIdParams {\n address: string;\n}\n\nconst CAIP_DELIMITER = \":\";\n\nexport function parseChainId(chain: string): ChainIdParams {\n const [namespace, reference] = chain.split(CAIP_DELIMITER);\n return { namespace, reference };\n}\n\nexport function formatChainId(params: ChainIdParams): string {\n const { namespace, reference } = params;\n return [namespace, reference].join(CAIP_DELIMITER);\n}\n\nexport function parseAccountId(account: string): AccountIdParams {\n const [namespace, reference, address] = account.split(CAIP_DELIMITER);\n return { namespace, reference, address };\n}\n\nexport function formatAccountId(params: AccountIdParams): string {\n const { namespace, reference, address } = params;\n return [namespace, reference, address].join(CAIP_DELIMITER);\n}\n\nexport function getUniqueValues(array: string[], parser: (str: string) => string): string[] {\n const unique: string[] = [];\n array.forEach((str) => {\n const value = parser(str);\n if (!unique.includes(value)) unique.push(value);\n });\n return unique;\n}\n\nexport function getAddressFromAccount(account: string) {\n const { address } = parseAccountId(account);\n return address;\n}\n\nexport function getChainFromAccount(account: string) {\n const { namespace, reference } = parseAccountId(account);\n const chain = formatChainId({ namespace, reference });\n return chain;\n}\n\nexport function formatAccountWithChain(address: string, chain: string) {\n const { namespace, reference } = parseChainId(chain);\n const account = formatAccountId({ namespace, reference, address });\n return account;\n}\n\nexport function getAddressesFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getAddressFromAccount);\n}\n\nexport function getChainsFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getChainFromAccount);\n}\n\nexport function getAccountsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const accounts: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n accounts.push(...ns.accounts);\n });\n return accounts;\n}\n\nexport function getChainsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n chains.push(...getChainsFromAccounts(ns.accounts));\n });\n return chains;\n}\n\nexport function getChainsFromRequiredNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(requiredNamespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = requiredNamespaces[key];\n chains.push(...getChainsFromNamespace(key, ns));\n });\n return chains;\n}\n\nexport function getChainsFromNamespace(\n namespace: string,\n namespaceProps: ProposalTypes.BaseRequiredNamespace,\n) {\n // check if chainId is provided in the key as `eip155:1` or in the namespace as chains[]\n return namespace.includes(\":\") ? [namespace] : namespaceProps.chains || [];\n}\n","import { detect } from \"detect-browser\";\nimport { FIVE_MINUTES, fromMiliseconds, toMiliseconds } from \"@walletconnect/time\";\nimport {\n SignClientTypes,\n RelayerClientMetadata,\n EngineTypes,\n RelayerTypes,\n} from \"@walletconnect/types\";\nimport { getDocument, getLocation, getNavigator } from \"@walletconnect/window-getters\";\nimport { getWindowMetadata } from \"@walletconnect/window-metadata\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-utils\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport * as qs from \"query-string\";\n\n// -- constants -----------------------------------------//\nexport const REACT_NATIVE_PRODUCT = \"ReactNative\";\n\nexport const ENV_MAP = {\n reactNative: \"react-native\",\n node: \"node\",\n browser: \"browser\",\n unknown: \"unknown\",\n};\n\nexport const EMPTY_SPACE = \" \";\n\nexport const COLON = \":\";\n\nexport const SLASH = \"/\";\n\nexport const DEFAULT_DEPTH = 2;\n\nexport const ONE_THOUSAND = 1000;\n\nexport const SDK_TYPE = \"js\";\n\n// -- env -----------------------------------------------//\n\nexport function isNode(): boolean {\n return (\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\"\n );\n}\n\nexport function isReactNative(): boolean {\n return !getDocument() && !!getNavigator() && navigator.product === REACT_NATIVE_PRODUCT;\n}\n\nexport function isBrowser(): boolean {\n return !isNode() && !!getNavigator() && !!getDocument();\n}\n\nexport function getEnvironment(): string {\n if (isReactNative()) return ENV_MAP.reactNative;\n if (isNode()) return ENV_MAP.node;\n if (isBrowser()) return ENV_MAP.browser;\n return ENV_MAP.unknown;\n}\n\nexport function getBundleId(): string | undefined {\n try {\n if (\n isReactNative() &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Application !== \"undefined\"\n ) {\n return (global as any).Application?.applicationId;\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\n// -- query -----------------------------------------------//\n\nexport function appendToQueryString(queryString: string, newQueryParams: any): string {\n let queryParams = qs.parse(queryString);\n\n queryParams = { ...queryParams, ...newQueryParams };\n\n queryString = qs.stringify(queryParams);\n\n return queryString;\n}\n\n// -- metadata ----------------------------------------------//\n\nexport function getAppMetadata(): SignClientTypes.Metadata {\n return (\n getWindowMetadata() || {\n name: \"\",\n description: \"\",\n url: \"\",\n icons: [\"\"],\n }\n );\n}\n\nexport function getRelayClientMetadata(protocol: string, version: number): RelayerClientMetadata {\n const env = getEnvironment();\n\n const metadata: RelayerClientMetadata = { protocol, version, env };\n if (env === \"browser\") {\n metadata.host = getLocation()?.host || \"unknown\";\n }\n return metadata;\n}\n\n// -- rpcUrl ----------------------------------------------//\n\nexport function getJavascriptOS() {\n const env = getEnvironment();\n // global.Platform is set by react-native-compat\n if (\n env === ENV_MAP.reactNative &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Platform !== \"undefined\"\n ) {\n const { OS, Version } = (global as any).Platform;\n return [OS, Version].join(\"-\");\n }\n\n const info = detect();\n if (info === null) return \"unknown\";\n const os = info.os ? info.os.replace(\" \", \"\").toLowerCase() : \"unknown\";\n if (info.type === \"browser\") {\n return [os, info.name, info.version].join(\"-\");\n }\n return [os, info.version].join(\"-\");\n}\n\nexport function getJavascriptID() {\n const env = getEnvironment();\n return env === ENV_MAP.browser ? [env, getLocation()?.host || \"unknown\"].join(\":\") : env;\n}\n\nexport function formatUA(protocol: string, version: number, sdkVersion: string) {\n const os = getJavascriptOS();\n const id = getJavascriptID();\n return [[protocol, version].join(\"-\"), [SDK_TYPE, sdkVersion].join(\"-\"), os, id].join(\"/\");\n}\nconsole;\n\nexport function formatRelayRpcUrl({\n protocol,\n version,\n relayUrl,\n sdkVersion,\n auth,\n projectId,\n useOnCloseEvent,\n bundleId,\n}: RelayerTypes.RpcUrlParams) {\n const splitUrl = relayUrl.split(\"?\");\n const ua = formatUA(protocol, version, sdkVersion);\n const params = {\n auth,\n ua,\n projectId,\n useOnCloseEvent: useOnCloseEvent || undefined,\n origin: bundleId || undefined,\n };\n const queryString = appendToQueryString(splitUrl[1] || \"\", params);\n return splitUrl[0] + \"?\" + queryString;\n}\n\nexport function getHttpUrl(url: string) {\n // regex from https://stackoverflow.com/questions/3883871/regexp-to-grab-protocol-from-url\n const matches = url.match(/^[^:]+(?=:\\/\\/)/gi) || [];\n let protocol = matches[0];\n const domain = typeof protocol !== \"undefined\" ? url.split(\"://\")[1] : url;\n protocol = protocol === \"wss\" ? \"https\" : \"http\";\n return [protocol, domain].join(\"://\");\n}\n\n// -- assert ------------------------------------------------- //\n\nexport function assertType(obj: any, key: string, type: string) {\n if (!obj[key] || typeof obj[key] !== type) {\n throw new Error(`Missing or invalid \"${key}\" param`);\n }\n}\n\n// -- context ------------------------------------------------- //\n\nexport function parseContextNames(context: string, depth = DEFAULT_DEPTH) {\n return getLastItems(context.split(SLASH), depth);\n}\n\nexport function formatMessageContext(context: string): string {\n return parseContextNames(context).join(EMPTY_SPACE);\n}\n\n// -- array ------------------------------------------------- //\n\nexport function hasOverlap(a: any[], b: any[]): boolean {\n const matches = a.filter((x) => b.includes(x));\n return matches.length === a.length;\n}\n\nexport function getLastItems(arr: any[], depth = DEFAULT_DEPTH): any[] {\n return arr.slice(Math.max(arr.length - depth, 0));\n}\n\n// -- map ------------------------------------------------- //\n\nexport function mapToObj(map: Map): Record {\n return Object.fromEntries(map.entries());\n}\n\nexport function objToMap(obj: Record): Map {\n return new Map(Object.entries(obj));\n}\n\nexport function mapEntries(\n obj: Record,\n cb: (x: A) => B,\n): Record {\n const res = {};\n Object.keys(obj).forEach((key) => {\n res[key] = cb(obj[key]);\n });\n return res;\n}\n\n// -- enum ------------------------------------------------- //\n\n// source: https://github.com/microsoft/TypeScript/issues/3192#issuecomment-261720275\nexport const enumify = (x: T): T => x;\n\n// -- string ------------------------------------------------- //\n\nexport function capitalizeWord(word: string) {\n return word.trim().replace(/^\\w/, (c) => c.toUpperCase());\n}\n\nexport function capitalize(str: string) {\n return str\n .split(EMPTY_SPACE)\n .map((w) => capitalizeWord(w))\n .join(EMPTY_SPACE);\n}\n\n// -- promises --------------------------------------------- //\nexport function createDelayedPromise(\n expiry: number = FIVE_MINUTES,\n expireErrorMessage?: string,\n) {\n const timeout = toMiliseconds(expiry || FIVE_MINUTES);\n let cacheResolve: undefined | ((value: T | PromiseLike) => void);\n let cacheReject: undefined | ((value?: ErrorResponse) => void);\n let cacheTimeout: undefined | NodeJS.Timeout;\n\n const done = () =>\n new Promise((promiseResolve, promiseReject) => {\n cacheTimeout = setTimeout(() => {\n promiseReject(new Error(expireErrorMessage));\n }, timeout);\n cacheResolve = promiseResolve;\n cacheReject = promiseReject;\n });\n const resolve = (value?: T) => {\n if (cacheTimeout && cacheResolve) {\n clearTimeout(cacheTimeout);\n cacheResolve(value as T);\n }\n };\n const reject = (value?: ErrorResponse) => {\n if (cacheTimeout && cacheReject) {\n clearTimeout(cacheTimeout);\n cacheReject(value);\n }\n };\n\n return {\n resolve,\n reject,\n done,\n };\n}\n\nexport function createExpiringPromise(\n promise: Promise,\n expiry: number,\n expireErrorMessage?: string,\n) {\n return new Promise(async (resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error(expireErrorMessage)), expiry);\n try {\n const result = await promise;\n resolve(result);\n } catch (error) {\n reject(error);\n }\n clearTimeout(timeout);\n });\n}\n\n// -- expirer --------------------------------------------- //\n\nexport function formatExpirerTarget(type: \"topic\" | \"id\", value: string | number): string {\n if (typeof value === \"string\" && value.startsWith(`${type}:`)) return value;\n if (type.toLowerCase() === \"topic\") {\n if (typeof value !== \"string\")\n throw new Error(`Value must be \"string\" for expirer target type: topic`);\n return `topic:${value}`;\n } else if (type.toLowerCase() === \"id\") {\n if (typeof value !== \"number\")\n throw new Error(`Value must be \"number\" for expirer target type: id`);\n return `id:${value}`;\n }\n throw new Error(`Unknown expirer target type: ${type}`);\n}\n\nexport function formatTopicTarget(topic: string): string {\n return formatExpirerTarget(\"topic\", topic);\n}\n\nexport function formatIdTarget(id: number): string {\n return formatExpirerTarget(\"id\", id);\n}\n\nexport function parseExpirerTarget(target: string) {\n const [type, value] = target.split(\":\");\n const parsed: { id?: number; topic?: string } = { id: undefined, topic: undefined };\n if (type === \"topic\" && typeof value === \"string\") {\n parsed.topic = value;\n } else if (type === \"id\" && Number.isInteger(Number(value))) {\n parsed.id = Number(value);\n } else {\n throw new Error(`Invalid target, expected id:number or topic:string, got ${type}:${value}`);\n }\n\n return parsed;\n}\n\nexport function calcExpiry(ttl: number, now?: number): number {\n return fromMiliseconds((now || Date.now()) + toMiliseconds(ttl));\n}\n\nexport function isExpired(expiry: number) {\n return Date.now() >= toMiliseconds(expiry);\n}\n\n// -- events ---------------------------------------------- //\n\nexport function engineEvent(event: EngineTypes.Event, id?: number | string | undefined) {\n return `${event}${id ? `:${id}` : \"\"}`;\n}\n\nexport function mergeArrays(a: T[] = [], b: T[] = []): T[] {\n return [...new Set([...a, ...b])];\n}\n\nexport async function handleDeeplinkRedirect({\n id,\n topic,\n wcDeepLink,\n}: {\n id: number;\n topic: string;\n wcDeepLink: string;\n}) {\n try {\n if (!wcDeepLink) return;\n\n const json = typeof wcDeepLink === \"string\" ? JSON.parse(wcDeepLink) : wcDeepLink;\n let deeplink = json?.href;\n\n if (typeof deeplink !== \"string\") return;\n\n if (deeplink.endsWith(\"/\")) deeplink = deeplink.slice(0, -1);\n\n const link = `${deeplink}/wc?requestId=${id}&sessionTopic=${topic}`;\n\n const env = getEnvironment();\n\n if (env === ENV_MAP.browser) {\n if (link.startsWith(\"https://\") || link.startsWith(\"http://\")) {\n window.open(link, \"_blank\", \"noreferrer noopener\");\n } else {\n window.open(link, \"_self\", \"noreferrer noopener\");\n }\n } else if (env === ENV_MAP.reactNative) {\n // global.Linking is set by react-native-compat\n if (typeof (global as any)?.Linking !== \"undefined\") {\n await (global as any).Linking.openURL(link);\n }\n }\n } catch (err) {\n // Silent error, just log in console\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport async function getDeepLink(store: IKeyValueStorage, key: string) {\n try {\n const deepLink = await store.getItem(key);\n if (deepLink) return deepLink;\n\n // check localStorage as fallback\n if (!isBrowser()) return;\n return localStorage.getItem(key) as string;\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport function getCommonValuesInArrays(arr1: T[], arr2: T[]): T[] {\n return arr1.filter((value) => arr2.includes(value));\n}\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","export const version = \"logger/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nimport { version } from \"./_version\";\nlet _globalLogger = null;\nfunction _checkNormalize() {\n try {\n const missing = [];\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n }\n ;\n }\n catch (error) {\n missing.push(form);\n }\n });\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\");\n }\n }\n catch (error) {\n return error.message;\n }\n return null;\n}\nconst _normalizeError = _checkNormalize();\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ///////////////////\n // Generic Errors\n // Unknown Error\n ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n // Not Implemented\n ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n // Unsupported Operation\n // - operation\n ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n // Some sort of bad response from the server\n ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n // Timeout\n ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n ///////////////////\n // Operational Errors\n // Buffer Overrun\n ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n ///////////////////\n // Argument Errors\n // Missing new operator to an object\n // - name: The name of the class\n ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n ///////////////////\n // Blockchain Errors\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n // Nonce has already been used\n // - transaction: the transaction attempted\n ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n ///////////////////\n // Interaction Errors\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ErrorCode[\"ACTION_REJECTED\"] = \"ACTION_REJECTED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nexport class Logger {\n constructor(version) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n _log(logLevel, args) {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) {\n return;\n }\n console.log.apply(console, args);\n }\n debug(...args) {\n this._log(Logger.levels.DEBUG, args);\n }\n info(...args) {\n this._log(Logger.levels.INFO, args);\n }\n warn(...args) {\n this._log(Logger.levels.WARNING, args);\n }\n makeError(message, code, params) {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, {});\n }\n if (!code) {\n code = Logger.errors.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n const messageDetails = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n }\n else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n }\n catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${code}`);\n messageDetails.push(`version=${this.version}`);\n const reason = message;\n let url = \"\";\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n switch (fault) {\n case \"overflow\":\n case \"underflow\":\n case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\":\n case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n // @TODO: Any??\n const error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n return error;\n }\n throwError(message, code, params) {\n throw this.makeError(message, code, params);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, params) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code, params);\n }\n assertArgument(condition, message, name, value) {\n if (!!condition) {\n return;\n }\n this.throwArgumentError(message, name, value);\n }\n checkNormalize(message) {\n if (message == null) {\n message = \"platform missing String.prototype.normalize\";\n }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n checkSafeUint53(value, message) {\n if (typeof (value) !== \"number\") {\n return;\n }\n if (message == null) {\n message = \"value not safe\";\n }\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n checkArgumentCount(count, expectedCount, message) {\n if (message) {\n message = \": \" + message;\n }\n else {\n message = \"\";\n }\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n checkNew(target, kind) {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n checkAbstract(target, kind) {\n if (target === kind) {\n this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n }\n else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setCensorship(censorship, permanent) {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n if (_permanentCensorErrors) {\n if (!censorship) {\n return;\n }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n static setLogLevel(logLevel) {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n static from(version) {\n return new Logger(version);\n }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n//# sourceMappingURL=index.js.map","export const version = \"bytes/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nfunction isHexable(value) {\n return !!(value.toHexString);\n}\nfunction addSlice(array) {\n if (array.slice) {\n return array;\n }\n array.slice = function () {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n };\n return array;\n}\nexport function isBytesLike(value) {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\nfunction isInteger(value) {\n return (typeof (value) === \"number\" && value == value && (value % 1) === 0);\n}\nexport function isBytes(value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof (value) === \"string\") {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\nexport function arrayify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return addSlice(new Uint8Array(result));\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n value = value.toHexString();\n }\n if (isHexString(value)) {\n let hex = value.substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n }\n else if (options.hexPad === \"right\") {\n hex += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return addSlice(new Uint8Array(result));\n }\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nexport function concat(items) {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return addSlice(result);\n}\nexport function stripZeros(value) {\n let result = arrayify(value);\n if (result.length === 0) {\n return result;\n }\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n return result;\n}\nexport function zeroPad(value, length) {\n value = arrayify(value);\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n if (hex.length) {\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return \"0x\" + hex;\n }\n return \"0x00\";\n }\n if (typeof (value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) {\n return (\"0x0\" + value);\n }\n return \"0x\" + value;\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n return value.toHexString();\n }\n if (isHexString(value)) {\n if (value.length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + value.substring(2);\n }\n else if (options.hexPad === \"right\") {\n value += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return value.toLowerCase();\n }\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n return (data.length - 2) / 2;\n}\nexport function hexDataSlice(data, offset, endOffset) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n }\n offset = 2 + 2 * offset;\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n return \"0x\" + data.substring(offset);\n}\nexport function hexConcat(items) {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\nexport function hexValue(value) {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") {\n return \"0x0\";\n }\n return trimmed;\n}\nexport function hexStripZeros(value) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") {\n offset++;\n }\n return \"0x\" + value.substring(offset);\n}\nexport function hexZeroPad(value, length) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n return value;\n}\nexport function splitSignature(signature) {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n if (isBytesLike(signature)) {\n let bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n }\n else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n }\n else {\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n }\n else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n }\n else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1 : 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n }\n else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n }\n else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n }\n else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n }\n else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n }\n else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n }\n else {\n const recId = (result.v === 0 || result.v === 1) ? result.v : (1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n }\n else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n }\n else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n }\n else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\nexport function joinSignature(signature) {\n signature = splitSignature(signature);\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\" : \"0x1b\")\n ]));\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nimport sha3 from \"js-sha3\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function keccak256(data) {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n//# sourceMappingURL=index.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","export const version = \"bignumber/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\nimport _BN from \"bn.js\";\nvar BN = _BN.BN;\nimport { hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst _constructorGuard = {};\nconst MAX_SAFE = 0x1fffffffffffff;\nexport function isBigNumberish(value) {\n return (value != null) && (BigNumber.isBigNumber(value) ||\n (typeof (value) === \"number\" && (value % 1) === 0) ||\n (typeof (value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof (value) === \"bigint\") ||\n isBytes(value));\n}\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\nexport class BigNumber {\n constructor(constructorGuard, hex) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n this._hex = hex;\n this._isBigNumber = true;\n Object.freeze(this);\n }\n fromTwos(value) {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n toTwos(value) {\n return toBigNumber(toBN(this).toTwos(value));\n }\n abs() {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n add(other) {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n sub(other) {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n div(other) {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n mul(other) {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n mod(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n pow(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n and(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n or(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n xor(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n mask(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n shl(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n shr(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n eq(other) {\n return toBN(this).eq(toBN(other));\n }\n lt(other) {\n return toBN(this).lt(toBN(other));\n }\n lte(other) {\n return toBN(this).lte(toBN(other));\n }\n gt(other) {\n return toBN(this).gt(toBN(other));\n }\n gte(other) {\n return toBN(this).gte(toBN(other));\n }\n isNegative() {\n return (this._hex[0] === \"-\");\n }\n isZero() {\n return toBN(this).isZero();\n }\n toNumber() {\n try {\n return toBN(this).toNumber();\n }\n catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n toBigInt() {\n try {\n return BigInt(this.toString());\n }\n catch (e) { }\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n toString() {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n }\n else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n }\n return toBN(this).toString(10);\n }\n toHexString() {\n return this._hex;\n }\n toJSON(key) {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n static from(value) {\n if (value instanceof BigNumber) {\n return value;\n }\n if (typeof (value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n if (typeof (value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n return BigNumber.from(String(value));\n }\n const anyValue = value;\n if (typeof (anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n if (anyValue) {\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof (hex) === \"string\") {\n return BigNumber.from(hex);\n }\n }\n else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n if (typeof (hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n static isBigNumber(value) {\n return !!(value && value._isBigNumber);\n }\n}\n// Normalize the hex string\nfunction toHex(value) {\n // For BN, call on the hex string\n if (typeof (value) !== \"string\") {\n return toHex(value.toString(16));\n }\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") {\n logger.throwArgumentError(\"invalid hex\", \"value\", value);\n }\n // Call toHex on the positive component\n value = toHex(value);\n // Do not allow \"-0x00\"\n if (value === \"0x00\") {\n return value;\n }\n // Negate the value\n return \"-\" + value;\n }\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n // Normalize zero\n if (value === \"0x\") {\n return \"0x00\";\n }\n // Make the string even length\n if (value.length % 2) {\n value = \"0x0\" + value.substring(2);\n }\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n return value;\n}\nfunction toBigNumber(value) {\n return BigNumber.from(toHex(value));\n}\nfunction toBN(value) {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\nfunction throwFault(fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value != null) {\n params.value = value;\n }\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n// value should have no prefix\nexport function _base36To16(value) {\n return (new BN(value, 36)).toString(16);\n}\n// value should have no prefix\nexport function _base16To36(value) {\n return (new BN(value, 16)).toString(36);\n}\n//# sourceMappingURL=bignumber.js.map","\"use strict\";\nimport { arrayify, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { BigNumber, isBigNumberish } from \"./bignumber\";\nconst _constructorGuard = {};\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n }\n catch (e) { }\n }\n if (typeof (decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\nexport function formatFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n const negative = value.lt(Zero);\n if (negative) {\n value = value.mul(NegativeOne);\n }\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n }\n else {\n value = whole + \".\" + fraction;\n }\n if (negative) {\n value = \"-\" + value;\n }\n return value;\n}\nexport function parseFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n let whole = comps[0], fraction = comps[1];\n if (!whole) {\n whole = \"0\";\n }\n if (!fraction) {\n fraction = \"0\";\n }\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n if (negative) {\n wei = wei.mul(NegativeOne);\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\n if (typeof (value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type + \")\", \"format.\" + key, value[key]);\n }\n return value[key];\n };\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.format = format;\n this._hex = hex;\n this._value = value;\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n _checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n addUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n subUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n divUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n isNegative() {\n return (this._value[0] === \"-\");\n }\n toString() { return this._value; }\n toHexString(width) {\n if (width == null) {\n return this._hex;\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid byte width\", \"width\", width);\n }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(this._value, format);\n }\n static fromValue(value, decimals, format) {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n if (decimals == null) {\n decimals = 0;\n }\n if (format == null) {\n format = \"fixed\";\n }\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n let hex = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n }\n else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) {\n numeric = numeric.fromTwos(fixedFormat.width);\n }\n const hex = numeric.toTwos((fixedFormat.signed ? 0 : 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","export const version = \"strings/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n bytes = arrayify(bytes);\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return arrayify(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\";\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","\"use strict\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, func) {\n if (!func) {\n func = function (value) { return [parseInt(value, 16)]; };\n }\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n return [codepoint + range.s];\n }\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n let complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","export const version = \"hash/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function decode(textData) {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\nexport function encode(data) {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n//# sourceMappingURL=base64.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array, depth) {\n if (depth == null) {\n depth = 1;\n }\n const result = [];\n const forEach = result.forEach;\n const flatDeep = function (arr, depth) {\n forEach.call(arr, function (val) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n }\n else {\n result.push(val);\n }\n });\n };\n flatDeep(array, depth);\n return result;\n}\nfunction fromEntries(array) {\n const result = {};\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\nexport function decode_arithmetic(bytes) {\n let pos = 0;\n function u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n // decode the frequency table\n let symbol_count = u16();\n let total = 1;\n let acc = [0, 1]; // first symbol has frequency 1\n for (let i = 1; i < symbol_count; i++) {\n acc.push(total += u16());\n }\n // skip the sized-payload that the last 3 symbols index into\n let skip = u16();\n let pos_payload = pos;\n pos += skip;\n let read_width = 0;\n let read_buffer = 0;\n function read_bit() {\n if (read_width == 0) {\n // this will read beyond end of buffer\n // but (undefined|0) => zero pad\n read_buffer = (read_buffer << 8) | bytes[pos++];\n read_width = 8;\n }\n return (read_buffer >> --read_width) & 1;\n }\n const N = 31;\n const FULL = Math.pow(2, N);\n const HALF = FULL >>> 1;\n const QRTR = HALF >> 1;\n const MASK = FULL - 1;\n // fill register\n let register = 0;\n for (let i = 0; i < N; i++)\n register = (register << 1) | read_bit();\n let symbols = [];\n let low = 0;\n let range = FULL; // treat like a float\n while (true) {\n let value = Math.floor((((register - low + 1) * total) - 1) / range);\n let start = 0;\n let end = symbol_count;\n while (end - start > 1) { // binary search\n let mid = (start + end) >>> 1;\n if (value < acc[mid]) {\n end = mid;\n }\n else {\n start = mid;\n }\n }\n if (start == 0)\n break; // first symbol is end mark\n symbols.push(start);\n let a = low + Math.floor(range * acc[start] / total);\n let b = low + Math.floor(range * acc[start + 1] / total) - 1;\n while (((a ^ b) & HALF) == 0) {\n register = (register << 1) & MASK | read_bit();\n a = (a << 1) & MASK;\n b = (b << 1) & MASK | 1;\n }\n while (a & ~b & QRTR) {\n register = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n a = (a << 1) ^ HALF;\n b = ((b ^ HALF) << 1) | HALF | 1;\n }\n low = a;\n range = 1 + b - a;\n }\n let offset = symbol_count - 4;\n return symbols.map(x => {\n switch (x - offset) {\n case 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 1: return offset + bytes[pos_payload++];\n default: return x - 1;\n }\n });\n}\n// returns an iterator which returns the next symbol\nexport function read_payload(v) {\n let pos = 0;\n return () => v[pos++];\n}\nexport function read_compressed_payload(bytes) {\n return read_payload(decode_arithmetic(bytes));\n}\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i) {\n return (i & 1) ? (~i >> 1) : (i >> 1);\n}\nfunction read_counts(n, next) {\n let v = Array(n);\n for (let i = 0; i < n; i++)\n v[i] = 1 + next();\n return v;\n}\nfunction read_ascending(n, next) {\n let v = Array(n);\n for (let i = 0, x = -1; i < n; i++)\n v[i] = x += 1 + next();\n return v;\n}\nfunction read_deltas(n, next) {\n let v = Array(n);\n for (let i = 0, x = 0; i < n; i++)\n v[i] = x += signed(next());\n return v;\n}\nexport function read_member_array(next, lookup) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next) {\n let ret = [];\n while (true) {\n let w = next();\n if (w == 0)\n break;\n ret.push(read_linear_table(w, next));\n }\n while (true) {\n let w = next() - 1;\n if (w < 0)\n break;\n ret.push(read_replacement_table(w, next));\n }\n return fromEntries(flat(ret));\n}\nexport function read_zero_terminated_array(next) {\n let v = [];\n while (true) {\n let i = next();\n if (i == 0)\n break;\n v.push(i);\n }\n return v;\n}\nfunction read_transposed(n, w, next) {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\nfunction read_linear_table(w, next) {\n let dx = 1 + next();\n let dy = next();\n let vN = read_zero_terminated_array(next);\n let m = read_transposed(vN.length, 1 + w, next);\n return flat(m.map((v, i) => {\n const x = v[0], ys = v.slice(1);\n //let [x, ...ys] = v;\n //return Array(vN[i]).fill().map((_, j) => {\n return Array(vN[i]).fill(undefined).map((_, j) => {\n let j_dy = j * dy;\n return [x + j * dx, ys.map(y => y + j_dy)];\n });\n }));\n}\nfunction read_replacement_table(w, next) {\n let n = 1 + next();\n let m = read_transposed(n, 1 + w, next);\n return m.map(v => [v[0], v.slice(1)]);\n}\nexport function read_emoji_trie(next) {\n let sorted = read_member_array(next).sort((a, b) => a - b);\n return read();\n function read() {\n let branches = [];\n while (true) {\n let keys = read_member_array(next, sorted);\n if (keys.length == 0)\n break;\n branches.push({ set: new Set(keys), node: read() });\n }\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n let temp = next();\n let valid = temp % 3;\n temp = (temp / 3) | 0;\n let fe0f = !!(temp & 1);\n temp >>= 1;\n let save = temp == 1;\n let check = temp == 2;\n return { branches, valid, fe0f, save, check };\n }\n}\n//# sourceMappingURL=decoder.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { decode } from \"@ethersproject/base64\";\nimport { read_compressed_payload } from './decoder.js';\nexport function getData() {\n return read_compressed_payload(decode('AEQF2AO2DEsA2wIrAGsBRABxAN8AZwCcAEwAqgA0AGwAUgByADcATAAVAFYAIQAyACEAKAAYAFgAGwAjABQAMAAmADIAFAAfABQAKwATACoADgAbAA8AHQAYABoAGQAxADgALAAoADwAEwA9ABMAGgARAA4ADwAWABMAFgAIAA8AHgQXBYMA5BHJAS8JtAYoAe4AExozi0UAH21tAaMnBT8CrnIyhrMDhRgDygIBUAEHcoFHUPe8AXBjAewCjgDQR8IICIcEcQLwATXCDgzvHwBmBoHNAqsBdBcUAykgDhAMShskMgo8AY8jqAQfAUAfHw8BDw87MioGlCIPBwZCa4ELatMAAMspJVgsDl8AIhckSg8XAHdvTwBcIQEiDT4OPhUqbyECAEoAS34Aej8Ybx83JgT/Xw8gHxZ/7w8RICxPHA9vBw+Pfw8PHwAPFv+fAsAvCc8vEr8ivwD/EQ8Bol8OEBa/A78hrwAPCU8vESNvvwWfHwNfAVoDHr+ZAAED34YaAdJPAK7PLwSEgDLHAGo1Pz8Pvx9fUwMrpb8O/58VTzAPIBoXIyQJNF8hpwIVAT8YGAUADDNBaX3RAMomJCg9EhUeA29MABsZBTMNJipjOhc19gcIDR8bBwQHEggCWi6DIgLuAQYA+BAFCha3A5XiAEsqM7UFFgFLhAMjFTMYE1Klnw74nRVBG/ASCm0BYRN/BrsU3VoWy+S0vV8LQx+vN8gF2AC2AK5EAWwApgYDKmAAroQ0NDQ0AT+OCg7wAAIHRAbpNgVcBV0APTA5BfbPFgMLzcYL/QqqA82eBALKCjQCjqYCht0/k2+OAsXQAoP3ASTKDgDw6ACKAUYCMpIKJpRaAE4A5womABzZvs0REEKiACIQAd5QdAECAj4Ywg/wGqY2AVgAYADYvAoCGAEubA0gvAY2ALAAbpbvqpyEAGAEpgQAJgAG7gAgAEACmghUFwCqAMpAINQIwC4DthRAAPcycKgApoIdABwBfCisABoATwBqASIAvhnSBP8aH/ECeAKXAq40NjgDBTwFYQU6AXs3oABgAD4XNgmcCY1eCl5tIFZeUqGgyoNHABgAEQAaABNwWQAmABMATPMa3T34ADldyprmM1M2XociUQgLzvwAXT3xABgAEQAaABNwIGFAnADD8AAgAD4BBJWzaCcIAIEBFMAWwKoAAdq9BWAF5wLQpALEtQAKUSGkahR4GnJM+gsAwCgeFAiUAECQ0BQuL8AAIAAAADKeIheclvFqQAAETr4iAMxIARMgAMIoHhQIAn0E0pDQFC4HhznoAAAAIAI2C0/4lvFqQAAETgBJJwYCAy4ABgYAFAA8MBKYEH4eRhTkAjYeFcgACAYAeABsOqyQ5gRwDayqugEgaIIAtgoACgDmEABmBAWGme5OBJJA2m4cDeoAmITWAXwrMgOgAGwBCh6CBXYF1Tzg1wKAAFdiuABRAFwAXQBsAG8AdgBrAHYAbwCEAHEwfxQBVE5TEQADVFhTBwBDANILAqcCzgLTApQCrQL6vAAMAL8APLhNBKkE6glGKTAU4Dr4N2EYEwBCkABKk8rHAbYBmwIoAiU4Ajf/Aq4CowCAANIChzgaNBsCsTgeODcFXrgClQKdAqQBiQGYAqsCsjTsNHsfNPA0ixsAWTWiOAMFPDQSNCk2BDZHNow2TTZUNhk28Jk9VzI3QkEoAoICoQKwAqcAQAAxBV4FXbS9BW47YkIXP1ciUqs05DS/FwABUwJW11e6nHuYZmSh/RAYA8oMKvZ8KASoUAJYWAJ6ILAsAZSoqjpgA0ocBIhmDgDWAAawRDQoAAcuAj5iAHABZiR2AIgiHgCaAU68ACxuHAG0ygM8MiZIAlgBdF4GagJqAPZOHAMuBgoATkYAsABiAHgAMLoGDPj0HpKEBAAOJgAuALggTAHWAeAMEDbd20Uege0ADwAWADkAQgA9OHd+2MUQZBBhBgNNDkxxPxUQArEPqwvqERoM1irQ090ANK4H8ANYB/ADWANYB/AH8ANYB/ADWANYA1gDWBwP8B/YxRBkD00EcgWTBZAE2wiIJk4RhgctCNdUEnQjHEwDSgEBIypJITuYMxAlR0wRTQgIATZHbKx9PQNMMbBU+pCnA9AyVDlxBgMedhKlAC8PeCE1uk6DekxxpQpQT7NX9wBFBgASqwAS5gBJDSgAUCwGPQBI4zTYABNGAE2bAE3KAExdGABKaAbgAFBXAFCOAFBJABI2SWdObALDOq0//QomCZhvwHdTBkIQHCemEPgMNAG2ATwN7kvZBPIGPATKH34ZGg/OlZ0Ipi3eDO4m5C6igFsj9iqEBe5L9TzeC05RaQ9aC2YJ5DpkgU8DIgEOIowK3g06CG4Q9ArKbA3mEUYHOgPWSZsApgcCCxIdNhW2JhFirQsKOXgG/Br3C5AmsBMqev0F1BoiBk4BKhsAANAu6IWxWjJcHU9gBgQLJiPIFKlQIQ0mQLh4SRocBxYlqgKSQ3FKiFE3HpQh9zw+DWcuFFF9B/Y8BhlQC4I8n0asRQ8R0z6OPUkiSkwtBDaALDAnjAnQD4YMunxzAVoJIgmyDHITMhEYN8YIOgcaLpclJxYIIkaWYJsE+KAD9BPSAwwFQAlCBxQDthwuEy8VKgUOgSXYAvQ21i60ApBWgQEYBcwPJh/gEFFH4Q7qCJwCZgOEJewALhUiABginAhEZABgj9lTBi7MCMhqbSN1A2gU6GIRdAeSDlgHqBw0FcAc4nDJXgyGCSiksAlcAXYJmgFgBOQICjVcjKEgQmdUi1kYnCBiQUBd/QIyDGYVoES+h3kCjA9sEhwBNgF0BzoNAgJ4Ee4RbBCWCOyGBTW2M/k6JgRQIYQgEgooA1BszwsoJvoM+WoBpBJjAw00PnfvZ6xgtyUX/gcaMsZBYSHyC5NPzgydGsIYQ1QvGeUHwAP0GvQn60FYBgADpAQUOk4z7wS+C2oIjAlAAEoOpBgH2BhrCnKM0QEyjAG4mgNYkoQCcJAGOAcMAGgMiAV65gAeAqgIpAAGANADWAA6Aq4HngAaAIZCAT4DKDABIuYCkAOUCDLMAZYwAfQqBBzEDBYA+DhuSwLDsgKAa2ajBd5ZAo8CSjYBTiYEBk9IUgOwcuIA3ABMBhTgSAEWrEvMG+REAeBwLADIAPwABjYHBkIBzgH0bgC4AWALMgmjtLYBTuoqAIQAFmwB2AKKAN4ANgCA8gFUAE4FWvoF1AJQSgESMhksWGIBvAMgATQBDgB6BsyOpsoIIARuB9QCEBwV4gLvLwe2AgMi4BPOQsYCvd9WADIXUu5eZwqoCqdeaAC0YTQHMnM9UQAPH6k+yAdy/BZIiQImSwBQ5gBQQzSaNTFWSTYBpwGqKQK38AFtqwBI/wK37gK3rQK3sAK6280C0gK33AK3zxAAUEIAUD9SklKDArekArw5AEQAzAHCO147WTteO1k7XjtZO147WTteO1kDmChYI03AVU0oJqkKbV9GYewMpw3VRMk6ShPcYFJgMxPJLbgUwhXPJVcZPhq9JwYl5VUKDwUt1GYxCC00dhe9AEApaYNCY4ceMQpMHOhTklT5LRwAskujM7ANrRsWREEFSHXuYisWDwojAmSCAmJDXE6wXDchAqH4AmiZAmYKAp+FOBwMAmY8AmYnBG8EgAN/FAN+kzkHOXgYOYM6JCQCbB4CMjc4CwJtyAJtr/CLADRoRiwBaADfAOIASwYHmQyOAP8MwwAOtgJ3MAJ2o0ACeUxEAni7Hl3cRa9G9AJ8QAJ6yQJ9CgJ88UgBSH5kJQAsFklZSlwWGErNAtECAtDNSygDiFADh+dExpEzAvKiXQQDA69Lz0wuJgTQTU1NsAKLQAKK2cIcCB5EaAa4Ao44Ao5dQZiCAo7aAo5deVG1UzYLUtVUhgKT/AKTDQDqAB1VH1WwVdEHLBwplocy4nhnRTw6ApegAu+zWCKpAFomApaQApZ9nQCqWa1aCoJOADwClrYClk9cRVzSApnMApllXMtdCBoCnJw5wzqeApwXAp+cAp65iwAeEDIrEAKd8gKekwC2PmE1YfACntQCoG8BqgKeoCACnk+mY8lkKCYsAiewAiZ/AqD8AqBN2AKmMAKlzwKoAAB+AqfzaH1osgAESmodatICrOQCrK8CrWgCrQMCVx4CVd0CseLYAx9PbJgCsr4OArLpGGzhbWRtSWADJc4Ctl08QG6RAylGArhfArlIFgK5K3hwN3DiAr0aAy2zAzISAr6JcgMDM3ICvhtzI3NQAsPMAsMFc4N0TDZGdOEDPKgDPJsDPcACxX0CxkgCxhGKAshqUgLIRQLJUALJLwJkngLd03h6YniveSZL0QMYpGcDAmH1GfSVJXsMXpNevBICz2wCz20wTFTT9BSgAMeuAs90ASrrA04TfkwGAtwoAtuLAtJQA1JdA1NgAQIDVY2AikABzBfuYUZ2AILPg44C2sgC2d+EEYRKpz0DhqYAMANkD4ZyWvoAVgLfZgLeuXR4AuIw7RUB8zEoAfScAfLTiALr9ALpcXoAAur6AurlAPpIAboC7ooC652Wq5cEAu5AA4XhmHpw4XGiAvMEAGoDjheZlAL3FAORbwOSiAL3mQL52gL4Z5odmqy8OJsfA52EAv77ARwAOp8dn7QDBY4DpmsDptoA0sYDBmuhiaIGCgMMSgFgASACtgNGAJwEgLpoBgC8BGzAEowcggCEDC6kdjoAJAM0C5IKRoABZCgiAIzw3AYBLACkfng9ogigkgNmWAN6AEQCvrkEVqTGAwCsBRbAA+4iQkMCHR072jI2PTbUNsk2RjY5NvA23TZKNiU3EDcZN5I+RTxDRTBCJkK5VBYKFhZfwQCWygU3AJBRHpu+OytgNxa61A40GMsYjsn7BVwFXQVcBV0FaAVdBVwFXQVcBV0FXAVdBVwFXUsaCNyKAK4AAQUHBwKU7oICoW1e7jAEzgPxA+YDwgCkBFDAwADABKzAAOxFLhitA1UFTDeyPkM+bj51QkRCuwTQWWQ8X+0AWBYzsACNA8xwzAGm7EZ/QisoCTAbLDs6fnLfb8H2GccsbgFw13M1HAVkBW/Jxsm9CNRO8E8FDD0FBQw9FkcClOYCoMFegpDfADgcMiA2AJQACB8AsigKAIzIEAJKeBIApY5yPZQIAKQiHb4fvj5BKSRPQrZCOz0oXyxgOywfKAnGbgMClQaCAkILXgdeCD9IIGUgQj5fPoY+dT52Ao5CM0dAX9BTVG9SDzFwWTQAbxBzJF/lOEIQQglCCkKJIAls5AcClQICoKPMODEFxhi6KSAbiyfIRrMjtCgdWCAkPlFBIitCsEJRzAbMAV/OEyQzDg0OAQQEJ36i328/Mk9AybDJsQlq3tDRApUKAkFzXf1d/j9uALYP6hCoFgCTGD8kPsFKQiobrm0+zj0KSD8kPnVCRBwMDyJRTHFgMTJa5rwXQiQ2YfI/JD7BMEJEHGINTw4TOFlIRzwJO0icMQpyPyQ+wzJCRBv6DVgnKB01NgUKj2bwYzMqCoBkznBgEF+zYDIocwRIX+NgHj4HICNfh2C4CwdwFWpTG/lgUhYGAwRfv2Ts8mAaXzVgml/XYIJfuWC4HI1gUF9pYJZgMR6ilQHMAOwLAlDRefC0in4AXAEJA6PjCwc0IamOANMMCAECRQDFNRTZBgd+CwQlRA+r6+gLBDEFBnwUBXgKATIArwAGRAAHA3cDdAN2A3kDdwN9A3oDdQN7A30DfAN4A3oDfQAYEAAlAtYASwMAUAFsAHcKAHcAmgB3AHUAdQB2AHVu8UgAygDAAHcAdQB1AHYAdQALCgB3AAsAmgB3AAsCOwB3AAtu8UgAygDAAHgKAJoAdwB3AHUAdQB2AHUAeAB1AHUAdgB1bvFIAMoAwAALCgCaAHcACwB3AAsCOwB3AAtu8UgAygDAAH4ACwGgALcBpwC6AahdAu0COwLtbvFIAMoAwAALCgCaAu0ACwLtAAsCOwLtAAtu8UgAygDAA24ACwNvAAu0VsQAAzsAABCkjUIpAAsAUIusOggWcgMeBxVsGwL67U/2HlzmWOEeOgALASvuAAseAfpKUpnpGgYJDCIZM6YyARUE9ThqAD5iXQgnAJYJPnOzw0ZAEZxEKsIAkA4DhAHnTAIDxxUDK0lxCQlPYgIvIQVYJQBVqE1GakUAKGYiDToSBA1EtAYAXQJYAIF8GgMHRyAAIAjOe9YncekRAA0KACUrjwE7Ayc6AAYWAqaiKG4McEcqANoN3+Mg9TwCBhIkuCny+JwUQ29L008JluRxu3K+oAdqiHOqFH0AG5SUIfUJ5SxCGfxdipRzqTmT4V5Zb+r1Uo4Vm+NqSSEl2mNvR2JhIa8SpYO6ntdwFXHCWTCK8f2+Hxo7uiG3drDycAuKIMP5bhi06ACnqArH1rz4Rqg//lm6SgJGEVbF9xJHISaR6HxqxSnkw6shDnelHKNEfGUXSJRJ1GcsmtJw25xrZMDK9gXSm1/YMkdX4/6NKYOdtk/NQ3/NnDASjTc3fPjIjW/5sVfVObX2oTDWkr1dF9f3kxBsD3/3aQO8hPfRz+e0uEiJqt1161griu7gz8hDDwtpy+F+BWtefnKHZPAxcZoWbnznhJpy0e842j36bcNzGnIEusgGX0a8ZxsnjcSsPDZ09yZ36fCQbriHeQ72JRMILNl6ePPf2HWoVwgWAm1fb3V2sAY0+B6rAXqSwPBgseVmoqsBTSrm91+XasMYYySI8eeRxH3ZvHkMz3BQ5aJ3iUVbYPNM3/7emRtjlsMgv/9VyTsyt/mK+8fgWeT6SoFaclXqn42dAIsvAarF5vNNWHzKSkKQ/8Hfk5ZWK7r9yliOsooyBjRhfkHP4Q2DkWXQi6FG/9r/IwbmkV5T7JSopHKn1pJwm9tb5Ot0oyN1Z2mPpKXHTxx2nlK08fKk1hEYA8WgVVWL5lgx0iTv+KdojJeU23ZDjmiubXOxVXJKKi2Wjuh2HLZOFLiSC7Tls5SMh4f+Pj6xUSrNjFqLGehRNB8lC0QSLNmkJJx/wSG3MnjE9T1CkPwJI0wH2lfzwETIiVqUxg0dfu5q39Gt+hwdcxkhhNvQ4TyrBceof3Mhs/IxFci1HmHr4FMZgXEEczPiGCx0HRwzAqDq2j9AVm1kwN0mRVLWLylgtoPNapF5cY4Y1wJh/e0BBwZj44YgZrDNqvD/9Hv7GFYdUQeDJuQ3EWI4HaKqavU1XjC/n41kT4L79kqGq0kLhdTZvgP3TA3fS0ozVz+5piZsoOtIvBUFoMKbNcmBL6YxxaUAusHB38XrS8dQMnQwJfUUkpRoGr5AUeWicvBTzyK9g77+yCkf5PAysL7r/JjcZgrbvRpMW9iyaxZvKO6ceZN2EwIxKwVFPuvFuiEPGCoagbMo+SpydLrXqBzNCDGFCrO/rkcwa2xhokQZ5CdZ0AsU3JfSqJ6n5I14YA+P/uAgfhPU84Tlw7cEFfp7AEE8ey4sP12PTt4Cods1GRgDOB5xvyiR5m+Bx8O5nBCNctU8BevfV5A08x6RHd5jcwPTMDSZJOedIZ1cGQ704lxbAzqZOP05ZxaOghzSdvFBHYqomATARyAADK4elP8Ly3IrUZKfWh23Xy20uBUmLS4Pfagu9+oyVa2iPgqRP3F2CTUsvJ7+RYnN8fFZbU/HVvxvcFFDKkiTqV5UBZ3Gz54JAKByi9hkKMZJvuGgcSYXFmw08UyoQyVdfTD1/dMkCHXcTGAKeROgArsvmRrQTLUOXioOHGK2QkjHuoYFgXciZoTJd6Fs5q1QX1G+p/e26hYsEf7QZD1nnIyl/SFkNtYYmmBhpBrxl9WbY0YpHWRuw2Ll/tj9mD8P4snVzJl4F9J+1arVeTb9E5r2ILH04qStjxQNwn3m4YNqxmaNbLAqW2TN6LidwuJRqS+NXbtqxoeDXpxeGWmxzSkWxjkyCkX4NQRme6q5SAcC+M7+9ETfA/EwrzQajKakCwYyeunP6ZFlxU2oMEn1Pz31zeStW74G406ZJFCl1wAXIoUKkWotYEpOuXB1uVNxJ63dpJEqfxBeptwIHNrPz8BllZoIcBoXwgfJ+8VAUnVPvRvexnw0Ma/WiGYuJO5y8QTvEYBigFmhUxY5RqzE8OcywN/8m4UYrlaniJO75XQ6KSo9+tWHlu+hMi0UVdiKQp7NelnoZUzNaIyBPVeOwK6GNp+FfHuPOoyhaWuNvTYFkvxscMQWDh+zeFCFkgwbXftiV23ywJ4+uwRqmg9k3KzwIQpzppt8DBBOMbrqwQM5Gb05sEwdKzMiAqOloaA/lr0KA+1pr0/+HiWoiIjHA/wir2nIuS3PeU/ji3O6ZwoxcR1SZ9FhtLC5S0FIzFhbBWcGVP/KpxOPSiUoAdWUpqKH++6Scz507iCcxYI6rdMBICPJZea7OcmeFw5mObJSiqpjg2UoWNIs+cFhyDSt6geV5qgi3FunmwwDoGSMgerFOZGX1m0dMCYo5XOruxO063dwENK9DbnVM9wYFREzh4vyU1WYYJ/LRRp6oxgjqP/X5a8/4Af6p6NWkQferzBmXme0zY/4nwMJm/wd1tIqSwGz+E3xPEAOoZlJit3XddD7/BT1pllzOx+8bmQtANQ/S6fZexc6qi3W+Q2xcmXTUhuS5mpHQRvcxZUN0S5+PL9lXWUAaRZhEH8hTdAcuNMMCuVNKTEGtSUKNi3O6KhSaTzck8csZ2vWRZ+d7mW8c4IKwXIYd25S/zIftPkwPzufjEvOHWVD1m+FjpDVUTV0DGDuHj6QnaEwLu/dEgdLQOg9E1Sro9XHJ8ykLAwtPu+pxqKDuFexqON1sKQm7rwbE1E68UCfA/erovrTCG+DBSNg0l4goDQvZN6uNlbyLpcZAwj2UclycvLpIZMgv4yRlpb3YuMftozorbcGVHt/VeDV3+Fdf1TP0iuaCsPi2G4XeGhsyF1ubVDxkoJhmniQ0/jSg/eYML9KLfnCFgISWkp91eauR3IQvED0nAPXK+6hPCYs+n3+hCZbiskmVMG2da+0EsZPonUeIY8EbfusQXjsK/eFDaosbPjEfQS0RKG7yj5GG69M7MeO1HmiUYocgygJHL6M1qzUDDwUSmr99V7Sdr2F3JjQAJY+F0yH33Iv3+C9M38eML7gTgmNu/r2bUMiPvpYbZ6v1/IaESirBHNa7mPKn4dEmYg7v/+HQgPN1G79jBQ1+soydfDC2r+h2Bl/KIc5KjMK7OH6nb1jLsNf0EHVe2KBiE51ox636uyG6Lho0t3J34L5QY/ilE3mikaF4HKXG1mG1rCevT1Vv6GavltxoQe/bMrpZvRggnBxSEPEeEzkEdOxTnPXHVjUYdw8JYvjB/o7Eegc3Ma+NUxLLnsK0kJlinPmUHzHGtrk5+CAbVzFOBqpyy3QVUnzTDfC/0XD94/okH+OB+i7g9lolhWIjSnfIb+Eq43ZXOWmwvjyV/qqD+t0e+7mTEM74qP/Ozt8nmC7mRpyu63OB4KnUzFc074SqoyPUAgM+/TJGFo6T44EHnQU4X4z6qannVqgw/U7zCpwcmXV1AubIrvOmkKHazJAR55ePjp5tLBsN8vAqs3NAHdcEHOR2xQ0lsNAFzSUuxFQCFYvXLZJdOj9p4fNq6p0HBGUik2YzaI4xySy91KzhQ0+q1hjxvImRwPRf76tChlRkhRCi74NXZ9qUNeIwP+s5p+3m5nwPdNOHgSLD79n7O9m1n1uDHiMntq4nkYwV5OZ1ENbXxFd4PgrlvavZsyUO4MqYlqqn1O8W/I1dEZq5dXhrbETLaZIbC2Kj/Aa/QM+fqUOHdf0tXAQ1huZ3cmWECWSXy/43j35+Mvq9xws7JKseriZ1pEWKc8qlzNrGPUGcVgOa9cPJYIJsGnJTAUsEcDOEVULO5x0rXBijc1lgXEzQQKhROf8zIV82w8eswc78YX11KYLWQRcgHNJElBxfXr72lS2RBSl07qTKorO2uUDZr3sFhYsvnhLZn0A94KRzJ/7DEGIAhW5ZWFpL8gEwu1aLA9MuWZzNwl8Oze9Y+bX+v9gywRVnoB5I/8kXTXU3141yRLYrIOOz6SOnyHNy4SieqzkBXharjfjqq1q6tklaEbA8Qfm2DaIPs7OTq/nvJBjKfO2H9bH2cCMh1+5gspfycu8f/cuuRmtDjyqZ7uCIMyjdV3a+p3fqmXsRx4C8lujezIFHnQiVTXLXuI1XrwN3+siYYj2HHTvESUx8DlOTXpak9qFRK+L3mgJ1WsD7F4cu1aJoFoYQnu+wGDMOjJM3kiBQWHCcvhJ/HRdxodOQp45YZaOTA22Nb4XKCVxqkbwMYFhzYQYIAnCW8FW14uf98jhUG2zrKhQQ0q0CEq0t5nXyvUyvR8DvD69LU+g3i+HFWQMQ8PqZuHD+sNKAV0+M6EJC0szq7rEr7B5bQ8BcNHzvDMc9eqB5ZCQdTf80Obn4uzjwpYU7SISdtV0QGa9D3Wrh2BDQtpBKxaNFV+/Cy2P/Sv+8s7Ud0Fd74X4+o/TNztWgETUapy+majNQ68Lq3ee0ZO48VEbTZYiH1Co4OlfWef82RWeyUXo7woM03PyapGfikTnQinoNq5z5veLpeMV3HCAMTaZmA1oGLAn7XS3XYsz+XK7VMQsc4XKrmDXOLU/pSXVNUq8dIqTba///3x6LiLS6xs1xuCAYSfcQ3+rQgmu7uvf3THKt5Ooo97TqcbRqxx7EASizaQCBQllG/rYxVapMLgtLbZS64w1MDBMXX+PQpBKNwqUKOf2DDRDUXQf9EhOS0Qj4nTmlA8dzSLz/G1d+Ud8MTy/6ghhdiLpeerGY/UlDOfiuqFsMUU5/UYlP+BAmgRLuNpvrUaLlVkrqDievNVEAwF+4CoM1MZTmjxjJMsKJq+u8Zd7tNCUFy6LiyYXRJQ4VyvEQFFaCGKsxIwQkk7EzZ6LTJq2hUuPhvAW+gQnSG6J+MszC+7QCRHcnqDdyNRJ6T9xyS87A6MDutbzKGvGktpbXqtzWtXb9HsfK2cBMomjN9a4y+TaJLnXxAeX/HWzmf4cR4vALt/P4w4qgKY04ml4ZdLOinFYS6cup3G/1ie4+t1eOnpBNlqGqs75ilzkT4+DsZQxNvaSKJ//6zIbbk/M7LOhFmRc/1R+kBtz7JFGdZm/COotIdvQoXpTqP/1uqEUmCb/QWoGLMwO5ANcHzxdY48IGP5+J+zKOTBFZ4Pid+GTM+Wq12MV/H86xEJptBa6T+p3kgpwLedManBHC2GgNrFpoN2xnrMz9WFWX/8/ygSBkavq2Uv7FdCsLEYLu9LLIvAU0bNRDtzYl+/vXmjpIvuJFYjmI0im6QEYqnIeMsNjXG4vIutIGHijeAG/9EDBozKV5cldkHbLxHh25vT+ZEzbhXlqvpzKJwcEgfNwLAKFeo0/pvEE10XDB+EXRTXtSzJozQKFFAJhMxYkVaCW+E9AL7tMeU8acxidHqzb6lX4691UsDpy/LLRmT+epgW56+5Cw8tB4kMUv6s9lh3eRKbyGs+H/4mQMaYzPTf2OOdokEn+zzgvoD3FqNKk8QqGAXVsqcGdXrT62fSPkR2vROFi68A6se86UxRUk4cajfPyCC4G5wDhD+zNq4jodQ4u4n/m37Lr36n4LIAAsVr02dFi9AiwA81MYs2rm4eDlDNmdMRvEKRHfBwW5DdMNp0jPFZMeARqF/wL4XBfd+EMLBfMzpH5GH6NaW+1vrvMdg+VxDzatk3MXgO3ro3P/DpcC6+Mo4MySJhKJhSR01SGGGp5hPWmrrUgrv3lDnP+HhcI3nt3YqBoVAVTBAQT5iuhTg8nvPtd8ZeYj6w1x6RqGUBrSku7+N1+BaasZvjTk64RoIDlL8brpEcJx3OmY7jLoZsswdtmhfC/G21llXhITOwmvRDDeTTPbyASOa16cF5/A1fZAidJpqju3wYAy9avPR1ya6eNp9K8XYrrtuxlqi+bDKwlfrYdR0RRiKRVTLOH85+ZY7XSmzRpfZBJjaTa81VDcJHpZnZnSQLASGYW9l51ZV/h7eVzTi3Hv6hUsgc/51AqJRTkpbFVLXXszoBL8nBX0u/0jBLT8nH+fJePbrwURT58OY+UieRjd1vs04w0VG5VN2U6MoGZkQzKN/ptz0Q366dxoTGmj7i1NQGHi9GgnquXFYdrCfZBmeb7s0T6yrdlZH5cZuwHFyIJ/kAtGsTg0xH5taAAq44BAk1CPk9KVVbqQzrCUiFdF/6gtlPQ8bHHc1G1W92MXGZ5HEHftyLYs8mbD/9xYRUWkHmlM0zC2ilJlnNgV4bfALpQghxOUoZL7VTqtCHIaQSXm+YUMnpkXybnV+A6xlm2CVy8fn0Xlm2XRa0+zzOa21JWWmixfiPMSCZ7qA4rS93VN3pkpF1s5TonQjisHf7iU9ZGvUPOAKZcR1pbeVf/Ul7OhepGCaId9wOtqo7pJ7yLcBZ0pFkOF28y4zEI/kcUNmutBHaQpBdNM8vjCS6HZRokkeo88TBAjGyG7SR+6vUgTcyK9Imalj0kuxz0wmK+byQU11AiJFk/ya5dNduRClcnU64yGu/ieWSeOos1t3ep+RPIWQ2pyTYVbZltTbsb7NiwSi3AV+8KLWk7LxCnfZUetEM8ThnsSoGH38/nyAwFguJp8FjvlHtcWZuU4hPva0rHfr0UhOOJ/F6vS62FW7KzkmRll2HEc7oUq4fyi5T70Vl7YVIfsPHUCdHesf9Lk7WNVWO75JDkYbMI8TOW8JKVtLY9d6UJRITO8oKo0xS+o99Yy04iniGHAaGj88kEWgwv0OrHdY/nr76DOGNS59hXCGXzTKUvDl9iKpLSWYN1lxIeyywdNpTkhay74w2jFT6NS8qkjo5CxA1yfSYwp6AJIZNKIeEK5PJAW7ORgWgwp0VgzYpqovMrWxbu+DGZ6Lhie1RAqpzm8VUzKJOH3mCzWuTOLsN3VT/dv2eeYe9UjbR8YTBsLz7q60VN1sU51k+um1f8JxD5pPhbhSC8rRaB454tmh6YUWrJI3+GWY0qeWioj/tbkYITOkJaeuGt4JrJvHA+l0Gu7kY7XOaa05alMnRWVCXqFgLIwSY4uF59Ue5SU4QKuc/HamDxbr0x6csCetXGoP7Qn1Bk/J9DsynO/UD6iZ1Hyrz+jit0hDCwi/E9OjgKTbB3ZQKQ/0ZOvevfNHG0NK4Aj3Cp7NpRk07RT1i/S0EL93Ag8GRgKI9CfpajKyK6+Jj/PI1KO5/85VAwz2AwzP8FTBb075IxCXv6T9RVvWT2tUaqxDS92zrGUbWzUYk9mSs82pECH+fkqsDt93VW++4YsR/dHCYcQSYTO/KaBMDj9LSD/J/+z20Kq8XvZUAIHtm9hRPP3ItbuAu2Hm5lkPs92pd7kCxgRs0xOVBnZ13ccdA0aunrwv9SdqElJRC3g+oCu+nXyCgmXUs9yMjTMAIHfxZV+aPKcZeUBWt057Xo85Ks1Ir5gzEHCWqZEhrLZMuF11ziGtFQUds/EESajhagzcKsxamcSZxGth4UII+adPhQkUnx2WyN+4YWR+r3f8MnkyGFuR4zjzxJS8WsQYR5PTyRaD9ixa6Mh741nBHbzfjXHskGDq179xaRNrCIB1z1xRfWfjqw2pHc1zk9xlPpL8sQWAIuETZZhbnmL54rceXVNRvUiKrrqIkeogsl0XXb17ylNb0f4GA9Wd44vffEG8FSZGHEL2fbaTGRcSiCeA8PmA/f6Hz8HCS76fXUHwgwkzSwlI71ekZ7Fapmlk/KC+Hs8hUcw3N2LN5LhkVYyizYFl/uPeVP5lsoJHhhfWvvSWruCUW1ZcJOeuTbrDgywJ/qG07gZJplnTvLcYdNaH0KMYOYMGX+rB4NGPFmQsNaIwlWrfCezxre8zXBrsMT+edVLbLqN1BqB76JH4BvZTqUIMfGwPGEn+EnmTV86fPBaYbFL3DFEhjB45CewkXEAtJxk4/Ms2pPXnaRqdky0HOYdcUcE2zcXq4vaIvW2/v0nHFJH2XXe22ueDmq/18XGtELSq85j9X8q0tcNSSKJIX8FTuJF/Pf8j5PhqG2u+osvsLxYrvvfeVJL+4tkcXcr9JV7v0ERmj/X6fM3NC4j6dS1+9Umr2oPavqiAydTZPLMNRGY23LO9zAVDly7jD+70G5TPPLdhRIl4WxcYjLnM+SNcJ26FOrkrISUtPObIz5Zb3AG612krnpy15RMW+1cQjlnWFI6538qky9axd2oJmHIHP08KyP0ubGO+TQNOYuv2uh17yCIvR8VcStw7o1g0NM60sk+8Tq7YfIBJrtp53GkvzXH7OA0p8/n/u1satf/VJhtR1l8Wa6Gmaug7haSpaCaYQax6ta0mkutlb+eAOSG1aobM81D9A4iS1RRlzBBoVX6tU1S6WE2N9ORY6DfeLRC4l9Rvr5h95XDWB2mR1d4WFudpsgVYwiTwT31ljskD8ZyDOlm5DkGh9N/UB/0AI5Xvb8ZBmai2hQ4BWMqFwYnzxwB26YHSOv9WgY3JXnvoN+2R4rqGVh/LLDMtpFP+SpMGJNWvbIl5SOodbCczW2RKleksPoUeGEzrjtKHVdtZA+kfqO+rVx/iclCqwoopepvJpSTDjT+b9GWylGRF8EDbGlw6eUzmJM95Ovoz+kwLX3c2fTjFeYEsE7vUZm3mqdGJuKh2w9/QGSaqRHs99aScGOdDqkFcACoqdbBoQqqjamhH6Q9ng39JCg3lrGJwd50Qk9ovnqBTr8MME7Ps2wiVfygUmPoUBJJfJWX5Nda0nuncbFkA=='));\n}\n//# sourceMappingURL=include.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\nimport { getData } from './include.js';\nconst r = getData();\nimport { read_member_array, read_mapped_map, read_emoji_trie } from './decoder.js';\n// @TODO: This should be lazily loaded\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\nfunction explode_cp(name) {\n return toUtf8CodePoints(name);\n}\nfunction filter_fe0f(cps) {\n return cps.filter(cp => cp != 0xFE0F);\n}\nexport function ens_normalize_post_check(name) {\n for (let label of name.split('.')) {\n let cps = explode_cp(label);\n try {\n for (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n if (cps[i] !== UNDERSCORE) {\n throw new Error(`underscore only allowed at start`);\n }\n }\n if (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n throw new Error(`invalid label extension`);\n }\n }\n catch (err) {\n throw new Error(`Invalid label \"${label}\": ${err.message}`);\n }\n }\n return name;\n}\nexport function ens_normalize(name) {\n return ens_normalize_post_check(normalize(name, filter_fe0f));\n}\nfunction normalize(name, emoji_filter) {\n let input = explode_cp(name).reverse(); // flip for pop\n let output = [];\n while (input.length) {\n let emoji = consume_emoji_reversed(input);\n if (emoji) {\n output.push(...emoji_filter(emoji));\n continue;\n }\n let cp = input.pop();\n if (VALID.has(cp)) {\n output.push(cp);\n continue;\n }\n if (IGNORED.has(cp)) {\n continue;\n }\n let cps = MAPPED[cp];\n if (cps) {\n output.push(...cps);\n continue;\n }\n throw new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n }\n return ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\nfunction nfc(s) {\n return s.normalize('NFC');\n}\nfunction consume_emoji_reversed(cps, eaten) {\n var _a;\n let node = EMOJI_ROOT;\n let emoji;\n let saved;\n let stack = [];\n let pos = cps.length;\n if (eaten)\n eaten.length = 0; // clear input buffer (if needed)\n while (pos) {\n let cp = cps[--pos];\n node = (_a = node.branches.find(x => x.set.has(cp))) === null || _a === void 0 ? void 0 : _a.node;\n if (!node)\n break;\n if (node.save) { // remember\n saved = cp;\n }\n else if (node.check) { // check exclusion\n if (cp === saved)\n break;\n }\n stack.push(cp);\n if (node.fe0f) {\n stack.push(0xFE0F);\n if (pos > 0 && cps[pos - 1] == 0xFE0F)\n pos--; // consume optional FE0F\n }\n if (node.valid) { // this is a valid emoji (so far)\n emoji = stack.slice(); // copy stack\n if (node.valid == 2)\n emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n if (eaten)\n eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n cps.length = pos; // truncate\n }\n }\n return emoji;\n}\n//# sourceMappingURL=lib.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { ens_normalize } from \"./ens-normalize/lib\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nfunction checkComponent(comp) {\n if (comp.length === 0) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n return comp;\n}\nfunction ensNameSplit(name) {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps = [];\n if (name.length === 0) {\n return comps;\n }\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n // There was a stray separator at the end of the name\n if (last >= bytes.length) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\nexport function ensNormalize(name) {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\nexport function isValidName(name) {\n try {\n return (ensNameSplit(name).length !== 0);\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n /* istanbul ignore if */\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let result = Zeros;\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n }))) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","export const version = \"rlp/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { arrayify, hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n const data = Array.prototype.slice.call(arrayify(object));\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n }\n else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nexport function encode(object) {\n return hexlify(_encode(object));\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result };\n }\n else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\nexport function decode(data) {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=index.js.map","export const version = \"address/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction getChecksumAddress(address) {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER = 0x1fffffffffffff;\nfunction log10(x) {\n if (Math.log10) {\n return Math.log10(x);\n }\n return Math.log(x) / Math.LN10;\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nexport function getAddress(address) {\n let result = null;\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n // Maybe ICAP? (we only support direct mode)\n }\n else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n result = _base36To16(address.substring(4));\n while (result.length < 40) {\n result = \"0\" + result;\n }\n result = getChecksumAddress(\"0x\" + result);\n }\n else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n return result;\n}\nexport function isAddress(address) {\n try {\n getAddress(address);\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function getIcapAddress(address) {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction) {\n let from = null;\n try {\n from = getAddress(transaction.from);\n }\n catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n return getAddress(hexDataSlice(keccak256(encode([from, nonce])), 12));\n}\nexport function getCreate2Address(from, salt, initCodeHash) {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([\"0xff\", getAddress(from), salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=index.js.map","export const version = \"properties/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor, key) {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) {\n return ctor[key];\n }\n if (!ctor.prototype || typeof (ctor.prototype) !== \"object\") {\n break;\n }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\nexport function resolveProperties(object) {\n return __awaiter(this, void 0, void 0, function* () {\n const promises = Object.keys(object).map((key) => {\n const value = object[key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n const results = yield Promise.all(promises);\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, {});\n });\n}\nexport function checkProperties(object, properties) {\n if (!object || typeof (object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\nexport function shallowCopy(object) {\n const result = {};\n for (const key in object) {\n result[key] = object[key];\n }\n return result;\n}\nconst opaque = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\nfunction _isFrozen(object) {\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof (object)]) {\n return true;\n }\n if (Array.isArray(object) || typeof (object) === \"object\") {\n if (!Object.isFrozen(object)) {\n return false;\n }\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value = null;\n try {\n value = object[keys[i]];\n }\n catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n if (!_isFrozen(value)) {\n return false;\n }\n }\n return true;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object) {\n if (_isFrozen(object)) {\n return object;\n }\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n if (typeof (object) === \"object\") {\n const result = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) {\n continue;\n }\n defineReadOnly(result, key, deepCopy(value));\n }\n return result;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\nexport function deepCopy(object) {\n return _deepCopy(object);\n}\nexport class Description {\n constructor(info) {\n for (const key in info) {\n this[key] = deepCopy(info[key]);\n }\n }\n}\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { id } from \"./id\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst NegativeOne = BigNumber.from(-1);\nconst Zero = BigNumber.from(0);\nconst One = BigNumber.from(1);\nconst MaxUint256 = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return hexConcat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n try {\n return BigNumber.from(value).toString();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) {\n throw new Error(\"bad length\");\n }\n return hexlify(bytes);\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n const boundsUpper = MaxUint256.mask(signed ? (width - 1) : width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne) : Zero;\n return function (value) {\n const v = BigNumber.from(value);\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n return function (value) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${type}`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n switch (type) {\n case \"address\": return function (value) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n defineReadOnly(this, \"_encoderCache\", {});\n defineReadOnly(this, \"_types\", {});\n // Link struct types to their direct child structs\n const links = {};\n // Link structs to structs which contain them as a child\n const parents = {};\n // Link all subtypes within a given struct\n const subtypes = {};\n Object.keys(types).forEach((type) => {\n links[type] = {};\n parents[type] = [];\n subtypes[type] = {};\n });\n for (const name in types) {\n const uniqueNames = {};\n types[name].forEach((field) => {\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n return;\n }\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\n else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${primaryTypes.map((t) => (JSON.stringify(t))).join(\", \")}`, \"types\", types);\n }\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n // Check for circular type references\n function checkCircular(type, found) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found[type] = true;\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) {\n return;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n delete found[type];\n }\n checkCircular(this.primaryType, {});\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n getEncoder(type) {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n _getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return encoder;\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n return keccak256(hexConcat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n encodeType(name) {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return callback(type, value);\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v) => this._visit(subtype, v, callback));\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, {});\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(name)}`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static resolveNames(domain, types, value, resolveName) {\n return __awaiter(this, void 0, void 0, function* () {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n // Look up all ENS names\n const ensCache = {};\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = yield resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n });\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n//# sourceMappingURL=typed-data.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","import BN from 'bn.js';\nimport hash from 'hash.js';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, basedir, module) {\n\treturn module = {\n\t\tpath: basedir,\n\t\texports: {},\n\t\trequire: function (path, base) {\n\t\t\treturn commonjsRequire(path, (base === undefined || base === null) ? module.path : base);\n\t\t}\n\t}, fn(module, module.exports), module.exports;\n}\n\nfunction getDefaultExportFromNamespaceIfPresent (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n;\n}\n\nfunction getDefaultExportFromNamespaceIfNotNamed (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n;\n}\n\nfunction getAugmentedNamespace(n) {\n\tif (n.__esModule) return n;\n\tvar a = Object.defineProperty({}, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n}\n\nvar minimalisticAssert = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\nvar utils_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n});\n\nvar utils_1$1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\n\n\n\nutils.assert = minimalisticAssert;\nutils.toArray = utils_1.toArray;\nutils.zero2 = utils_1.zero2;\nutils.toHex = utils_1.toHex;\nutils.encode = utils_1.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n});\n\n'use strict';\n\n\n\nvar getNAF = utils_1$1.getNAF;\nvar getJSF = utils_1$1.getJSF;\nvar assert$1 = utils_1$1.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nvar base = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert$1(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert$1(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils_1$1.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert$1(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert$1(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils_1$1.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\nvar inherits_browser = createCommonjsModule(function (module) {\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n});\n\n'use strict';\n\n\n\n\n\n\nvar assert$2 = utils_1$1.assert;\n\nfunction ShortCurve(conf) {\n base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits_browser(ShortCurve, base);\nvar short_1 = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert$2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits_browser(Point, base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits_browser(JPoint, base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nvar curve_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curve = exports;\n\ncurve.base = base;\ncurve.short = short_1;\ncurve.mont = /*RicMoo:ethers:require(./mont)*/(null);\ncurve.edwards = /*RicMoo:ethers:require(./edwards)*/(null);\n});\n\nvar curves_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curves = exports;\n\n\n\n\n\nvar assert = utils_1$1.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve_1.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve_1.edwards(options);\n else\n this.curve = new curve_1.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = /*RicMoo:ethers:require(./precomputed/secp256k1)*/(null).crash();\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n});\n\n'use strict';\n\n\n\n\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils_1.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils_1.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils_1.toArray(options.pers, options.persEnc || 'hex');\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nvar hmacDrbg = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils_1.toArray(entropy, entropyEnc);\n add = utils_1.toArray(add, addEnc);\n\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils_1.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils_1.encode(res, enc);\n};\n\n'use strict';\n\n\n\nvar assert$3 = utils_1$1.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nvar key = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert$3(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert$3(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert$3(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n'use strict';\n\n\n\n\nvar assert$4 = utils_1$1.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert$4(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nvar signature = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils_1$1.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils_1$1.encode(res, enc);\n};\n\n'use strict';\n\n\n\n\n\nvar rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nvar assert$5 = utils_1$1.assert;\n\n\n\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert$5(Object.prototype.hasOwnProperty.call(curves_1, options),\n 'Unknown curve ' + options);\n\n options = curves_1[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves_1.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nvar ec = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new key(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return key.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return key.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature$1, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature$1 = new signature(signature$1, 'hex');\n\n // Perform primitive values validation\n var r = signature$1.r;\n var s = signature$1.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature$1, j, enc) {\n assert$5((3 & j) === j, 'The recovery param is more than two bits');\n signature$1 = new signature(signature$1, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature$1.r;\n var s = signature$1.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature$1.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature$1, Q, enc) {\n signature$1 = new signature(signature$1, enc);\n if (signature$1.recoveryParam !== null)\n return signature$1.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature$1, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\nvar elliptic_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = /*RicMoo:ethers*/{ version: \"6.5.4\" }.version;\nelliptic.utils = utils_1$1;\nelliptic.rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nelliptic.curve = curve_1;\nelliptic.curves = curves_1;\n\n// Protocols\nelliptic.ec = ec;\nelliptic.eddsa = /*RicMoo:ethers:require(./elliptic/eddsa)*/(null);\n});\n\nvar EC$1 = elliptic_1.ec;\n\nexport { EC$1 as EC };\n//# sourceMappingURL=elliptic.js.map\n","export const version = \"signing-key/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { EC } from \"./elliptic\";\nimport { arrayify, hexDataLength, hexlify, hexZeroPad, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nlet _curve = null;\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\nexport class SigningKey {\n constructor(privateKey) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n _addPoint(other) {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n signDigest(digest) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n });\n }\n computeSharedSecret(otherKey) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n static isSigningKey(value) {\n return !!(value && value._isSigningKey);\n }\n}\nexport function recoverPublicKey(digest, signature) {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\nexport function computePublicKey(key, compressed) {\n const bytes = arrayify(key);\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n }\n else if (bytes.length === 33) {\n if (compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n }\n else if (bytes.length === 65) {\n if (!compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n//# sourceMappingURL=index.js.map","export const version = \"transactions/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport var TransactionTypes;\n(function (TransactionTypes) {\n TransactionTypes[TransactionTypes[\"legacy\"] = 0] = \"legacy\";\n TransactionTypes[TransactionTypes[\"eip2930\"] = 1] = \"eip2930\";\n TransactionTypes[TransactionTypes[\"eip1559\"] = 2] = \"eip1559\";\n})(TransactionTypes || (TransactionTypes = {}));\n;\n///////////////////////////////\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleNumber(value) {\n if (value === \"0x\") {\n return Zero;\n }\n return BigNumber.from(value);\n}\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\nconst allowedTransactionKeys = {\n chainId: true, data: true, gasLimit: true, gasPrice: true, nonce: true, to: true, type: true, value: true\n};\nexport function computeAddress(key) {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\nfunction formatNumber(value, name) {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${addr}:${index}]`, storageKey);\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${index}]`, set);\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, {});\n return accessSetify(addr, Object.keys(storageKeys).sort());\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _serializeEip1559(transaction, signature) {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x02\", RLP.encode(fields)]);\n}\nfunction _serializeEip2930(transaction, signature) {\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x01\", RLP.encode(fields)]);\n}\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction, signature) {\n checkProperties(transaction, allowedTransactionKeys);\n const raw = [];\n transactionFields.forEach(function (fieldInfo) {\n let value = transaction[fieldInfo.name] || ([]);\n const options = {};\n if (fieldInfo.numeric) {\n options.hexPad = \"left\";\n }\n value = arrayify(hexlify(value, options));\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n }\n raw.push(hexlify(value));\n });\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n if (typeof (chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n }\n else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam;\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n }\n else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n return RLP.encode(raw);\n}\nexport function serialize(transaction, signature) {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${transaction.type}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) {\n throw new Error(\"bad recid\");\n }\n tx.v = recid;\n }\n catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n }\n catch (error) { }\n}\nfunction _parseEip1559(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _parseEip2930(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n const tx = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n return tx;\n}\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction) {\n const transaction = RLP.decode(rawTransaction);\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n const tx = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n // Legacy unsigned transaction\n if (transaction.length === 6) {\n return tx;\n }\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n }\n catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n }\n else {\n // Signed Transaction\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) {\n tx.chainId = 0;\n }\n let recoveryParam = tx.v - 27;\n const raw = transaction.slice(0, 6);\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n }\n catch (error) { }\n tx.hash = keccak256(rawTransaction);\n }\n tx.type = null;\n return tx;\n}\nexport function parse(rawTransaction) {\n const payload = arrayify(rawTransaction);\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) {\n return _parse(payload);\n }\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${payload[0]}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n//# sourceMappingURL=index.js.map","import { AuthTypes } from \"@walletconnect/types\";\nimport { hashMessage } from \"@ethersproject/hash\";\nimport { recoverAddress } from \"@ethersproject/transactions\";\nconst DEFAULT_RPC_URL = \"https://rpc.walletconnect.com/v1\";\n\nexport async function verifySignature(\n address: string,\n reconstructedMessage: string,\n cacaoSignature: AuthTypes.CacaoSignature,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n): Promise {\n // Determine if this signature is from an EOA or a contract.\n switch (cacaoSignature.t) {\n case \"eip191\":\n return isValidEip191Signature(address, reconstructedMessage, cacaoSignature.s);\n case \"eip1271\":\n return await isValidEip1271Signature(\n address,\n reconstructedMessage,\n cacaoSignature.s,\n chainId,\n projectId,\n baseRpcUrl,\n );\n break;\n default:\n throw new Error(\n `verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${cacaoSignature.t}`,\n );\n }\n}\n\nexport function isValidEip191Signature(\n address: string,\n message: string,\n signature: string,\n): boolean {\n const recoveredAddress = recoverAddress(hashMessage(message), signature);\n return recoveredAddress.toLowerCase() === address.toLowerCase();\n}\n\nexport async function isValidEip1271Signature(\n address: string,\n reconstructedMessage: string,\n signature: string,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n) {\n try {\n const eip1271MagicValue = \"0x1626ba7e\";\n const dynamicTypeOffset = \"0000000000000000000000000000000000000000000000000000000000000040\";\n const dynamicTypeLength = \"0000000000000000000000000000000000000000000000000000000000000041\";\n const nonPrefixedSignature = signature.substring(2);\n const nonPrefixedHashedMessage = hashMessage(reconstructedMessage).substring(2);\n\n const data =\n eip1271MagicValue +\n nonPrefixedHashedMessage +\n dynamicTypeOffset +\n dynamicTypeLength +\n nonPrefixedSignature;\n const response = await fetch(\n `${baseRpcUrl || DEFAULT_RPC_URL}/?chainId=${chainId}&projectId=${projectId}`,\n {\n method: \"POST\",\n body: JSON.stringify({\n id: generateJsonRpcId(),\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: address, data }, \"latest\"],\n }),\n },\n );\n const { result } = await response.json();\n if (!result) return false;\n\n // Remove right-padded zeros from result to get only the concrete recovered value.\n const recoveredValue = result.slice(0, eip1271MagicValue.length);\n return recoveredValue.toLowerCase() === eip1271MagicValue.toLowerCase();\n } catch (error: any) {\n // eslint-disable-next-line no-console\n console.error(\"isValidEip1271Signature: \", error);\n return false;\n }\n}\n\nfunction generateJsonRpcId() {\n return Date.now() + Math.floor(Math.random() * 1000);\n}\n","/* eslint-disable no-console */\nimport { AuthTypes } from \"@walletconnect/types\";\nimport { getCommonValuesInArrays } from \"./misc\";\nimport { verifySignature } from \"./signatures\";\nconst didPrefix = \"did:pkh:\";\nexport const getDidAddressSegments = (iss: string) => {\n return iss?.split(\":\");\n};\n\nexport const getDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return iss.includes(didPrefix) ? segments[3] : segments[1];\n }\n return undefined;\n};\n\nexport const getNamespacedDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments[2] + \":\" + segments[3];\n }\n return undefined;\n};\n\nexport const getDidAddress = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments.pop();\n }\n return undefined;\n};\n\nexport async function validateSignedCacao(params: { cacao: AuthTypes.Cacao; projectId?: string }) {\n const { cacao, projectId } = params;\n const { s: signature, p: payload } = cacao;\n const reconstructed = formatMessage(payload, payload.iss);\n const walletAddress = getDidAddress(payload.iss) as string;\n const isValid = await verifySignature(\n walletAddress,\n reconstructed,\n signature,\n getDidChainId(payload.iss) as string,\n projectId as string,\n );\n\n return isValid;\n}\n\nexport const formatMessage = (cacao: AuthTypes.FormatMessageParams, iss: string) => {\n const header = `${cacao.domain} wants you to sign in with your Ethereum account:`;\n const walletAddress = getDidAddress(iss);\n\n if (!cacao.aud && !cacao.uri) {\n throw new Error(\"Either `aud` or `uri` is required to construct the message\");\n }\n\n let statement = cacao.statement || undefined;\n const uri = `URI: ${cacao.aud || cacao.uri}`;\n const version = `Version: ${cacao.version}`;\n const chainId = `Chain ID: ${getDidChainId(iss)}`;\n const nonce = `Nonce: ${cacao.nonce}`;\n const issuedAt = `Issued At: ${cacao.iat}`;\n const resources = cacao.resources\n ? `Resources:${cacao.resources.map((resource) => `\\n- ${resource}`).join(\"\")}`\n : undefined;\n const recap = getRecapFromResources(cacao.resources);\n if (recap) {\n const decoded = decodeRecap(recap);\n statement = formatStatementFromRecap(statement, decoded);\n }\n\n const message = [\n header,\n walletAddress,\n ``,\n statement,\n ``,\n uri,\n version,\n chainId,\n nonce,\n issuedAt,\n resources,\n ]\n .filter((val) => val !== undefined && val !== null) // remove unnecessary empty lines\n .join(\"\\n\");\n\n return message;\n};\n\nexport function buildAuthObject(\n requestPayload: AuthTypes.PayloadParams,\n signature: AuthTypes.CacaoSignature,\n iss: string,\n) {\n if (!iss.includes(\"did:pkh:\")) {\n iss = `did:pkh:${iss}`;\n }\n\n const authObject: AuthTypes.Cacao = {\n h: {\n t: \"caip122\",\n },\n p: {\n iss,\n domain: requestPayload.domain,\n aud: requestPayload.aud,\n version: requestPayload.version,\n nonce: requestPayload.nonce,\n iat: requestPayload.iat,\n statement: requestPayload.statement,\n requestId: requestPayload.requestId,\n resources: requestPayload.resources,\n nbf: requestPayload.nbf,\n exp: requestPayload.exp,\n },\n s: signature,\n };\n return authObject;\n}\ntype PopulateAuthPayloadParams = {\n authPayload: AuthTypes.PayloadParams;\n chains: string[];\n methods: string[];\n};\nexport function populateAuthPayload(params: PopulateAuthPayloadParams): AuthTypes.PayloadParams {\n const { authPayload, chains, methods } = params;\n const statement = authPayload.statement || \"\";\n\n if (!chains?.length) return authPayload;\n\n const requested = authPayload.chains;\n const supported = chains;\n\n const supportedChains = getCommonValuesInArrays(requested, supported);\n if (!supportedChains?.length) {\n throw new Error(\"No supported chains\");\n }\n\n const requestedRecaps = getDecodedRecapFromResources(authPayload.resources);\n if (!requestedRecaps) return authPayload;\n\n isValidRecap(requestedRecaps);\n const resource = getRecapResource(requestedRecaps, \"eip155\");\n let updatedResources = authPayload?.resources || [];\n\n if (resource?.length) {\n const actions = getReCapActions(resource);\n const supportedActions = getCommonValuesInArrays(actions, methods);\n if (!supportedActions?.length) {\n throw new Error(\n `Supported methods don't satisfy the requested: ${JSON.stringify(\n actions,\n )}, supported: ${JSON.stringify(methods)}`,\n );\n }\n const formattedActions = assignAbilityToActions(\"request\", supportedActions as string[], {\n chains: supportedChains,\n });\n const updatedRecap = addResourceToRecap(requestedRecaps, \"eip155\", formattedActions);\n // remove recap from resources as we will add the updated one\n updatedResources = authPayload?.resources?.slice(0, -1) || [];\n updatedResources.push(encodeRecap(updatedRecap));\n }\n\n return {\n ...authPayload,\n statement: buildRecapStatement(statement, getRecapFromResources(updatedResources)),\n chains: supportedChains,\n resources: authPayload?.resources || updatedResources.length > 0 ? updatedResources : undefined,\n };\n}\n\nexport function getDecodedRecapFromResources(resources?: string[]) {\n const resource = getRecapFromResources(resources);\n if (!resource) return;\n if (!isRecap(resource)) return;\n return decodeRecap(resource);\n}\n\nexport function recapHasResource(recap: any, resource: string) {\n return recap?.att?.hasOwnProperty(resource);\n}\n\nexport function getRecapResource(recap: any, resource: string): any[] {\n return recap?.att?.[resource] ? Object.keys(recap?.att?.[resource]) : [];\n}\n\nexport function getRecapAbilitiesFromResource(actions: any[]) {\n return actions?.map((action) => Object.keys(action)) || [];\n}\n\nexport function getReCapActions(abilities: any[]) {\n return abilities?.map((ability) => ability.split(\"/\")?.[1]) || [];\n}\n\nexport function base64Encode(input: unknown): string {\n return Buffer.from(JSON.stringify(input)).toString(\"base64\");\n}\n\nexport function base64Decode(encodedString: string): string {\n return JSON.parse(Buffer.from(encodedString, \"base64\").toString(\"utf-8\"));\n}\n\nexport function isValidRecap(recap: any) {\n if (!recap) throw new Error(\"No recap provided, value is undefined\");\n if (!recap.att) throw new Error(\"No `att` property found\");\n const resources = Object.keys(recap.att);\n if (!resources?.length) throw new Error(\"No resources found in `att` property\");\n resources.forEach((resource) => {\n const resourceAbilities = recap.att[resource];\n if (Array.isArray(resourceAbilities))\n throw new Error(`Resource must be an object: ${resource}`);\n if (typeof resourceAbilities !== \"object\")\n throw new Error(`Resource must be an object: ${resource}`);\n if (!Object.keys(resourceAbilities).length)\n throw new Error(`Resource object is empty: ${resource}`);\n\n Object.keys(resourceAbilities).forEach((ability) => {\n const limits = resourceAbilities[ability];\n if (!Array.isArray(limits))\n throw new Error(`Ability limits ${ability} must be an array of objects, found: ${limits}`);\n if (!limits.length)\n throw new Error(`Value of ${ability} is empty array, must be an array with objects`);\n limits.forEach((limit) => {\n if (typeof limit !== \"object\")\n throw new Error(\n `Ability limits (${ability}) must be an array of objects, found: ${limit}`,\n );\n });\n });\n });\n}\n\nexport function createRecap(resource: string, ability: string, actions: string[], limits = {}) {\n actions?.sort((a, b) => a.localeCompare(b));\n return {\n att: { [resource]: assignAbilityToActions(ability, actions, limits) },\n };\n}\n\ntype RecapType = {\n att: {\n [key: string]: Record;\n };\n};\nexport function addResourceToRecap(recap: RecapType, resource: string, actions: unknown[]) {\n recap.att[resource] = {\n ...actions,\n };\n const keys = Object.keys(recap.att)?.sort((a, b) => a.localeCompare(b));\n const sorted = keys.reduce(\n (obj, key) => {\n obj.att[key] = recap.att[key];\n return obj;\n },\n { att: {} },\n );\n return sorted;\n}\n\nexport function assignAbilityToActions(ability: string, actions: string[], limits = {}) {\n // sort resources alphabetically\n actions = actions?.sort((a, b) => a.localeCompare(b));\n const abilities = actions.map((action) => {\n return {\n [`${ability}/${action}`]: [limits],\n };\n });\n return Object.assign({}, ...abilities);\n}\n\nexport function encodeRecap(recap: any) {\n isValidRecap(recap);\n // remove the padding from the base64 string as per recap spec\n return `urn:recap:${base64Encode(recap).replace(/=/g, \"\")}`;\n}\n\nexport function decodeRecap(recap: any): RecapType {\n // base64Decode adds padding internally so don't need to add it back if it was removed\n const decoded = base64Decode(recap.replace(\"urn:recap:\", \"\"));\n isValidRecap(decoded);\n return decoded as unknown as RecapType;\n}\n\nexport function createEncodedRecap(resource: string, ability: string, actions: string[]): string {\n const recap = createRecap(resource, ability, actions);\n return encodeRecap(recap);\n}\n\nexport function isRecap(resource: string) {\n return resource && resource.includes(\"urn:recap:\");\n}\n\nexport function mergeEncodedRecaps(recap1: string, recap2: string) {\n const decoded1 = decodeRecap(recap1);\n const decoded2 = decodeRecap(recap2);\n const merged = mergeRecaps(decoded1, decoded2);\n return encodeRecap(merged);\n}\n\nexport function mergeRecaps(recap1: RecapType, recap2: RecapType) {\n isValidRecap(recap1);\n isValidRecap(recap2);\n const keys = Object.keys(recap1.att)\n .concat(Object.keys(recap2.att))\n .sort((a, b) => a.localeCompare(b));\n const mergedRecap = { att: {} };\n keys.forEach((key) => {\n const actions = Object.keys(recap1.att?.[key] || {})\n .concat(Object.keys(recap2.att?.[key] || {}))\n .sort((a, b) => a.localeCompare(b));\n actions.forEach((action) => {\n mergedRecap.att[key] = {\n ...mergedRecap.att[key],\n [action]: recap1.att[key]?.[action] || recap2.att[key]?.[action],\n };\n });\n });\n return mergedRecap;\n}\n\nexport function formatStatementFromRecap(statement = \"\", recap: RecapType) {\n isValidRecap(recap);\n const base = \"I further authorize the stated URI to perform the following actions on my behalf: \";\n\n if (statement.includes(base)) return statement;\n\n const statementForRecap: string[] = [];\n let currentCounter = 0;\n Object.keys(recap.att).forEach((resource) => {\n const actions = Object.keys(recap.att[resource]).map((ability: any) => {\n return {\n ability: ability.split(\"/\")[0],\n action: ability.split(\"/\")[1],\n };\n });\n //\n actions.sort((a, b) => a.action.localeCompare(b.action));\n const uniqueAbilities = {};\n actions.forEach((action: any) => {\n if (!uniqueAbilities[action.ability]) {\n uniqueAbilities[action.ability] = [];\n }\n uniqueAbilities[action.ability].push(action.action);\n });\n const abilities = Object.keys(uniqueAbilities).map((ability) => {\n currentCounter++;\n return `(${currentCounter}) '${ability}': '${uniqueAbilities[ability].join(\n \"', '\",\n )}' for '${resource}'.`;\n });\n statementForRecap.push(abilities.join(\", \").replace(\".,\", \".\"));\n });\n\n const recapStatemet = statementForRecap.join(\" \");\n const recapStatement = `${base}${recapStatemet}`;\n // add a space if there is a statement\n return `${statement ? statement + \" \" : \"\"}${recapStatement}`;\n}\n\nexport function getMethodsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n // methods are only available for eip155 as per the current implementation\n const resource = decoded.att?.eip155;\n if (!resource) return [];\n return Object.keys(resource).map((ability: any) => ability.split(\"/\")[1]);\n}\n\nexport function getChainsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n const chains: string[] = [];\n\n Object.values(decoded.att).forEach((resource: any) => {\n Object.values(resource).forEach((ability: any) => {\n if (ability?.[0]?.chains) {\n chains.push(ability[0].chains);\n }\n });\n });\n return [...new Set(chains.flat())];\n}\n\nexport function buildRecapStatement(statement: string, recap: unknown) {\n if (!recap) return statement;\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n return formatStatementFromRecap(statement, decoded);\n}\n\nexport function getRecapFromResources(resources?: string[]) {\n if (!resources) return;\n // per spec, recap is always the last resource\n const resource = resources?.[resources.length - 1];\n return isRecap(resource) ? resource : undefined;\n}\n","import { ChaCha20Poly1305 } from \"@stablelib/chacha20poly1305\";\nimport { HKDF } from \"@stablelib/hkdf\";\nimport { randomBytes } from \"@stablelib/random\";\nimport { hash, SHA256 } from \"@stablelib/sha256\";\nimport * as x25519 from \"@stablelib/x25519\";\nimport { CryptoTypes } from \"@walletconnect/types\";\nimport { concat, fromString, toString } from \"uint8arrays\";\n\nexport const BASE10 = \"base10\";\nexport const BASE16 = \"base16\";\nexport const BASE64 = \"base64pad\";\nexport const UTF8 = \"utf8\";\n\nexport const TYPE_0 = 0;\nexport const TYPE_1 = 1;\n\nconst ZERO_INDEX = 0;\nconst TYPE_LENGTH = 1;\nconst IV_LENGTH = 12;\nconst KEY_LENGTH = 32;\n\nexport function generateKeyPair(): CryptoTypes.KeyPair {\n const keyPair = x25519.generateKeyPair();\n return {\n privateKey: toString(keyPair.secretKey, BASE16),\n publicKey: toString(keyPair.publicKey, BASE16),\n };\n}\n\nexport function generateRandomBytes32(): string {\n const random = randomBytes(KEY_LENGTH);\n return toString(random, BASE16);\n}\n\nexport function deriveSymKey(privateKeyA: string, publicKeyB: string): string {\n const sharedKey = x25519.sharedKey(\n fromString(privateKeyA, BASE16),\n fromString(publicKeyB, BASE16),\n true,\n );\n const hkdf = new HKDF(SHA256, sharedKey);\n const symKey = hkdf.expand(KEY_LENGTH);\n return toString(symKey, BASE16);\n}\n\nexport function hashKey(key: string): string {\n const result = hash(fromString(key, BASE16));\n return toString(result, BASE16);\n}\n\nexport function hashMessage(message: string): string {\n const result = hash(fromString(message, UTF8));\n return toString(result, BASE16);\n}\n\nexport function encodeTypeByte(type: number): Uint8Array {\n return fromString(`${type}`, BASE10);\n}\n\nexport function decodeTypeByte(byte: Uint8Array): number {\n return Number(toString(byte, BASE10));\n}\n\nexport function encrypt(params: CryptoTypes.EncryptParams): string {\n const type = encodeTypeByte(typeof params.type !== \"undefined\" ? params.type : TYPE_0);\n if (decodeTypeByte(type) === TYPE_1 && typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n const senderPublicKey =\n typeof params.senderPublicKey !== \"undefined\"\n ? fromString(params.senderPublicKey, BASE16)\n : undefined;\n\n const iv =\n typeof params.iv !== \"undefined\" ? fromString(params.iv, BASE16) : randomBytes(IV_LENGTH);\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const sealed = box.seal(iv, fromString(params.message, UTF8));\n return serialize({ type, sealed, iv, senderPublicKey });\n}\n\nexport function decrypt(params: CryptoTypes.DecryptParams): string {\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const { sealed, iv } = deserialize(params.encoded);\n const message = box.open(iv, sealed);\n if (message === null) throw new Error(\"Failed to decrypt\");\n return toString(message, UTF8);\n}\n\nexport function serialize(params: CryptoTypes.EncodingParams): string {\n if (decodeTypeByte(params.type) === TYPE_1) {\n if (typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n return toString(\n concat([params.type, params.senderPublicKey, params.iv, params.sealed]),\n BASE64,\n );\n }\n // default to type 0 envelope\n return toString(concat([params.type, params.iv, params.sealed]), BASE64);\n}\n\nexport function deserialize(encoded: string): CryptoTypes.EncodingParams {\n const bytes = fromString(encoded, BASE64);\n const type = bytes.slice(ZERO_INDEX, TYPE_LENGTH);\n const slice1 = TYPE_LENGTH;\n if (decodeTypeByte(type) === TYPE_1) {\n const slice2 = slice1 + KEY_LENGTH;\n const slice3 = slice2 + IV_LENGTH;\n const senderPublicKey = bytes.slice(slice1, slice2);\n const iv = bytes.slice(slice2, slice3);\n const sealed = bytes.slice(slice3);\n return { type, sealed, iv, senderPublicKey };\n }\n // default to type 0 envelope\n const slice2 = slice1 + IV_LENGTH;\n const iv = bytes.slice(slice1, slice2);\n const sealed = bytes.slice(slice2);\n return { type, sealed, iv };\n}\n\nexport function validateDecoding(\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n): CryptoTypes.EncodingValidation {\n const deserialized = deserialize(encoded);\n return validateEncoding({\n type: decodeTypeByte(deserialized.type),\n senderPublicKey:\n typeof deserialized.senderPublicKey !== \"undefined\"\n ? toString(deserialized.senderPublicKey, BASE16)\n : undefined,\n receiverPublicKey: opts?.receiverPublicKey,\n });\n}\n\nexport function validateEncoding(opts?: CryptoTypes.EncodeOptions): CryptoTypes.EncodingValidation {\n const type = opts?.type || TYPE_0;\n if (type === TYPE_1) {\n if (typeof opts?.senderPublicKey === \"undefined\") {\n throw new Error(\"missing sender public key\");\n }\n if (typeof opts?.receiverPublicKey === \"undefined\") {\n throw new Error(\"missing receiver public key\");\n }\n }\n return {\n type,\n senderPublicKey: opts?.senderPublicKey,\n receiverPublicKey: opts?.receiverPublicKey,\n };\n}\n\nexport function isTypeOneEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return (\n result.type === TYPE_1 &&\n typeof result.senderPublicKey === \"string\" &&\n typeof result.receiverPublicKey === \"string\"\n );\n}\n","import { RELAY_JSONRPC } from \"@walletconnect/relay-api\";\nimport { RelayerTypes } from \"@walletconnect/types\";\n\nexport const RELAYER_DEFAULT_PROTOCOL = \"irn\";\n\nexport function getRelayProtocolName(\n opts?: RelayerTypes.RequestOptions,\n): RelayerTypes.ProtocolOptions {\n return opts?.relay || { protocol: RELAYER_DEFAULT_PROTOCOL };\n}\n\nexport function getRelayProtocolApi(protocol: string) {\n const jsonrpc = RELAY_JSONRPC[protocol];\n if (typeof jsonrpc === \"undefined\") {\n throw new Error(`Relay Protocol not supported: ${protocol}`);\n }\n return jsonrpc;\n}\n","import * as qs from \"query-string\";\nimport { EngineTypes, RelayerTypes } from \"@walletconnect/types\";\n\n// -- uri -------------------------------------------------- //\n\nexport function parseRelayParams(params: any, delimiter = \"-\"): RelayerTypes.ProtocolOptions {\n const relay: any = {};\n const prefix = \"relay\" + delimiter;\n Object.keys(params).forEach((key) => {\n if (key.startsWith(prefix)) {\n const name = key.replace(prefix, \"\");\n const value = params[key];\n relay[name] = value;\n }\n });\n return relay;\n}\n\nexport function parseUri(str: string): EngineTypes.UriParameters {\n // remove android schema prefix\n str = str.includes(\"wc://\") ? str.replace(\"wc://\", \"\") : str;\n // remove ios schema prefix\n str = str.includes(\"wc:\") ? str.replace(\"wc:\", \"\") : str;\n const pathStart: number = str.indexOf(\":\");\n const pathEnd: number | undefined = str.indexOf(\"?\") !== -1 ? str.indexOf(\"?\") : undefined;\n const protocol: string = str.substring(0, pathStart);\n const path: string = str.substring(pathStart + 1, pathEnd);\n const requiredValues = path.split(\"@\");\n const queryString: string = typeof pathEnd !== \"undefined\" ? str.substring(pathEnd) : \"\";\n const queryParams = qs.parse(queryString);\n const methods =\n typeof queryParams.methods === \"string\" ? queryParams.methods.split(\",\") : undefined;\n const result = {\n protocol,\n topic: parseTopic(requiredValues[0]),\n version: parseInt(requiredValues[1], 10),\n symKey: queryParams.symKey as string,\n relay: parseRelayParams(queryParams),\n methods,\n expiryTimestamp: queryParams.expiryTimestamp\n ? parseInt(queryParams.expiryTimestamp as string, 10)\n : undefined,\n };\n return result;\n}\n\nexport function parseTopic(topic: string): string {\n return topic.startsWith(\"//\") ? topic.substring(2) : topic;\n}\n\nexport function formatRelayParams(relay: RelayerTypes.ProtocolOptions, delimiter = \"-\") {\n const prefix = \"relay\";\n const params: any = {};\n Object.keys(relay).forEach((key) => {\n const k = prefix + delimiter + key;\n if (relay[key]) {\n params[k] = relay[key];\n }\n });\n return params;\n}\n\nexport function formatUri(params: EngineTypes.UriParameters): string {\n return (\n `${params.protocol}:${params.topic}@${params.version}?` +\n qs.stringify({\n symKey: params.symKey,\n ...formatRelayParams(params.relay),\n expiryTimestamp: params.expiryTimestamp,\n ...(params.methods ? { methods: params.methods.join(\",\") } : {}),\n })\n );\n}\n","import { ProposalTypes, SessionTypes } from \"@walletconnect/types\";\nimport { mergeArrays } from \"./misc\";\nimport { isConformingNamespaces, isValidNamespaces, isValidObject } from \"./validators\";\n\nexport function getAccountsChains(accounts: SessionTypes.Namespace[\"accounts\"]) {\n const chains: string[] = [];\n accounts.forEach((account) => {\n const [chain, chainId] = account.split(\":\");\n chains.push(`${chain}:${chainId}`);\n });\n\n return chains;\n}\n\nexport function getNamespacesChains(namespaces: SessionTypes.Namespaces) {\n const chains: string[] = [];\n Object.values(namespaces).forEach((namespace) => {\n chains.push(...getAccountsChains(namespace.accounts));\n });\n\n return chains;\n}\n\nexport function getNamespacesMethodsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const methods: SessionTypes.Namespace[\"methods\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) methods.push(...namespace.methods);\n });\n\n return methods;\n}\n\nexport function getNamespacesEventsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const events: SessionTypes.Namespace[\"events\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) events.push(...namespace.events);\n });\n\n return events;\n}\n\nexport function getRequiredNamespacesFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n caller: string,\n): ProposalTypes.RequiredNamespaces {\n const validNamespacesError = isValidNamespaces(namespaces, caller);\n if (validNamespacesError) throw new Error(validNamespacesError.message);\n\n const required = {};\n for (const [namespace, values] of Object.entries(namespaces)) {\n required[namespace] = {\n methods: values.methods,\n events: values.events,\n chains: values.accounts.map((account) => `${account.split(\":\")[0]}:${account.split(\":\")[1]}`),\n };\n }\n return required;\n}\n\nexport type BuildApprovedNamespacesParams = {\n proposal: ProposalTypes.Struct;\n supportedNamespaces: Record<\n string,\n { chains: string[]; methods: string[]; events: string[]; accounts: string[] }\n >;\n};\n\n/**\n * util designed for Wallets that builds namespaces structure by provided supported chains, methods, events & accounts.\n * It takes required & optional namespaces provided in the session proposal\n * along with the supported chains/methods/events/accounts by the wallet and returns a structured namespaces object\n * @param {BuildApprovedNamespacesParams} params\n * @returns {SessionTypes.Namespaces}\n */\nexport function buildApprovedNamespaces(\n params: BuildApprovedNamespacesParams,\n): SessionTypes.Namespaces {\n const {\n proposal: { requiredNamespaces, optionalNamespaces = {} },\n supportedNamespaces,\n } = params;\n const normalizedRequired = normalizeNamespaces(requiredNamespaces);\n const normalizedOptional = normalizeNamespaces(optionalNamespaces);\n\n // build approved namespaces\n const namespaces = {};\n Object.keys(supportedNamespaces).forEach((namespace) => {\n const supportedChains = supportedNamespaces[namespace].chains;\n const supportedMethods = supportedNamespaces[namespace].methods;\n const supportedEvents = supportedNamespaces[namespace].events;\n const supportedAccounts = supportedNamespaces[namespace].accounts;\n\n supportedChains.forEach((chain) => {\n if (!supportedAccounts.some((account) => account.includes(chain))) {\n throw new Error(`No accounts provided for chain ${chain} in namespace ${namespace}`);\n }\n });\n\n namespaces[namespace] = {\n chains: supportedChains,\n methods: supportedMethods,\n events: supportedEvents,\n accounts: supportedAccounts,\n };\n });\n\n // verify all required namespaces are supported\n const err = isConformingNamespaces(requiredNamespaces, namespaces, \"approve()\");\n if (err) throw new Error(err.message);\n\n const approvedNamespaces = {};\n\n // if both required & optional namespaces are empty, return all supported namespaces by the wallet\n if (!Object.keys(requiredNamespaces).length && !Object.keys(optionalNamespaces).length)\n return namespaces;\n\n // assign accounts for the required namespaces\n Object.keys(normalizedRequired).forEach((requiredNamespace) => {\n const chains = supportedNamespaces[requiredNamespace].chains.filter((chain) =>\n normalizedRequired[requiredNamespace]?.chains?.includes(chain),\n );\n const methods = supportedNamespaces[requiredNamespace].methods.filter((method) =>\n normalizedRequired[requiredNamespace]?.methods?.includes(method),\n );\n const events = supportedNamespaces[requiredNamespace].events.filter((event) =>\n normalizedRequired[requiredNamespace]?.events?.includes(event),\n );\n\n const accounts = chains\n .map((chain: string) =>\n supportedNamespaces[requiredNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[requiredNamespace] = {\n chains,\n methods,\n events,\n accounts,\n };\n });\n\n // add optional namespaces\n Object.keys(normalizedOptional).forEach((optionalNamespace) => {\n if (!supportedNamespaces[optionalNamespace]) return;\n\n const chainsToAdd = normalizedOptional[optionalNamespace]?.chains?.filter((chain) =>\n supportedNamespaces[optionalNamespace].chains.includes(chain),\n );\n const methodsToAdd = supportedNamespaces[optionalNamespace].methods.filter((method) =>\n normalizedOptional[optionalNamespace]?.methods?.includes(method),\n );\n const eventsToAdd = supportedNamespaces[optionalNamespace].events.filter((event) =>\n normalizedOptional[optionalNamespace]?.events?.includes(event),\n );\n\n const accountsToAdd = chainsToAdd\n ?.map((chain: string) =>\n supportedNamespaces[optionalNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[optionalNamespace] = {\n chains: mergeArrays(approvedNamespaces[optionalNamespace]?.chains, chainsToAdd),\n methods: mergeArrays(approvedNamespaces[optionalNamespace]?.methods, methodsToAdd),\n events: mergeArrays(approvedNamespaces[optionalNamespace]?.events, eventsToAdd),\n accounts: mergeArrays(approvedNamespaces[optionalNamespace]?.accounts, accountsToAdd),\n };\n });\n\n return approvedNamespaces;\n}\n\nexport function isCaipNamespace(namespace: string): boolean {\n return namespace.includes(\":\");\n}\n\nexport function parseNamespaceKey(namespace: string) {\n return isCaipNamespace(namespace) ? namespace.split(\":\")[0] : namespace;\n}\n\n/**\n * Converts\n * ```\n * {\n * \"eip155:1\": {...},\n * \"eip155:2\": {...},\n * }\n * ```\n * into\n * ```\n * {\n * \"eip155\": {\n * chains: [\"eip155:1\", \"eip155:2\"],\n * ...\n * }\n * }\n *```\n */\nexport function normalizeNamespaces(\n namespaces: ProposalTypes.RequiredNamespaces,\n): ProposalTypes.RequiredNamespaces {\n const normalizedNamespaces = {} as ProposalTypes.RequiredNamespaces;\n if (!isValidObject(namespaces)) return normalizedNamespaces;\n for (const [key, values] of Object.entries(namespaces)) {\n const chains = isCaipNamespace(key) ? [key] : values.chains;\n const methods = values.methods || [];\n const events = values.events || [];\n const normalizedKey = parseNamespaceKey(key);\n normalizedNamespaces[normalizedKey] = {\n ...normalizedNamespaces[normalizedKey],\n chains: mergeArrays(chains, normalizedNamespaces[normalizedKey]?.chains),\n methods: mergeArrays(methods, normalizedNamespaces[normalizedKey]?.methods),\n events: mergeArrays(events, normalizedNamespaces[normalizedKey]?.events),\n };\n }\n return normalizedNamespaces;\n}\n\nexport function getNamespacesFromAccounts(accounts: string[]) {\n const namespaces = {};\n accounts?.forEach((account) => {\n const [namespace, chainId] = account.split(\":\");\n if (!namespaces[namespace]) {\n namespaces[namespace] = {\n accounts: [],\n chains: [],\n events: [],\n };\n }\n namespaces[namespace].accounts.push(account);\n namespaces[namespace].chains.push(`${namespace}:${chainId}`);\n });\n\n return namespaces;\n}\n\nexport function buildNamespacesFromAuth(methods: string[], accounts: string[]) {\n accounts = accounts.map((account) => account.replace(\"did:pkh:\", \"\"));\n\n const namespaces = getNamespacesFromAccounts(accounts);\n\n for (const [_, values] of Object.entries(namespaces) as [string, SessionTypes.Namespace][]) {\n if (!values.methods) {\n values.methods = methods;\n } else {\n values.methods = mergeArrays(values.methods, methods);\n }\n values.events = [\"chainChanged\", \"accountsChanged\"];\n }\n return namespaces;\n}\n","/**\n * Types\n */\nexport type SdkErrorKey = keyof typeof SDK_ERRORS;\nexport type InternalErrorKey = keyof typeof INTERNAL_ERRORS;\n\n/**\n * Constants\n */\nexport const SDK_ERRORS = {\n /* ----- INVALID (1xxx) ----- */\n INVALID_METHOD: {\n message: \"Invalid method.\",\n code: 1001,\n },\n INVALID_EVENT: {\n message: \"Invalid event.\",\n code: 1002,\n },\n INVALID_UPDATE_REQUEST: {\n message: \"Invalid update request.\",\n code: 1003,\n },\n INVALID_EXTEND_REQUEST: {\n message: \"Invalid extend request.\",\n code: 1004,\n },\n INVALID_SESSION_SETTLE_REQUEST: {\n message: \"Invalid session settle request.\",\n code: 1005,\n },\n /* ----- UNAUTHORIZED (3xxx) ----- */\n UNAUTHORIZED_METHOD: {\n message: \"Unauthorized method.\",\n code: 3001,\n },\n UNAUTHORIZED_EVENT: {\n message: \"Unauthorized event.\",\n code: 3002,\n },\n UNAUTHORIZED_UPDATE_REQUEST: {\n message: \"Unauthorized update request.\",\n code: 3003,\n },\n UNAUTHORIZED_EXTEND_REQUEST: {\n message: \"Unauthorized extend request.\",\n code: 3004,\n },\n /* ----- REJECTED (5xxx) ----- */\n USER_REJECTED: {\n message: \"User rejected.\",\n code: 5000,\n },\n USER_REJECTED_CHAINS: {\n message: \"User rejected chains.\",\n code: 5001,\n },\n USER_REJECTED_METHODS: {\n message: \"User rejected methods.\",\n code: 5002,\n },\n USER_REJECTED_EVENTS: {\n message: \"User rejected events.\",\n code: 5003,\n },\n UNSUPPORTED_CHAINS: {\n message: \"Unsupported chains.\",\n code: 5100,\n },\n UNSUPPORTED_METHODS: {\n message: \"Unsupported methods.\",\n code: 5101,\n },\n UNSUPPORTED_EVENTS: {\n message: \"Unsupported events.\",\n code: 5102,\n },\n UNSUPPORTED_ACCOUNTS: {\n message: \"Unsupported accounts.\",\n code: 5103,\n },\n UNSUPPORTED_NAMESPACE_KEY: {\n message: \"Unsupported namespace key.\",\n code: 5104,\n },\n /* ----- REASON (6xxx) ----- */\n USER_DISCONNECTED: {\n message: \"User disconnected.\",\n code: 6000,\n },\n /* ----- FAILURE (7xxx) ----- */\n SESSION_SETTLEMENT_FAILED: {\n message: \"Session settlement failed.\",\n code: 7000,\n },\n /* ----- PAIRING (10xxx) ----- */\n WC_METHOD_UNSUPPORTED: {\n message: \"Unsupported wc_ method.\",\n code: 10001,\n },\n};\n\nexport const INTERNAL_ERRORS = {\n NOT_INITIALIZED: {\n message: \"Not initialized.\",\n code: 1,\n },\n NO_MATCHING_KEY: {\n message: \"No matching key.\",\n code: 2,\n },\n RESTORE_WILL_OVERRIDE: {\n message: \"Restore will override.\",\n code: 3,\n },\n RESUBSCRIBED: {\n message: \"Resubscribed.\",\n code: 4,\n },\n MISSING_OR_INVALID: {\n message: \"Missing or invalid.\",\n code: 5,\n },\n EXPIRED: {\n message: \"Expired.\",\n code: 6,\n },\n UNKNOWN_TYPE: {\n message: \"Unknown type.\",\n code: 7,\n },\n MISMATCHED_TOPIC: {\n message: \"Mismatched topic.\",\n code: 8,\n },\n NON_CONFORMING_NAMESPACES: {\n message: \"Non conforming namespaces.\",\n code: 9,\n },\n};\n\n/**\n * Utilities\n */\nexport function getInternalError(key: InternalErrorKey, context?: string | number) {\n const { message, code } = INTERNAL_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n\nexport function getSdkError(key: SdkErrorKey, context?: string | number) {\n const { message, code } = SDK_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n","import { SessionTypes, ProposalTypes, RelayerTypes, EngineTypes } from \"@walletconnect/types\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport {\n getNamespacesChains,\n getNamespacesMethodsForChainId,\n getNamespacesEventsForChainId,\n getAccountsChains,\n} from \"./namespaces\";\nimport { getSdkError, getInternalError } from \"./errors\";\nimport { hasOverlap } from \"./misc\";\nimport { getChainsFromNamespace } from \"./caip\";\n\nexport type ErrorObject = { message: string; code: number } | null;\n\n// -- types validation ----------------------------------------------------- //\n\nexport function isValidArray(arr: any, itemCondition?: (item: any) => boolean) {\n if (Array.isArray(arr)) {\n if (typeof itemCondition !== \"undefined\" && arr.length) {\n return arr.every(itemCondition);\n } else {\n return true;\n }\n }\n return false;\n}\n\nexport function isValidObject(obj: any) {\n return Object.getPrototypeOf(obj) === Object.prototype && Object.keys(obj).length;\n}\n\nexport function isUndefined(input: any): input is undefined {\n return typeof input === \"undefined\";\n}\n\nexport function isValidString(input: any, optional: boolean): input is string {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"string\" && Boolean(input.trim().length);\n}\n\nexport function isValidNumber(input: any, optional: boolean) {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"number\" && !isNaN(input);\n}\n\n// -- protocol validation -------------------------------------------------- //\n\nexport function isSessionCompatible(session: SessionTypes.Struct, params: EngineTypes.FindParams) {\n const { requiredNamespaces } = params;\n const sessionKeys = Object.keys(session.namespaces);\n const paramsKeys = Object.keys(requiredNamespaces);\n let compatible = true;\n\n if (!hasOverlap(paramsKeys, sessionKeys)) return false;\n\n sessionKeys.forEach((key) => {\n const { accounts, methods, events } = session.namespaces[key];\n const chains = getAccountsChains(accounts);\n const requiredNamespace = requiredNamespaces[key];\n if (\n !hasOverlap(getChainsFromNamespace(key, requiredNamespace), chains) ||\n !hasOverlap(requiredNamespace.methods, methods) ||\n !hasOverlap(requiredNamespace.events, events)\n ) {\n compatible = false;\n }\n });\n\n return compatible;\n}\n\nexport function isValidChainId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n return split.length === 2;\n }\n return false;\n}\n\nexport function isValidAccountId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n if (split.length === 3) {\n const chainId = split[0] + \":\" + split[1];\n return !!split[2] && isValidChainId(chainId);\n }\n }\n return false;\n}\n\nexport function isValidUrl(value: any) {\n if (isValidString(value, false)) {\n try {\n const url = new URL(value);\n return typeof url !== \"undefined\";\n } catch (e) {\n return false;\n }\n }\n return false;\n}\n\nexport function isProposalStruct(input: any): input is ProposalTypes.Struct {\n return input?.proposer?.publicKey;\n}\n\nexport function isSessionStruct(input: any): input is SessionTypes.Struct {\n return input?.topic;\n}\n\nexport function isValidController(input: any, method: string) {\n let error: ErrorObject = null;\n if (!isValidString(input?.publicKey, false)) {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method} controller public key should be a string`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceMethodsOrEvents(input: any): input is string {\n let valid = true;\n if (isValidArray(input)) {\n if (input.length) {\n valid = input.every((item: any) => isValidString(item, false));\n }\n } else {\n valid = false;\n }\n\n return valid;\n}\n\nexport function isValidChains(key: string, chains: any, context: string) {\n let error: ErrorObject = null;\n\n if (isValidArray(chains) && chains.length) {\n chains.forEach((chain: any) => {\n if (error) return;\n if (!isValidChainId(chain)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chain ${chain} should be a string and conform to \"namespace:chainId\" format`,\n );\n }\n });\n } else if (!isValidChainId(key)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chains must be defined as \"namespace:chainId\" e.g. \"eip155:1\": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: [\"eip155:1\", \"eip155:5\"] }`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceChains(namespaces: any, method: string, type: string) {\n let error: ErrorObject = null;\n Object.entries(namespaces).forEach(([key, namespace]: [string, any]) => {\n if (error) return;\n const validChainsError = isValidChains(\n key,\n getChainsFromNamespace(key, namespace),\n `${method} ${type}`,\n );\n if (validChainsError) {\n error = validChainsError;\n }\n });\n\n return error;\n}\n\nexport function isValidAccounts(accounts: any, context: string) {\n let error: ErrorObject = null;\n if (isValidArray(accounts)) {\n accounts.forEach((account: any) => {\n if (error) return;\n if (!isValidAccountId(account)) {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, account ${account} should be a string and conform to \"namespace:chainId:address\" format`,\n );\n }\n });\n } else {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, accounts should be an array of strings conforming to \"namespace:chainId:address\" format`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceAccounts(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validAccountsError = isValidAccounts(namespace?.accounts, `${method} namespace`);\n if (validAccountsError) {\n error = validAccountsError;\n }\n });\n\n return error;\n}\n\nexport function isValidActions(namespace: any, context: string) {\n let error: ErrorObject = null;\n if (!isValidNamespaceMethodsOrEvents(namespace?.methods)) {\n error = getSdkError(\n \"UNSUPPORTED_METHODS\",\n `${context}, methods should be an array of strings or empty array for no methods`,\n );\n } else if (!isValidNamespaceMethodsOrEvents(namespace?.events)) {\n error = getSdkError(\n \"UNSUPPORTED_EVENTS\",\n `${context}, events should be an array of strings or empty array for no events`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceActions(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validActionsError = isValidActions(namespace, `${method}, namespace`);\n if (validActionsError) {\n error = validActionsError;\n }\n });\n\n return error;\n}\n\nexport function isValidRequiredNamespaces(input: any, method: string, type: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validChainsError = isValidNamespaceChains(input, method, type);\n if (validChainsError) {\n error = validChainsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, ${type} should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaces(input: any, method: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validAccountsError = isValidNamespaceAccounts(input, method);\n if (validAccountsError) {\n error = validAccountsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, namespaces should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidRelay(input: any): input is RelayerTypes.ProtocolOptions {\n return isValidString(input.protocol, true);\n}\n\nexport function isValidRelays(\n input: any,\n optional: boolean,\n): input is RelayerTypes.ProtocolOptions[] {\n let valid = false;\n\n if (optional && !input) valid = true;\n else if (input && isValidArray(input) && input.length) {\n input.forEach((relay: RelayerTypes.ProtocolOptions) => {\n valid = isValidRelay(relay);\n });\n }\n\n return valid;\n}\n\nexport function isValidId(input: any) {\n return typeof input === \"number\";\n}\n\nexport function isValidParams(input: any) {\n return typeof input !== \"undefined\" && typeof input !== null;\n}\n\nexport function isValidErrorReason(input: any): input is ErrorResponse {\n if (!input) return false;\n if (typeof input !== \"object\") return false;\n if (!input.code || !isValidNumber(input.code, false)) return false;\n if (!input.message || !isValidString(input.message, false)) return false;\n\n return true;\n}\n\nexport function isValidRequest(request: any) {\n if (isUndefined(request)) return false;\n if (!isValidString(request.method, false)) return false;\n return true;\n}\n\nexport function isValidResponse(response: any) {\n if (isUndefined(response)) return false;\n if (isUndefined(response.result) && isUndefined(response.error)) return false;\n if (!isValidNumber(response.id, false)) return false;\n if (!isValidString(response.jsonrpc, false)) return false;\n return true;\n}\n\nexport function isValidEvent(event: any) {\n if (isUndefined(event)) return false;\n if (!isValidString(event.name, false)) return false;\n return true;\n}\n\nexport function isValidNamespacesChainId(namespaces: SessionTypes.Namespaces, chainId: string) {\n if (!isValidChainId(chainId)) return false;\n const chains = getNamespacesChains(namespaces);\n if (!chains.includes(chainId)) return false;\n\n return true;\n}\n\nexport function isValidNamespacesRequest(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n method: string,\n) {\n if (!isValidString(method, false)) return false;\n const methods = getNamespacesMethodsForChainId(namespaces, chainId);\n return methods.includes(method);\n}\n\nexport function isValidNamespacesEvent(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n eventName: string,\n) {\n if (!isValidString(eventName, false)) return false;\n const events = getNamespacesEventsForChainId(namespaces, chainId);\n return events.includes(eventName);\n}\n\nexport function isConformingNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n namespaces: SessionTypes.Namespaces,\n context: string,\n) {\n let error: ErrorObject = null;\n\n const parsedRequired = parseNamespaces(requiredNamespaces);\n const parsedApproved = parseApprovedNamespaces(namespaces);\n const requiredChains = Object.keys(parsedRequired);\n const approvedChains = Object.keys(parsedApproved);\n\n const uniqueRequired = filterDuplicateNamespaces(Object.keys(requiredNamespaces));\n const uniqueApproved = filterDuplicateNamespaces(Object.keys(namespaces));\n const missingRequiredNamespaces = uniqueRequired.filter(\n (namespace) => !uniqueApproved.includes(namespace),\n );\n\n if (missingRequiredNamespaces.length) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces keys don't satisfy requiredNamespaces.\n Required: ${missingRequiredNamespaces.toString()}\n Received: ${Object.keys(namespaces).toString()}`,\n );\n }\n\n if (!hasOverlap(requiredChains, approvedChains)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces chains don't satisfy required namespaces.\n Required: ${requiredChains.toString()}\n Approved: ${approvedChains.toString()}`,\n );\n }\n\n // validate inline defined chains with approved accounts\n Object.keys(namespaces).forEach((chain) => {\n if (!chain.includes(\":\")) return;\n if (error) return;\n const chains = getAccountsChains(namespaces[chain].accounts);\n if (!chains.includes(chain)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces accounts don't satisfy namespace accounts for ${chain}\n Required: ${chain}\n Approved: ${chains.toString()}`,\n );\n }\n });\n\n requiredChains.forEach((chain) => {\n if (error) return;\n\n if (!hasOverlap(parsedRequired[chain].methods, parsedApproved[chain].methods)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces methods don't satisfy namespace methods for ${chain}`,\n );\n } else if (!hasOverlap(parsedRequired[chain].events, parsedApproved[chain].events)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces events don't satisfy namespace events for ${chain}`,\n );\n }\n });\n\n return error;\n}\n\nfunction parseNamespaces(namespaces: ProposalTypes.RequiredNamespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n // e.g. `eip155:1`\n const isInlineChainDefinition = key.includes(\":\");\n\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n namespaces[key].chains?.forEach((chain) => {\n parsed[chain] = {\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nfunction filterDuplicateNamespaces(namespaces: string[]) {\n return [\n ...new Set(\n namespaces.map((namespace) =>\n namespace.includes(\":\") ? namespace.split(\":\")[0] : namespace,\n ),\n ),\n ];\n}\n\nfunction parseApprovedNamespaces(namespaces: SessionTypes.Namespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n const isInlineChainDefinition = key.includes(\":\");\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n const chains = getAccountsChains(namespaces[key].accounts);\n chains?.forEach((chain) => {\n parsed[chain] = {\n accounts: namespaces[key].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nexport function isValidRequestExpiry(expiry: number, boundaries: { min: number; max: number }) {\n return isValidNumber(expiry, false) && expiry <= boundaries.max && expiry >= boundaries.min;\n}\n","import { getEnvironment, ENV_MAP, isBrowser, isReactNative } from \"./misc\";\n\nexport function isOnline(): Promise {\n const env = getEnvironment();\n return new Promise((resolve) => {\n switch (env) {\n case ENV_MAP.browser:\n resolve(getBrowserOnlineStatus());\n break;\n case ENV_MAP.reactNative:\n resolve(getReactNativeOnlineStatus());\n break;\n case ENV_MAP.node:\n resolve(getNodeOnlineStatus());\n break;\n default:\n resolve(true);\n }\n });\n}\n\nexport function getBrowserOnlineStatus() {\n return isBrowser() && navigator?.onLine;\n}\n\nexport async function getReactNativeOnlineStatus(): Promise {\n // global.NetInfo is set in react-native-compat\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n const state = await (global as any)?.NetInfo.fetch();\n return state?.isConnected;\n }\n // fallback to true if global.NetInfo is undefined, meaning an older version of react-native-compat is used\n return true;\n}\n\nexport function getNodeOnlineStatus() {\n /**\n * TODO: need to implement\n */\n return true;\n}\n\nexport function subscribeToNetworkChange(callbackHandler: (connected: boolean) => void) {\n const env = getEnvironment();\n switch (env) {\n case ENV_MAP.browser:\n subscribeToBrowserNetworkChange(callbackHandler);\n break;\n case ENV_MAP.reactNative:\n subscribeToReactNativeNetworkChange(callbackHandler);\n break;\n case ENV_MAP.node:\n // wip: need to implement\n break;\n default:\n break;\n }\n}\n\nexport function subscribeToBrowserNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (!isReactNative() && isBrowser()) {\n window.addEventListener(\"online\", () => callbackHandler(true));\n window.addEventListener(\"offline\", () => callbackHandler(false));\n }\n}\n\n// global.NetInfo is set in react-native-compat\nexport function subscribeToReactNativeNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n (global as any)?.NetInfo.addEventListener((state: any) => callbackHandler(state?.isConnected));\n }\n}\n","const memoryStore = {};\n\nexport abstract class MemoryStore {\n static get(key: string) {\n return memoryStore[key] as T | undefined;\n }\n\n static set(key: string, value: unknown) {\n memoryStore[key] = value;\n }\n\n static delete(key: string) {\n delete memoryStore[key];\n }\n}\n"],"names":["CAIP_DELIMITER","chain","namespace","reference","params","account","address","array","parser","unique","str","value","accounts","namespaces","keys","key","ns","chains","requiredNamespaces","namespaceProps","h","l","E","g","u","getDocument","getNavigator","_a","e","queryString","newQueryParams","queryParams","qs","__spreadValues","getWindowMetadata","protocol","version","env","metadata","getLocation","OS","Version","info","detect","os","sdkVersion","id","relayUrl","auth","projectId","useOnCloseEvent","bundleId","splitUrl","ua","url","domain","obj","type","context","depth","a","b","x","arr","map","cb","res","word","c","w","expiry","FIVE_MINUTES","expireErrorMessage","timeout","toMiliseconds","cacheResolve","cacheReject","cacheTimeout","promiseResolve","promiseReject","promise","resolve","reject","result","error","topic","target","parsed","ttl","now","fromMiliseconds","event","wcDeepLink","json","deeplink","link","err","store","deepLink","arr1","arr2","global","logger","this","_BN","_constructorGuard","throwFault","toHex","Zero","r","hashMessage","minimalisticAssert","assert","inherits_browserModule","require$$0","require$$1","utils","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","BlockHash","common","ft_1","ch32","maj32","s0_256","s1_256","g0_256","g1_256","shaCommon","require$$2","require$$3","SHA256","SHA512","require$$4","BN","EC","DEFAULT_RPC_URL","reconstructedMessage","cacaoSignature","chainId","baseRpcUrl","message","signature","recoverAddress","eip1271MagicValue","dynamicTypeOffset","dynamicTypeLength","nonPrefixedSignature","nonPrefixedHashedMessage","data","response","generateJsonRpcId","j","A","y","$","m","didPrefix","iss","segments","cacao","payload","reconstructed","walletAddress","verifySignature","header","statement","uri","nonce","issuedAt","resources","resource","recap","decoded","val","requestPayload","authPayload","methods","requested","supportedChains","getCommonValuesInArrays","requestedRecaps","updatedResources","actions","supportedActions","formattedActions","updatedRecap","__spreadProps","_b","action","abilities","ability","input","encodedString","resourceAbilities","limits","limit","recap1","recap2","decoded1","decoded2","merged","mergedRecap","base","statementForRecap","currentCounter","uniqueAbilities","recapStatemet","recapStatement","ZERO_INDEX","TYPE_LENGTH","IV_LENGTH","KEY_LENGTH","keyPair","x25519","toString","random","randomBytes","privateKeyA","publicKeyB","sharedKey","fromString","symKey","HKDF","hash","byte","senderPublicKey","iv","sealed","ChaCha20Poly1305","box","concat","encoded","bytes","slice1","slice2","slice3","opts","deserialized","jsonrpc","RELAY_JSONRPC","delimiter","relay","prefix","name","pathStart","pathEnd","requiredValues","k","events","caller","validNamespacesError","isValidNamespaces","required","values","optionalNamespaces","supportedNamespaces","normalizedRequired","normalizedOptional","supportedMethods","supportedEvents","supportedAccounts","isConformingNamespaces","approvedNamespaces","requiredNamespace","method","optionalNamespace","_c","_d","_e","_f","chainsToAdd","methodsToAdd","eventsToAdd","accountsToAdd","mergeArrays","normalizedNamespaces","isValidObject","normalizedKey","_","code","itemCondition","optional","session","sessionKeys","paramsKeys","compatible","hasOverlap","getAccountsChains","getChainsFromNamespace","split","getInternalError","valid","item","getSdkError","validChainsError","validAccountsError","validActionsError","request","getNamespacesChains","getNamespacesMethodsForChainId","eventName","getNamespacesEventsForChainId","parsedRequired","parseNamespaces","parsedApproved","parseApprovedNamespaces","requiredChains","approvedChains","uniqueRequired","filterDuplicateNamespaces","uniqueApproved","missingRequiredNamespaces","boundaries","getEnvironment","ENV_MAP","isBrowser","isReactNative","state","callbackHandler","memoryStore"],"mappings":"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AE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACrF,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;OAC1B,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAChD;AACA,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB;AACA,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C;AACA,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM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AI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACx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AChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD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AE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACtD,CAAC,CAAC;AACF;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACtD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,CAAC,CAAC;AACF;AACA,IAAI,CAAC,GAAG;AACR,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAA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"} +\ No newline at end of file ++{"version":3,"file":"index.cjs.js","sources":["../src/caip.js","../src/misc.js","../../../node_modules/js-sha3/src/sha3.js","../../../node_modules/@ethersproject/logger/lib.esm/_version.js","../../../node_modules/@ethersproject/logger/lib.esm/index.js","../../../node_modules/@ethersproject/bytes/lib.esm/_version.js","../../../node_modules/@ethersproject/bytes/lib.esm/index.js","../../../node_modules/@ethersproject/keccak256/lib.esm/index.js","../../../node_modules/bn.js/lib/bn.js","../../../node_modules/@ethersproject/bignumber/lib.esm/_version.js","../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js","../../../node_modules/@ethersproject/bignumber/lib.esm/fixednumber.js","../../../node_modules/@ethersproject/strings/lib.esm/_version.js","../../../node_modules/@ethersproject/strings/lib.esm/utf8.js","../../../node_modules/@ethersproject/strings/lib.esm/idna.js","../../../node_modules/@ethersproject/hash/lib.esm/_version.js","../../../node_modules/@ethersproject/base64/lib.esm/base64.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js","../../../node_modules/@ethersproject/hash/lib.esm/namehash.js","../../../node_modules/@ethersproject/hash/lib.esm/message.js","../../../node_modules/@ethersproject/rlp/lib.esm/_version.js","../../../node_modules/@ethersproject/rlp/lib.esm/index.js","../../../node_modules/@ethersproject/address/lib.esm/_version.js","../../../node_modules/@ethersproject/address/lib.esm/index.js","../../../node_modules/@ethersproject/properties/lib.esm/_version.js","../../../node_modules/@ethersproject/properties/lib.esm/index.js","../../../node_modules/@ethersproject/hash/lib.esm/typed-data.js","../../../node_modules/minimalistic-assert/index.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/hash.js/lib/hash/utils.js","../../../node_modules/hash.js/lib/hash/common.js","../../../node_modules/hash.js/lib/hash/sha/common.js","../../../node_modules/hash.js/lib/hash/sha/1.js","../../../node_modules/hash.js/lib/hash/sha/256.js","../../../node_modules/hash.js/lib/hash/sha/224.js","../../../node_modules/hash.js/lib/hash/sha/512.js","../../../node_modules/hash.js/lib/hash/sha/384.js","../../../node_modules/hash.js/lib/hash/sha.js","../../../node_modules/hash.js/lib/hash/ripemd.js","../../../node_modules/hash.js/lib/hash/hmac.js","../../../node_modules/hash.js/lib/hash.js","../../../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../../../node_modules/@ethersproject/signing-key/lib.esm/_version.js","../../../node_modules/@ethersproject/signing-key/lib.esm/index.js","../../../node_modules/@ethersproject/transactions/lib.esm/_version.js","../../../node_modules/@ethersproject/transactions/lib.esm/index.js","../src/signatures.js","../src/cacao.js","../src/crypto.js","../src/relay.js","../src/uri.js","../src/namespaces.js","../src/errors.js","../src/validators.js","../src/network.js","../src/memoryStore.js"],"sourcesContent":["const CAIP_DELIMITER = \":\";\nexport function parseChainId(chain) {\n const [namespace, reference] = chain.split(CAIP_DELIMITER);\n return { namespace, reference };\n}\nexport function formatChainId(params) {\n const { namespace, reference } = params;\n return [namespace, reference].join(CAIP_DELIMITER);\n}\nexport function parseAccountId(account) {\n const [namespace, reference, address] = account.split(CAIP_DELIMITER);\n return { namespace, reference, address };\n}\nexport function formatAccountId(params) {\n const { namespace, reference, address } = params;\n return [namespace, reference, address].join(CAIP_DELIMITER);\n}\nexport function getUniqueValues(array, parser) {\n const unique = [];\n array.forEach((str) => {\n const value = parser(str);\n if (!unique.includes(value))\n unique.push(value);\n });\n return unique;\n}\nexport function getAddressFromAccount(account) {\n const { address } = parseAccountId(account);\n return address;\n}\nexport function getChainFromAccount(account) {\n const { namespace, reference } = parseAccountId(account);\n const chain = formatChainId({ namespace, reference });\n return chain;\n}\nexport function formatAccountWithChain(address, chain) {\n const { namespace, reference } = parseChainId(chain);\n const account = formatAccountId({ namespace, reference, address });\n return account;\n}\nexport function getAddressesFromAccounts(accounts) {\n return getUniqueValues(accounts, getAddressFromAccount);\n}\nexport function getChainsFromAccounts(accounts) {\n return getUniqueValues(accounts, getChainFromAccount);\n}\nexport function getAccountsFromNamespaces(namespaces, keys = []) {\n const accounts = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key))\n return;\n const ns = namespaces[key];\n accounts.push(...ns.accounts);\n });\n return accounts;\n}\nexport function getChainsFromNamespaces(namespaces, keys = []) {\n const chains = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key))\n return;\n const ns = namespaces[key];\n chains.push(...getChainsFromAccounts(ns.accounts));\n });\n return chains;\n}\nexport function getChainsFromRequiredNamespaces(requiredNamespaces, keys = []) {\n const chains = [];\n Object.keys(requiredNamespaces).forEach((key) => {\n if (keys.length && !keys.includes(key))\n return;\n const ns = requiredNamespaces[key];\n chains.push(...getChainsFromNamespace(key, ns));\n });\n return chains;\n}\nexport function getChainsFromNamespace(namespace, namespaceProps) {\n return namespace.includes(\":\") ? [namespace] : namespaceProps.chains || [];\n}\n//# sourceMappingURL=caip.js.map","import { detect } from \"detect-browser\";\nimport { FIVE_MINUTES, fromMiliseconds, toMiliseconds } from \"@walletconnect/time\";\nimport { getDocument, getLocation, getNavigator } from \"@walletconnect/window-getters\";\nimport { getWindowMetadata } from \"@walletconnect/window-metadata\";\nimport * as qs from \"query-string\";\nexport const REACT_NATIVE_PRODUCT = \"ReactNative\";\nexport const ENV_MAP = {\n reactNative: \"react-native\",\n node: \"node\",\n browser: \"browser\",\n unknown: \"unknown\",\n};\nexport const EMPTY_SPACE = \" \";\nexport const COLON = \":\";\nexport const SLASH = \"/\";\nexport const DEFAULT_DEPTH = 2;\nexport const ONE_THOUSAND = 1000;\nexport const SDK_TYPE = \"js\";\nexport function isNode() {\n return (typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\");\n}\nexport function isReactNative() {\n return !getDocument() && !!getNavigator() && navigator.product === REACT_NATIVE_PRODUCT;\n}\nexport function isBrowser() {\n return !isNode() && !!getNavigator() && !!getDocument();\n}\nexport function getEnvironment() {\n if (isReactNative())\n return ENV_MAP.reactNative;\n if (isNode())\n return ENV_MAP.node;\n if (isBrowser())\n return ENV_MAP.browser;\n return ENV_MAP.unknown;\n}\nexport function getBundleId() {\n try {\n if (isReactNative() &&\n typeof global !== \"undefined\" &&\n typeof global?.Application !== \"undefined\") {\n return global.Application?.applicationId;\n }\n return undefined;\n }\n catch {\n return undefined;\n }\n}\nexport function appendToQueryString(queryString, newQueryParams) {\n let queryParams = qs.parse(queryString);\n queryParams = { ...queryParams, ...newQueryParams };\n queryString = qs.stringify(queryParams);\n return queryString;\n}\nexport function getAppMetadata() {\n return (getWindowMetadata() || {\n name: \"\",\n description: \"\",\n url: \"\",\n icons: [\"\"],\n });\n}\nexport function getRelayClientMetadata(protocol, version) {\n const env = getEnvironment();\n const metadata = { protocol, version, env };\n if (env === \"browser\") {\n metadata.host = getLocation()?.host || \"unknown\";\n }\n return metadata;\n}\nexport function getJavascriptOS() {\n const env = getEnvironment();\n if (env === ENV_MAP.reactNative &&\n typeof global !== \"undefined\" &&\n typeof global?.Platform !== \"undefined\") {\n const { OS, Version } = global.Platform;\n return [OS, Version].join(\"-\");\n }\n const info = detect();\n if (info === null)\n return \"unknown\";\n const os = info.os ? info.os.replace(\" \", \"\").toLowerCase() : \"unknown\";\n if (info.type === \"browser\") {\n return [os, info.name, info.version].join(\"-\");\n }\n return [os, info.version].join(\"-\");\n}\nexport function getJavascriptID() {\n const env = getEnvironment();\n return env === ENV_MAP.browser ? [env, getLocation()?.host || \"unknown\"].join(\":\") : env;\n}\nexport function formatUA(protocol, version, sdkVersion) {\n const os = getJavascriptOS();\n const id = getJavascriptID();\n return [[protocol, version].join(\"-\"), [SDK_TYPE, sdkVersion].join(\"-\"), os, id].join(\"/\");\n}\nconsole;\nexport function formatRelayRpcUrl({ protocol, version, relayUrl, sdkVersion, auth, projectId, useOnCloseEvent, bundleId, }) {\n const splitUrl = relayUrl.split(\"?\");\n const ua = formatUA(protocol, version, sdkVersion);\n const params = {\n auth,\n ua,\n projectId,\n useOnCloseEvent: useOnCloseEvent || undefined,\n origin: bundleId || undefined,\n };\n const queryString = appendToQueryString(splitUrl[1] || \"\", params);\n return splitUrl[0] + \"?\" + queryString;\n}\nexport function getHttpUrl(url) {\n const matches = url.match(/^[^:]+(?=:\\/\\/)/gi) || [];\n let protocol = matches[0];\n const domain = typeof protocol !== \"undefined\" ? url.split(\"://\")[1] : url;\n protocol = protocol === \"wss\" ? \"https\" : \"http\";\n return [protocol, domain].join(\"://\");\n}\nexport function assertType(obj, key, type) {\n if (!obj[key] || typeof obj[key] !== type) {\n throw new Error(`Missing or invalid \"${key}\" param`);\n }\n}\nexport function parseContextNames(context, depth = DEFAULT_DEPTH) {\n return getLastItems(context.split(SLASH), depth);\n}\nexport function formatMessageContext(context) {\n return parseContextNames(context).join(EMPTY_SPACE);\n}\nexport function hasOverlap(a, b) {\n const matches = a.filter((x) => b.includes(x));\n return matches.length === a.length;\n}\nexport function getLastItems(arr, depth = DEFAULT_DEPTH) {\n return arr.slice(Math.max(arr.length - depth, 0));\n}\nexport function mapToObj(map) {\n return Object.fromEntries(map.entries());\n}\nexport function objToMap(obj) {\n return new Map(Object.entries(obj));\n}\nexport function mapEntries(obj, cb) {\n const res = {};\n Object.keys(obj).forEach((key) => {\n res[key] = cb(obj[key]);\n });\n return res;\n}\nexport const enumify = (x) => x;\nexport function capitalizeWord(word) {\n return word.trim().replace(/^\\w/, (c) => c.toUpperCase());\n}\nexport function capitalize(str) {\n return str\n .split(EMPTY_SPACE)\n .map((w) => capitalizeWord(w))\n .join(EMPTY_SPACE);\n}\nexport function createDelayedPromise(expiry = FIVE_MINUTES, expireErrorMessage) {\n const timeout = toMiliseconds(expiry || FIVE_MINUTES);\n let cacheResolve;\n let cacheReject;\n let cacheTimeout;\n const done = () => new Promise((promiseResolve, promiseReject) => {\n cacheTimeout = setTimeout(() => {\n promiseReject(new Error(expireErrorMessage));\n }, timeout);\n cacheResolve = promiseResolve;\n cacheReject = promiseReject;\n });\n const resolve = (value) => {\n if (cacheTimeout && cacheResolve) {\n clearTimeout(cacheTimeout);\n cacheResolve(value);\n }\n };\n const reject = (value) => {\n if (cacheTimeout && cacheReject) {\n clearTimeout(cacheTimeout);\n cacheReject(value);\n }\n };\n return {\n resolve,\n reject,\n done,\n };\n}\nexport function createExpiringPromise(promise, expiry, expireErrorMessage) {\n return new Promise(async (resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error(expireErrorMessage)), expiry);\n try {\n const result = await promise;\n resolve(result);\n }\n catch (error) {\n reject(error);\n }\n clearTimeout(timeout);\n });\n}\nexport function formatExpirerTarget(type, value) {\n if (typeof value === \"string\" && value.startsWith(`${type}:`))\n return value;\n if (type.toLowerCase() === \"topic\") {\n if (typeof value !== \"string\")\n throw new Error(`Value must be \"string\" for expirer target type: topic`);\n return `topic:${value}`;\n }\n else if (type.toLowerCase() === \"id\") {\n if (typeof value !== \"number\")\n throw new Error(`Value must be \"number\" for expirer target type: id`);\n return `id:${value}`;\n }\n throw new Error(`Unknown expirer target type: ${type}`);\n}\nexport function formatTopicTarget(topic) {\n return formatExpirerTarget(\"topic\", topic);\n}\nexport function formatIdTarget(id) {\n return formatExpirerTarget(\"id\", id);\n}\nexport function parseExpirerTarget(target) {\n const [type, value] = target.split(\":\");\n const parsed = { id: undefined, topic: undefined };\n if (type === \"topic\" && typeof value === \"string\") {\n parsed.topic = value;\n }\n else if (type === \"id\" && Number.isInteger(Number(value))) {\n parsed.id = Number(value);\n }\n else {\n throw new Error(`Invalid target, expected id:number or topic:string, got ${type}:${value}`);\n }\n return parsed;\n}\nexport function calcExpiry(ttl, now) {\n return fromMiliseconds((now || Date.now()) + toMiliseconds(ttl));\n}\nexport function isExpired(expiry) {\n return Date.now() >= toMiliseconds(expiry);\n}\nexport function engineEvent(event, id) {\n return `${event}${id ? `:${id}` : \"\"}`;\n}\nexport function mergeArrays(a = [], b = []) {\n return [...new Set([...a, ...b])];\n}\nexport function isTelegram() {\n return (typeof window !== \"undefined\" &&\n (Boolean(window.TelegramWebviewProxy) ||\n Boolean(window.Telegram) ||\n Boolean(window.TelegramWebviewProxyProto)));\n}\nexport async function handleDeeplinkRedirect({ id, topic, wcDeepLink, }) {\n try {\n if (!wcDeepLink)\n return;\n const json = typeof wcDeepLink === \"string\" ? JSON.parse(wcDeepLink) : wcDeepLink;\n let deeplink = json?.href;\n if (typeof deeplink !== \"string\")\n return;\n if (deeplink.endsWith(\"/\"))\n deeplink = deeplink.slice(0, -1);\n const link = `${deeplink}/wc?requestId=${id}&sessionTopic=${topic}`;\n const env = getEnvironment();\n if (env === ENV_MAP.browser) {\n if (link.startsWith(\"https://\") || link.startsWith(\"http://\")) {\n window.open(link, \"_blank\", \"noreferrer noopener\");\n }\n else {\n if (isTelegram()) {\n window.open(link, \"_blank\", \"noreferrer noopener\");\n }\n else {\n window.open(link, \"_self\", \"noreferrer noopener\");\n }\n }\n }\n else if (env === ENV_MAP.reactNative) {\n if (typeof global?.Linking !== \"undefined\") {\n await global.Linking.openURL(link);\n }\n }\n }\n catch (err) {\n console.error(err);\n }\n}\nexport async function getDeepLink(store, key) {\n try {\n const deepLink = await store.getItem(key);\n if (deepLink)\n return deepLink;\n if (!isBrowser())\n return;\n return localStorage.getItem(key);\n }\n catch (err) {\n console.error(err);\n }\n}\nexport function getCommonValuesInArrays(arr1, arr2) {\n return arr1.filter((value) => arr2.includes(value));\n}\n//# sourceMappingURL=misc.js.map","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","export const version = \"logger/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nimport { version } from \"./_version\";\nlet _globalLogger = null;\nfunction _checkNormalize() {\n try {\n const missing = [];\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n }\n ;\n }\n catch (error) {\n missing.push(form);\n }\n });\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\");\n }\n }\n catch (error) {\n return error.message;\n }\n return null;\n}\nconst _normalizeError = _checkNormalize();\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ///////////////////\n // Generic Errors\n // Unknown Error\n ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n // Not Implemented\n ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n // Unsupported Operation\n // - operation\n ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n // Some sort of bad response from the server\n ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n // Timeout\n ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n ///////////////////\n // Operational Errors\n // Buffer Overrun\n ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n ///////////////////\n // Argument Errors\n // Missing new operator to an object\n // - name: The name of the class\n ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n ///////////////////\n // Blockchain Errors\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n // Nonce has already been used\n // - transaction: the transaction attempted\n ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n ///////////////////\n // Interaction Errors\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ErrorCode[\"ACTION_REJECTED\"] = \"ACTION_REJECTED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nexport class Logger {\n constructor(version) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n _log(logLevel, args) {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) {\n return;\n }\n console.log.apply(console, args);\n }\n debug(...args) {\n this._log(Logger.levels.DEBUG, args);\n }\n info(...args) {\n this._log(Logger.levels.INFO, args);\n }\n warn(...args) {\n this._log(Logger.levels.WARNING, args);\n }\n makeError(message, code, params) {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, {});\n }\n if (!code) {\n code = Logger.errors.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n const messageDetails = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n }\n else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n }\n catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${code}`);\n messageDetails.push(`version=${this.version}`);\n const reason = message;\n let url = \"\";\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n switch (fault) {\n case \"overflow\":\n case \"underflow\":\n case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\":\n case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n // @TODO: Any??\n const error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n return error;\n }\n throwError(message, code, params) {\n throw this.makeError(message, code, params);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, params) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code, params);\n }\n assertArgument(condition, message, name, value) {\n if (!!condition) {\n return;\n }\n this.throwArgumentError(message, name, value);\n }\n checkNormalize(message) {\n if (message == null) {\n message = \"platform missing String.prototype.normalize\";\n }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n checkSafeUint53(value, message) {\n if (typeof (value) !== \"number\") {\n return;\n }\n if (message == null) {\n message = \"value not safe\";\n }\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n checkArgumentCount(count, expectedCount, message) {\n if (message) {\n message = \": \" + message;\n }\n else {\n message = \"\";\n }\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n checkNew(target, kind) {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n checkAbstract(target, kind) {\n if (target === kind) {\n this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n }\n else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setCensorship(censorship, permanent) {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n if (_permanentCensorErrors) {\n if (!censorship) {\n return;\n }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n static setLogLevel(logLevel) {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n static from(version) {\n return new Logger(version);\n }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n//# sourceMappingURL=index.js.map","export const version = \"bytes/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nfunction isHexable(value) {\n return !!(value.toHexString);\n}\nfunction addSlice(array) {\n if (array.slice) {\n return array;\n }\n array.slice = function () {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n };\n return array;\n}\nexport function isBytesLike(value) {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\nfunction isInteger(value) {\n return (typeof (value) === \"number\" && value == value && (value % 1) === 0);\n}\nexport function isBytes(value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof (value) === \"string\") {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\nexport function arrayify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return addSlice(new Uint8Array(result));\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n value = value.toHexString();\n }\n if (isHexString(value)) {\n let hex = value.substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n }\n else if (options.hexPad === \"right\") {\n hex += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return addSlice(new Uint8Array(result));\n }\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nexport function concat(items) {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return addSlice(result);\n}\nexport function stripZeros(value) {\n let result = arrayify(value);\n if (result.length === 0) {\n return result;\n }\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n return result;\n}\nexport function zeroPad(value, length) {\n value = arrayify(value);\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n if (hex.length) {\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return \"0x\" + hex;\n }\n return \"0x00\";\n }\n if (typeof (value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) {\n return (\"0x0\" + value);\n }\n return \"0x\" + value;\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n return value.toHexString();\n }\n if (isHexString(value)) {\n if (value.length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + value.substring(2);\n }\n else if (options.hexPad === \"right\") {\n value += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return value.toLowerCase();\n }\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n return (data.length - 2) / 2;\n}\nexport function hexDataSlice(data, offset, endOffset) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n }\n offset = 2 + 2 * offset;\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n return \"0x\" + data.substring(offset);\n}\nexport function hexConcat(items) {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\nexport function hexValue(value) {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") {\n return \"0x0\";\n }\n return trimmed;\n}\nexport function hexStripZeros(value) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") {\n offset++;\n }\n return \"0x\" + value.substring(offset);\n}\nexport function hexZeroPad(value, length) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n return value;\n}\nexport function splitSignature(signature) {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n if (isBytesLike(signature)) {\n let bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n }\n else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n }\n else {\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n }\n else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n }\n else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1 : 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n }\n else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n }\n else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n }\n else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n }\n else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n }\n else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n }\n else {\n const recId = (result.v === 0 || result.v === 1) ? result.v : (1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n }\n else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n }\n else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n }\n else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\nexport function joinSignature(signature) {\n signature = splitSignature(signature);\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\" : \"0x1b\")\n ]));\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nimport sha3 from \"js-sha3\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function keccak256(data) {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n//# sourceMappingURL=index.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","export const version = \"bignumber/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\nimport _BN from \"bn.js\";\nvar BN = _BN.BN;\nimport { hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst _constructorGuard = {};\nconst MAX_SAFE = 0x1fffffffffffff;\nexport function isBigNumberish(value) {\n return (value != null) && (BigNumber.isBigNumber(value) ||\n (typeof (value) === \"number\" && (value % 1) === 0) ||\n (typeof (value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof (value) === \"bigint\") ||\n isBytes(value));\n}\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\nexport class BigNumber {\n constructor(constructorGuard, hex) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n this._hex = hex;\n this._isBigNumber = true;\n Object.freeze(this);\n }\n fromTwos(value) {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n toTwos(value) {\n return toBigNumber(toBN(this).toTwos(value));\n }\n abs() {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n add(other) {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n sub(other) {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n div(other) {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n mul(other) {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n mod(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n pow(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n and(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n or(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n xor(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n mask(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n shl(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n shr(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n eq(other) {\n return toBN(this).eq(toBN(other));\n }\n lt(other) {\n return toBN(this).lt(toBN(other));\n }\n lte(other) {\n return toBN(this).lte(toBN(other));\n }\n gt(other) {\n return toBN(this).gt(toBN(other));\n }\n gte(other) {\n return toBN(this).gte(toBN(other));\n }\n isNegative() {\n return (this._hex[0] === \"-\");\n }\n isZero() {\n return toBN(this).isZero();\n }\n toNumber() {\n try {\n return toBN(this).toNumber();\n }\n catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n toBigInt() {\n try {\n return BigInt(this.toString());\n }\n catch (e) { }\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n toString() {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n }\n else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n }\n return toBN(this).toString(10);\n }\n toHexString() {\n return this._hex;\n }\n toJSON(key) {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n static from(value) {\n if (value instanceof BigNumber) {\n return value;\n }\n if (typeof (value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n if (typeof (value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n return BigNumber.from(String(value));\n }\n const anyValue = value;\n if (typeof (anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n if (anyValue) {\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof (hex) === \"string\") {\n return BigNumber.from(hex);\n }\n }\n else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n if (typeof (hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n static isBigNumber(value) {\n return !!(value && value._isBigNumber);\n }\n}\n// Normalize the hex string\nfunction toHex(value) {\n // For BN, call on the hex string\n if (typeof (value) !== \"string\") {\n return toHex(value.toString(16));\n }\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") {\n logger.throwArgumentError(\"invalid hex\", \"value\", value);\n }\n // Call toHex on the positive component\n value = toHex(value);\n // Do not allow \"-0x00\"\n if (value === \"0x00\") {\n return value;\n }\n // Negate the value\n return \"-\" + value;\n }\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n // Normalize zero\n if (value === \"0x\") {\n return \"0x00\";\n }\n // Make the string even length\n if (value.length % 2) {\n value = \"0x0\" + value.substring(2);\n }\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n return value;\n}\nfunction toBigNumber(value) {\n return BigNumber.from(toHex(value));\n}\nfunction toBN(value) {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\nfunction throwFault(fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value != null) {\n params.value = value;\n }\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n// value should have no prefix\nexport function _base36To16(value) {\n return (new BN(value, 36)).toString(16);\n}\n// value should have no prefix\nexport function _base16To36(value) {\n return (new BN(value, 16)).toString(36);\n}\n//# sourceMappingURL=bignumber.js.map","\"use strict\";\nimport { arrayify, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { BigNumber, isBigNumberish } from \"./bignumber\";\nconst _constructorGuard = {};\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n }\n catch (e) { }\n }\n if (typeof (decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\nexport function formatFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n const negative = value.lt(Zero);\n if (negative) {\n value = value.mul(NegativeOne);\n }\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n }\n else {\n value = whole + \".\" + fraction;\n }\n if (negative) {\n value = \"-\" + value;\n }\n return value;\n}\nexport function parseFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n let whole = comps[0], fraction = comps[1];\n if (!whole) {\n whole = \"0\";\n }\n if (!fraction) {\n fraction = \"0\";\n }\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n if (negative) {\n wei = wei.mul(NegativeOne);\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\n if (typeof (value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type + \")\", \"format.\" + key, value[key]);\n }\n return value[key];\n };\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.format = format;\n this._hex = hex;\n this._value = value;\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n _checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n addUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n subUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n divUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n isNegative() {\n return (this._value[0] === \"-\");\n }\n toString() { return this._value; }\n toHexString(width) {\n if (width == null) {\n return this._hex;\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid byte width\", \"width\", width);\n }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(this._value, format);\n }\n static fromValue(value, decimals, format) {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n if (decimals == null) {\n decimals = 0;\n }\n if (format == null) {\n format = \"fixed\";\n }\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n let hex = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n }\n else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) {\n numeric = numeric.fromTwos(fixedFormat.width);\n }\n const hex = numeric.toTwos((fixedFormat.signed ? 0 : 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","export const version = \"strings/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n bytes = arrayify(bytes);\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return arrayify(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\";\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","\"use strict\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, func) {\n if (!func) {\n func = function (value) { return [parseInt(value, 16)]; };\n }\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n return [codepoint + range.s];\n }\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n let complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","export const version = \"hash/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function decode(textData) {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\nexport function encode(data) {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n//# sourceMappingURL=base64.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array, depth) {\n if (depth == null) {\n depth = 1;\n }\n const result = [];\n const forEach = result.forEach;\n const flatDeep = function (arr, depth) {\n forEach.call(arr, function (val) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n }\n else {\n result.push(val);\n }\n });\n };\n flatDeep(array, depth);\n return result;\n}\nfunction fromEntries(array) {\n const result = {};\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\nexport function decode_arithmetic(bytes) {\n let pos = 0;\n function u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n // decode the frequency table\n let symbol_count = u16();\n let total = 1;\n let acc = [0, 1]; // first symbol has frequency 1\n for (let i = 1; i < symbol_count; i++) {\n acc.push(total += u16());\n }\n // skip the sized-payload that the last 3 symbols index into\n let skip = u16();\n let pos_payload = pos;\n pos += skip;\n let read_width = 0;\n let read_buffer = 0;\n function read_bit() {\n if (read_width == 0) {\n // this will read beyond end of buffer\n // but (undefined|0) => zero pad\n read_buffer = (read_buffer << 8) | bytes[pos++];\n read_width = 8;\n }\n return (read_buffer >> --read_width) & 1;\n }\n const N = 31;\n const FULL = Math.pow(2, N);\n const HALF = FULL >>> 1;\n const QRTR = HALF >> 1;\n const MASK = FULL - 1;\n // fill register\n let register = 0;\n for (let i = 0; i < N; i++)\n register = (register << 1) | read_bit();\n let symbols = [];\n let low = 0;\n let range = FULL; // treat like a float\n while (true) {\n let value = Math.floor((((register - low + 1) * total) - 1) / range);\n let start = 0;\n let end = symbol_count;\n while (end - start > 1) { // binary search\n let mid = (start + end) >>> 1;\n if (value < acc[mid]) {\n end = mid;\n }\n else {\n start = mid;\n }\n }\n if (start == 0)\n break; // first symbol is end mark\n symbols.push(start);\n let a = low + Math.floor(range * acc[start] / total);\n let b = low + Math.floor(range * acc[start + 1] / total) - 1;\n while (((a ^ b) & HALF) == 0) {\n register = (register << 1) & MASK | read_bit();\n a = (a << 1) & MASK;\n b = (b << 1) & MASK | 1;\n }\n while (a & ~b & QRTR) {\n register = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n a = (a << 1) ^ HALF;\n b = ((b ^ HALF) << 1) | HALF | 1;\n }\n low = a;\n range = 1 + b - a;\n }\n let offset = symbol_count - 4;\n return symbols.map(x => {\n switch (x - offset) {\n case 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 1: return offset + bytes[pos_payload++];\n default: return x - 1;\n }\n });\n}\n// returns an iterator which returns the next symbol\nexport function read_payload(v) {\n let pos = 0;\n return () => v[pos++];\n}\nexport function read_compressed_payload(bytes) {\n return read_payload(decode_arithmetic(bytes));\n}\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i) {\n return (i & 1) ? (~i >> 1) : (i >> 1);\n}\nfunction read_counts(n, next) {\n let v = Array(n);\n for (let i = 0; i < n; i++)\n v[i] = 1 + next();\n return v;\n}\nfunction read_ascending(n, next) {\n let v = Array(n);\n for (let i = 0, x = -1; i < n; i++)\n v[i] = x += 1 + next();\n return v;\n}\nfunction read_deltas(n, next) {\n let v = Array(n);\n for (let i = 0, x = 0; i < n; i++)\n v[i] = x += signed(next());\n return v;\n}\nexport function read_member_array(next, lookup) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next) {\n let ret = [];\n while (true) {\n let w = next();\n if (w == 0)\n break;\n ret.push(read_linear_table(w, next));\n }\n while (true) {\n let w = next() - 1;\n if (w < 0)\n break;\n ret.push(read_replacement_table(w, next));\n }\n return fromEntries(flat(ret));\n}\nexport function read_zero_terminated_array(next) {\n let v = [];\n while (true) {\n let i = next();\n if (i == 0)\n break;\n v.push(i);\n }\n return v;\n}\nfunction read_transposed(n, w, next) {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\nfunction read_linear_table(w, next) {\n let dx = 1 + next();\n let dy = next();\n let vN = read_zero_terminated_array(next);\n let m = read_transposed(vN.length, 1 + w, next);\n return flat(m.map((v, i) => {\n const x = v[0], ys = v.slice(1);\n //let [x, ...ys] = v;\n //return Array(vN[i]).fill().map((_, j) => {\n return Array(vN[i]).fill(undefined).map((_, j) => {\n let j_dy = j * dy;\n return [x + j * dx, ys.map(y => y + j_dy)];\n });\n }));\n}\nfunction read_replacement_table(w, next) {\n let n = 1 + next();\n let m = read_transposed(n, 1 + w, next);\n return m.map(v => [v[0], v.slice(1)]);\n}\nexport function read_emoji_trie(next) {\n let sorted = read_member_array(next).sort((a, b) => a - b);\n return read();\n function read() {\n let branches = [];\n while (true) {\n let keys = read_member_array(next, sorted);\n if (keys.length == 0)\n break;\n branches.push({ set: new Set(keys), node: read() });\n }\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n let temp = next();\n let valid = temp % 3;\n temp = (temp / 3) | 0;\n let fe0f = !!(temp & 1);\n temp >>= 1;\n let save = temp == 1;\n let check = temp == 2;\n return { branches, valid, fe0f, save, check };\n }\n}\n//# sourceMappingURL=decoder.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { decode } from \"@ethersproject/base64\";\nimport { read_compressed_payload } from './decoder.js';\nexport function getData() {\n return read_compressed_payload(decode('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'));\n}\n//# sourceMappingURL=include.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\nimport { getData } from './include.js';\nconst r = getData();\nimport { read_member_array, read_mapped_map, read_emoji_trie } from './decoder.js';\n// @TODO: This should be lazily loaded\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\nfunction explode_cp(name) {\n return toUtf8CodePoints(name);\n}\nfunction filter_fe0f(cps) {\n return cps.filter(cp => cp != 0xFE0F);\n}\nexport function ens_normalize_post_check(name) {\n for (let label of name.split('.')) {\n let cps = explode_cp(label);\n try {\n for (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n if (cps[i] !== UNDERSCORE) {\n throw new Error(`underscore only allowed at start`);\n }\n }\n if (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n throw new Error(`invalid label extension`);\n }\n }\n catch (err) {\n throw new Error(`Invalid label \"${label}\": ${err.message}`);\n }\n }\n return name;\n}\nexport function ens_normalize(name) {\n return ens_normalize_post_check(normalize(name, filter_fe0f));\n}\nfunction normalize(name, emoji_filter) {\n let input = explode_cp(name).reverse(); // flip for pop\n let output = [];\n while (input.length) {\n let emoji = consume_emoji_reversed(input);\n if (emoji) {\n output.push(...emoji_filter(emoji));\n continue;\n }\n let cp = input.pop();\n if (VALID.has(cp)) {\n output.push(cp);\n continue;\n }\n if (IGNORED.has(cp)) {\n continue;\n }\n let cps = MAPPED[cp];\n if (cps) {\n output.push(...cps);\n continue;\n }\n throw new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n }\n return ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\nfunction nfc(s) {\n return s.normalize('NFC');\n}\nfunction consume_emoji_reversed(cps, eaten) {\n var _a;\n let node = EMOJI_ROOT;\n let emoji;\n let saved;\n let stack = [];\n let pos = cps.length;\n if (eaten)\n eaten.length = 0; // clear input buffer (if needed)\n while (pos) {\n let cp = cps[--pos];\n node = (_a = node.branches.find(x => x.set.has(cp))) === null || _a === void 0 ? void 0 : _a.node;\n if (!node)\n break;\n if (node.save) { // remember\n saved = cp;\n }\n else if (node.check) { // check exclusion\n if (cp === saved)\n break;\n }\n stack.push(cp);\n if (node.fe0f) {\n stack.push(0xFE0F);\n if (pos > 0 && cps[pos - 1] == 0xFE0F)\n pos--; // consume optional FE0F\n }\n if (node.valid) { // this is a valid emoji (so far)\n emoji = stack.slice(); // copy stack\n if (node.valid == 2)\n emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n if (eaten)\n eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n cps.length = pos; // truncate\n }\n }\n return emoji;\n}\n//# sourceMappingURL=lib.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { ens_normalize } from \"./ens-normalize/lib\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nfunction checkComponent(comp) {\n if (comp.length === 0) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n return comp;\n}\nfunction ensNameSplit(name) {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps = [];\n if (name.length === 0) {\n return comps;\n }\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n // There was a stray separator at the end of the name\n if (last >= bytes.length) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\nexport function ensNormalize(name) {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\nexport function isValidName(name) {\n try {\n return (ensNameSplit(name).length !== 0);\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n /* istanbul ignore if */\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let result = Zeros;\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n }))) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","export const version = \"rlp/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { arrayify, hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n const data = Array.prototype.slice.call(arrayify(object));\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n }\n else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nexport function encode(object) {\n return hexlify(_encode(object));\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result };\n }\n else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\nexport function decode(data) {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=index.js.map","export const version = \"address/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction getChecksumAddress(address) {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER = 0x1fffffffffffff;\nfunction log10(x) {\n if (Math.log10) {\n return Math.log10(x);\n }\n return Math.log(x) / Math.LN10;\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nexport function getAddress(address) {\n let result = null;\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n // Maybe ICAP? (we only support direct mode)\n }\n else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n result = _base36To16(address.substring(4));\n while (result.length < 40) {\n result = \"0\" + result;\n }\n result = getChecksumAddress(\"0x\" + result);\n }\n else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n return result;\n}\nexport function isAddress(address) {\n try {\n getAddress(address);\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function getIcapAddress(address) {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction) {\n let from = null;\n try {\n from = getAddress(transaction.from);\n }\n catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n return getAddress(hexDataSlice(keccak256(encode([from, nonce])), 12));\n}\nexport function getCreate2Address(from, salt, initCodeHash) {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([\"0xff\", getAddress(from), salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=index.js.map","export const version = \"properties/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor, key) {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) {\n return ctor[key];\n }\n if (!ctor.prototype || typeof (ctor.prototype) !== \"object\") {\n break;\n }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\nexport function resolveProperties(object) {\n return __awaiter(this, void 0, void 0, function* () {\n const promises = Object.keys(object).map((key) => {\n const value = object[key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n const results = yield Promise.all(promises);\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, {});\n });\n}\nexport function checkProperties(object, properties) {\n if (!object || typeof (object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\nexport function shallowCopy(object) {\n const result = {};\n for (const key in object) {\n result[key] = object[key];\n }\n return result;\n}\nconst opaque = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\nfunction _isFrozen(object) {\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof (object)]) {\n return true;\n }\n if (Array.isArray(object) || typeof (object) === \"object\") {\n if (!Object.isFrozen(object)) {\n return false;\n }\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value = null;\n try {\n value = object[keys[i]];\n }\n catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n if (!_isFrozen(value)) {\n return false;\n }\n }\n return true;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object) {\n if (_isFrozen(object)) {\n return object;\n }\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n if (typeof (object) === \"object\") {\n const result = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) {\n continue;\n }\n defineReadOnly(result, key, deepCopy(value));\n }\n return result;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\nexport function deepCopy(object) {\n return _deepCopy(object);\n}\nexport class Description {\n constructor(info) {\n for (const key in info) {\n this[key] = deepCopy(info[key]);\n }\n }\n}\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { id } from \"./id\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst NegativeOne = BigNumber.from(-1);\nconst Zero = BigNumber.from(0);\nconst One = BigNumber.from(1);\nconst MaxUint256 = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return hexConcat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n try {\n return BigNumber.from(value).toString();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) {\n throw new Error(\"bad length\");\n }\n return hexlify(bytes);\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n const boundsUpper = MaxUint256.mask(signed ? (width - 1) : width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne) : Zero;\n return function (value) {\n const v = BigNumber.from(value);\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n return function (value) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${type}`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n switch (type) {\n case \"address\": return function (value) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n defineReadOnly(this, \"_encoderCache\", {});\n defineReadOnly(this, \"_types\", {});\n // Link struct types to their direct child structs\n const links = {};\n // Link structs to structs which contain them as a child\n const parents = {};\n // Link all subtypes within a given struct\n const subtypes = {};\n Object.keys(types).forEach((type) => {\n links[type] = {};\n parents[type] = [];\n subtypes[type] = {};\n });\n for (const name in types) {\n const uniqueNames = {};\n types[name].forEach((field) => {\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n return;\n }\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\n else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${primaryTypes.map((t) => (JSON.stringify(t))).join(\", \")}`, \"types\", types);\n }\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n // Check for circular type references\n function checkCircular(type, found) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found[type] = true;\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) {\n return;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n delete found[type];\n }\n checkCircular(this.primaryType, {});\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n getEncoder(type) {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n _getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return encoder;\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n return keccak256(hexConcat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n encodeType(name) {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return callback(type, value);\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v) => this._visit(subtype, v, callback));\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, {});\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(name)}`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static resolveNames(domain, types, value, resolveName) {\n return __awaiter(this, void 0, void 0, function* () {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n // Look up all ENS names\n const ensCache = {};\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = yield resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n });\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n//# sourceMappingURL=typed-data.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","import BN from 'bn.js';\nimport hash from 'hash.js';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, basedir, module) {\n\treturn module = {\n\t\tpath: basedir,\n\t\texports: {},\n\t\trequire: function (path, base) {\n\t\t\treturn commonjsRequire(path, (base === undefined || base === null) ? module.path : base);\n\t\t}\n\t}, fn(module, module.exports), module.exports;\n}\n\nfunction getDefaultExportFromNamespaceIfPresent (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n;\n}\n\nfunction getDefaultExportFromNamespaceIfNotNamed (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n;\n}\n\nfunction getAugmentedNamespace(n) {\n\tif (n.__esModule) return n;\n\tvar a = Object.defineProperty({}, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n}\n\nvar minimalisticAssert = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\nvar utils_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n});\n\nvar utils_1$1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\n\n\n\nutils.assert = minimalisticAssert;\nutils.toArray = utils_1.toArray;\nutils.zero2 = utils_1.zero2;\nutils.toHex = utils_1.toHex;\nutils.encode = utils_1.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n});\n\n'use strict';\n\n\n\nvar getNAF = utils_1$1.getNAF;\nvar getJSF = utils_1$1.getJSF;\nvar assert$1 = utils_1$1.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nvar base = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert$1(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert$1(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils_1$1.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert$1(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert$1(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils_1$1.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\nvar inherits_browser = createCommonjsModule(function (module) {\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n});\n\n'use strict';\n\n\n\n\n\n\nvar assert$2 = utils_1$1.assert;\n\nfunction ShortCurve(conf) {\n base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits_browser(ShortCurve, base);\nvar short_1 = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert$2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits_browser(Point, base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits_browser(JPoint, base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nvar curve_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curve = exports;\n\ncurve.base = base;\ncurve.short = short_1;\ncurve.mont = /*RicMoo:ethers:require(./mont)*/(null);\ncurve.edwards = /*RicMoo:ethers:require(./edwards)*/(null);\n});\n\nvar curves_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curves = exports;\n\n\n\n\n\nvar assert = utils_1$1.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve_1.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve_1.edwards(options);\n else\n this.curve = new curve_1.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = /*RicMoo:ethers:require(./precomputed/secp256k1)*/(null).crash();\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n});\n\n'use strict';\n\n\n\n\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils_1.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils_1.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils_1.toArray(options.pers, options.persEnc || 'hex');\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nvar hmacDrbg = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils_1.toArray(entropy, entropyEnc);\n add = utils_1.toArray(add, addEnc);\n\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils_1.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils_1.encode(res, enc);\n};\n\n'use strict';\n\n\n\nvar assert$3 = utils_1$1.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nvar key = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert$3(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert$3(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert$3(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n'use strict';\n\n\n\n\nvar assert$4 = utils_1$1.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert$4(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nvar signature = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils_1$1.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils_1$1.encode(res, enc);\n};\n\n'use strict';\n\n\n\n\n\nvar rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nvar assert$5 = utils_1$1.assert;\n\n\n\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert$5(Object.prototype.hasOwnProperty.call(curves_1, options),\n 'Unknown curve ' + options);\n\n options = curves_1[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves_1.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nvar ec = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new key(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return key.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return key.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature$1, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature$1 = new signature(signature$1, 'hex');\n\n // Perform primitive values validation\n var r = signature$1.r;\n var s = signature$1.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature$1, j, enc) {\n assert$5((3 & j) === j, 'The recovery param is more than two bits');\n signature$1 = new signature(signature$1, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature$1.r;\n var s = signature$1.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature$1.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature$1, Q, enc) {\n signature$1 = new signature(signature$1, enc);\n if (signature$1.recoveryParam !== null)\n return signature$1.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature$1, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\nvar elliptic_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = /*RicMoo:ethers*/{ version: \"6.5.4\" }.version;\nelliptic.utils = utils_1$1;\nelliptic.rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nelliptic.curve = curve_1;\nelliptic.curves = curves_1;\n\n// Protocols\nelliptic.ec = ec;\nelliptic.eddsa = /*RicMoo:ethers:require(./elliptic/eddsa)*/(null);\n});\n\nvar EC$1 = elliptic_1.ec;\n\nexport { EC$1 as EC };\n//# sourceMappingURL=elliptic.js.map\n","export const version = \"signing-key/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { EC } from \"./elliptic\";\nimport { arrayify, hexDataLength, hexlify, hexZeroPad, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nlet _curve = null;\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\nexport class SigningKey {\n constructor(privateKey) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n _addPoint(other) {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n signDigest(digest) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n });\n }\n computeSharedSecret(otherKey) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n static isSigningKey(value) {\n return !!(value && value._isSigningKey);\n }\n}\nexport function recoverPublicKey(digest, signature) {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\nexport function computePublicKey(key, compressed) {\n const bytes = arrayify(key);\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n }\n else if (bytes.length === 33) {\n if (compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n }\n else if (bytes.length === 65) {\n if (!compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n//# sourceMappingURL=index.js.map","export const version = \"transactions/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport var TransactionTypes;\n(function (TransactionTypes) {\n TransactionTypes[TransactionTypes[\"legacy\"] = 0] = \"legacy\";\n TransactionTypes[TransactionTypes[\"eip2930\"] = 1] = \"eip2930\";\n TransactionTypes[TransactionTypes[\"eip1559\"] = 2] = \"eip1559\";\n})(TransactionTypes || (TransactionTypes = {}));\n;\n///////////////////////////////\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleNumber(value) {\n if (value === \"0x\") {\n return Zero;\n }\n return BigNumber.from(value);\n}\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\nconst allowedTransactionKeys = {\n chainId: true, data: true, gasLimit: true, gasPrice: true, nonce: true, to: true, type: true, value: true\n};\nexport function computeAddress(key) {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\nfunction formatNumber(value, name) {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${addr}:${index}]`, storageKey);\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${index}]`, set);\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, {});\n return accessSetify(addr, Object.keys(storageKeys).sort());\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _serializeEip1559(transaction, signature) {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x02\", RLP.encode(fields)]);\n}\nfunction _serializeEip2930(transaction, signature) {\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x01\", RLP.encode(fields)]);\n}\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction, signature) {\n checkProperties(transaction, allowedTransactionKeys);\n const raw = [];\n transactionFields.forEach(function (fieldInfo) {\n let value = transaction[fieldInfo.name] || ([]);\n const options = {};\n if (fieldInfo.numeric) {\n options.hexPad = \"left\";\n }\n value = arrayify(hexlify(value, options));\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n }\n raw.push(hexlify(value));\n });\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n if (typeof (chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n }\n else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam;\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n }\n else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n return RLP.encode(raw);\n}\nexport function serialize(transaction, signature) {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${transaction.type}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) {\n throw new Error(\"bad recid\");\n }\n tx.v = recid;\n }\n catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n }\n catch (error) { }\n}\nfunction _parseEip1559(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _parseEip2930(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n const tx = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n return tx;\n}\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction) {\n const transaction = RLP.decode(rawTransaction);\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n const tx = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n // Legacy unsigned transaction\n if (transaction.length === 6) {\n return tx;\n }\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n }\n catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n }\n else {\n // Signed Transaction\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) {\n tx.chainId = 0;\n }\n let recoveryParam = tx.v - 27;\n const raw = transaction.slice(0, 6);\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n }\n catch (error) { }\n tx.hash = keccak256(rawTransaction);\n }\n tx.type = null;\n return tx;\n}\nexport function parse(rawTransaction) {\n const payload = arrayify(rawTransaction);\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) {\n return _parse(payload);\n }\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${payload[0]}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n//# sourceMappingURL=index.js.map","import { hashMessage } from \"@ethersproject/hash\";\nimport { recoverAddress } from \"@ethersproject/transactions\";\nconst DEFAULT_RPC_URL = \"https://rpc.walletconnect.com/v1\";\nexport async function verifySignature(address, reconstructedMessage, cacaoSignature, chainId, projectId, baseRpcUrl) {\n switch (cacaoSignature.t) {\n case \"eip191\":\n return isValidEip191Signature(address, reconstructedMessage, cacaoSignature.s);\n case \"eip1271\":\n return await isValidEip1271Signature(address, reconstructedMessage, cacaoSignature.s, chainId, projectId, baseRpcUrl);\n break;\n default:\n throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${cacaoSignature.t}`);\n }\n}\nexport function isValidEip191Signature(address, message, signature) {\n const recoveredAddress = recoverAddress(hashMessage(message), signature);\n return recoveredAddress.toLowerCase() === address.toLowerCase();\n}\nexport async function isValidEip1271Signature(address, reconstructedMessage, signature, chainId, projectId, baseRpcUrl) {\n try {\n const eip1271MagicValue = \"0x1626ba7e\";\n const dynamicTypeOffset = \"0000000000000000000000000000000000000000000000000000000000000040\";\n const dynamicTypeLength = \"0000000000000000000000000000000000000000000000000000000000000041\";\n const nonPrefixedSignature = signature.substring(2);\n const nonPrefixedHashedMessage = hashMessage(reconstructedMessage).substring(2);\n const data = eip1271MagicValue +\n nonPrefixedHashedMessage +\n dynamicTypeOffset +\n dynamicTypeLength +\n nonPrefixedSignature;\n const response = await fetch(`${baseRpcUrl || DEFAULT_RPC_URL}/?chainId=${chainId}&projectId=${projectId}`, {\n method: \"POST\",\n body: JSON.stringify({\n id: generateJsonRpcId(),\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: address, data }, \"latest\"],\n }),\n });\n const { result } = await response.json();\n if (!result)\n return false;\n const recoveredValue = result.slice(0, eip1271MagicValue.length);\n return recoveredValue.toLowerCase() === eip1271MagicValue.toLowerCase();\n }\n catch (error) {\n console.error(\"isValidEip1271Signature: \", error);\n return false;\n }\n}\nfunction generateJsonRpcId() {\n return Date.now() + Math.floor(Math.random() * 1000);\n}\n//# sourceMappingURL=signatures.js.map","import { getCommonValuesInArrays } from \"./misc\";\nimport { verifySignature } from \"./signatures\";\nconst didPrefix = \"did:pkh:\";\nexport const getDidAddressSegments = (iss) => {\n return iss?.split(\":\");\n};\nexport const getDidChainId = (iss) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return iss.includes(didPrefix) ? segments[3] : segments[1];\n }\n return undefined;\n};\nexport const getNamespacedDidChainId = (iss) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments[2] + \":\" + segments[3];\n }\n return undefined;\n};\nexport const getDidAddress = (iss) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments.pop();\n }\n return undefined;\n};\nexport async function validateSignedCacao(params) {\n const { cacao, projectId } = params;\n const { s: signature, p: payload } = cacao;\n const reconstructed = formatMessage(payload, payload.iss);\n const walletAddress = getDidAddress(payload.iss);\n const isValid = await verifySignature(walletAddress, reconstructed, signature, getDidChainId(payload.iss), projectId);\n return isValid;\n}\nexport const formatMessage = (cacao, iss) => {\n const header = `${cacao.domain} wants you to sign in with your Ethereum account:`;\n const walletAddress = getDidAddress(iss);\n if (!cacao.aud && !cacao.uri) {\n throw new Error(\"Either `aud` or `uri` is required to construct the message\");\n }\n let statement = cacao.statement || undefined;\n const uri = `URI: ${cacao.aud || cacao.uri}`;\n const version = `Version: ${cacao.version}`;\n const chainId = `Chain ID: ${getDidChainId(iss)}`;\n const nonce = `Nonce: ${cacao.nonce}`;\n const issuedAt = `Issued At: ${cacao.iat}`;\n const resources = cacao.resources\n ? `Resources:${cacao.resources.map((resource) => `\\n- ${resource}`).join(\"\")}`\n : undefined;\n const recap = getRecapFromResources(cacao.resources);\n if (recap) {\n const decoded = decodeRecap(recap);\n statement = formatStatementFromRecap(statement, decoded);\n }\n const message = [\n header,\n walletAddress,\n ``,\n statement,\n ``,\n uri,\n version,\n chainId,\n nonce,\n issuedAt,\n resources,\n ]\n .filter((val) => val !== undefined && val !== null)\n .join(\"\\n\");\n return message;\n};\nexport function buildAuthObject(requestPayload, signature, iss) {\n if (!iss.includes(\"did:pkh:\")) {\n iss = `did:pkh:${iss}`;\n }\n const authObject = {\n h: {\n t: \"caip122\",\n },\n p: {\n iss,\n domain: requestPayload.domain,\n aud: requestPayload.aud,\n version: requestPayload.version,\n nonce: requestPayload.nonce,\n iat: requestPayload.iat,\n statement: requestPayload.statement,\n requestId: requestPayload.requestId,\n resources: requestPayload.resources,\n nbf: requestPayload.nbf,\n exp: requestPayload.exp,\n },\n s: signature,\n };\n return authObject;\n}\nexport function populateAuthPayload(params) {\n const { authPayload, chains, methods } = params;\n const statement = authPayload.statement || \"\";\n if (!chains?.length)\n return authPayload;\n const requested = authPayload.chains;\n const supported = chains;\n const supportedChains = getCommonValuesInArrays(requested, supported);\n if (!supportedChains?.length) {\n throw new Error(\"No supported chains\");\n }\n const requestedRecaps = getDecodedRecapFromResources(authPayload.resources);\n if (!requestedRecaps)\n return authPayload;\n isValidRecap(requestedRecaps);\n const resource = getRecapResource(requestedRecaps, \"eip155\");\n let updatedResources = authPayload?.resources || [];\n if (resource?.length) {\n const actions = getReCapActions(resource);\n const supportedActions = getCommonValuesInArrays(actions, methods);\n if (!supportedActions?.length) {\n throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(actions)}, supported: ${JSON.stringify(methods)}`);\n }\n const formattedActions = assignAbilityToActions(\"request\", supportedActions, {\n chains: supportedChains,\n });\n const updatedRecap = addResourceToRecap(requestedRecaps, \"eip155\", formattedActions);\n updatedResources = authPayload?.resources?.slice(0, -1) || [];\n updatedResources.push(encodeRecap(updatedRecap));\n }\n return {\n ...authPayload,\n statement: buildRecapStatement(statement, getRecapFromResources(updatedResources)),\n chains: supportedChains,\n resources: authPayload?.resources || updatedResources.length > 0 ? updatedResources : undefined,\n };\n}\nexport function getDecodedRecapFromResources(resources) {\n const resource = getRecapFromResources(resources);\n if (!resource)\n return;\n if (!isRecap(resource))\n return;\n return decodeRecap(resource);\n}\nexport function recapHasResource(recap, resource) {\n return recap?.att?.hasOwnProperty(resource);\n}\nexport function getRecapResource(recap, resource) {\n return recap?.att?.[resource] ? Object.keys(recap?.att?.[resource]) : [];\n}\nexport function getRecapAbilitiesFromResource(actions) {\n return actions?.map((action) => Object.keys(action)) || [];\n}\nexport function getReCapActions(abilities) {\n return abilities?.map((ability) => ability.split(\"/\")?.[1]) || [];\n}\nexport function base64Encode(input) {\n return Buffer.from(JSON.stringify(input)).toString(\"base64\");\n}\nexport function base64Decode(encodedString) {\n return JSON.parse(Buffer.from(encodedString, \"base64\").toString(\"utf-8\"));\n}\nexport function isValidRecap(recap) {\n if (!recap)\n throw new Error(\"No recap provided, value is undefined\");\n if (!recap.att)\n throw new Error(\"No `att` property found\");\n const resources = Object.keys(recap.att);\n if (!resources?.length)\n throw new Error(\"No resources found in `att` property\");\n resources.forEach((resource) => {\n const resourceAbilities = recap.att[resource];\n if (Array.isArray(resourceAbilities))\n throw new Error(`Resource must be an object: ${resource}`);\n if (typeof resourceAbilities !== \"object\")\n throw new Error(`Resource must be an object: ${resource}`);\n if (!Object.keys(resourceAbilities).length)\n throw new Error(`Resource object is empty: ${resource}`);\n Object.keys(resourceAbilities).forEach((ability) => {\n const limits = resourceAbilities[ability];\n if (!Array.isArray(limits))\n throw new Error(`Ability limits ${ability} must be an array of objects, found: ${limits}`);\n if (!limits.length)\n throw new Error(`Value of ${ability} is empty array, must be an array with objects`);\n limits.forEach((limit) => {\n if (typeof limit !== \"object\")\n throw new Error(`Ability limits (${ability}) must be an array of objects, found: ${limit}`);\n });\n });\n });\n}\nexport function createRecap(resource, ability, actions, limits = {}) {\n actions?.sort((a, b) => a.localeCompare(b));\n return {\n att: { [resource]: assignAbilityToActions(ability, actions, limits) },\n };\n}\nexport function addResourceToRecap(recap, resource, actions) {\n recap.att[resource] = {\n ...actions,\n };\n const keys = Object.keys(recap.att)?.sort((a, b) => a.localeCompare(b));\n const sorted = keys.reduce((obj, key) => {\n obj.att[key] = recap.att[key];\n return obj;\n }, { att: {} });\n return sorted;\n}\nexport function assignAbilityToActions(ability, actions, limits = {}) {\n actions = actions?.sort((a, b) => a.localeCompare(b));\n const abilities = actions.map((action) => {\n return {\n [`${ability}/${action}`]: [limits],\n };\n });\n return Object.assign({}, ...abilities);\n}\nexport function encodeRecap(recap) {\n isValidRecap(recap);\n return `urn:recap:${base64Encode(recap).replace(/=/g, \"\")}`;\n}\nexport function decodeRecap(recap) {\n const decoded = base64Decode(recap.replace(\"urn:recap:\", \"\"));\n isValidRecap(decoded);\n return decoded;\n}\nexport function createEncodedRecap(resource, ability, actions) {\n const recap = createRecap(resource, ability, actions);\n return encodeRecap(recap);\n}\nexport function isRecap(resource) {\n return resource && resource.includes(\"urn:recap:\");\n}\nexport function mergeEncodedRecaps(recap1, recap2) {\n const decoded1 = decodeRecap(recap1);\n const decoded2 = decodeRecap(recap2);\n const merged = mergeRecaps(decoded1, decoded2);\n return encodeRecap(merged);\n}\nexport function mergeRecaps(recap1, recap2) {\n isValidRecap(recap1);\n isValidRecap(recap2);\n const keys = Object.keys(recap1.att)\n .concat(Object.keys(recap2.att))\n .sort((a, b) => a.localeCompare(b));\n const mergedRecap = { att: {} };\n keys.forEach((key) => {\n const actions = Object.keys(recap1.att?.[key] || {})\n .concat(Object.keys(recap2.att?.[key] || {}))\n .sort((a, b) => a.localeCompare(b));\n actions.forEach((action) => {\n mergedRecap.att[key] = {\n ...mergedRecap.att[key],\n [action]: recap1.att[key]?.[action] || recap2.att[key]?.[action],\n };\n });\n });\n return mergedRecap;\n}\nexport function formatStatementFromRecap(statement = \"\", recap) {\n isValidRecap(recap);\n const base = \"I further authorize the stated URI to perform the following actions on my behalf: \";\n if (statement.includes(base))\n return statement;\n const statementForRecap = [];\n let currentCounter = 0;\n Object.keys(recap.att).forEach((resource) => {\n const actions = Object.keys(recap.att[resource]).map((ability) => {\n return {\n ability: ability.split(\"/\")[0],\n action: ability.split(\"/\")[1],\n };\n });\n actions.sort((a, b) => a.action.localeCompare(b.action));\n const uniqueAbilities = {};\n actions.forEach((action) => {\n if (!uniqueAbilities[action.ability]) {\n uniqueAbilities[action.ability] = [];\n }\n uniqueAbilities[action.ability].push(action.action);\n });\n const abilities = Object.keys(uniqueAbilities).map((ability) => {\n currentCounter++;\n return `(${currentCounter}) '${ability}': '${uniqueAbilities[ability].join(\"', '\")}' for '${resource}'.`;\n });\n statementForRecap.push(abilities.join(\", \").replace(\".,\", \".\"));\n });\n const recapStatemet = statementForRecap.join(\" \");\n const recapStatement = `${base}${recapStatemet}`;\n return `${statement ? statement + \" \" : \"\"}${recapStatement}`;\n}\nexport function getMethodsFromRecap(recap) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n const resource = decoded.att?.eip155;\n if (!resource)\n return [];\n return Object.keys(resource).map((ability) => ability.split(\"/\")[1]);\n}\nexport function getChainsFromRecap(recap) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n const chains = [];\n Object.values(decoded.att).forEach((resource) => {\n Object.values(resource).forEach((ability) => {\n if (ability?.[0]?.chains) {\n chains.push(ability[0].chains);\n }\n });\n });\n return [...new Set(chains.flat())];\n}\nexport function buildRecapStatement(statement, recap) {\n if (!recap)\n return statement;\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n return formatStatementFromRecap(statement, decoded);\n}\nexport function getRecapFromResources(resources) {\n if (!resources)\n return;\n const resource = resources?.[resources.length - 1];\n return isRecap(resource) ? resource : undefined;\n}\n//# sourceMappingURL=cacao.js.map","import { ChaCha20Poly1305 } from \"@stablelib/chacha20poly1305\";\nimport { HKDF } from \"@stablelib/hkdf\";\nimport { randomBytes } from \"@stablelib/random\";\nimport { hash, SHA256 } from \"@stablelib/sha256\";\nimport * as x25519 from \"@stablelib/x25519\";\nimport { concat, fromString, toString } from \"uint8arrays\";\nexport const BASE10 = \"base10\";\nexport const BASE16 = \"base16\";\nexport const BASE64 = \"base64pad\";\nexport const UTF8 = \"utf8\";\nexport const TYPE_0 = 0;\nexport const TYPE_1 = 1;\nconst ZERO_INDEX = 0;\nconst TYPE_LENGTH = 1;\nconst IV_LENGTH = 12;\nconst KEY_LENGTH = 32;\nexport function generateKeyPair() {\n const keyPair = x25519.generateKeyPair();\n return {\n privateKey: toString(keyPair.secretKey, BASE16),\n publicKey: toString(keyPair.publicKey, BASE16),\n };\n}\nexport function generateRandomBytes32() {\n const random = randomBytes(KEY_LENGTH);\n return toString(random, BASE16);\n}\nexport function deriveSymKey(privateKeyA, publicKeyB) {\n const sharedKey = x25519.sharedKey(fromString(privateKeyA, BASE16), fromString(publicKeyB, BASE16), true);\n const hkdf = new HKDF(SHA256, sharedKey);\n const symKey = hkdf.expand(KEY_LENGTH);\n return toString(symKey, BASE16);\n}\nexport function hashKey(key) {\n const result = hash(fromString(key, BASE16));\n return toString(result, BASE16);\n}\nexport function hashMessage(message) {\n const result = hash(fromString(message, UTF8));\n return toString(result, BASE16);\n}\nexport function encodeTypeByte(type) {\n return fromString(`${type}`, BASE10);\n}\nexport function decodeTypeByte(byte) {\n return Number(toString(byte, BASE10));\n}\nexport function encrypt(params) {\n const type = encodeTypeByte(typeof params.type !== \"undefined\" ? params.type : TYPE_0);\n if (decodeTypeByte(type) === TYPE_1 && typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n const senderPublicKey = typeof params.senderPublicKey !== \"undefined\"\n ? fromString(params.senderPublicKey, BASE16)\n : undefined;\n const iv = typeof params.iv !== \"undefined\" ? fromString(params.iv, BASE16) : randomBytes(IV_LENGTH);\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const sealed = box.seal(iv, fromString(params.message, UTF8));\n return serialize({ type, sealed, iv, senderPublicKey });\n}\nexport function decrypt(params) {\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const { sealed, iv } = deserialize(params.encoded);\n const message = box.open(iv, sealed);\n if (message === null)\n throw new Error(\"Failed to decrypt\");\n return toString(message, UTF8);\n}\nexport function serialize(params) {\n if (decodeTypeByte(params.type) === TYPE_1) {\n if (typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n return toString(concat([params.type, params.senderPublicKey, params.iv, params.sealed]), BASE64);\n }\n return toString(concat([params.type, params.iv, params.sealed]), BASE64);\n}\nexport function deserialize(encoded) {\n const bytes = fromString(encoded, BASE64);\n const type = bytes.slice(ZERO_INDEX, TYPE_LENGTH);\n const slice1 = TYPE_LENGTH;\n if (decodeTypeByte(type) === TYPE_1) {\n const slice2 = slice1 + KEY_LENGTH;\n const slice3 = slice2 + IV_LENGTH;\n const senderPublicKey = bytes.slice(slice1, slice2);\n const iv = bytes.slice(slice2, slice3);\n const sealed = bytes.slice(slice3);\n return { type, sealed, iv, senderPublicKey };\n }\n const slice2 = slice1 + IV_LENGTH;\n const iv = bytes.slice(slice1, slice2);\n const sealed = bytes.slice(slice2);\n return { type, sealed, iv };\n}\nexport function validateDecoding(encoded, opts) {\n const deserialized = deserialize(encoded);\n return validateEncoding({\n type: decodeTypeByte(deserialized.type),\n senderPublicKey: typeof deserialized.senderPublicKey !== \"undefined\"\n ? toString(deserialized.senderPublicKey, BASE16)\n : undefined,\n receiverPublicKey: opts?.receiverPublicKey,\n });\n}\nexport function validateEncoding(opts) {\n const type = opts?.type || TYPE_0;\n if (type === TYPE_1) {\n if (typeof opts?.senderPublicKey === \"undefined\") {\n throw new Error(\"missing sender public key\");\n }\n if (typeof opts?.receiverPublicKey === \"undefined\") {\n throw new Error(\"missing receiver public key\");\n }\n }\n return {\n type,\n senderPublicKey: opts?.senderPublicKey,\n receiverPublicKey: opts?.receiverPublicKey,\n };\n}\nexport function isTypeOneEnvelope(result) {\n return (result.type === TYPE_1 &&\n typeof result.senderPublicKey === \"string\" &&\n typeof result.receiverPublicKey === \"string\");\n}\n//# sourceMappingURL=crypto.js.map","import { RELAY_JSONRPC } from \"@walletconnect/relay-api\";\nexport const RELAYER_DEFAULT_PROTOCOL = \"irn\";\nexport function getRelayProtocolName(opts) {\n return opts?.relay || { protocol: RELAYER_DEFAULT_PROTOCOL };\n}\nexport function getRelayProtocolApi(protocol) {\n const jsonrpc = RELAY_JSONRPC[protocol];\n if (typeof jsonrpc === \"undefined\") {\n throw new Error(`Relay Protocol not supported: ${protocol}`);\n }\n return jsonrpc;\n}\n//# sourceMappingURL=relay.js.map","import * as qs from \"query-string\";\nexport function parseRelayParams(params, delimiter = \"-\") {\n const relay = {};\n const prefix = \"relay\" + delimiter;\n Object.keys(params).forEach((key) => {\n if (key.startsWith(prefix)) {\n const name = key.replace(prefix, \"\");\n const value = params[key];\n relay[name] = value;\n }\n });\n return relay;\n}\nexport function parseUri(str) {\n str = str.includes(\"wc://\") ? str.replace(\"wc://\", \"\") : str;\n str = str.includes(\"wc:\") ? str.replace(\"wc:\", \"\") : str;\n const pathStart = str.indexOf(\":\");\n const pathEnd = str.indexOf(\"?\") !== -1 ? str.indexOf(\"?\") : undefined;\n const protocol = str.substring(0, pathStart);\n const path = str.substring(pathStart + 1, pathEnd);\n const requiredValues = path.split(\"@\");\n const queryString = typeof pathEnd !== \"undefined\" ? str.substring(pathEnd) : \"\";\n const queryParams = qs.parse(queryString);\n const methods = typeof queryParams.methods === \"string\" ? queryParams.methods.split(\",\") : undefined;\n const result = {\n protocol,\n topic: parseTopic(requiredValues[0]),\n version: parseInt(requiredValues[1], 10),\n symKey: queryParams.symKey,\n relay: parseRelayParams(queryParams),\n methods,\n expiryTimestamp: queryParams.expiryTimestamp\n ? parseInt(queryParams.expiryTimestamp, 10)\n : undefined,\n };\n return result;\n}\nexport function parseTopic(topic) {\n return topic.startsWith(\"//\") ? topic.substring(2) : topic;\n}\nexport function formatRelayParams(relay, delimiter = \"-\") {\n const prefix = \"relay\";\n const params = {};\n Object.keys(relay).forEach((key) => {\n const k = prefix + delimiter + key;\n if (relay[key]) {\n params[k] = relay[key];\n }\n });\n return params;\n}\nexport function formatUri(params) {\n return (`${params.protocol}:${params.topic}@${params.version}?` +\n qs.stringify({\n symKey: params.symKey,\n ...formatRelayParams(params.relay),\n expiryTimestamp: params.expiryTimestamp,\n ...(params.methods ? { methods: params.methods.join(\",\") } : {}),\n }));\n}\n//# sourceMappingURL=uri.js.map","import { mergeArrays } from \"./misc\";\nimport { isConformingNamespaces, isValidNamespaces, isValidObject } from \"./validators\";\nexport function getAccountsChains(accounts) {\n const chains = [];\n accounts.forEach((account) => {\n const [chain, chainId] = account.split(\":\");\n chains.push(`${chain}:${chainId}`);\n });\n return chains;\n}\nexport function getNamespacesChains(namespaces) {\n const chains = [];\n Object.values(namespaces).forEach((namespace) => {\n chains.push(...getAccountsChains(namespace.accounts));\n });\n return chains;\n}\nexport function getNamespacesMethodsForChainId(namespaces, chainId) {\n const methods = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId))\n methods.push(...namespace.methods);\n });\n return methods;\n}\nexport function getNamespacesEventsForChainId(namespaces, chainId) {\n const events = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId))\n events.push(...namespace.events);\n });\n return events;\n}\nexport function getRequiredNamespacesFromNamespaces(namespaces, caller) {\n const validNamespacesError = isValidNamespaces(namespaces, caller);\n if (validNamespacesError)\n throw new Error(validNamespacesError.message);\n const required = {};\n for (const [namespace, values] of Object.entries(namespaces)) {\n required[namespace] = {\n methods: values.methods,\n events: values.events,\n chains: values.accounts.map((account) => `${account.split(\":\")[0]}:${account.split(\":\")[1]}`),\n };\n }\n return required;\n}\nexport function buildApprovedNamespaces(params) {\n const { proposal: { requiredNamespaces, optionalNamespaces = {} }, supportedNamespaces, } = params;\n const normalizedRequired = normalizeNamespaces(requiredNamespaces);\n const normalizedOptional = normalizeNamespaces(optionalNamespaces);\n const namespaces = {};\n Object.keys(supportedNamespaces).forEach((namespace) => {\n const supportedChains = supportedNamespaces[namespace].chains;\n const supportedMethods = supportedNamespaces[namespace].methods;\n const supportedEvents = supportedNamespaces[namespace].events;\n const supportedAccounts = supportedNamespaces[namespace].accounts;\n supportedChains.forEach((chain) => {\n if (!supportedAccounts.some((account) => account.includes(chain))) {\n throw new Error(`No accounts provided for chain ${chain} in namespace ${namespace}`);\n }\n });\n namespaces[namespace] = {\n chains: supportedChains,\n methods: supportedMethods,\n events: supportedEvents,\n accounts: supportedAccounts,\n };\n });\n const err = isConformingNamespaces(requiredNamespaces, namespaces, \"approve()\");\n if (err)\n throw new Error(err.message);\n const approvedNamespaces = {};\n if (!Object.keys(requiredNamespaces).length && !Object.keys(optionalNamespaces).length)\n return namespaces;\n Object.keys(normalizedRequired).forEach((requiredNamespace) => {\n const chains = supportedNamespaces[requiredNamespace].chains.filter((chain) => normalizedRequired[requiredNamespace]?.chains?.includes(chain));\n const methods = supportedNamespaces[requiredNamespace].methods.filter((method) => normalizedRequired[requiredNamespace]?.methods?.includes(method));\n const events = supportedNamespaces[requiredNamespace].events.filter((event) => normalizedRequired[requiredNamespace]?.events?.includes(event));\n const accounts = chains\n .map((chain) => supportedNamespaces[requiredNamespace].accounts.filter((account) => account.includes(`${chain}:`)))\n .flat();\n approvedNamespaces[requiredNamespace] = {\n chains,\n methods,\n events,\n accounts,\n };\n });\n Object.keys(normalizedOptional).forEach((optionalNamespace) => {\n if (!supportedNamespaces[optionalNamespace])\n return;\n const chainsToAdd = normalizedOptional[optionalNamespace]?.chains?.filter((chain) => supportedNamespaces[optionalNamespace].chains.includes(chain));\n const methodsToAdd = supportedNamespaces[optionalNamespace].methods.filter((method) => normalizedOptional[optionalNamespace]?.methods?.includes(method));\n const eventsToAdd = supportedNamespaces[optionalNamespace].events.filter((event) => normalizedOptional[optionalNamespace]?.events?.includes(event));\n const accountsToAdd = chainsToAdd\n ?.map((chain) => supportedNamespaces[optionalNamespace].accounts.filter((account) => account.includes(`${chain}:`)))\n .flat();\n approvedNamespaces[optionalNamespace] = {\n chains: mergeArrays(approvedNamespaces[optionalNamespace]?.chains, chainsToAdd),\n methods: mergeArrays(approvedNamespaces[optionalNamespace]?.methods, methodsToAdd),\n events: mergeArrays(approvedNamespaces[optionalNamespace]?.events, eventsToAdd),\n accounts: mergeArrays(approvedNamespaces[optionalNamespace]?.accounts, accountsToAdd),\n };\n });\n return approvedNamespaces;\n}\nexport function isCaipNamespace(namespace) {\n return namespace.includes(\":\");\n}\nexport function parseNamespaceKey(namespace) {\n return isCaipNamespace(namespace) ? namespace.split(\":\")[0] : namespace;\n}\nexport function normalizeNamespaces(namespaces) {\n const normalizedNamespaces = {};\n if (!isValidObject(namespaces))\n return normalizedNamespaces;\n for (const [key, values] of Object.entries(namespaces)) {\n const chains = isCaipNamespace(key) ? [key] : values.chains;\n const methods = values.methods || [];\n const events = values.events || [];\n const normalizedKey = parseNamespaceKey(key);\n normalizedNamespaces[normalizedKey] = {\n ...normalizedNamespaces[normalizedKey],\n chains: mergeArrays(chains, normalizedNamespaces[normalizedKey]?.chains),\n methods: mergeArrays(methods, normalizedNamespaces[normalizedKey]?.methods),\n events: mergeArrays(events, normalizedNamespaces[normalizedKey]?.events),\n };\n }\n return normalizedNamespaces;\n}\nexport function getNamespacesFromAccounts(accounts) {\n const namespaces = {};\n accounts?.forEach((account) => {\n const [namespace, chainId] = account.split(\":\");\n if (!namespaces[namespace]) {\n namespaces[namespace] = {\n accounts: [],\n chains: [],\n events: [],\n };\n }\n namespaces[namespace].accounts.push(account);\n namespaces[namespace].chains.push(`${namespace}:${chainId}`);\n });\n return namespaces;\n}\nexport function buildNamespacesFromAuth(methods, accounts) {\n accounts = accounts.map((account) => account.replace(\"did:pkh:\", \"\"));\n const namespaces = getNamespacesFromAccounts(accounts);\n for (const [_, values] of Object.entries(namespaces)) {\n if (!values.methods) {\n values.methods = methods;\n }\n else {\n values.methods = mergeArrays(values.methods, methods);\n }\n values.events = [\"chainChanged\", \"accountsChanged\"];\n }\n return namespaces;\n}\n//# sourceMappingURL=namespaces.js.map","export const SDK_ERRORS = {\n INVALID_METHOD: {\n message: \"Invalid method.\",\n code: 1001,\n },\n INVALID_EVENT: {\n message: \"Invalid event.\",\n code: 1002,\n },\n INVALID_UPDATE_REQUEST: {\n message: \"Invalid update request.\",\n code: 1003,\n },\n INVALID_EXTEND_REQUEST: {\n message: \"Invalid extend request.\",\n code: 1004,\n },\n INVALID_SESSION_SETTLE_REQUEST: {\n message: \"Invalid session settle request.\",\n code: 1005,\n },\n UNAUTHORIZED_METHOD: {\n message: \"Unauthorized method.\",\n code: 3001,\n },\n UNAUTHORIZED_EVENT: {\n message: \"Unauthorized event.\",\n code: 3002,\n },\n UNAUTHORIZED_UPDATE_REQUEST: {\n message: \"Unauthorized update request.\",\n code: 3003,\n },\n UNAUTHORIZED_EXTEND_REQUEST: {\n message: \"Unauthorized extend request.\",\n code: 3004,\n },\n USER_REJECTED: {\n message: \"User rejected.\",\n code: 5000,\n },\n USER_REJECTED_CHAINS: {\n message: \"User rejected chains.\",\n code: 5001,\n },\n USER_REJECTED_METHODS: {\n message: \"User rejected methods.\",\n code: 5002,\n },\n USER_REJECTED_EVENTS: {\n message: \"User rejected events.\",\n code: 5003,\n },\n UNSUPPORTED_CHAINS: {\n message: \"Unsupported chains.\",\n code: 5100,\n },\n UNSUPPORTED_METHODS: {\n message: \"Unsupported methods.\",\n code: 5101,\n },\n UNSUPPORTED_EVENTS: {\n message: \"Unsupported events.\",\n code: 5102,\n },\n UNSUPPORTED_ACCOUNTS: {\n message: \"Unsupported accounts.\",\n code: 5103,\n },\n UNSUPPORTED_NAMESPACE_KEY: {\n message: \"Unsupported namespace key.\",\n code: 5104,\n },\n USER_DISCONNECTED: {\n message: \"User disconnected.\",\n code: 6000,\n },\n SESSION_SETTLEMENT_FAILED: {\n message: \"Session settlement failed.\",\n code: 7000,\n },\n WC_METHOD_UNSUPPORTED: {\n message: \"Unsupported wc_ method.\",\n code: 10001,\n },\n};\nexport const INTERNAL_ERRORS = {\n NOT_INITIALIZED: {\n message: \"Not initialized.\",\n code: 1,\n },\n NO_MATCHING_KEY: {\n message: \"No matching key.\",\n code: 2,\n },\n RESTORE_WILL_OVERRIDE: {\n message: \"Restore will override.\",\n code: 3,\n },\n RESUBSCRIBED: {\n message: \"Resubscribed.\",\n code: 4,\n },\n MISSING_OR_INVALID: {\n message: \"Missing or invalid.\",\n code: 5,\n },\n EXPIRED: {\n message: \"Expired.\",\n code: 6,\n },\n UNKNOWN_TYPE: {\n message: \"Unknown type.\",\n code: 7,\n },\n MISMATCHED_TOPIC: {\n message: \"Mismatched topic.\",\n code: 8,\n },\n NON_CONFORMING_NAMESPACES: {\n message: \"Non conforming namespaces.\",\n code: 9,\n },\n};\nexport function getInternalError(key, context) {\n const { message, code } = INTERNAL_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\nexport function getSdkError(key, context) {\n const { message, code } = SDK_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n//# sourceMappingURL=errors.js.map","import { getNamespacesChains, getNamespacesMethodsForChainId, getNamespacesEventsForChainId, getAccountsChains, } from \"./namespaces\";\nimport { getSdkError, getInternalError } from \"./errors\";\nimport { hasOverlap } from \"./misc\";\nimport { getChainsFromNamespace } from \"./caip\";\nexport function isValidArray(arr, itemCondition) {\n if (Array.isArray(arr)) {\n if (typeof itemCondition !== \"undefined\" && arr.length) {\n return arr.every(itemCondition);\n }\n else {\n return true;\n }\n }\n return false;\n}\nexport function isValidObject(obj) {\n return Object.getPrototypeOf(obj) === Object.prototype && Object.keys(obj).length;\n}\nexport function isUndefined(input) {\n return typeof input === \"undefined\";\n}\nexport function isValidString(input, optional) {\n if (optional && isUndefined(input))\n return true;\n return typeof input === \"string\" && Boolean(input.trim().length);\n}\nexport function isValidNumber(input, optional) {\n if (optional && isUndefined(input))\n return true;\n return typeof input === \"number\" && !isNaN(input);\n}\nexport function isSessionCompatible(session, params) {\n const { requiredNamespaces } = params;\n const sessionKeys = Object.keys(session.namespaces);\n const paramsKeys = Object.keys(requiredNamespaces);\n let compatible = true;\n if (!hasOverlap(paramsKeys, sessionKeys))\n return false;\n sessionKeys.forEach((key) => {\n const { accounts, methods, events } = session.namespaces[key];\n const chains = getAccountsChains(accounts);\n const requiredNamespace = requiredNamespaces[key];\n if (!hasOverlap(getChainsFromNamespace(key, requiredNamespace), chains) ||\n !hasOverlap(requiredNamespace.methods, methods) ||\n !hasOverlap(requiredNamespace.events, events)) {\n compatible = false;\n }\n });\n return compatible;\n}\nexport function isValidChainId(value) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n return split.length === 2;\n }\n return false;\n}\nexport function isValidAccountId(value) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n if (split.length === 3) {\n const chainId = split[0] + \":\" + split[1];\n return !!split[2] && isValidChainId(chainId);\n }\n }\n return false;\n}\nexport function isValidUrl(value) {\n if (isValidString(value, false)) {\n try {\n const url = new URL(value);\n return typeof url !== \"undefined\";\n }\n catch (e) {\n return false;\n }\n }\n return false;\n}\nexport function isProposalStruct(input) {\n return input?.proposer?.publicKey;\n}\nexport function isSessionStruct(input) {\n return input?.topic;\n}\nexport function isValidController(input, method) {\n let error = null;\n if (!isValidString(input?.publicKey, false)) {\n error = getInternalError(\"MISSING_OR_INVALID\", `${method} controller public key should be a string`);\n }\n return error;\n}\nexport function isValidNamespaceMethodsOrEvents(input) {\n let valid = true;\n if (isValidArray(input)) {\n if (input.length) {\n valid = input.every((item) => isValidString(item, false));\n }\n }\n else {\n valid = false;\n }\n return valid;\n}\nexport function isValidChains(key, chains, context) {\n let error = null;\n if (isValidArray(chains) && chains.length) {\n chains.forEach((chain) => {\n if (error)\n return;\n if (!isValidChainId(chain)) {\n error = getSdkError(\"UNSUPPORTED_CHAINS\", `${context}, chain ${chain} should be a string and conform to \"namespace:chainId\" format`);\n }\n });\n }\n else if (!isValidChainId(key)) {\n error = getSdkError(\"UNSUPPORTED_CHAINS\", `${context}, chains must be defined as \"namespace:chainId\" e.g. \"eip155:1\": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: [\"eip155:1\", \"eip155:5\"] }`);\n }\n return error;\n}\nexport function isValidNamespaceChains(namespaces, method, type) {\n let error = null;\n Object.entries(namespaces).forEach(([key, namespace]) => {\n if (error)\n return;\n const validChainsError = isValidChains(key, getChainsFromNamespace(key, namespace), `${method} ${type}`);\n if (validChainsError) {\n error = validChainsError;\n }\n });\n return error;\n}\nexport function isValidAccounts(accounts, context) {\n let error = null;\n if (isValidArray(accounts)) {\n accounts.forEach((account) => {\n if (error)\n return;\n if (!isValidAccountId(account)) {\n error = getSdkError(\"UNSUPPORTED_ACCOUNTS\", `${context}, account ${account} should be a string and conform to \"namespace:chainId:address\" format`);\n }\n });\n }\n else {\n error = getSdkError(\"UNSUPPORTED_ACCOUNTS\", `${context}, accounts should be an array of strings conforming to \"namespace:chainId:address\" format`);\n }\n return error;\n}\nexport function isValidNamespaceAccounts(input, method) {\n let error = null;\n Object.values(input).forEach((namespace) => {\n if (error)\n return;\n const validAccountsError = isValidAccounts(namespace?.accounts, `${method} namespace`);\n if (validAccountsError) {\n error = validAccountsError;\n }\n });\n return error;\n}\nexport function isValidActions(namespace, context) {\n let error = null;\n if (!isValidNamespaceMethodsOrEvents(namespace?.methods)) {\n error = getSdkError(\"UNSUPPORTED_METHODS\", `${context}, methods should be an array of strings or empty array for no methods`);\n }\n else if (!isValidNamespaceMethodsOrEvents(namespace?.events)) {\n error = getSdkError(\"UNSUPPORTED_EVENTS\", `${context}, events should be an array of strings or empty array for no events`);\n }\n return error;\n}\nexport function isValidNamespaceActions(input, method) {\n let error = null;\n Object.values(input).forEach((namespace) => {\n if (error)\n return;\n const validActionsError = isValidActions(namespace, `${method}, namespace`);\n if (validActionsError) {\n error = validActionsError;\n }\n });\n return error;\n}\nexport function isValidRequiredNamespaces(input, method, type) {\n let error = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validChainsError = isValidNamespaceChains(input, method, type);\n if (validChainsError) {\n error = validChainsError;\n }\n }\n else {\n error = getInternalError(\"MISSING_OR_INVALID\", `${method}, ${type} should be an object with data`);\n }\n return error;\n}\nexport function isValidNamespaces(input, method) {\n let error = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validAccountsError = isValidNamespaceAccounts(input, method);\n if (validAccountsError) {\n error = validAccountsError;\n }\n }\n else {\n error = getInternalError(\"MISSING_OR_INVALID\", `${method}, namespaces should be an object with data`);\n }\n return error;\n}\nexport function isValidRelay(input) {\n return isValidString(input.protocol, true);\n}\nexport function isValidRelays(input, optional) {\n let valid = false;\n if (optional && !input)\n valid = true;\n else if (input && isValidArray(input) && input.length) {\n input.forEach((relay) => {\n valid = isValidRelay(relay);\n });\n }\n return valid;\n}\nexport function isValidId(input) {\n return typeof input === \"number\";\n}\nexport function isValidParams(input) {\n return typeof input !== \"undefined\" && typeof input !== null;\n}\nexport function isValidErrorReason(input) {\n if (!input)\n return false;\n if (typeof input !== \"object\")\n return false;\n if (!input.code || !isValidNumber(input.code, false))\n return false;\n if (!input.message || !isValidString(input.message, false))\n return false;\n return true;\n}\nexport function isValidRequest(request) {\n if (isUndefined(request))\n return false;\n if (!isValidString(request.method, false))\n return false;\n return true;\n}\nexport function isValidResponse(response) {\n if (isUndefined(response))\n return false;\n if (isUndefined(response.result) && isUndefined(response.error))\n return false;\n if (!isValidNumber(response.id, false))\n return false;\n if (!isValidString(response.jsonrpc, false))\n return false;\n return true;\n}\nexport function isValidEvent(event) {\n if (isUndefined(event))\n return false;\n if (!isValidString(event.name, false))\n return false;\n return true;\n}\nexport function isValidNamespacesChainId(namespaces, chainId) {\n if (!isValidChainId(chainId))\n return false;\n const chains = getNamespacesChains(namespaces);\n if (!chains.includes(chainId))\n return false;\n return true;\n}\nexport function isValidNamespacesRequest(namespaces, chainId, method) {\n if (!isValidString(method, false))\n return false;\n const methods = getNamespacesMethodsForChainId(namespaces, chainId);\n return methods.includes(method);\n}\nexport function isValidNamespacesEvent(namespaces, chainId, eventName) {\n if (!isValidString(eventName, false))\n return false;\n const events = getNamespacesEventsForChainId(namespaces, chainId);\n return events.includes(eventName);\n}\nexport function isConformingNamespaces(requiredNamespaces, namespaces, context) {\n let error = null;\n const parsedRequired = parseNamespaces(requiredNamespaces);\n const parsedApproved = parseApprovedNamespaces(namespaces);\n const requiredChains = Object.keys(parsedRequired);\n const approvedChains = Object.keys(parsedApproved);\n const uniqueRequired = filterDuplicateNamespaces(Object.keys(requiredNamespaces));\n const uniqueApproved = filterDuplicateNamespaces(Object.keys(namespaces));\n const missingRequiredNamespaces = uniqueRequired.filter((namespace) => !uniqueApproved.includes(namespace));\n if (missingRequiredNamespaces.length) {\n error = getInternalError(\"NON_CONFORMING_NAMESPACES\", `${context} namespaces keys don't satisfy requiredNamespaces.\n Required: ${missingRequiredNamespaces.toString()}\n Received: ${Object.keys(namespaces).toString()}`);\n }\n if (!hasOverlap(requiredChains, approvedChains)) {\n error = getInternalError(\"NON_CONFORMING_NAMESPACES\", `${context} namespaces chains don't satisfy required namespaces.\n Required: ${requiredChains.toString()}\n Approved: ${approvedChains.toString()}`);\n }\n Object.keys(namespaces).forEach((chain) => {\n if (!chain.includes(\":\"))\n return;\n if (error)\n return;\n const chains = getAccountsChains(namespaces[chain].accounts);\n if (!chains.includes(chain)) {\n error = getInternalError(\"NON_CONFORMING_NAMESPACES\", `${context} namespaces accounts don't satisfy namespace accounts for ${chain}\n Required: ${chain}\n Approved: ${chains.toString()}`);\n }\n });\n requiredChains.forEach((chain) => {\n if (error)\n return;\n if (!hasOverlap(parsedRequired[chain].methods, parsedApproved[chain].methods)) {\n error = getInternalError(\"NON_CONFORMING_NAMESPACES\", `${context} namespaces methods don't satisfy namespace methods for ${chain}`);\n }\n else if (!hasOverlap(parsedRequired[chain].events, parsedApproved[chain].events)) {\n error = getInternalError(\"NON_CONFORMING_NAMESPACES\", `${context} namespaces events don't satisfy namespace events for ${chain}`);\n }\n });\n return error;\n}\nfunction parseNamespaces(namespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n const isInlineChainDefinition = key.includes(\":\");\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n }\n else {\n namespaces[key].chains?.forEach((chain) => {\n parsed[chain] = {\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\nfunction filterDuplicateNamespaces(namespaces) {\n return [\n ...new Set(namespaces.map((namespace) => namespace.includes(\":\") ? namespace.split(\":\")[0] : namespace)),\n ];\n}\nfunction parseApprovedNamespaces(namespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n const isInlineChainDefinition = key.includes(\":\");\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n }\n else {\n const chains = getAccountsChains(namespaces[key].accounts);\n chains?.forEach((chain) => {\n parsed[chain] = {\n accounts: namespaces[key].accounts.filter((account) => account.includes(`${chain}:`)),\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\nexport function isValidRequestExpiry(expiry, boundaries) {\n return isValidNumber(expiry, false) && expiry <= boundaries.max && expiry >= boundaries.min;\n}\n//# sourceMappingURL=validators.js.map","import { getEnvironment, ENV_MAP, isBrowser, isReactNative } from \"./misc\";\nexport function isOnline() {\n const env = getEnvironment();\n return new Promise((resolve) => {\n switch (env) {\n case ENV_MAP.browser:\n resolve(getBrowserOnlineStatus());\n break;\n case ENV_MAP.reactNative:\n resolve(getReactNativeOnlineStatus());\n break;\n case ENV_MAP.node:\n resolve(getNodeOnlineStatus());\n break;\n default:\n resolve(true);\n }\n });\n}\nexport function getBrowserOnlineStatus() {\n return isBrowser() && navigator?.onLine;\n}\nexport async function getReactNativeOnlineStatus() {\n if (isReactNative() && typeof global !== \"undefined\" && global?.NetInfo) {\n const state = await global?.NetInfo.fetch();\n return state?.isConnected;\n }\n return true;\n}\nexport function getNodeOnlineStatus() {\n return true;\n}\nexport function subscribeToNetworkChange(callbackHandler) {\n const env = getEnvironment();\n switch (env) {\n case ENV_MAP.browser:\n subscribeToBrowserNetworkChange(callbackHandler);\n break;\n case ENV_MAP.reactNative:\n subscribeToReactNativeNetworkChange(callbackHandler);\n break;\n case ENV_MAP.node:\n break;\n default:\n break;\n }\n}\nexport function subscribeToBrowserNetworkChange(callbackHandler) {\n if (!isReactNative() && isBrowser()) {\n window.addEventListener(\"online\", () => callbackHandler(true));\n window.addEventListener(\"offline\", () => callbackHandler(false));\n }\n}\nexport function subscribeToReactNativeNetworkChange(callbackHandler) {\n if (isReactNative() && typeof global !== \"undefined\" && global?.NetInfo) {\n global?.NetInfo.addEventListener((state) => callbackHandler(state?.isConnected));\n }\n}\n//# sourceMappingURL=network.js.map","const memoryStore = {};\nexport class MemoryStore {\n static get(key) {\n return memoryStore[key];\n }\n static set(key, value) {\n memoryStore[key] = value;\n }\n static delete(key) {\n delete memoryStore[key];\n }\n}\n//# sourceMappingURL=memoryStore.js.map"],"names":["CAIP_DELIMITER","chain","namespace","reference","params","account","address","array","parser","unique","str","value","accounts","namespaces","keys","key","ns","chains","requiredNamespaces","namespaceProps","E","d","u","getDocument","getNavigator","_a","e","queryString","newQueryParams","queryParams","qs","__spreadValues","getWindowMetadata","protocol","version","env","metadata","getLocation","OS","Version","info","detect","os","sdkVersion","id","relayUrl","auth","projectId","useOnCloseEvent","bundleId","splitUrl","ua","url","domain","obj","type","context","depth","a","b","x","arr","map","cb","res","word","c","w","expiry","FIVE_MINUTES","expireErrorMessage","timeout","toMiliseconds","cacheResolve","cacheReject","cacheTimeout","promiseResolve","promiseReject","promise","resolve","reject","result","error","topic","target","parsed","ttl","now","fromMiliseconds","event","wcDeepLink","json","deeplink","link","err","store","deepLink","arr1","arr2","global","logger","this","_BN","_constructorGuard","throwFault","toHex","Zero","r","hashMessage","minimalisticAssert","assert","inherits_browserModule","require$$0","require$$1","utils","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","BlockHash","common","ft_1","ch32","maj32","s0_256","s1_256","g0_256","g1_256","shaCommon","require$$2","require$$3","SHA256","SHA512","require$$4","f","K","s","BN","EC","DEFAULT_RPC_URL","reconstructedMessage","cacaoSignature","chainId","baseRpcUrl","message","signature","recoverAddress","eip1271MagicValue","dynamicTypeOffset","dynamicTypeLength","nonPrefixedSignature","nonPrefixedHashedMessage","data","response","generateJsonRpcId","g","y","h","l","didPrefix","iss","segments","cacao","payload","reconstructed","walletAddress","verifySignature","header","statement","uri","nonce","issuedAt","resources","resource","recap","decoded","val","requestPayload","authPayload","methods","requested","supportedChains","getCommonValuesInArrays","requestedRecaps","updatedResources","actions","supportedActions","formattedActions","updatedRecap","__spreadProps","_b","action","abilities","ability","input","encodedString","resourceAbilities","limits","limit","recap1","recap2","decoded1","decoded2","merged","mergedRecap","base","statementForRecap","currentCounter","uniqueAbilities","recapStatemet","recapStatement","ZERO_INDEX","TYPE_LENGTH","IV_LENGTH","KEY_LENGTH","keyPair","x25519","toString","random","randomBytes","privateKeyA","publicKeyB","sharedKey","fromString","symKey","HKDF","hash","byte","senderPublicKey","iv","sealed","ChaCha20Poly1305","box","concat","encoded","bytes","slice1","slice2","slice3","opts","deserialized","jsonrpc","RELAY_JSONRPC","delimiter","relay","prefix","name","pathStart","pathEnd","requiredValues","k","events","caller","validNamespacesError","isValidNamespaces","required","values","optionalNamespaces","supportedNamespaces","normalizedRequired","normalizedOptional","supportedMethods","supportedEvents","supportedAccounts","isConformingNamespaces","approvedNamespaces","requiredNamespace","method","optionalNamespace","_c","_d","_e","_f","chainsToAdd","methodsToAdd","eventsToAdd","accountsToAdd","mergeArrays","normalizedNamespaces","isValidObject","normalizedKey","_","code","itemCondition","optional","session","sessionKeys","paramsKeys","compatible","hasOverlap","getAccountsChains","getChainsFromNamespace","split","getInternalError","valid","item","getSdkError","validChainsError","validAccountsError","validActionsError","request","getNamespacesChains","getNamespacesMethodsForChainId","eventName","getNamespacesEventsForChainId","parsedRequired","parseNamespaces","parsedApproved","parseApprovedNamespaces","requiredChains","approvedChains","uniqueRequired","filterDuplicateNamespaces","uniqueApproved","missingRequiredNamespaces","boundaries","getEnvironment","ENV_MAP","isBrowser","isReactNative","state","callbackHandler","memoryStore"],"mappings":"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E,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB;AACA,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C;AACA,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC;OACM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;OACd,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;MACnB;AACL,IAAG,CAAC;AACJ;GACE,IAAI,SAAS,EAAE;KACb,MAAA,CAAA,OAAA,GAAiB,OAAO,CAAC;AAC7B,IAAG,MAAM;AACT,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC7C,OAAM,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;MAChD;IAMF;AACH,EAAC,GAAG,CAAA;;;;;AC/oBG,MAAMjE,SAAO,GAAG,cAAc;;ACCrC,IAAI,sBAAsB,GAAG,KAAK,CAAC;AACnC,IAAI,aAAa,GAAG,KAAK,CAAC;AAC1B,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AACpF,IAAI,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;AAErC,IAAI,aAAa,GAAG,IAAI,CAAC;AACzB,SAAS,eAAe,GAAG;AAC3B,IAAI,IAAI;AACR,QAAQ,MAAM,OAAO,GAAG,EAAE,CAAC;AAC3B;AACA,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACzD,YAAY,IAAI;AAChB,gBAAgB,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,MAAM,EAAE;AACvD,oBAAoB,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AACrD,iBAAiB;AACjB,gBAAgB,CAAC;AACjB,aAAa;AACb,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE;AAC5B,YAAY,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,SAAS;AACT,QAAQ,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;AAC9F,YAAY,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AACrD,SAAS;AACT,KAAK;AACL,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,OAAO,KAAK,CAAC,OAAO,CAAC;AAC7B,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD,MAAM,eAAe,GAAG,eAAe,EAAE,CAAC;AACnC,IAAI,QAAQ,CAAC;AACpB,CAAC,UAAU,QAAQ,EAAE;AACrB,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAChC,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAC9B,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;AACpC,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAChC,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC5B,CAAC,EAAE,QAAQ,KAAK,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC;AACzB,IAAI,SAAS,CAAC;AACrB,CAAC,UAAU,SAAS,EAAE;AACtB;AACA;AACA;AACA,IAAI,SAAS,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC;AACjD;AACA,IAAI,SAAS,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAAC;AACrD;AACA;AACA,IAAI,SAAS,CAAC,uBAAuB,CAAC,GAAG,uBAAuB,CAAC;AACjE;AACA;AACA,IAAI,SAAS,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC;AACjD;AACA,IAAI,SAAS,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC;AAC/C;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;AACrC;AACA;AACA;AACA,IAAI,SAAS,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;AACnD;AACA;AACA;AACA,IAAI,SAAS,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC;AACjD;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;AAC7C;AACA;AACA;AACA,IAAI,SAAS,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,CAAC;AACvD;AACA;AACA;AACA,IAAI,SAAS,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,CAAC;AACvD;AACA;AACA;AACA,IAAI,SAAS,CAAC,qBAAqB,CAAC,GAAG,qBAAqB,CAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;AACnD;AACA;AACA,IAAI,SAAS,CAAC,oBAAoB,CAAC,GAAG,oBAAoB,CAAC;AAC3D;AACA;AACA,IAAI,SAAS,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC;AACjD;AACA;AACA,IAAI,SAAS,CAAC,yBAAyB,CAAC,GAAG,yBAAyB,CAAC;AACrE;AACA;AACA,IAAI,SAAS,CAAC,yBAAyB,CAAC,GAAG,yBAAyB,CAAC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,sBAAsB,CAAC,GAAG,sBAAsB,CAAC;AAC/D;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAAC;AACrD,CAAC,EAAE,SAAS,KAAK,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC;AAElC,MAAM,GAAG,GAAG,kBAAkB,CAAC;AACxB,MAAM,MAAM,CAAC;AACpB,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;AAC/C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,KAAK,EAAE,OAAO;AAC1B,YAAY,QAAQ,EAAE,KAAK;AAC3B,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;AACzB,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;AAC7C,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;AACtC,YAAY,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AACpF,SAAS;AACT,QAAQ,IAAI,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE;AAC1C,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE;AAClB,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE;AAClB,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;AACrC;AACA,QAAQ,IAAI,aAAa,EAAE;AAC3B,YAAY,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC9D,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;AAC/C,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,YAAY,MAAM,GAAG,EAAE,CAAC;AACxB,SAAS;AACT,QAAQ,MAAM,cAAc,GAAG,EAAE,CAAC;AAClC,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC7C,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACtC,YAAY,IAAI;AAChB,gBAAgB,IAAI,KAAK,YAAY,UAAU,EAAE;AACjD,oBAAoB,IAAI,GAAG,GAAG,EAAE,CAAC;AACjC,oBAAoB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3D,wBAAwB,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClD,wBAAwB,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACpD,qBAAqB;AACrB,oBAAoB,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,gBAAgB,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AAC5E,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3E,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACxF,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5C,QAAQ,cAAc,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACvD,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC;AAC/B,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC;AACrB,QAAQ,QAAQ,IAAI;AACpB,YAAY,KAAK,SAAS,CAAC,aAAa,EAAE;AAC1C,gBAAgB,GAAG,GAAG,eAAe,CAAC;AACtC,gBAAgB,MAAM,KAAK,GAAG,OAAO,CAAC;AACtC,gBAAgB,QAAQ,KAAK;AAC7B,oBAAoB,KAAK,UAAU,CAAC;AACpC,oBAAoB,KAAK,WAAW,CAAC;AACrC,oBAAoB,KAAK,kBAAkB;AAC3C,wBAAwB,GAAG,IAAI,GAAG,GAAG,KAAK,CAAC;AAC3C,wBAAwB,MAAM;AAC9B,oBAAoB,KAAK,gBAAgB,CAAC;AAC1C,oBAAoB,KAAK,gBAAgB;AACzC,wBAAwB,GAAG,IAAI,cAAc,CAAC;AAC9C,wBAAwB,MAAM;AAC9B,oBAAoB,KAAK,wBAAwB;AACjD,wBAAwB,GAAG,IAAI,iBAAiB,CAAC;AACjD,wBAAwB,MAAM;AAC9B,iBAAiB;AACjB,gBAAgB,MAAM;AACtB,aAAa;AACb,YAAY,KAAK,SAAS,CAAC,cAAc,CAAC;AAC1C,YAAY,KAAK,SAAS,CAAC,kBAAkB,CAAC;AAC9C,YAAY,KAAK,SAAS,CAAC,WAAW,CAAC;AACvC,YAAY,KAAK,SAAS,CAAC,aAAa,CAAC;AACzC,YAAY,KAAK,SAAS,CAAC,uBAAuB,CAAC;AACnD,YAAY,KAAK,SAAS,CAAC,oBAAoB,CAAC;AAChD,YAAY,KAAK,SAAS,CAAC,uBAAuB;AAClD,gBAAgB,GAAG,GAAG,IAAI,CAAC;AAC3B,gBAAgB,MAAM;AACtB,SAAS;AACT,QAAQ,IAAI,GAAG,EAAE;AACjB,YAAY,OAAO,IAAI,8CAA8C,GAAG,GAAG,GAAG,IAAI,CAAC;AACnF,SAAS;AACT,QAAQ,IAAI,cAAc,CAAC,MAAM,EAAE;AACnC,YAAY,OAAO,IAAI,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;AAC9D,SAAS;AACT;AACA,QAAQ,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AACzC,QAAQ,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC9B,QAAQ,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;AAC1B,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE;AACnD,YAAY,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACrC,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;AACtC,QAAQ,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;AAC7C,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACxE,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE,KAAK;AACxB,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;AAC7C,QAAQ,IAAI,CAAC,CAAC,SAAS,EAAE;AACzB,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;AACpD,QAAQ,IAAI,CAAC,CAAC,SAAS,EAAE;AACzB,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACtD,KAAK;AACL,IAAI,cAAc,CAAC,OAAO,EAAE;AAI5B,QAAQ,IAAI,eAAe,EAAE;AAC7B,YAAY,IAAI,CAAC,UAAU,CAAC,6CAA6C,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAChH,gBAAgB,SAAS,EAAE,4BAA4B,EAAE,IAAI,EAAE,eAAe;AAC9E,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK;AACL,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE;AACpC,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACzC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,OAAO,IAAI,IAAI,EAAE;AAC7B,YAAY,OAAO,GAAG,gBAAgB,CAAC;AACvC,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,gBAAgB,EAAE;AACpD,YAAY,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE;AAClE,gBAAgB,SAAS,EAAE,kBAAkB;AAC7C,gBAAgB,KAAK,EAAE,mBAAmB;AAC1C,gBAAgB,KAAK,EAAE,KAAK;AAC5B,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE;AACvB,YAAY,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE;AAClE,gBAAgB,SAAS,EAAE,kBAAkB;AAC7C,gBAAgB,KAAK,EAAE,aAAa;AACpC,gBAAgB,KAAK,EAAE,KAAK;AAC5B,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK;AACL,IAAI,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE;AACtD,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC;AACrC,SAAS;AACT,aAAa;AACb,YAAY,OAAO,GAAG,EAAE,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,aAAa,EAAE;AACnC,YAAY,IAAI,CAAC,UAAU,CAAC,kBAAkB,GAAG,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;AAC1F,gBAAgB,KAAK,EAAE,KAAK;AAC5B,gBAAgB,aAAa,EAAE,aAAa;AAC5C,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,aAAa,EAAE;AACnC,YAAY,IAAI,CAAC,UAAU,CAAC,oBAAoB,GAAG,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE;AAC/F,gBAAgB,KAAK,EAAE,KAAK;AAC5B,gBAAgB,aAAa,EAAE,aAAa;AAC5C,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK;AACL,IAAI,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE;AAC3B,QAAQ,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,IAAI,IAAI,EAAE;AACjD,YAAY,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3F,SAAS;AACT,KAAK;AACL,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE;AAChC,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AAC7B,YAAY,IAAI,CAAC,UAAU,CAAC,oCAAoC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,4BAA4B,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3M,SAAS;AACT,aAAa,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,IAAI,IAAI,EAAE;AACtD,YAAY,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3F,SAAS;AACT,KAAK;AACL,IAAI,OAAO,YAAY,GAAG;AAC1B,QAAQ,IAAI,CAAC,aAAa,EAAE;AAC5B,YAAY,aAAa,GAAG,IAAI,MAAM,CAACA,SAAO,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,OAAO,aAAa,CAAC;AAC7B,KAAK;AACL,IAAI,OAAO,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE;AAChD,QAAQ,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;AACtC,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC,uCAAuC,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;AACzH,gBAAgB,SAAS,EAAE,eAAe;AAC1C,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,sBAAsB,EAAE;AACpC,YAAY,IAAI,CAAC,UAAU,EAAE;AAC7B,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC,4BAA4B,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAC9G,gBAAgB,SAAS,EAAE,eAAe;AAC1C,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,aAAa,GAAG,CAAC,CAAC,UAAU,CAAC;AACrC,QAAQ,sBAAsB,GAAG,CAAC,CAAC,SAAS,CAAC;AAC7C,KAAK;AACL,IAAI,OAAO,WAAW,CAAC,QAAQ,EAAE;AACjC,QAAQ,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;AACxD,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;AAC3B,YAAY,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,CAAC;AAC1E,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,SAAS,GAAG,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;AACzB,QAAQ,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;AACnC,KAAK;AACL,CAAC;AACD,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;AAC1B,MAAM,CAAC,MAAM,GAAG,QAAQ;;ACjWjB,MAAMA,SAAO,GAAG,aAAa;;ACGpC,MAAMkE,QAAM,GAAG,IAAI,MAAM,CAAClE,SAAO,CAAC,CAAC;AACnC;AACA,SAAS,SAAS,CAAC,KAAK,EAAE;AAC1B,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;AACjC,CAAC;AACD,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACrB,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,KAAK,CAAC,KAAK,GAAG,YAAY;AAC9B,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3D,QAAQ,OAAO,QAAQ,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAClF,KAAK,CAAC;AACN,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACM,SAAS,WAAW,CAAC,KAAK,EAAE;AACnC,IAAI,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,EAAE;AAC3E,CAAC;AACD,SAAS,SAAS,CAAC,KAAK,EAAE;AAC1B,IAAI,QAAQ,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE;AAChF,CAAC;AACM,SAAS,OAAO,CAAC,KAAK,EAAE;AAC/B,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;AACvB,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,WAAW,KAAK,UAAU,EAAE;AAC1C,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACrC,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACtD,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,QAAQ,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3B,QAAQ,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE;AAChD,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACM,SAAS,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE;AACzC,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,OAAO,GAAG,EAAE,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACrC,QAAQkE,QAAM,CAAC,eAAe,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;AAChE,QAAQ,MAAM,MAAM,GAAG,EAAE,CAAC;AAC1B,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AACzC,YAAY,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;AAClD,SAAS;AACT,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,SAAS;AACT,QAAQ,OAAO,QAAQ,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,kBAAkB,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;AACrG,QAAQ,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;AAC7B,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;AAC1B,QAAQ,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;AAC5B,QAAQ,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACrC,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,YAAY,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE;AAC3C,gBAAgB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAChC,aAAa;AACb,iBAAiB,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;AACjD,gBAAgB,GAAG,IAAI,GAAG,CAAC;AAC3B,aAAa;AACb,iBAAiB;AACjB,gBAAgBA,QAAM,CAAC,kBAAkB,CAAC,wBAAwB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACpF,aAAa;AACb,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,EAAE,CAAC;AAC1B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAChD,YAAY,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,SAAS;AACT,QAAQ,OAAO,QAAQ,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,QAAQ,OAAO,QAAQ,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,OAAOA,QAAM,CAAC,kBAAkB,CAAC,wBAAwB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC/E,CAAC;AACM,SAAS,MAAM,CAAC,KAAK,EAAE;AAC9B,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7E,IAAI,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;AAC1C,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK;AACvC,QAAQ,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACnC,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACtC,KAAK,EAAE,CAAC,CAAC,CAAC;AACV,IAAI,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAiBM,SAAS,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE;AACvC,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5B,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,EAAE;AAC/B,QAAQA,QAAM,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;AAC1C,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAC7C,IAAI,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AACM,SAAS,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE;AAC3C,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE;AACzE,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE;AACnD,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD,MAAM,aAAa,GAAG,kBAAkB,CAAC;AAClC,SAAS,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE;AACxC,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,OAAO,GAAG,EAAE,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACrC,QAAQA,QAAM,CAAC,eAAe,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;AAC/D,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC;AACrB,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,GAAG,GAAG,aAAa,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACnD,YAAY,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE;AACxB,YAAY,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,gBAAgB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAChC,aAAa;AACb,YAAY,OAAO,IAAI,GAAG,GAAG,CAAC;AAC9B,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACrC,QAAQ,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnC,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,YAAY,QAAQ,KAAK,GAAG,KAAK,EAAE;AACnC,SAAS;AACT,QAAQ,OAAO,IAAI,GAAG,KAAK,CAAC;AAC5B,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,kBAAkB,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;AACrG,QAAQ,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;AAC7B,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;AAC1B,QAAQ,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;AAC5B,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,YAAY,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE;AAC3C,gBAAgB,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACnD,aAAa;AACb,iBAAiB,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;AACjD,gBAAgB,KAAK,IAAI,GAAG,CAAC;AAC7B,aAAa;AACb,iBAAiB;AACjB,gBAAgBA,QAAM,CAAC,kBAAkB,CAAC,wBAAwB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACpF,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC;AAC1B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,YAAY,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC/E,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,OAAOA,QAAM,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC9E,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,aAAa,CAAC,IAAI,EAAE;AACpC,IAAI,IAAI,QAAQ,IAAI,CAAC,KAAK,QAAQ,EAAE;AACpC,QAAQ,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7B,KAAK;AACL,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACtD,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AACM,SAAS,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE;AACtD,IAAI,IAAI,QAAQ,IAAI,CAAC,KAAK,QAAQ,EAAE;AACpC,QAAQ,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7B,KAAK;AACL,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACtD,QAAQA,QAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACpE,KAAK;AACL,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;AAC5B,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE;AAC3B,QAAQ,OAAO,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;AAChE,KAAK;AACL,IAAI,OAAO,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACzC,CAAC;AA6BM,SAAS,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE;AAC1C,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACrC,QAAQ,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/B,KAAK;AACL,SAAS,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;AAClC,QAAQA,QAAM,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACxE,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE;AACvC,QAAQA,QAAM,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,KAAK;AACL,IAAI,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE;AAC1C,QAAQ,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACM,SAAS,cAAc,CAAC,SAAS,EAAE;AAC1C,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,CAAC,EAAE,IAAI;AACf,QAAQ,CAAC,EAAE,IAAI;AACf,QAAQ,GAAG,EAAE,IAAI;AACjB,QAAQ,aAAa,EAAE,CAAC;AACxB,QAAQ,CAAC,EAAE,CAAC;AACZ,QAAQ,WAAW,EAAE,IAAI;AACzB,QAAQ,OAAO,EAAE,IAAI;AACrB,KAAK,CAAC;AACN,IAAI,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE;AAChC,QAAQ,IAAI,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;AACxC;AACA,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;AACjC;AACA,YAAY,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,YAAY,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;AAC9B,YAAY,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACnD,YAAY,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACpD,SAAS;AACT,aAAa,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;AACtC,YAAY,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACnD,YAAY,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACpD,YAAY,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;AACjC,SAAS;AACT,aAAa;AACb,YAAYA,QAAM,CAAC,kBAAkB,CAAC,0BAA0B,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC1F,SAAS;AACT;AACA,QAAQ,IAAI,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;AAC3B,YAAY,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;AAClD,gBAAgB,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/B,aAAa;AACb,iBAAiB;AACjB,gBAAgBA,QAAM,CAAC,kBAAkB,CAAC,0BAA0B,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC9F,aAAa;AACb,SAAS;AACT;AACA,QAAQ,MAAM,CAAC,aAAa,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD;AACA,QAAQ,IAAI,MAAM,CAAC,aAAa,EAAE;AAClC,YAAY,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;AAC9B,SAAS;AACT,QAAQ,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAClD,KAAK;AACL,SAAS;AACT,QAAQ,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AAC/B,QAAQ,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AAC/B,QAAQ,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AAC/B,QAAQ,MAAM,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;AACvD,QAAQ,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;AACnC;AACA;AACA,QAAQ,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE;AAChC,YAAY,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACzD,YAAY,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;AACrC;AACA,YAAY,MAAM,aAAa,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,YAAY,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,EAAE;AAC9C,gBAAgB,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC;AACrD,aAAa;AACb,iBAAiB,IAAI,MAAM,CAAC,aAAa,KAAK,aAAa,EAAE;AAC7D,gBAAgBA,QAAM,CAAC,kBAAkB,CAAC,sCAAsC,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC1G,aAAa;AACb;AACA,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC1B,YAAY,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;AAClC,YAAY,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,EAAE;AAClC,gBAAgB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B,aAAa;AACb,iBAAiB,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;AACrC,gBAAgBA,QAAM,CAAC,kBAAkB,CAAC,0BAA0B,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC9F,aAAa;AACb,SAAS;AACT;AACA,QAAQ,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,EAAE;AAC1C,YAAY,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,EAAE;AAClC,gBAAgBA,QAAM,CAAC,kBAAkB,CAAC,uCAAuC,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC3G,aAAa;AACb,iBAAiB,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;AACvD,gBAAgB,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC;AAChD,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,aAAa,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,EAAE;AAClC,gBAAgB,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC;AACrD,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnG,gBAAgB,IAAI,MAAM,CAAC,aAAa,KAAK,KAAK,EAAE;AACpD,oBAAoBA,QAAM,CAAC,kBAAkB,CAAC,oCAAoC,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC5G,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACxD,YAAYA,QAAM,CAAC,kBAAkB,CAAC,gCAAgC,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAChG,SAAS;AACT,aAAa;AACb,YAAY,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACxD,YAAYA,QAAM,CAAC,kBAAkB,CAAC,gCAAgC,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAChG,SAAS;AACT,aAAa;AACb,YAAY,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;AAC1B,YAAYA,QAAM,CAAC,kBAAkB,CAAC,0BAA0B,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC1F,SAAS;AACT,QAAQ,IAAI,MAAM,CAAC,aAAa,EAAE;AAClC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC1B,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;AAChC,QAAQ,IAAI,MAAM,CAAC,GAAG,EAAE;AACxB,YAAY,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AAC1C,gBAAgBA,QAAM,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC3F,aAAa;AACb,YAAY,MAAM,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACpD,SAAS;AACT;AACA,QAAQ,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE;AAChC,YAAY,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;AAC7B,SAAS;AACT,aAAa,IAAI,MAAM,CAAC,GAAG,KAAK,GAAG,EAAE;AACrC,YAAYA,QAAM,CAAC,kBAAkB,CAAC,gCAAgC,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAChG,SAAS;AACT,KAAK;AACL,IAAI,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC;AACpC,IAAI,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAChE,IAAI,OAAO,MAAM,CAAC;AAClB;;AC5YO,SAAS,SAAS,CAAC,IAAI,EAAE;AAChC,IAAI,OAAO,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAClD;;;;;;;;;;;;;;ACLA,CAAA,CAAC,UAAU,MAAM,EAAE,OAAO,EAAE;AAE5B;AACA;AACA,GAAE,SAAS,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE;AAC7B,KAAI,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kBAAkB,CAAC,CAAC;IACtD;AACH;AACA;AACA;AACA,GAAE,SAAS,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;AACtC,KAAI,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAC5B,KAAI,IAAI,QAAQ,GAAG,YAAY,EAAE,CAAC;AAClC,KAAI,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;AAC7C,KAAI,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,EAAE,CAAC;AACpC,KAAI,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC;IACnC;AACH;AACA;AACA;GACE,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;AACrC,KAAI,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;OACnB,OAAO,MAAM,CAAC;MACf;AACL;AACA,KAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,KAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACpB;AACA;AACA,KAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AACpB;AACA,KAAI,IAAI,MAAM,KAAK,IAAI,EAAE;OACnB,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;SAClC,MAAM,GAAG,IAAI,CAAC;SACd,IAAI,GAAG,EAAE,CAAC;QACX;AACP;AACA,OAAM,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC;MACrD;IACF;AACH,GAAE,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAClC,KAAI,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;AACxB,IAAG,MAAM;AACT,KAAI,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB;AACH;AACA,GAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;AACb,GAAE,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB;GACE,IAAI,MAAM,CAAC;AACb,GAAE,IAAI;AACN,KAAI,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE;AAC/E,OAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B,MAAK,MAAM;AACX,OAAM,MAAM,GAAG,UAAiB,CAAC,MAAM,CAAC;MACnC;IACF,CAAC,OAAO,CAAC,EAAE;IACX;AACH;GACE,EAAE,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAChC,KAAI,IAAI,GAAG,YAAY,EAAE,EAAE;OACrB,OAAO,IAAI,CAAC;MACb;AACL;KACI,OAAO,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;AAClD,OAAM,GAAG,CAAC,WAAW,CAAC,QAAQ,KAAK,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC3E,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;AACtC,KAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC;KACrC,OAAO,KAAK,CAAC;AACjB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;AACtC,KAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC;KACrC,OAAO,KAAK,CAAC;AACjB,IAAG,CAAC;AACJ;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;AAC5D,KAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;OAC9B,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;MAC/C;AACL;AACA,KAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;OAC9B,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;MAC9C;AACL;AACA,KAAI,IAAI,IAAI,KAAK,KAAK,EAAE;OAClB,IAAI,GAAG,EAAE,CAAC;MACX;AACL,KAAI,MAAM,CAAC,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;AAC3D;AACA,KAAI,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACnD,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;OACrB,KAAK,EAAE,CAAC;AACd,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;MACnB;AACL;AACA,KAAI,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE;AAC/B,OAAM,IAAI,IAAI,KAAK,EAAE,EAAE;SACf,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC9C,QAAO,MAAM;SACL,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC7C,SAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AAC7B,WAAU,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;UAC/C;QACF;MACF;AACL,IAAG,CAAC;AACJ;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;AACzE,KAAI,IAAI,MAAM,GAAG,CAAC,EAAE;AACpB,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,OAAM,MAAM,GAAG,CAAC,MAAM,CAAC;MAClB;AACL,KAAI,IAAI,MAAM,GAAG,SAAS,EAAE;OACtB,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AACxC,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACtB,MAAK,MAAM,IAAI,MAAM,GAAG,gBAAgB,EAAE;OACpC,IAAI,CAAC,KAAK,GAAG;SACX,MAAM,GAAG,SAAS;AAC1B,SAAQ,CAAC,MAAM,GAAG,SAAS,IAAI,SAAS;AACxC,QAAO,CAAC;AACR,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACtB,MAAK,MAAM;AACX,OAAM,MAAM,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC;OAClC,IAAI,CAAC,KAAK,GAAG;SACX,MAAM,GAAG,SAAS;AAC1B,SAAQ,CAAC,MAAM,GAAG,SAAS,IAAI,SAAS;AACxC,SAAQ,CAAC;AACT,QAAO,CAAC;AACR,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;MACjB;AACL;AACA,KAAI,IAAI,MAAM,KAAK,IAAI,EAAE,OAAO;AAChC;AACA;AACA,KAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAClD,IAAG,CAAC;AACJ;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;AACvE;KACI,MAAM,CAAC,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;AAC9C,KAAI,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;AAC5B,OAAM,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;OAChB,OAAO,IAAI,CAAC;MACb;AACL;AACA,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAC3C,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxC,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OACpC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;MACnB;AACL;AACA,KAAI,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,KAAI,IAAI,MAAM,KAAK,IAAI,EAAE;OACnB,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;SACjD,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACrE,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC;AAChD,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,SAAS,CAAC;SACnD,GAAG,IAAI,EAAE,CAAC;AAClB,SAAQ,IAAI,GAAG,IAAI,EAAE,EAAE;WACb,GAAG,IAAI,EAAE,CAAC;WACV,CAAC,EAAE,CAAC;UACL;QACF;AACP,MAAK,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE;AAChC,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;SAC5C,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACrE,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC;AAChD,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,SAAS,CAAC;SACnD,GAAG,IAAI,EAAE,CAAC;AAClB,SAAQ,IAAI,GAAG,IAAI,EAAE,EAAE;WACb,GAAG,IAAI,EAAE,CAAC;WACV,CAAC,EAAE,CAAC;UACL;QACF;MACF;AACL,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;AACA,GAAE,SAAS,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE;KACrC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACrC;KACI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE;AAC5B,OAAM,OAAO,CAAC,GAAG,EAAE,CAAC;AACpB;MACK,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE;AACnC,OAAM,OAAO,CAAC,GAAG,EAAE,CAAC;AACpB;MACK,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE;AACpC,OAAM,OAAO,CAAC,GAAG,EAAE,CAAC;AACpB,MAAK,MAAM;OACL,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAAC,CAAC;MACjD;IACF;AACH;GACE,SAAS,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE;KAChD,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACzC,KAAI,IAAI,KAAK,GAAG,CAAC,IAAI,UAAU,EAAE;AACjC,OAAM,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;MAC5C;KACD,OAAO,CAAC,CAAC;IACV;AACH;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;AACtE;AACA,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC;KACrD,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxC,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OACpC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;MACnB;AACL;AACA;AACA,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd;KACI,IAAI,CAAC,CAAC;AACV,KAAI,IAAI,MAAM,KAAK,IAAI,EAAE;AACzB,OAAM,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE;AACtD,SAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC;SAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AACvC,SAAQ,IAAI,GAAG,IAAI,EAAE,EAAE;WACb,GAAG,IAAI,EAAE,CAAC;WACV,CAAC,IAAI,CAAC,CAAC;WACP,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACpC,UAAS,MAAM;WACL,GAAG,IAAI,CAAC,CAAC;UACV;QACF;AACP,MAAK,MAAM;OACL,IAAI,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;OACxC,KAAK,CAAC,GAAG,WAAW,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACrF,SAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC;SAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AACvC,SAAQ,IAAI,GAAG,IAAI,EAAE,EAAE;WACb,GAAG,IAAI,EAAE,CAAC;WACV,CAAC,IAAI,CAAC,CAAC;WACP,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACpC,UAAS,MAAM;WACL,GAAG,IAAI,CAAC,CAAC;UACV;QACF;MACF;AACL;AACA,KAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB,IAAG,CAAC;AACJ;GACE,SAAS,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;AAC5C,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,KAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACxC,KAAI,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;OAChC,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACrC;OACM,CAAC,IAAI,GAAG,CAAC;AACf;AACA;AACA,OAAM,IAAI,CAAC,IAAI,EAAE,EAAE;AACnB,SAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;AACzB;AACA;AACA,QAAO,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE;AAC1B,SAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;AACzB;AACA;AACA,QAAO,MAAM;SACL,CAAC,GAAG,CAAC,CAAC;QACP;AACP,OAAM,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,mBAAmB,CAAC,CAAC;OAC/C,CAAC,IAAI,CAAC,CAAC;MACR;KACD,OAAO,CAAC,CAAC;IACV;AACH;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AACtE;AACA,KAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,KAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACpB;AACA;AACA,KAAI,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,SAAS,EAAE,OAAO,IAAI,IAAI,EAAE;OACxE,OAAO,EAAE,CAAC;MACX;KACD,OAAO,EAAE,CAAC;KACV,OAAO,GAAG,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC;AACnC;KACI,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;AACtC,KAAI,IAAI,GAAG,GAAG,KAAK,GAAG,OAAO,CAAC;AAC9B,KAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;AACnD;AACA,KAAI,IAAI,IAAI,GAAG,CAAC,CAAC;AACjB,KAAI,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,OAAO,EAAE;AAC/C,OAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC;AACrD;AACA,OAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;OACpB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE;SACpC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC9B,QAAO,MAAM;AACb,SAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB;MACF;AACL;AACA,KAAI,IAAI,GAAG,KAAK,CAAC,EAAE;AACnB,OAAM,IAAI,GAAG,GAAG,CAAC,CAAC;AAClB,OAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACvD;OACM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;SACxB,GAAG,IAAI,IAAI,CAAC;QACb;AACP;AACA,OAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;OAChB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE;SACpC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC9B,QAAO,MAAM;AACb,SAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB;MACF;AACL;AACA,KAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;KACvC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxC,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;MAC/B;AACL,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC9B,KAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAClC,KAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACxB,IAAG,CAAC;AACJ;AACA,GAAE,SAAS,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;AAC5B,KAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AAC3B,KAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAC7B,KAAI,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AACjC,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACpB;AACH;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;AAC7C,KAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,IAAI;KACrC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AACzB,KAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACb,OAAO,CAAC,CAAC;AACb,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,IAAI,EAAE;AACjD,KAAI,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE;OACzB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;MAC/B;KACD,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,KAAK,IAAI;AAC1C,KAAI,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;AACjE,OAAM,IAAI,CAAC,MAAM,EAAE,CAAC;MACf;AACL,KAAI,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AAC5B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,IAAI;AACjD;AACA,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAClD,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;MACnB;KACD,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;AACA;AACA;AACA,GAAE,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,UAAU,EAAE;AACzE,KAAI,IAAI;AACR,OAAM,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,GAAG,OAAO,CAAC;MAClE,CAAC,OAAO,CAAC,EAAE;AAChB,OAAM,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;MAChC;AACL,IAAG,MAAM;AACT,KAAI,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;IAChC;AACH;GACE,SAAS,OAAO,IAAI;AACtB,KAAI,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,SAAS,GAAG,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IACnE;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,IAAI,KAAK,GAAG;AACd,KAAI,EAAE;AACN,KAAI,GAAG;AACP,KAAI,IAAI;AACR,KAAI,KAAK;AACT,KAAI,MAAM;AACV,KAAI,OAAO;AACX,KAAI,QAAQ;AACZ,KAAI,SAAS;AACb,KAAI,UAAU;AACd,KAAI,WAAW;AACf,KAAI,YAAY;AAChB,KAAI,aAAa;AACjB,KAAI,cAAc;AAClB,KAAI,eAAe;AACnB,KAAI,gBAAgB;AACpB,KAAI,iBAAiB;AACrB,KAAI,kBAAkB;AACtB,KAAI,mBAAmB;AACvB,KAAI,oBAAoB;AACxB,KAAI,qBAAqB;AACzB,KAAI,sBAAsB;AAC1B,KAAI,uBAAuB;AAC3B,KAAI,wBAAwB;AAC5B,KAAI,yBAAyB;AAC7B,KAAI,0BAA0B;AAC9B,KAAI,2BAA2B;AAC/B,IAAG,CAAC;AACJ;GACE,IAAI,UAAU,GAAG;KACf,CAAC,EAAE,CAAC;AACR,KAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AAC5B,KAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACvB,KAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACvB,KAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACvB,KAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACvB,IAAG,CAAC;AACJ;GACE,IAAI,UAAU,GAAG;KACf,CAAC,EAAE,CAAC;AACR,KAAI,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;AACxE,KAAI,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;AACvE,KAAI,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO;AACtE,KAAI,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;AACrE,KAAI,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;AACxE,IAAG,CAAC;AACJ;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;AAC5D,KAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AACtB,KAAI,OAAO,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B;KACI,IAAI,GAAG,CAAC;KACR,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE;OACjC,GAAG,GAAG,EAAE,CAAC;AACf,OAAM,IAAI,GAAG,GAAG,CAAC,CAAC;AAClB,OAAM,IAAI,KAAK,GAAG,CAAC,CAAC;AACpB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;SACpC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,SAAQ,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,IAAI,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;SAC1D,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,QAAQ,CAAC;SACtC,GAAG,IAAI,CAAC,CAAC;AACjB,SAAQ,IAAI,GAAG,IAAI,EAAE,EAAE;WACb,GAAG,IAAI,EAAE,CAAC;WACV,CAAC,EAAE,CAAC;UACL;AACT,SAAQ,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAClD,WAAU,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC;AACpD,UAAS,MAAM;AACf,WAAU,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;UAClB;QACF;AACP,OAAM,IAAI,KAAK,KAAK,CAAC,EAAE;SACf,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QAChC;OACD,OAAO,GAAG,CAAC,MAAM,GAAG,OAAO,KAAK,CAAC,EAAE;AACzC,SAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QACjB;AACP,OAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC/B,SAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QACjB;OACD,OAAO,GAAG,CAAC;MACZ;AACL;AACA,KAAI,IAAI,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,EAAE;AACxD;AACA,OAAM,IAAI,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AACvC;AACA,OAAM,IAAI,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;OACjC,GAAG,GAAG,EAAE,CAAC;AACf,OAAM,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAC3B,OAAM,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;AACrB,OAAM,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;AAC1B,SAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC1C,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC/B;AACA,SAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;AACzB,WAAU,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACtD,UAAS,MAAM;AACf,WAAU,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;UACf;QACF;AACP,OAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACzB,SAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QACjB;OACD,OAAO,GAAG,CAAC,MAAM,GAAG,OAAO,KAAK,CAAC,EAAE;AACzC,SAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QACjB;AACP,OAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC/B,SAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QACjB;OACD,OAAO,GAAG,CAAC;MACZ;AACL;AACA,KAAI,MAAM,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC;AACrD,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,IAAI;KAC3C,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;OACrB,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AACvC,MAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;AAC5D;AACA,OAAM,GAAG,IAAI,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;AAC5D,MAAK,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,OAAM,MAAM,CAAC,KAAK,EAAE,4CAA4C,CAAC,CAAC;MAC7D;AACL,KAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AAC9C,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;KACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAChC,IAAG,CAAC;AACJ;GACE,IAAI,MAAM,EAAE;AACd,KAAI,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;OACzD,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACtD,MAAK,CAAC;IACH;AACH;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;KACvD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACnD,IAAG,CAAC;AACJ;GACE,IAAI,QAAQ,GAAG,SAAS,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE;AACrD,KAAI,IAAI,SAAS,CAAC,WAAW,EAAE;AAC/B,OAAM,OAAO,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;MACpC;AACL,KAAI,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE;AAC9E,KAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB;AACA,KAAI,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACvC,KAAI,IAAI,SAAS,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;KAClD,MAAM,CAAC,UAAU,IAAI,SAAS,EAAE,uCAAuC,CAAC,CAAC;KACzE,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,6BAA6B,CAAC,CAAC;AACzD;KACI,IAAI,GAAG,GAAG,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;KACzC,IAAI,OAAO,GAAG,MAAM,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;KAC5C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;KAChD,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,cAAc,EAAE,GAAG,EAAE,UAAU,EAAE;AAC1E,KAAI,IAAI,QAAQ,GAAG,CAAC,CAAC;AACrB,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB;AACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrD,OAAM,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC;AAClD;OACM,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AACpC,OAAM,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;AACjC,SAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC;AACP,OAAM,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;AACjC,SAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC;QACvC;AACP;AACA,OAAM,IAAI,KAAK,KAAK,CAAC,EAAE;AACvB,SAAQ,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;AACnC,WAAU,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC;UACvC;SACD,KAAK,GAAG,CAAC,CAAC;SACV,KAAK,GAAG,CAAC,CAAC;AAClB,QAAO,MAAM;AACb,SAAQ,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;SACpB,KAAK,IAAI,CAAC,CAAC;QACZ;MACF;AACL;AACA,KAAI,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;AAC/B,OAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC;AAC9B;AACA,OAAM,OAAO,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;AACpC,SAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;QACrB;MACF;AACL,IAAG,CAAC;AACJ;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,cAAc,EAAE,GAAG,EAAE,UAAU,EAAE;KACtE,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AAClC,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB;AACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrD,OAAM,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC;AAClD;OACM,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AACpC,OAAM,IAAI,QAAQ,IAAI,CAAC,EAAE;AACzB,SAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC;AACP,OAAM,IAAI,QAAQ,IAAI,CAAC,EAAE;AACzB,SAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC;QACvC;AACP;AACA,OAAM,IAAI,KAAK,KAAK,CAAC,EAAE;AACvB,SAAQ,IAAI,QAAQ,IAAI,CAAC,EAAE;AAC3B,WAAU,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC;UACvC;SACD,KAAK,GAAG,CAAC,CAAC;SACV,KAAK,GAAG,CAAC,CAAC;AAClB,QAAO,MAAM;AACb,SAAQ,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;SACpB,KAAK,IAAI,CAAC,CAAC;QACZ;MACF;AACL;AACA,KAAI,IAAI,QAAQ,IAAI,CAAC,EAAE;AACvB,OAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC;AAC9B;AACA,OAAM,OAAO,QAAQ,IAAI,CAAC,EAAE;AAC5B,SAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;QACrB;MACF;AACL,IAAG,CAAC;AACJ;AACA,GAAE,IAAI,IAAI,CAAC,KAAK,EAAE;KACd,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,CAAC,EAAE;OAChD,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChC,MAAK,CAAC;AACN,IAAG,MAAM;KACL,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,CAAC,EAAE;AACtD,OAAM,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,OAAM,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,OAAM,IAAI,CAAC,IAAI,MAAM,EAAE;SACf,CAAC,IAAI,EAAE,CAAC;SACR,CAAC,MAAM,EAAE,CAAC;QACX;AACP,OAAM,IAAI,CAAC,IAAI,IAAI,EAAE;SACb,CAAC,IAAI,CAAC,CAAC;SACP,CAAC,MAAM,CAAC,CAAC;QACV;AACP,OAAM,IAAI,CAAC,IAAI,GAAG,EAAE;SACZ,CAAC,IAAI,CAAC,CAAC;SACP,CAAC,MAAM,CAAC,CAAC;QACV;AACP,OAAM,IAAI,CAAC,IAAI,IAAI,EAAE;SACb,CAAC,IAAI,CAAC,CAAC;SACP,CAAC,MAAM,CAAC,CAAC;QACV;AACP,OAAM,OAAO,CAAC,GAAG,CAAC,CAAC;AACnB,MAAK,CAAC;IACH;AACH;GACE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,CAAC,EAAE;AAClD;AACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;AAC3B;AACA,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,KAAI,IAAI,CAAC,CAAC,GAAG,MAAM,MAAM,CAAC,EAAE;OACtB,CAAC,IAAI,EAAE,CAAC;OACR,CAAC,MAAM,EAAE,CAAC;MACX;AACL,KAAI,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE;OACpB,CAAC,IAAI,CAAC,CAAC;OACP,CAAC,MAAM,CAAC,CAAC;MACV;AACL,KAAI,IAAI,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE;OACnB,CAAC,IAAI,CAAC,CAAC;OACP,CAAC,MAAM,CAAC,CAAC;MACV;AACL,KAAI,IAAI,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE;OACnB,CAAC,IAAI,CAAC,CAAC;OACP,CAAC,MAAM,CAAC,CAAC;MACV;AACL,KAAI,IAAI,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE;OACnB,CAAC,EAAE,CAAC;MACL;KACD,OAAO,CAAC,CAAC;AACb,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,IAAI;AACjD,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KAC5B,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;AACvC,IAAG,CAAC;AACJ;AACA,GAAE,SAAS,UAAU,EAAE,GAAG,EAAE;KACxB,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;AACvC;AACA,KAAI,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;OACvC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;AAC/B,OAAM,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;AAC1B;AACA,OAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC;MAC3C;AACL;KACI,OAAO,CAAC,CAAC;IACV;AACH;AACA;GACE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,IAAI;KAC3C,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;AAChC;AACA,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,OAAM,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;OACtC,CAAC,IAAI,CAAC,CAAC;AACb,OAAM,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM;MACrB;KACD,OAAO,CAAC,CAAC;AACb,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,IAAI;AACnD,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3C,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,KAAK,EAAE;AAChD,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC7B,OAAM,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;MACzC;AACL,KAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;AACxB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,KAAK,EAAE;KAChD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE;AAC/B,OAAM,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;MACzC;AACL,KAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;AACxB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,IAAI;AACzC,KAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;KACjC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;AAC/B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;AACvC,KAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AACxB,OAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;MACpB;AACL;KACI,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,OAAO,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;OAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;MAC/B;AACL;AACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OACnC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;MAC9C;AACL;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,KAAI,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC;AACjD,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;AACtC,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC3D,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACjC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC5D,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C;KACI,IAAI,CAAC,CAAC;KACN,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;OAC5B,CAAC,GAAG,GAAG,CAAC;AACd,MAAK,MAAM;OACL,CAAC,GAAG,IAAI,CAAC;MACV;AACL;AACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OACjC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;MAC9C;AACL;AACA,KAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC3B;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAI,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC;AACjD,KAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC5D,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KAC7D,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C;KACI,IAAI,CAAC,CAAC;KACN,IAAI,CAAC,CAAC;KACN,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;OAC5B,CAAC,GAAG,IAAI,CAAC;OACT,CAAC,GAAG,GAAG,CAAC;AACd,MAAK,MAAM;OACL,CAAC,GAAG,GAAG,CAAC;OACR,CAAC,GAAG,IAAI,CAAC;MACV;AACL;AACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OACjC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;MACzC;AACL;AACA,KAAI,IAAI,IAAI,KAAK,CAAC,EAAE;OACd,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChC,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B;MACF;AACL;AACA,KAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC3B;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAI,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC;AACjD,KAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC5D,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KAC7D,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE;KAC1C,MAAM,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;AACpD;AACA,KAAI,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AAChD,KAAI,IAAI,QAAQ,GAAG,KAAK,GAAG,EAAE,CAAC;AAC9B;AACA;AACA,KAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC9B;AACA,KAAI,IAAI,QAAQ,GAAG,CAAC,EAAE;OAChB,WAAW,EAAE,CAAC;MACf;AACL;AACA;AACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;AAC1C,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;MAC5C;AACL;AACA;AACA,KAAI,IAAI,QAAQ,GAAG,CAAC,EAAE;OAChB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;MACjE;AACL;AACA;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE;KACxC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrC,IAAG,CAAC;AACJ;AACA;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;KAC3C,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;AAChD;KACI,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;AAC7B,KAAI,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;AACxB;KACI,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAC1B;KACI,IAAI,GAAG,EAAE;AACb,OAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AACtD,MAAK,MAAM;AACX,OAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;MAClD;AACL;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,IAAI,CAAC,CAAC;AACV;AACA;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AACnD,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;OAClB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,OAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;AACzB,OAAM,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AAC9B;AACA;AACA,MAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC1D,OAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;OACjB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,OAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,OAAM,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;MACtB;AACL;AACA;AACA,KAAI,IAAI,CAAC,EAAE,CAAC,CAAC;KACT,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;OAC5B,CAAC,GAAG,IAAI,CAAC;OACT,CAAC,GAAG,GAAG,CAAC;AACd,MAAK,MAAM;OACL,CAAC,GAAG,GAAG,CAAC;OACR,CAAC,GAAG,IAAI,CAAC;MACV;AACL;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OACjC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;OAChD,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AACpC,OAAM,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;MAClB;AACL,KAAI,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,OAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;OAC7B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AACpC,OAAM,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;MAClB;AACL;AACA,KAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC3B,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;OACf,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;AACtC,OAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AACpB;AACA,MAAK,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;OACrB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChC,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B;MACF;AACL;KACI,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,IAAI,GAAG,CAAC;AACZ,KAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AACnD,OAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;OACjB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1B,OAAM,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;OAClB,OAAO,GAAG,CAAC;AACjB,MAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC1D,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;OAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1B,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;OAClB,OAAO,GAAG,CAAC;MACZ;AACL;AACA,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChE;KACI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C;AACA,KAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC5B,OAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;OACjB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,OAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,OAAM,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;AAC3B;AACA;AACA,MAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AACpC,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,OAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrB,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,OAAM,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;MACzB;AACL;AACA;KACI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B;AACA;AACA,KAAI,IAAI,GAAG,KAAK,CAAC,EAAE;AACnB,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;OAChB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;OAClB,OAAO,IAAI,CAAC;MACb;AACL;AACA;AACA,KAAI,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,KAAI,IAAI,GAAG,GAAG,CAAC,EAAE;OACX,CAAC,GAAG,IAAI,CAAC;OACT,CAAC,GAAG,GAAG,CAAC;AACd,MAAK,MAAM;OACL,CAAC,GAAG,GAAG,CAAC;OACR,CAAC,GAAG,IAAI,CAAC;MACV;AACL;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OACjC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AACtD,OAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;OAChB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;MAC/B;AACL,KAAI,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,OAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;AACnC,OAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;OAChB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;MAC/B;AACL;AACA;AACA,KAAI,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;OAC7C,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChC,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B;MACF;AACL;AACA,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC3C;AACA,KAAI,IAAI,CAAC,KAAK,IAAI,EAAE;AACpB,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;MACnB;AACL;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,IAAG,CAAC;AACJ;GACE,SAAS,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;KACnC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAChD,KAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AAC7C,KAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;KACjB,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AACxB;AACA;KACI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KAC1B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B,KAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAClB;AACA,KAAI,IAAI,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;KACvB,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;KAChC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACtB;AACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAClC;AACA;AACA,OAAM,IAAI,MAAM,GAAG,KAAK,KAAK,EAAE,CAAC;AAChC,OAAM,IAAI,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;AACpC,OAAM,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;OACvC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE;SAC7D,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SACtB,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B,SAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SAClB,MAAM,IAAI,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;AACtC,SAAQ,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC;QACvB;OACD,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AAC/B,OAAM,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;MACpB;AACL,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;OACf,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AAC/B,MAAK,MAAM;AACX,OAAM,GAAG,CAAC,MAAM,EAAE,CAAC;MACd;AACL;AACA,KAAI,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC;IACrB;AACH;AACA;AACA;AACA;GACE,IAAI,WAAW,GAAG,SAAS,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AAC1D,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AACvB,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;AACtB,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;AACtB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;KACV,IAAI,EAAE,CAAC;KACP,IAAI,GAAG,CAAC;KACR,IAAI,EAAE,CAAC;KACP,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB;KACI,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AAChD,KAAI,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GA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U,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EA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G;AACR,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACtD,CAAC,CAAC;AACF;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CA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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/index.es.js b/node_modules/@walletconnect/utils/dist/index.es.js +index ec02d89..0268538 100644 +--- a/node_modules/@walletconnect/utils/dist/index.es.js ++++ b/node_modules/@walletconnect/utils/dist/index.es.js +@@ -1,18 +1,18 @@ +-import{detect as Do}from"detect-browser";import{toMiliseconds as hi,FIVE_MINUTES as nn,fromMiliseconds as Fo}from"@walletconnect/time";import{getDocument as fn,getNavigator as on,getLocation as sn}from"@walletconnect/window-getters";import{getWindowMetadata as To}from"@walletconnect/window-metadata";import*as Nr from"query-string";import{ChaCha20Poly1305 as an}from"@stablelib/chacha20poly1305";import{HKDF as Uo}from"@stablelib/hkdf";import{randomBytes as un}from"@stablelib/random";import{SHA256 as ko,hash as hn}from"@stablelib/sha256";import*as cn from"@stablelib/x25519";import{toString as te,fromString as ee,concat as ln}from"uint8arrays";import{RELAY_JSONRPC as qo}from"@walletconnect/relay-api";const Ir=":";function dn(e){const[t,r]=e.split(Ir);return{namespace:t,reference:r}}function pn(e){const{namespace:t,reference:r}=e;return[t,r].join(Ir)}function ci(e){const[t,r,i]=e.split(Ir);return{namespace:t,reference:r,address:i}}function vn(e){const{namespace:t,reference:r,address:i}=e;return[t,r,i].join(Ir)}function li(e,t){const r=[];return e.forEach(i=>{const n=t(i);r.includes(n)||r.push(n)}),r}function mn(e){const{address:t}=ci(e);return t}function gn(e){const{namespace:t,reference:r}=ci(e);return pn({namespace:t,reference:r})}function Ko(e,t){const{namespace:r,reference:i}=dn(t);return vn({namespace:r,reference:i,address:e})}function Ho(e){return li(e,mn)}function An(e){return li(e,gn)}function zo(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(...n.accounts)}),r}function Lo(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(...An(n.accounts))}),r}function jo(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(..._r(i,n))}),r}function _r(e,t){return e.includes(":")?[e]:t.chains||[]}var Qo=Object.defineProperty,bn=Object.getOwnPropertySymbols,Jo=Object.prototype.hasOwnProperty,Go=Object.prototype.propertyIsEnumerable,yn=(e,t,r)=>t in e?Qo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,wn=(e,t)=>{for(var r in t||(t={}))Jo.call(t,r)&&yn(e,r,t[r]);if(bn)for(var r of bn(t))Go.call(t,r)&&yn(e,r,t[r]);return e};const xn="ReactNative",qt={reactNative:"react-native",node:"node",browser:"browser",unknown:"unknown"},Br=" ",Yo=":",Mn="/",di=2,Vo=1e3,En="js";function pi(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}function er(){return!fn()&&!!on()&&navigator.product===xn}function pr(){return!pi()&&!!on()&&!!fn()}function We(){return er()?qt.reactNative:pi()?qt.node:pr()?qt.browser:qt.unknown}function Wo(){var e;try{return er()&&typeof global<"u"&&typeof(global==null?void 0:global.Application)<"u"?(e=global.Application)==null?void 0:e.applicationId:void 0}catch{return}}function Sn(e,t){let r=Nr.parse(e);return r=wn(wn({},r),t),e=Nr.stringify(r),e}function Xo(){return To()||{name:"",description:"",url:"",icons:[""]}}function Zo(e,t){var r;const i=We(),n={protocol:e,version:t,env:i};return i==="browser"&&(n.host=((r=sn())==null?void 0:r.host)||"unknown"),n}function Nn(){if(We()===qt.reactNative&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"){const{OS:r,Version:i}=global.Platform;return[r,i].join("-")}const e=Do();if(e===null)return"unknown";const t=e.os?e.os.replace(" ","").toLowerCase():"unknown";return e.type==="browser"?[t,e.name,e.version].join("-"):[t,e.version].join("-")}function In(){var e;const t=We();return t===qt.browser?[t,((e=sn())==null?void 0:e.host)||"unknown"].join(":"):t}function _n(e,t,r){const i=Nn(),n=In();return[[e,t].join("-"),[En,r].join("-"),i,n].join("/")}function $o({protocol:e,version:t,relayUrl:r,sdkVersion:i,auth:n,projectId:o,useOnCloseEvent:h,bundleId:p}){const b=r.split("?"),m=_n(e,t,i),w={auth:n,ua:m,projectId:o,useOnCloseEvent:h||void 0,origin:p||void 0},y=Sn(b[1]||"",w);return b[0]+"?"+y}function t0(e){let t=(e.match(/^[^:]+(?=:\/\/)/gi)||[])[0];const r=typeof t<"u"?e.split("://")[1]:e;return t=t==="wss"?"https":"http",[t,r].join("://")}function e0(e,t,r){if(!e[t]||typeof e[t]!==r)throw new Error(`Missing or invalid "${t}" param`)}function Bn(e,t=di){return Cn(e.split(Mn),t)}function r0(e){return Bn(e).join(Br)}function _e(e,t){return e.filter(r=>t.includes(r)).length===e.length}function Cn(e,t=di){return e.slice(Math.max(e.length-t,0))}function i0(e){return Object.fromEntries(e.entries())}function n0(e){return new Map(Object.entries(e))}function f0(e,t){const r={};return Object.keys(e).forEach(i=>{r[i]=t(e[i])}),r}const o0=e=>e;function Rn(e){return e.trim().replace(/^\w/,t=>t.toUpperCase())}function s0(e){return e.split(Br).map(t=>Rn(t)).join(Br)}function a0(e=nn,t){const r=hi(e||nn);let i,n,o;return{resolve:h=>{o&&i&&(clearTimeout(o),i(h))},reject:h=>{o&&n&&(clearTimeout(o),n(h))},done:()=>new Promise((h,p)=>{o=setTimeout(()=>{p(new Error(t))},r),i=h,n=p})}}function u0(e,t,r){return new Promise(async(i,n)=>{const o=setTimeout(()=>n(new Error(r)),t);try{const h=await e;i(h)}catch(h){n(h)}clearTimeout(o)})}function vi(e,t){if(typeof t=="string"&&t.startsWith(`${e}:`))return t;if(e.toLowerCase()==="topic"){if(typeof t!="string")throw new Error('Value must be "string" for expirer target type: topic');return`topic:${t}`}else if(e.toLowerCase()==="id"){if(typeof t!="number")throw new Error('Value must be "number" for expirer target type: id');return`id:${t}`}throw new Error(`Unknown expirer target type: ${e}`)}function h0(e){return vi("topic",e)}function c0(e){return vi("id",e)}function l0(e){const[t,r]=e.split(":"),i={id:void 0,topic:void 0};if(t==="topic"&&typeof r=="string")i.topic=r;else if(t==="id"&&Number.isInteger(Number(r)))i.id=Number(r);else throw new Error(`Invalid target, expected id:number or topic:string, got ${t}:${r}`);return i}function d0(e,t){return Fo((t||Date.now())+hi(e))}function p0(e){return Date.now()>=hi(e)}function v0(e,t){return`${e}${t?`:${t}`:""}`}function ge(e=[],t=[]){return[...new Set([...e,...t])]}async function m0({id:e,topic:t,wcDeepLink:r}){try{if(!r)return;const i=typeof r=="string"?JSON.parse(r):r;let n=i?.href;if(typeof n!="string")return;n.endsWith("/")&&(n=n.slice(0,-1));const o=`${n}/wc?requestId=${e}&sessionTopic=${t}`,h=We();h===qt.browser?o.startsWith("https://")||o.startsWith("http://")?window.open(o,"_blank","noreferrer noopener"):window.open(o,"_self","noreferrer noopener"):h===qt.reactNative&&typeof(global==null?void 0:global.Linking)<"u"&&await global.Linking.openURL(o)}catch(i){console.error(i)}}async function g0(e,t){try{return await e.getItem(t)||(pr()?localStorage.getItem(t):void 0)}catch(r){console.error(r)}}function mi(e,t){return e.filter(r=>t.includes(r))}var On=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function A0(e){var t=e.default;if(typeof t=="function"){var r=function(){return t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(i){var n=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(r,i,n.get?n:{enumerable:!0,get:function(){return e[i]}})}),r}var Pn={exports:{}};/** ++import{detect as Fo}from"detect-browser";import{toMiliseconds as hi,FIVE_MINUTES as nn,fromMiliseconds as To}from"@walletconnect/time";import{getDocument as fn,getNavigator as on,getLocation as sn}from"@walletconnect/window-getters";import{getWindowMetadata as Uo}from"@walletconnect/window-metadata";import*as Nr from"query-string";import{ChaCha20Poly1305 as an}from"@stablelib/chacha20poly1305";import{HKDF as ko}from"@stablelib/hkdf";import{randomBytes as un}from"@stablelib/random";import{SHA256 as qo,hash as hn}from"@stablelib/sha256";import*as cn from"@stablelib/x25519";import{toString as te,fromString as ee,concat as ln}from"uint8arrays";import{RELAY_JSONRPC as Ko}from"@walletconnect/relay-api";const Ir=":";function dn(e){const[t,r]=e.split(Ir);return{namespace:t,reference:r}}function pn(e){const{namespace:t,reference:r}=e;return[t,r].join(Ir)}function ci(e){const[t,r,i]=e.split(Ir);return{namespace:t,reference:r,address:i}}function vn(e){const{namespace:t,reference:r,address:i}=e;return[t,r,i].join(Ir)}function li(e,t){const r=[];return e.forEach(i=>{const n=t(i);r.includes(n)||r.push(n)}),r}function mn(e){const{address:t}=ci(e);return t}function gn(e){const{namespace:t,reference:r}=ci(e);return pn({namespace:t,reference:r})}function Ho(e,t){const{namespace:r,reference:i}=dn(t);return vn({namespace:r,reference:i,address:e})}function zo(e){return li(e,mn)}function An(e){return li(e,gn)}function Lo(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(...n.accounts)}),r}function jo(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(...An(n.accounts))}),r}function Qo(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(..._r(i,n))}),r}function _r(e,t){return e.includes(":")?[e]:t.chains||[]}var Jo=Object.defineProperty,bn=Object.getOwnPropertySymbols,Go=Object.prototype.hasOwnProperty,Yo=Object.prototype.propertyIsEnumerable,yn=(e,t,r)=>t in e?Jo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,wn=(e,t)=>{for(var r in t||(t={}))Go.call(t,r)&&yn(e,r,t[r]);if(bn)for(var r of bn(t))Yo.call(t,r)&&yn(e,r,t[r]);return e};const xn="ReactNative",qt={reactNative:"react-native",node:"node",browser:"browser",unknown:"unknown"},Br=" ",Vo=":",Mn="/",di=2,Wo=1e3,En="js";function pi(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}function er(){return!fn()&&!!on()&&navigator.product===xn}function pr(){return!pi()&&!!on()&&!!fn()}function We(){return er()?qt.reactNative:pi()?qt.node:pr()?qt.browser:qt.unknown}function Xo(){var e;try{return er()&&typeof global<"u"&&typeof(global==null?void 0:global.Application)<"u"?(e=global.Application)==null?void 0:e.applicationId:void 0}catch{return}}function Sn(e,t){let r=Nr.parse(e);return r=wn(wn({},r),t),e=Nr.stringify(r),e}function Zo(){return Uo()||{name:"",description:"",url:"",icons:[""]}}function $o(e,t){var r;const i=We(),n={protocol:e,version:t,env:i};return i==="browser"&&(n.host=((r=sn())==null?void 0:r.host)||"unknown"),n}function Nn(){if(We()===qt.reactNative&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"){const{OS:r,Version:i}=global.Platform;return[r,i].join("-")}const e=Fo();if(e===null)return"unknown";const t=e.os?e.os.replace(" ","").toLowerCase():"unknown";return e.type==="browser"?[t,e.name,e.version].join("-"):[t,e.version].join("-")}function In(){var e;const t=We();return t===qt.browser?[t,((e=sn())==null?void 0:e.host)||"unknown"].join(":"):t}function _n(e,t,r){const i=Nn(),n=In();return[[e,t].join("-"),[En,r].join("-"),i,n].join("/")}function ts({protocol:e,version:t,relayUrl:r,sdkVersion:i,auth:n,projectId:o,useOnCloseEvent:h,bundleId:p}){const b=r.split("?"),m=_n(e,t,i),w={auth:n,ua:m,projectId:o,useOnCloseEvent:h||void 0,origin:p||void 0},y=Sn(b[1]||"",w);return b[0]+"?"+y}function es(e){let t=(e.match(/^[^:]+(?=:\/\/)/gi)||[])[0];const r=typeof t<"u"?e.split("://")[1]:e;return t=t==="wss"?"https":"http",[t,r].join("://")}function rs(e,t,r){if(!e[t]||typeof e[t]!==r)throw new Error(`Missing or invalid "${t}" param`)}function Bn(e,t=di){return Cn(e.split(Mn),t)}function is(e){return Bn(e).join(Br)}function _e(e,t){return e.filter(r=>t.includes(r)).length===e.length}function Cn(e,t=di){return e.slice(Math.max(e.length-t,0))}function ns(e){return Object.fromEntries(e.entries())}function fs(e){return new Map(Object.entries(e))}function os(e,t){const r={};return Object.keys(e).forEach(i=>{r[i]=t(e[i])}),r}const ss=e=>e;function Rn(e){return e.trim().replace(/^\w/,t=>t.toUpperCase())}function as(e){return e.split(Br).map(t=>Rn(t)).join(Br)}function us(e=nn,t){const r=hi(e||nn);let i,n,o;return{resolve:h=>{o&&i&&(clearTimeout(o),i(h))},reject:h=>{o&&n&&(clearTimeout(o),n(h))},done:()=>new Promise((h,p)=>{o=setTimeout(()=>{p(new Error(t))},r),i=h,n=p})}}function hs(e,t,r){return new Promise(async(i,n)=>{const o=setTimeout(()=>n(new Error(r)),t);try{const h=await e;i(h)}catch(h){n(h)}clearTimeout(o)})}function vi(e,t){if(typeof t=="string"&&t.startsWith(`${e}:`))return t;if(e.toLowerCase()==="topic"){if(typeof t!="string")throw new Error('Value must be "string" for expirer target type: topic');return`topic:${t}`}else if(e.toLowerCase()==="id"){if(typeof t!="number")throw new Error('Value must be "number" for expirer target type: id');return`id:${t}`}throw new Error(`Unknown expirer target type: ${e}`)}function cs(e){return vi("topic",e)}function ls(e){return vi("id",e)}function ds(e){const[t,r]=e.split(":"),i={id:void 0,topic:void 0};if(t==="topic"&&typeof r=="string")i.topic=r;else if(t==="id"&&Number.isInteger(Number(r)))i.id=Number(r);else throw new Error(`Invalid target, expected id:number or topic:string, got ${t}:${r}`);return i}function ps(e,t){return To((t||Date.now())+hi(e))}function vs(e){return Date.now()>=hi(e)}function ms(e,t){return`${e}${t?`:${t}`:""}`}function ge(e=[],t=[]){return[...new Set([...e,...t])]}function On(){return typeof window<"u"&&(!!window.TelegramWebviewProxy||!!window.Telegram||!!window.TelegramWebviewProxyProto)}async function gs({id:e,topic:t,wcDeepLink:r}){try{if(!r)return;const i=typeof r=="string"?JSON.parse(r):r;let n=i?.href;if(typeof n!="string")return;n.endsWith("/")&&(n=n.slice(0,-1));const o=`${n}/wc?requestId=${e}&sessionTopic=${t}`,h=We();h===qt.browser?o.startsWith("https://")||o.startsWith("http://")||On()?window.open(o,"_blank","noreferrer noopener"):window.open(o,"_self","noreferrer noopener"):h===qt.reactNative&&typeof(global==null?void 0:global.Linking)<"u"&&await global.Linking.openURL(o)}catch(i){console.error(i)}}async function As(e,t){try{return await e.getItem(t)||(pr()?localStorage.getItem(t):void 0)}catch(r){console.error(r)}}function mi(e,t){return e.filter(r=>t.includes(r))}var Pn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function bs(e){var t=e.default;if(typeof t=="function"){var r=function(){return t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(i){var n=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(r,i,n.get?n:{enumerable:!0,get:function(){return e[i]}})}),r}var Dn={exports:{}};/** + * [js-sha3]{@link https://github.com/emn178/js-sha3} + * + * @version 0.8.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2015-2018 + * @license MIT +- */(function(e){(function(){var t="input is invalid type",r="finalize already called",i=typeof window=="object",n=i?window:{};n.JS_SHA3_NO_WINDOW&&(i=!1);var o=!i&&typeof self=="object",h=!n.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;h?n=On:o&&(n=self);var p=!n.JS_SHA3_NO_COMMON_JS&&!0&&e.exports,b=!n.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",m="0123456789abcdef".split(""),w=[31,7936,2031616,520093696],y=[4,1024,262144,67108864],S=[1,256,65536,16777216],I=[6,1536,393216,100663296],N=[0,8,16,24],C=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],F=[224,256,384,512],U=[128,256],J=["hex","buffer","arrayBuffer","array","digest"],Bt={128:168,256:136};(n.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(u){return Object.prototype.toString.call(u)==="[object Array]"}),b&&(n.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(u){return typeof u=="object"&&u.buffer&&u.buffer.constructor===ArrayBuffer});for(var G=function(u,E,_){return function(B){return new s(u,E,u).update(B)[_]()}},H=function(u,E,_){return function(B,R){return new s(u,E,R).update(B)[_]()}},z=function(u,E,_){return function(B,R,T,P){return f["cshake"+u].update(B,R,T,P)[_]()}},Pt=function(u,E,_){return function(B,R,T,P){return f["kmac"+u].update(B,R,T,P)[_]()}},W=function(u,E,_,B){for(var R=0;R>5,this.byteCount=this.blockCount<<2,this.outputBlocks=_>>5,this.extraBytes=(_&31)>>3;for(var B=0;B<50;++B)this.s[B]=0}s.prototype.update=function(u){if(this.finalized)throw new Error(r);var E,_=typeof u;if(_!=="string"){if(_==="object"){if(u===null)throw new Error(t);if(b&&u.constructor===ArrayBuffer)u=new Uint8Array(u);else if(!Array.isArray(u)&&(!b||!ArrayBuffer.isView(u)))throw new Error(t)}else throw new Error(t);E=!0}for(var B=this.blocks,R=this.byteCount,T=u.length,P=this.blockCount,O=0,Ct=this.s,D,q;O>2]|=u[O]<>2]|=q<>2]|=(192|q>>6)<>2]|=(128|q&63)<=57344?(B[D>>2]|=(224|q>>12)<>2]|=(128|q>>6&63)<>2]|=(128|q&63)<>2]|=(240|q>>18)<>2]|=(128|q>>12&63)<>2]|=(128|q>>6&63)<>2]|=(128|q&63)<=R){for(this.start=D-R,this.block=B[P],D=0;D>8,_=u&255;_>0;)R.unshift(_),u=u>>8,_=u&255,++B;return E?R.push(B):R.unshift(B),this.update(R),R.length},s.prototype.encodeString=function(u){var E,_=typeof u;if(_!=="string"){if(_==="object"){if(u===null)throw new Error(t);if(b&&u.constructor===ArrayBuffer)u=new Uint8Array(u);else if(!Array.isArray(u)&&(!b||!ArrayBuffer.isView(u)))throw new Error(t)}else throw new Error(t);E=!0}var B=0,R=u.length;if(E)B=R;else for(var T=0;T=57344?B+=3:(P=65536+((P&1023)<<10|u.charCodeAt(++T)&1023),B+=4)}return B+=this.encode(B*8),this.update(u),B},s.prototype.bytepad=function(u,E){for(var _=this.encode(E),B=0;B>2]|=this.padding[E&3],this.lastByteIndex===this.byteCount)for(u[0]=u[_],E=1;E<_+1;++E)u[E]=0;for(u[_-1]|=2147483648,E=0;E<_;++E)B[E]^=u[E];k(B)}},s.prototype.toString=s.prototype.hex=function(){this.finalize();for(var u=this.blockCount,E=this.s,_=this.outputBlocks,B=this.extraBytes,R=0,T=0,P="",O;T<_;){for(R=0;R>4&15]+m[O&15]+m[O>>12&15]+m[O>>8&15]+m[O>>20&15]+m[O>>16&15]+m[O>>28&15]+m[O>>24&15];T%u===0&&(k(E),R=0)}return B&&(O=E[R],P+=m[O>>4&15]+m[O&15],B>1&&(P+=m[O>>12&15]+m[O>>8&15]),B>2&&(P+=m[O>>20&15]+m[O>>16&15])),P},s.prototype.arrayBuffer=function(){this.finalize();var u=this.blockCount,E=this.s,_=this.outputBlocks,B=this.extraBytes,R=0,T=0,P=this.outputBits>>3,O;B?O=new ArrayBuffer(_+1<<2):O=new ArrayBuffer(P);for(var Ct=new Uint32Array(O);T<_;){for(R=0;R>8&255,P[O+2]=Ct>>16&255,P[O+3]=Ct>>24&255;T%u===0&&k(E)}return B&&(O=T<<2,Ct=E[R],P[O]=Ct&255,B>1&&(P[O+1]=Ct>>8&255),B>2&&(P[O+2]=Ct>>16&255)),P};function v(u,E,_){s.call(this,u,E,_)}v.prototype=new s,v.prototype.finalize=function(){return this.encode(this.outputBits,!0),s.prototype.finalize.call(this)};var k=function(u){var E,_,B,R,T,P,O,Ct,D,q,De,X,Z,Fe,$,tt,Te,et,rt,Ue,it,nt,ke,ft,ot,qe,st,at,Ke,ut,ht,He,ct,lt,ze,dt,pt,Le,vt,mt,je,gt,At,Qe,bt,yt,Je,wt,xt,Ge,Mt,Et,Ye,St,Nt,Ve,It,_t,Me,Ee,Se,Ne,Ie;for(B=0;B<48;B+=2)R=u[0]^u[10]^u[20]^u[30]^u[40],T=u[1]^u[11]^u[21]^u[31]^u[41],P=u[2]^u[12]^u[22]^u[32]^u[42],O=u[3]^u[13]^u[23]^u[33]^u[43],Ct=u[4]^u[14]^u[24]^u[34]^u[44],D=u[5]^u[15]^u[25]^u[35]^u[45],q=u[6]^u[16]^u[26]^u[36]^u[46],De=u[7]^u[17]^u[27]^u[37]^u[47],X=u[8]^u[18]^u[28]^u[38]^u[48],Z=u[9]^u[19]^u[29]^u[39]^u[49],E=X^(P<<1|O>>>31),_=Z^(O<<1|P>>>31),u[0]^=E,u[1]^=_,u[10]^=E,u[11]^=_,u[20]^=E,u[21]^=_,u[30]^=E,u[31]^=_,u[40]^=E,u[41]^=_,E=R^(Ct<<1|D>>>31),_=T^(D<<1|Ct>>>31),u[2]^=E,u[3]^=_,u[12]^=E,u[13]^=_,u[22]^=E,u[23]^=_,u[32]^=E,u[33]^=_,u[42]^=E,u[43]^=_,E=P^(q<<1|De>>>31),_=O^(De<<1|q>>>31),u[4]^=E,u[5]^=_,u[14]^=E,u[15]^=_,u[24]^=E,u[25]^=_,u[34]^=E,u[35]^=_,u[44]^=E,u[45]^=_,E=Ct^(X<<1|Z>>>31),_=D^(Z<<1|X>>>31),u[6]^=E,u[7]^=_,u[16]^=E,u[17]^=_,u[26]^=E,u[27]^=_,u[36]^=E,u[37]^=_,u[46]^=E,u[47]^=_,E=q^(R<<1|T>>>31),_=De^(T<<1|R>>>31),u[8]^=E,u[9]^=_,u[18]^=E,u[19]^=_,u[28]^=E,u[29]^=_,u[38]^=E,u[39]^=_,u[48]^=E,u[49]^=_,Fe=u[0],$=u[1],yt=u[11]<<4|u[10]>>>28,Je=u[10]<<4|u[11]>>>28,at=u[20]<<3|u[21]>>>29,Ke=u[21]<<3|u[20]>>>29,Ee=u[31]<<9|u[30]>>>23,Se=u[30]<<9|u[31]>>>23,gt=u[40]<<18|u[41]>>>14,At=u[41]<<18|u[40]>>>14,lt=u[2]<<1|u[3]>>>31,ze=u[3]<<1|u[2]>>>31,tt=u[13]<<12|u[12]>>>20,Te=u[12]<<12|u[13]>>>20,wt=u[22]<<10|u[23]>>>22,xt=u[23]<<10|u[22]>>>22,ut=u[33]<<13|u[32]>>>19,ht=u[32]<<13|u[33]>>>19,Ne=u[42]<<2|u[43]>>>30,Ie=u[43]<<2|u[42]>>>30,St=u[5]<<30|u[4]>>>2,Nt=u[4]<<30|u[5]>>>2,dt=u[14]<<6|u[15]>>>26,pt=u[15]<<6|u[14]>>>26,et=u[25]<<11|u[24]>>>21,rt=u[24]<<11|u[25]>>>21,Ge=u[34]<<15|u[35]>>>17,Mt=u[35]<<15|u[34]>>>17,He=u[45]<<29|u[44]>>>3,ct=u[44]<<29|u[45]>>>3,ft=u[6]<<28|u[7]>>>4,ot=u[7]<<28|u[6]>>>4,Ve=u[17]<<23|u[16]>>>9,It=u[16]<<23|u[17]>>>9,Le=u[26]<<25|u[27]>>>7,vt=u[27]<<25|u[26]>>>7,Ue=u[36]<<21|u[37]>>>11,it=u[37]<<21|u[36]>>>11,Et=u[47]<<24|u[46]>>>8,Ye=u[46]<<24|u[47]>>>8,Qe=u[8]<<27|u[9]>>>5,bt=u[9]<<27|u[8]>>>5,qe=u[18]<<20|u[19]>>>12,st=u[19]<<20|u[18]>>>12,_t=u[29]<<7|u[28]>>>25,Me=u[28]<<7|u[29]>>>25,mt=u[38]<<8|u[39]>>>24,je=u[39]<<8|u[38]>>>24,nt=u[48]<<14|u[49]>>>18,ke=u[49]<<14|u[48]>>>18,u[0]=Fe^~tt&et,u[1]=$^~Te&rt,u[10]=ft^~qe&at,u[11]=ot^~st&Ke,u[20]=lt^~dt&Le,u[21]=ze^~pt&vt,u[30]=Qe^~yt&wt,u[31]=bt^~Je&xt,u[40]=St^~Ve&_t,u[41]=Nt^~It&Me,u[2]=tt^~et&Ue,u[3]=Te^~rt&it,u[12]=qe^~at&ut,u[13]=st^~Ke&ht,u[22]=dt^~Le&mt,u[23]=pt^~vt&je,u[32]=yt^~wt&Ge,u[33]=Je^~xt&Mt,u[42]=Ve^~_t&Ee,u[43]=It^~Me&Se,u[4]=et^~Ue&nt,u[5]=rt^~it&ke,u[14]=at^~ut&He,u[15]=Ke^~ht&ct,u[24]=Le^~mt>,u[25]=vt^~je&At,u[34]=wt^~Ge&Et,u[35]=xt^~Mt&Ye,u[44]=_t^~Ee&Ne,u[45]=Me^~Se&Ie,u[6]=Ue^~nt&Fe,u[7]=it^~ke&$,u[16]=ut^~He&ft,u[17]=ht^~ct&ot,u[26]=mt^~gt<,u[27]=je^~At&ze,u[36]=Ge^~Et&Qe,u[37]=Mt^~Ye&bt,u[46]=Ee^~Ne&St,u[47]=Se^~Ie&Nt,u[8]=nt^~Fe&tt,u[9]=ke^~$&Te,u[18]=He^~ft&qe,u[19]=ct^~ot&st,u[28]=gt^~lt&dt,u[29]=At^~ze&pt,u[38]=Et^~Qe&yt,u[39]=Ye^~bt&Je,u[48]=Ne^~St&Ve,u[49]=Ie^~Nt&It,u[0]^=C[B],u[1]^=C[B+1]};if(p)e.exports=f;else for(c=0;c{try{if("test".normalize(t)!=="test")throw new Error("bad normalize")}catch{e.push(t)}}),e.length)throw new Error("missing "+e.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(e){return e.message}return null}const Un=w0();var Ai;(function(e){e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.OFF="OFF"})(Ai||(Ai={}));var re;(function(e){e.UNKNOWN_ERROR="UNKNOWN_ERROR",e.NOT_IMPLEMENTED="NOT_IMPLEMENTED",e.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",e.NETWORK_ERROR="NETWORK_ERROR",e.SERVER_ERROR="SERVER_ERROR",e.TIMEOUT="TIMEOUT",e.BUFFER_OVERRUN="BUFFER_OVERRUN",e.NUMERIC_FAULT="NUMERIC_FAULT",e.MISSING_NEW="MISSING_NEW",e.INVALID_ARGUMENT="INVALID_ARGUMENT",e.MISSING_ARGUMENT="MISSING_ARGUMENT",e.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",e.CALL_EXCEPTION="CALL_EXCEPTION",e.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",e.NONCE_EXPIRED="NONCE_EXPIRED",e.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",e.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",e.TRANSACTION_REPLACED="TRANSACTION_REPLACED",e.ACTION_REJECTED="ACTION_REJECTED"})(re||(re={}));const kn="0123456789abcdef";class L{constructor(t){Object.defineProperty(this,"version",{enumerable:!0,value:t,writable:!1})}_log(t,r){const i=t.toLowerCase();Cr[i]==null&&this.throwArgumentError("invalid log level name","logLevel",t),!(Tn>Cr[i])&&console.log.apply(console,r)}debug(...t){this._log(L.levels.DEBUG,t)}info(...t){this._log(L.levels.INFO,t)}warn(...t){this._log(L.levels.WARNING,t)}makeError(t,r,i){if(Fn)return this.makeError("censored error",r,{});r||(r=L.errors.UNKNOWN_ERROR),i||(i={});const n=[];Object.keys(i).forEach(b=>{const m=i[b];try{if(m instanceof Uint8Array){let w="";for(let y=0;y>4],w+=kn[m[y]&15];n.push(b+"=Uint8Array(0x"+w+")")}else n.push(b+"="+JSON.stringify(m))}catch{n.push(b+"="+JSON.stringify(i[b].toString()))}}),n.push(`code=${r}`),n.push(`version=${this.version}`);const o=t;let h="";switch(r){case re.NUMERIC_FAULT:{h="NUMERIC_FAULT";const b=t;switch(b){case"overflow":case"underflow":case"division-by-zero":h+="-"+b;break;case"negative-power":case"negative-width":h+="-unsupported";break;case"unbound-bitwise-result":h+="-unbound-result";break}break}case re.CALL_EXCEPTION:case re.INSUFFICIENT_FUNDS:case re.MISSING_NEW:case re.NONCE_EXPIRED:case re.REPLACEMENT_UNDERPRICED:case re.TRANSACTION_REPLACED:case re.UNPREDICTABLE_GAS_LIMIT:h=r;break}h&&(t+=" [ See: https://links.ethers.org/v5-errors-"+h+" ]"),n.length&&(t+=" ("+n.join(", ")+")");const p=new Error(t);return p.reason=o,p.code=r,Object.keys(i).forEach(function(b){p[b]=i[b]}),p}throwError(t,r,i){throw this.makeError(t,r,i)}throwArgumentError(t,r,i){return this.throwError(t,L.errors.INVALID_ARGUMENT,{argument:r,value:i})}assert(t,r,i,n){t||this.throwError(r,i,n)}assertArgument(t,r,i,n){t||this.throwArgumentError(r,i,n)}checkNormalize(t){Un&&this.throwError("platform missing String.prototype.normalize",L.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:Un})}checkSafeUint53(t,r){typeof t=="number"&&(r==null&&(r="value not safe"),(t<0||t>=9007199254740991)&&this.throwError(r,L.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:t}),t%1&&this.throwError(r,L.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:t}))}checkArgumentCount(t,r,i){i?i=": "+i:i="",tr&&this.throwError("too many arguments"+i,L.errors.UNEXPECTED_ARGUMENT,{count:t,expectedCount:r})}checkNew(t,r){(t===Object||t==null)&&this.throwError("missing new",L.errors.MISSING_NEW,{name:r.name})}checkAbstract(t,r){t===r?this.throwError("cannot instantiate abstract class "+JSON.stringify(r.name)+" directly; use a sub-class",L.errors.UNSUPPORTED_OPERATION,{name:t.name,operation:"new"}):(t===Object||t==null)&&this.throwError("missing new",L.errors.MISSING_NEW,{name:r.name})}static globalLogger(){return gi||(gi=new L(y0)),gi}static setCensorship(t,r){if(!t&&r&&this.globalLogger().throwError("cannot permanently disable censorship",L.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),Dn){if(!t)return;this.globalLogger().throwError("error censorship permanent",L.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}Fn=!!t,Dn=!!r}static setLogLevel(t){const r=Cr[t.toLowerCase()];if(r==null){L.globalLogger().warn("invalid log level - "+t);return}Tn=r}static from(t){return new L(t)}}L.errors=re,L.levels=Ai;const x0="bytes/5.7.0",Dt=new L(x0);function qn(e){return!!e.toHexString}function rr(e){return e.slice||(e.slice=function(){const t=Array.prototype.slice.call(arguments);return rr(new Uint8Array(Array.prototype.slice.apply(e,t)))}),e}function M0(e){return Qt(e)&&!(e.length%2)||ir(e)}function Kn(e){return typeof e=="number"&&e==e&&e%1===0}function ir(e){if(e==null)return!1;if(e.constructor===Uint8Array)return!0;if(typeof e=="string"||!Kn(e.length)||e.length<0)return!1;for(let t=0;t=256)return!1}return!0}function Ot(e,t){if(t||(t={}),typeof e=="number"){Dt.checkSafeUint53(e,"invalid arrayify value");const r=[];for(;e;)r.unshift(e&255),e=parseInt(String(e/256));return r.length===0&&r.push(0),rr(new Uint8Array(r))}if(t.allowMissingPrefix&&typeof e=="string"&&e.substring(0,2)!=="0x"&&(e="0x"+e),qn(e)&&(e=e.toHexString()),Qt(e)){let r=e.substring(2);r.length%2&&(t.hexPad==="left"?r="0"+r:t.hexPad==="right"?r+="0":Dt.throwArgumentError("hex data is odd-length","value",e));const i=[];for(let n=0;nOt(n)),r=t.reduce((n,o)=>n+o.length,0),i=new Uint8Array(r);return t.reduce((n,o)=>(i.set(o,n),n+o.length),0),rr(i)}function S0(e,t){e=Ot(e),e.length>t&&Dt.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(t);return r.set(e,t-e.length),rr(r)}function Qt(e,t){return!(typeof e!="string"||!e.match(/^0x[0-9A-Fa-f]*$/)||t&&e.length!==2+2*t)}const bi="0123456789abcdef";function Kt(e,t){if(t||(t={}),typeof e=="number"){Dt.checkSafeUint53(e,"invalid hexlify value");let r="";for(;e;)r=bi[e&15]+r,e=Math.floor(e/16);return r.length?(r.length%2&&(r="0"+r),"0x"+r):"0x00"}if(typeof e=="bigint")return e=e.toString(16),e.length%2?"0x0"+e:"0x"+e;if(t.allowMissingPrefix&&typeof e=="string"&&e.substring(0,2)!=="0x"&&(e="0x"+e),qn(e))return e.toHexString();if(Qt(e))return e.length%2&&(t.hexPad==="left"?e="0x0"+e.substring(2):t.hexPad==="right"?e+="0":Dt.throwArgumentError("hex data is odd-length","value",e)),e.toLowerCase();if(ir(e)){let r="0x";for(let i=0;i>4]+bi[n&15]}return r}return Dt.throwArgumentError("invalid hexlify value","value",e)}function N0(e){if(typeof e!="string")e=Kt(e);else if(!Qt(e)||e.length%2)return null;return(e.length-2)/2}function Hn(e,t,r){return typeof e!="string"?e=Kt(e):(!Qt(e)||e.length%2)&&Dt.throwArgumentError("invalid hexData","value",e),t=2+2*t,r!=null?"0x"+e.substring(t,2+2*r):"0x"+e.substring(t)}function oe(e,t){for(typeof e!="string"?e=Kt(e):Qt(e)||Dt.throwArgumentError("invalid hex string","value",e),e.length>2*t+2&&Dt.throwArgumentError("value out of range","value",arguments[1]);e.length<2*t+2;)e="0x0"+e.substring(2);return e}function zn(e){const t={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(M0(e)){let r=Ot(e);r.length===64?(t.v=27+(r[32]>>7),r[32]&=127,t.r=Kt(r.slice(0,32)),t.s=Kt(r.slice(32,64))):r.length===65?(t.r=Kt(r.slice(0,32)),t.s=Kt(r.slice(32,64)),t.v=r[64]):Dt.throwArgumentError("invalid signature string","signature",e),t.v<27&&(t.v===0||t.v===1?t.v+=27:Dt.throwArgumentError("signature invalid v byte","signature",e)),t.recoveryParam=1-t.v%2,t.recoveryParam&&(r[32]|=128),t._vs=Kt(r.slice(32,64))}else{if(t.r=e.r,t.s=e.s,t.v=e.v,t.recoveryParam=e.recoveryParam,t._vs=e._vs,t._vs!=null){const n=S0(Ot(t._vs),32);t._vs=Kt(n);const o=n[0]>=128?1:0;t.recoveryParam==null?t.recoveryParam=o:t.recoveryParam!==o&&Dt.throwArgumentError("signature recoveryParam mismatch _vs","signature",e),n[0]&=127;const h=Kt(n);t.s==null?t.s=h:t.s!==h&&Dt.throwArgumentError("signature v mismatch _vs","signature",e)}if(t.recoveryParam==null)t.v==null?Dt.throwArgumentError("signature missing v and recoveryParam","signature",e):t.v===0||t.v===1?t.recoveryParam=t.v:t.recoveryParam=1-t.v%2;else if(t.v==null)t.v=27+t.recoveryParam;else{const n=t.v===0||t.v===1?t.v:1-t.v%2;t.recoveryParam!==n&&Dt.throwArgumentError("signature recoveryParam mismatch v","signature",e)}t.r==null||!Qt(t.r)?Dt.throwArgumentError("signature missing or invalid r","signature",e):t.r=oe(t.r,32),t.s==null||!Qt(t.s)?Dt.throwArgumentError("signature missing or invalid s","signature",e):t.s=oe(t.s,32);const r=Ot(t.s);r[0]>=128&&Dt.throwArgumentError("signature s out of range","signature",e),t.recoveryParam&&(r[0]|=128);const i=Kt(r);t._vs&&(Qt(t._vs)||Dt.throwArgumentError("signature invalid _vs","signature",e),t._vs=oe(t._vs,32)),t._vs==null?t._vs=i:t._vs!==i&&Dt.throwArgumentError("signature _vs mismatch v and s","signature",e)}return t.yParityAndS=t._vs,t.compact=t.r+t.yParityAndS.substring(2),t}function yi(e){return"0x"+b0.keccak_256(Ot(e))}var Ln={exports:{}},I0={},_0=Object.freeze({__proto__:null,default:I0}),B0=A0(_0);(function(e){(function(t,r){function i(A,f){if(!A)throw new Error(f||"Assertion failed")}function n(A,f){A.super_=f;var a=function(){};a.prototype=f.prototype,A.prototype=new a,A.prototype.constructor=A}function o(A,f,a){if(o.isBN(A))return A;this.negative=0,this.words=null,this.length=0,this.red=null,A!==null&&((f==="le"||f==="be")&&(a=f,f=10),this._init(A||0,f||10,a||"be"))}typeof t=="object"?t.exports=o:r.BN=o,o.BN=o,o.wordSize=26;var h;try{typeof window<"u"&&typeof window.Buffer<"u"?h=window.Buffer:h=B0.Buffer}catch{}o.isBN=function(f){return f instanceof o?!0:f!==null&&typeof f=="object"&&f.constructor.wordSize===o.wordSize&&Array.isArray(f.words)},o.max=function(f,a){return f.cmp(a)>0?f:a},o.min=function(f,a){return f.cmp(a)<0?f:a},o.prototype._init=function(f,a,c){if(typeof f=="number")return this._initNumber(f,a,c);if(typeof f=="object")return this._initArray(f,a,c);a==="hex"&&(a=16),i(a===(a|0)&&a>=2&&a<=36),f=f.toString().replace(/\s+/g,"");var d=0;f[0]==="-"&&(d++,this.negative=1),d=0;d-=3)x=f[d]|f[d-1]<<8|f[d-2]<<16,this.words[g]|=x<>>26-M&67108863,M+=24,M>=26&&(M-=26,g++);else if(c==="le")for(d=0,g=0;d>>26-M&67108863,M+=24,M>=26&&(M-=26,g++);return this._strip()};function p(A,f){var a=A.charCodeAt(f);if(a>=48&&a<=57)return a-48;if(a>=65&&a<=70)return a-55;if(a>=97&&a<=102)return a-87;i(!1,"Invalid character in "+A)}function b(A,f,a){var c=p(A,a);return a-1>=f&&(c|=p(A,a-1)<<4),c}o.prototype._parseHex=function(f,a,c){this.length=Math.ceil((f.length-a)/6),this.words=new Array(this.length);for(var d=0;d=a;d-=2)M=b(f,a,d)<=18?(g-=18,x+=1,this.words[x]|=M>>>26):g+=8;else{var l=f.length-a;for(d=l%2===0?a+1:a;d=18?(g-=18,x+=1,this.words[x]|=M>>>26):g+=8}this._strip()};function m(A,f,a,c){for(var d=0,g=0,x=Math.min(A.length,a),M=f;M=49?g=l-49+10:l>=17?g=l-17+10:g=l,i(l>=0&&g1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},o.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{o.prototype[Symbol.for("nodejs.util.inspect.custom")]=y}catch{o.prototype.inspect=y}else o.prototype.inspect=y;function y(){return(this.red?""}var S=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],I=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],N=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(f,a){f=f||10,a=a|0||1;var c;if(f===16||f==="hex"){c="";for(var d=0,g=0,x=0;x>>24-d&16777215,d+=2,d>=26&&(d-=26,x--),g!==0||x!==this.length-1?c=S[6-l.length]+l+c:c=l+c}for(g!==0&&(c=g.toString(16)+c);c.length%a!==0;)c="0"+c;return this.negative!==0&&(c="-"+c),c}if(f===(f|0)&&f>=2&&f<=36){var s=I[f],v=N[f];c="";var k=this.clone();for(k.negative=0;!k.isZero();){var u=k.modrn(v).toString(f);k=k.idivn(v),k.isZero()?c=u+c:c=S[s-u.length]+u+c}for(this.isZero()&&(c="0"+c);c.length%a!==0;)c="0"+c;return this.negative!==0&&(c="-"+c),c}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var f=this.words[0];return this.length===2?f+=this.words[1]*67108864:this.length===3&&this.words[2]===1?f+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-f:f},o.prototype.toJSON=function(){return this.toString(16,2)},h&&(o.prototype.toBuffer=function(f,a){return this.toArrayLike(h,f,a)}),o.prototype.toArray=function(f,a){return this.toArrayLike(Array,f,a)};var C=function(f,a){return f.allocUnsafe?f.allocUnsafe(a):new f(a)};o.prototype.toArrayLike=function(f,a,c){this._strip();var d=this.byteLength(),g=c||Math.max(1,d);i(d<=g,"byte array longer than desired length"),i(g>0,"Requested array length <= 0");var x=C(f,g),M=a==="le"?"LE":"BE";return this["_toArrayLike"+M](x,d),x},o.prototype._toArrayLikeLE=function(f,a){for(var c=0,d=0,g=0,x=0;g>8&255),c>16&255),x===6?(c>24&255),d=0,x=0):(d=M>>>24,x+=2)}if(c=0&&(f[c--]=M>>8&255),c>=0&&(f[c--]=M>>16&255),x===6?(c>=0&&(f[c--]=M>>24&255),d=0,x=0):(d=M>>>24,x+=2)}if(c>=0)for(f[c--]=d;c>=0;)f[c--]=0},Math.clz32?o.prototype._countBits=function(f){return 32-Math.clz32(f)}:o.prototype._countBits=function(f){var a=f,c=0;return a>=4096&&(c+=13,a>>>=13),a>=64&&(c+=7,a>>>=7),a>=8&&(c+=4,a>>>=4),a>=2&&(c+=2,a>>>=2),c+a},o.prototype._zeroBits=function(f){if(f===0)return 26;var a=f,c=0;return a&8191||(c+=13,a>>>=13),a&127||(c+=7,a>>>=7),a&15||(c+=4,a>>>=4),a&3||(c+=2,a>>>=2),a&1||c++,c},o.prototype.bitLength=function(){var f=this.words[this.length-1],a=this._countBits(f);return(this.length-1)*26+a};function F(A){for(var f=new Array(A.bitLength()),a=0;a>>d&1}return f}o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var f=0,a=0;af.length?this.clone().ior(f):f.clone().ior(this)},o.prototype.uor=function(f){return this.length>f.length?this.clone().iuor(f):f.clone().iuor(this)},o.prototype.iuand=function(f){var a;this.length>f.length?a=f:a=this;for(var c=0;cf.length?this.clone().iand(f):f.clone().iand(this)},o.prototype.uand=function(f){return this.length>f.length?this.clone().iuand(f):f.clone().iuand(this)},o.prototype.iuxor=function(f){var a,c;this.length>f.length?(a=this,c=f):(a=f,c=this);for(var d=0;df.length?this.clone().ixor(f):f.clone().ixor(this)},o.prototype.uxor=function(f){return this.length>f.length?this.clone().iuxor(f):f.clone().iuxor(this)},o.prototype.inotn=function(f){i(typeof f=="number"&&f>=0);var a=Math.ceil(f/26)|0,c=f%26;this._expand(a),c>0&&a--;for(var d=0;d0&&(this.words[d]=~this.words[d]&67108863>>26-c),this._strip()},o.prototype.notn=function(f){return this.clone().inotn(f)},o.prototype.setn=function(f,a){i(typeof f=="number"&&f>=0);var c=f/26|0,d=f%26;return this._expand(c+1),a?this.words[c]=this.words[c]|1<f.length?(c=this,d=f):(c=f,d=this);for(var g=0,x=0;x>>26;for(;g!==0&&x>>26;if(this.length=c.length,g!==0)this.words[this.length]=g,this.length++;else if(c!==this)for(;xf.length?this.clone().iadd(f):f.clone().iadd(this)},o.prototype.isub=function(f){if(f.negative!==0){f.negative=0;var a=this.iadd(f);return f.negative=1,a._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(f),this.negative=1,this._normSign();var c=this.cmp(f);if(c===0)return this.negative=0,this.length=1,this.words[0]=0,this;var d,g;c>0?(d=this,g=f):(d=f,g=this);for(var x=0,M=0;M>26,this.words[M]=a&67108863;for(;x!==0&&M>26,this.words[M]=a&67108863;if(x===0&&M>>26,k=l&67108863,u=Math.min(s,f.length-1),E=Math.max(0,s-A.length+1);E<=u;E++){var _=s-E|0;d=A.words[_]|0,g=f.words[E]|0,x=d*g+k,v+=x/67108864|0,k=x&67108863}a.words[s]=k|0,l=v|0}return l!==0?a.words[s]=l|0:a.length--,a._strip()}var J=function(f,a,c){var d=f.words,g=a.words,x=c.words,M=0,l,s,v,k=d[0]|0,u=k&8191,E=k>>>13,_=d[1]|0,B=_&8191,R=_>>>13,T=d[2]|0,P=T&8191,O=T>>>13,Ct=d[3]|0,D=Ct&8191,q=Ct>>>13,De=d[4]|0,X=De&8191,Z=De>>>13,Fe=d[5]|0,$=Fe&8191,tt=Fe>>>13,Te=d[6]|0,et=Te&8191,rt=Te>>>13,Ue=d[7]|0,it=Ue&8191,nt=Ue>>>13,ke=d[8]|0,ft=ke&8191,ot=ke>>>13,qe=d[9]|0,st=qe&8191,at=qe>>>13,Ke=g[0]|0,ut=Ke&8191,ht=Ke>>>13,He=g[1]|0,ct=He&8191,lt=He>>>13,ze=g[2]|0,dt=ze&8191,pt=ze>>>13,Le=g[3]|0,vt=Le&8191,mt=Le>>>13,je=g[4]|0,gt=je&8191,At=je>>>13,Qe=g[5]|0,bt=Qe&8191,yt=Qe>>>13,Je=g[6]|0,wt=Je&8191,xt=Je>>>13,Ge=g[7]|0,Mt=Ge&8191,Et=Ge>>>13,Ye=g[8]|0,St=Ye&8191,Nt=Ye>>>13,Ve=g[9]|0,It=Ve&8191,_t=Ve>>>13;c.negative=f.negative^a.negative,c.length=19,l=Math.imul(u,ut),s=Math.imul(u,ht),s=s+Math.imul(E,ut)|0,v=Math.imul(E,ht);var Me=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Me>>>26)|0,Me&=67108863,l=Math.imul(B,ut),s=Math.imul(B,ht),s=s+Math.imul(R,ut)|0,v=Math.imul(R,ht),l=l+Math.imul(u,ct)|0,s=s+Math.imul(u,lt)|0,s=s+Math.imul(E,ct)|0,v=v+Math.imul(E,lt)|0;var Ee=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,l=Math.imul(P,ut),s=Math.imul(P,ht),s=s+Math.imul(O,ut)|0,v=Math.imul(O,ht),l=l+Math.imul(B,ct)|0,s=s+Math.imul(B,lt)|0,s=s+Math.imul(R,ct)|0,v=v+Math.imul(R,lt)|0,l=l+Math.imul(u,dt)|0,s=s+Math.imul(u,pt)|0,s=s+Math.imul(E,dt)|0,v=v+Math.imul(E,pt)|0;var Se=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Se>>>26)|0,Se&=67108863,l=Math.imul(D,ut),s=Math.imul(D,ht),s=s+Math.imul(q,ut)|0,v=Math.imul(q,ht),l=l+Math.imul(P,ct)|0,s=s+Math.imul(P,lt)|0,s=s+Math.imul(O,ct)|0,v=v+Math.imul(O,lt)|0,l=l+Math.imul(B,dt)|0,s=s+Math.imul(B,pt)|0,s=s+Math.imul(R,dt)|0,v=v+Math.imul(R,pt)|0,l=l+Math.imul(u,vt)|0,s=s+Math.imul(u,mt)|0,s=s+Math.imul(E,vt)|0,v=v+Math.imul(E,mt)|0;var Ne=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,l=Math.imul(X,ut),s=Math.imul(X,ht),s=s+Math.imul(Z,ut)|0,v=Math.imul(Z,ht),l=l+Math.imul(D,ct)|0,s=s+Math.imul(D,lt)|0,s=s+Math.imul(q,ct)|0,v=v+Math.imul(q,lt)|0,l=l+Math.imul(P,dt)|0,s=s+Math.imul(P,pt)|0,s=s+Math.imul(O,dt)|0,v=v+Math.imul(O,pt)|0,l=l+Math.imul(B,vt)|0,s=s+Math.imul(B,mt)|0,s=s+Math.imul(R,vt)|0,v=v+Math.imul(R,mt)|0,l=l+Math.imul(u,gt)|0,s=s+Math.imul(u,At)|0,s=s+Math.imul(E,gt)|0,v=v+Math.imul(E,At)|0;var Ie=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,l=Math.imul($,ut),s=Math.imul($,ht),s=s+Math.imul(tt,ut)|0,v=Math.imul(tt,ht),l=l+Math.imul(X,ct)|0,s=s+Math.imul(X,lt)|0,s=s+Math.imul(Z,ct)|0,v=v+Math.imul(Z,lt)|0,l=l+Math.imul(D,dt)|0,s=s+Math.imul(D,pt)|0,s=s+Math.imul(q,dt)|0,v=v+Math.imul(q,pt)|0,l=l+Math.imul(P,vt)|0,s=s+Math.imul(P,mt)|0,s=s+Math.imul(O,vt)|0,v=v+Math.imul(O,mt)|0,l=l+Math.imul(B,gt)|0,s=s+Math.imul(B,At)|0,s=s+Math.imul(R,gt)|0,v=v+Math.imul(R,At)|0,l=l+Math.imul(u,bt)|0,s=s+Math.imul(u,yt)|0,s=s+Math.imul(E,bt)|0,v=v+Math.imul(E,yt)|0;var Wr=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Wr>>>26)|0,Wr&=67108863,l=Math.imul(et,ut),s=Math.imul(et,ht),s=s+Math.imul(rt,ut)|0,v=Math.imul(rt,ht),l=l+Math.imul($,ct)|0,s=s+Math.imul($,lt)|0,s=s+Math.imul(tt,ct)|0,v=v+Math.imul(tt,lt)|0,l=l+Math.imul(X,dt)|0,s=s+Math.imul(X,pt)|0,s=s+Math.imul(Z,dt)|0,v=v+Math.imul(Z,pt)|0,l=l+Math.imul(D,vt)|0,s=s+Math.imul(D,mt)|0,s=s+Math.imul(q,vt)|0,v=v+Math.imul(q,mt)|0,l=l+Math.imul(P,gt)|0,s=s+Math.imul(P,At)|0,s=s+Math.imul(O,gt)|0,v=v+Math.imul(O,At)|0,l=l+Math.imul(B,bt)|0,s=s+Math.imul(B,yt)|0,s=s+Math.imul(R,bt)|0,v=v+Math.imul(R,yt)|0,l=l+Math.imul(u,wt)|0,s=s+Math.imul(u,xt)|0,s=s+Math.imul(E,wt)|0,v=v+Math.imul(E,xt)|0;var Xr=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Xr>>>26)|0,Xr&=67108863,l=Math.imul(it,ut),s=Math.imul(it,ht),s=s+Math.imul(nt,ut)|0,v=Math.imul(nt,ht),l=l+Math.imul(et,ct)|0,s=s+Math.imul(et,lt)|0,s=s+Math.imul(rt,ct)|0,v=v+Math.imul(rt,lt)|0,l=l+Math.imul($,dt)|0,s=s+Math.imul($,pt)|0,s=s+Math.imul(tt,dt)|0,v=v+Math.imul(tt,pt)|0,l=l+Math.imul(X,vt)|0,s=s+Math.imul(X,mt)|0,s=s+Math.imul(Z,vt)|0,v=v+Math.imul(Z,mt)|0,l=l+Math.imul(D,gt)|0,s=s+Math.imul(D,At)|0,s=s+Math.imul(q,gt)|0,v=v+Math.imul(q,At)|0,l=l+Math.imul(P,bt)|0,s=s+Math.imul(P,yt)|0,s=s+Math.imul(O,bt)|0,v=v+Math.imul(O,yt)|0,l=l+Math.imul(B,wt)|0,s=s+Math.imul(B,xt)|0,s=s+Math.imul(R,wt)|0,v=v+Math.imul(R,xt)|0,l=l+Math.imul(u,Mt)|0,s=s+Math.imul(u,Et)|0,s=s+Math.imul(E,Mt)|0,v=v+Math.imul(E,Et)|0;var Zr=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Zr>>>26)|0,Zr&=67108863,l=Math.imul(ft,ut),s=Math.imul(ft,ht),s=s+Math.imul(ot,ut)|0,v=Math.imul(ot,ht),l=l+Math.imul(it,ct)|0,s=s+Math.imul(it,lt)|0,s=s+Math.imul(nt,ct)|0,v=v+Math.imul(nt,lt)|0,l=l+Math.imul(et,dt)|0,s=s+Math.imul(et,pt)|0,s=s+Math.imul(rt,dt)|0,v=v+Math.imul(rt,pt)|0,l=l+Math.imul($,vt)|0,s=s+Math.imul($,mt)|0,s=s+Math.imul(tt,vt)|0,v=v+Math.imul(tt,mt)|0,l=l+Math.imul(X,gt)|0,s=s+Math.imul(X,At)|0,s=s+Math.imul(Z,gt)|0,v=v+Math.imul(Z,At)|0,l=l+Math.imul(D,bt)|0,s=s+Math.imul(D,yt)|0,s=s+Math.imul(q,bt)|0,v=v+Math.imul(q,yt)|0,l=l+Math.imul(P,wt)|0,s=s+Math.imul(P,xt)|0,s=s+Math.imul(O,wt)|0,v=v+Math.imul(O,xt)|0,l=l+Math.imul(B,Mt)|0,s=s+Math.imul(B,Et)|0,s=s+Math.imul(R,Mt)|0,v=v+Math.imul(R,Et)|0,l=l+Math.imul(u,St)|0,s=s+Math.imul(u,Nt)|0,s=s+Math.imul(E,St)|0,v=v+Math.imul(E,Nt)|0;var $r=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+($r>>>26)|0,$r&=67108863,l=Math.imul(st,ut),s=Math.imul(st,ht),s=s+Math.imul(at,ut)|0,v=Math.imul(at,ht),l=l+Math.imul(ft,ct)|0,s=s+Math.imul(ft,lt)|0,s=s+Math.imul(ot,ct)|0,v=v+Math.imul(ot,lt)|0,l=l+Math.imul(it,dt)|0,s=s+Math.imul(it,pt)|0,s=s+Math.imul(nt,dt)|0,v=v+Math.imul(nt,pt)|0,l=l+Math.imul(et,vt)|0,s=s+Math.imul(et,mt)|0,s=s+Math.imul(rt,vt)|0,v=v+Math.imul(rt,mt)|0,l=l+Math.imul($,gt)|0,s=s+Math.imul($,At)|0,s=s+Math.imul(tt,gt)|0,v=v+Math.imul(tt,At)|0,l=l+Math.imul(X,bt)|0,s=s+Math.imul(X,yt)|0,s=s+Math.imul(Z,bt)|0,v=v+Math.imul(Z,yt)|0,l=l+Math.imul(D,wt)|0,s=s+Math.imul(D,xt)|0,s=s+Math.imul(q,wt)|0,v=v+Math.imul(q,xt)|0,l=l+Math.imul(P,Mt)|0,s=s+Math.imul(P,Et)|0,s=s+Math.imul(O,Mt)|0,v=v+Math.imul(O,Et)|0,l=l+Math.imul(B,St)|0,s=s+Math.imul(B,Nt)|0,s=s+Math.imul(R,St)|0,v=v+Math.imul(R,Nt)|0,l=l+Math.imul(u,It)|0,s=s+Math.imul(u,_t)|0,s=s+Math.imul(E,It)|0,v=v+Math.imul(E,_t)|0;var ti=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ti>>>26)|0,ti&=67108863,l=Math.imul(st,ct),s=Math.imul(st,lt),s=s+Math.imul(at,ct)|0,v=Math.imul(at,lt),l=l+Math.imul(ft,dt)|0,s=s+Math.imul(ft,pt)|0,s=s+Math.imul(ot,dt)|0,v=v+Math.imul(ot,pt)|0,l=l+Math.imul(it,vt)|0,s=s+Math.imul(it,mt)|0,s=s+Math.imul(nt,vt)|0,v=v+Math.imul(nt,mt)|0,l=l+Math.imul(et,gt)|0,s=s+Math.imul(et,At)|0,s=s+Math.imul(rt,gt)|0,v=v+Math.imul(rt,At)|0,l=l+Math.imul($,bt)|0,s=s+Math.imul($,yt)|0,s=s+Math.imul(tt,bt)|0,v=v+Math.imul(tt,yt)|0,l=l+Math.imul(X,wt)|0,s=s+Math.imul(X,xt)|0,s=s+Math.imul(Z,wt)|0,v=v+Math.imul(Z,xt)|0,l=l+Math.imul(D,Mt)|0,s=s+Math.imul(D,Et)|0,s=s+Math.imul(q,Mt)|0,v=v+Math.imul(q,Et)|0,l=l+Math.imul(P,St)|0,s=s+Math.imul(P,Nt)|0,s=s+Math.imul(O,St)|0,v=v+Math.imul(O,Nt)|0,l=l+Math.imul(B,It)|0,s=s+Math.imul(B,_t)|0,s=s+Math.imul(R,It)|0,v=v+Math.imul(R,_t)|0;var ei=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ei>>>26)|0,ei&=67108863,l=Math.imul(st,dt),s=Math.imul(st,pt),s=s+Math.imul(at,dt)|0,v=Math.imul(at,pt),l=l+Math.imul(ft,vt)|0,s=s+Math.imul(ft,mt)|0,s=s+Math.imul(ot,vt)|0,v=v+Math.imul(ot,mt)|0,l=l+Math.imul(it,gt)|0,s=s+Math.imul(it,At)|0,s=s+Math.imul(nt,gt)|0,v=v+Math.imul(nt,At)|0,l=l+Math.imul(et,bt)|0,s=s+Math.imul(et,yt)|0,s=s+Math.imul(rt,bt)|0,v=v+Math.imul(rt,yt)|0,l=l+Math.imul($,wt)|0,s=s+Math.imul($,xt)|0,s=s+Math.imul(tt,wt)|0,v=v+Math.imul(tt,xt)|0,l=l+Math.imul(X,Mt)|0,s=s+Math.imul(X,Et)|0,s=s+Math.imul(Z,Mt)|0,v=v+Math.imul(Z,Et)|0,l=l+Math.imul(D,St)|0,s=s+Math.imul(D,Nt)|0,s=s+Math.imul(q,St)|0,v=v+Math.imul(q,Nt)|0,l=l+Math.imul(P,It)|0,s=s+Math.imul(P,_t)|0,s=s+Math.imul(O,It)|0,v=v+Math.imul(O,_t)|0;var ri=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ri>>>26)|0,ri&=67108863,l=Math.imul(st,vt),s=Math.imul(st,mt),s=s+Math.imul(at,vt)|0,v=Math.imul(at,mt),l=l+Math.imul(ft,gt)|0,s=s+Math.imul(ft,At)|0,s=s+Math.imul(ot,gt)|0,v=v+Math.imul(ot,At)|0,l=l+Math.imul(it,bt)|0,s=s+Math.imul(it,yt)|0,s=s+Math.imul(nt,bt)|0,v=v+Math.imul(nt,yt)|0,l=l+Math.imul(et,wt)|0,s=s+Math.imul(et,xt)|0,s=s+Math.imul(rt,wt)|0,v=v+Math.imul(rt,xt)|0,l=l+Math.imul($,Mt)|0,s=s+Math.imul($,Et)|0,s=s+Math.imul(tt,Mt)|0,v=v+Math.imul(tt,Et)|0,l=l+Math.imul(X,St)|0,s=s+Math.imul(X,Nt)|0,s=s+Math.imul(Z,St)|0,v=v+Math.imul(Z,Nt)|0,l=l+Math.imul(D,It)|0,s=s+Math.imul(D,_t)|0,s=s+Math.imul(q,It)|0,v=v+Math.imul(q,_t)|0;var ii=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ii>>>26)|0,ii&=67108863,l=Math.imul(st,gt),s=Math.imul(st,At),s=s+Math.imul(at,gt)|0,v=Math.imul(at,At),l=l+Math.imul(ft,bt)|0,s=s+Math.imul(ft,yt)|0,s=s+Math.imul(ot,bt)|0,v=v+Math.imul(ot,yt)|0,l=l+Math.imul(it,wt)|0,s=s+Math.imul(it,xt)|0,s=s+Math.imul(nt,wt)|0,v=v+Math.imul(nt,xt)|0,l=l+Math.imul(et,Mt)|0,s=s+Math.imul(et,Et)|0,s=s+Math.imul(rt,Mt)|0,v=v+Math.imul(rt,Et)|0,l=l+Math.imul($,St)|0,s=s+Math.imul($,Nt)|0,s=s+Math.imul(tt,St)|0,v=v+Math.imul(tt,Nt)|0,l=l+Math.imul(X,It)|0,s=s+Math.imul(X,_t)|0,s=s+Math.imul(Z,It)|0,v=v+Math.imul(Z,_t)|0;var ni=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ni>>>26)|0,ni&=67108863,l=Math.imul(st,bt),s=Math.imul(st,yt),s=s+Math.imul(at,bt)|0,v=Math.imul(at,yt),l=l+Math.imul(ft,wt)|0,s=s+Math.imul(ft,xt)|0,s=s+Math.imul(ot,wt)|0,v=v+Math.imul(ot,xt)|0,l=l+Math.imul(it,Mt)|0,s=s+Math.imul(it,Et)|0,s=s+Math.imul(nt,Mt)|0,v=v+Math.imul(nt,Et)|0,l=l+Math.imul(et,St)|0,s=s+Math.imul(et,Nt)|0,s=s+Math.imul(rt,St)|0,v=v+Math.imul(rt,Nt)|0,l=l+Math.imul($,It)|0,s=s+Math.imul($,_t)|0,s=s+Math.imul(tt,It)|0,v=v+Math.imul(tt,_t)|0;var fi=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(fi>>>26)|0,fi&=67108863,l=Math.imul(st,wt),s=Math.imul(st,xt),s=s+Math.imul(at,wt)|0,v=Math.imul(at,xt),l=l+Math.imul(ft,Mt)|0,s=s+Math.imul(ft,Et)|0,s=s+Math.imul(ot,Mt)|0,v=v+Math.imul(ot,Et)|0,l=l+Math.imul(it,St)|0,s=s+Math.imul(it,Nt)|0,s=s+Math.imul(nt,St)|0,v=v+Math.imul(nt,Nt)|0,l=l+Math.imul(et,It)|0,s=s+Math.imul(et,_t)|0,s=s+Math.imul(rt,It)|0,v=v+Math.imul(rt,_t)|0;var oi=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(oi>>>26)|0,oi&=67108863,l=Math.imul(st,Mt),s=Math.imul(st,Et),s=s+Math.imul(at,Mt)|0,v=Math.imul(at,Et),l=l+Math.imul(ft,St)|0,s=s+Math.imul(ft,Nt)|0,s=s+Math.imul(ot,St)|0,v=v+Math.imul(ot,Nt)|0,l=l+Math.imul(it,It)|0,s=s+Math.imul(it,_t)|0,s=s+Math.imul(nt,It)|0,v=v+Math.imul(nt,_t)|0;var si=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(si>>>26)|0,si&=67108863,l=Math.imul(st,St),s=Math.imul(st,Nt),s=s+Math.imul(at,St)|0,v=Math.imul(at,Nt),l=l+Math.imul(ft,It)|0,s=s+Math.imul(ft,_t)|0,s=s+Math.imul(ot,It)|0,v=v+Math.imul(ot,_t)|0;var ai=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ai>>>26)|0,ai&=67108863,l=Math.imul(st,It),s=Math.imul(st,_t),s=s+Math.imul(at,It)|0,v=Math.imul(at,_t);var ui=(M+l|0)+((s&8191)<<13)|0;return M=(v+(s>>>13)|0)+(ui>>>26)|0,ui&=67108863,x[0]=Me,x[1]=Ee,x[2]=Se,x[3]=Ne,x[4]=Ie,x[5]=Wr,x[6]=Xr,x[7]=Zr,x[8]=$r,x[9]=ti,x[10]=ei,x[11]=ri,x[12]=ii,x[13]=ni,x[14]=fi,x[15]=oi,x[16]=si,x[17]=ai,x[18]=ui,M!==0&&(x[19]=M,c.length++),c};Math.imul||(J=U);function Bt(A,f,a){a.negative=f.negative^A.negative,a.length=A.length+f.length;for(var c=0,d=0,g=0;g>>26)|0,d+=x>>>26,x&=67108863}a.words[g]=M,c=x,x=d}return c!==0?a.words[g]=c:a.length--,a._strip()}function G(A,f,a){return Bt(A,f,a)}o.prototype.mulTo=function(f,a){var c,d=this.length+f.length;return this.length===10&&f.length===10?c=J(this,f,a):d<63?c=U(this,f,a):d<1024?c=Bt(this,f,a):c=G(this,f,a),c},o.prototype.mul=function(f){var a=new o(null);return a.words=new Array(this.length+f.length),this.mulTo(f,a)},o.prototype.mulf=function(f){var a=new o(null);return a.words=new Array(this.length+f.length),G(this,f,a)},o.prototype.imul=function(f){return this.clone().mulTo(f,this)},o.prototype.imuln=function(f){var a=f<0;a&&(f=-f),i(typeof f=="number"),i(f<67108864);for(var c=0,d=0;d>=26,c+=g/67108864|0,c+=x>>>26,this.words[d]=x&67108863}return c!==0&&(this.words[d]=c,this.length++),a?this.ineg():this},o.prototype.muln=function(f){return this.clone().imuln(f)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(f){var a=F(f);if(a.length===0)return new o(1);for(var c=this,d=0;d=0);var a=f%26,c=(f-a)/26,d=67108863>>>26-a<<26-a,g;if(a!==0){var x=0;for(g=0;g>>26-a}x&&(this.words[g]=x,this.length++)}if(c!==0){for(g=this.length-1;g>=0;g--)this.words[g+c]=this.words[g];for(g=0;g=0);var d;a?d=(a-a%26)/26:d=0;var g=f%26,x=Math.min((f-g)/26,this.length),M=67108863^67108863>>>g<x)for(this.length-=x,s=0;s=0&&(v!==0||s>=d);s--){var k=this.words[s]|0;this.words[s]=v<<26-g|k>>>g,v=k&M}return l&&v!==0&&(l.words[l.length++]=v),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},o.prototype.ishrn=function(f,a,c){return i(this.negative===0),this.iushrn(f,a,c)},o.prototype.shln=function(f){return this.clone().ishln(f)},o.prototype.ushln=function(f){return this.clone().iushln(f)},o.prototype.shrn=function(f){return this.clone().ishrn(f)},o.prototype.ushrn=function(f){return this.clone().iushrn(f)},o.prototype.testn=function(f){i(typeof f=="number"&&f>=0);var a=f%26,c=(f-a)/26,d=1<=0);var a=f%26,c=(f-a)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=c)return this;if(a!==0&&c++,this.length=Math.min(c,this.length),a!==0){var d=67108863^67108863>>>a<=67108864;a++)this.words[a]-=67108864,a===this.length-1?this.words[a+1]=1:this.words[a+1]++;return this.length=Math.max(this.length,a+1),this},o.prototype.isubn=function(f){if(i(typeof f=="number"),i(f<67108864),f<0)return this.iaddn(-f);if(this.negative!==0)return this.negative=0,this.iaddn(f),this.negative=1,this;if(this.words[0]-=f,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var a=0;a>26)-(l/67108864|0),this.words[g+c]=x&67108863}for(;g>26,this.words[g+c]=x&67108863;if(M===0)return this._strip();for(i(M===-1),M=0,g=0;g>26,this.words[g]=x&67108863;return this.negative=1,this._strip()},o.prototype._wordDiv=function(f,a){var c=this.length-f.length,d=this.clone(),g=f,x=g.words[g.length-1]|0,M=this._countBits(x);c=26-M,c!==0&&(g=g.ushln(c),d.iushln(c),x=g.words[g.length-1]|0);var l=d.length-g.length,s;if(a!=="mod"){s=new o(null),s.length=l+1,s.words=new Array(s.length);for(var v=0;v=0;u--){var E=(d.words[g.length+u]|0)*67108864+(d.words[g.length+u-1]|0);for(E=Math.min(E/x|0,67108863),d._ishlnsubmul(g,E,u);d.negative!==0;)E--,d.negative=0,d._ishlnsubmul(g,1,u),d.isZero()||(d.negative^=1);s&&(s.words[u]=E)}return s&&s._strip(),d._strip(),a!=="div"&&c!==0&&d.iushrn(c),{div:s||null,mod:d}},o.prototype.divmod=function(f,a,c){if(i(!f.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var d,g,x;return this.negative!==0&&f.negative===0?(x=this.neg().divmod(f,a),a!=="mod"&&(d=x.div.neg()),a!=="div"&&(g=x.mod.neg(),c&&g.negative!==0&&g.iadd(f)),{div:d,mod:g}):this.negative===0&&f.negative!==0?(x=this.divmod(f.neg(),a),a!=="mod"&&(d=x.div.neg()),{div:d,mod:x.mod}):this.negative&f.negative?(x=this.neg().divmod(f.neg(),a),a!=="div"&&(g=x.mod.neg(),c&&g.negative!==0&&g.isub(f)),{div:x.div,mod:g}):f.length>this.length||this.cmp(f)<0?{div:new o(0),mod:this}:f.length===1?a==="div"?{div:this.divn(f.words[0]),mod:null}:a==="mod"?{div:null,mod:new o(this.modrn(f.words[0]))}:{div:this.divn(f.words[0]),mod:new o(this.modrn(f.words[0]))}:this._wordDiv(f,a)},o.prototype.div=function(f){return this.divmod(f,"div",!1).div},o.prototype.mod=function(f){return this.divmod(f,"mod",!1).mod},o.prototype.umod=function(f){return this.divmod(f,"mod",!0).mod},o.prototype.divRound=function(f){var a=this.divmod(f);if(a.mod.isZero())return a.div;var c=a.div.negative!==0?a.mod.isub(f):a.mod,d=f.ushrn(1),g=f.andln(1),x=c.cmp(d);return x<0||g===1&&x===0?a.div:a.div.negative!==0?a.div.isubn(1):a.div.iaddn(1)},o.prototype.modrn=function(f){var a=f<0;a&&(f=-f),i(f<=67108863);for(var c=(1<<26)%f,d=0,g=this.length-1;g>=0;g--)d=(c*d+(this.words[g]|0))%f;return a?-d:d},o.prototype.modn=function(f){return this.modrn(f)},o.prototype.idivn=function(f){var a=f<0;a&&(f=-f),i(f<=67108863);for(var c=0,d=this.length-1;d>=0;d--){var g=(this.words[d]|0)+c*67108864;this.words[d]=g/f|0,c=g%f}return this._strip(),a?this.ineg():this},o.prototype.divn=function(f){return this.clone().idivn(f)},o.prototype.egcd=function(f){i(f.negative===0),i(!f.isZero());var a=this,c=f.clone();a.negative!==0?a=a.umod(f):a=a.clone();for(var d=new o(1),g=new o(0),x=new o(0),M=new o(1),l=0;a.isEven()&&c.isEven();)a.iushrn(1),c.iushrn(1),++l;for(var s=c.clone(),v=a.clone();!a.isZero();){for(var k=0,u=1;!(a.words[0]&u)&&k<26;++k,u<<=1);if(k>0)for(a.iushrn(k);k-- >0;)(d.isOdd()||g.isOdd())&&(d.iadd(s),g.isub(v)),d.iushrn(1),g.iushrn(1);for(var E=0,_=1;!(c.words[0]&_)&&E<26;++E,_<<=1);if(E>0)for(c.iushrn(E);E-- >0;)(x.isOdd()||M.isOdd())&&(x.iadd(s),M.isub(v)),x.iushrn(1),M.iushrn(1);a.cmp(c)>=0?(a.isub(c),d.isub(x),g.isub(M)):(c.isub(a),x.isub(d),M.isub(g))}return{a:x,b:M,gcd:c.iushln(l)}},o.prototype._invmp=function(f){i(f.negative===0),i(!f.isZero());var a=this,c=f.clone();a.negative!==0?a=a.umod(f):a=a.clone();for(var d=new o(1),g=new o(0),x=c.clone();a.cmpn(1)>0&&c.cmpn(1)>0;){for(var M=0,l=1;!(a.words[0]&l)&&M<26;++M,l<<=1);if(M>0)for(a.iushrn(M);M-- >0;)d.isOdd()&&d.iadd(x),d.iushrn(1);for(var s=0,v=1;!(c.words[0]&v)&&s<26;++s,v<<=1);if(s>0)for(c.iushrn(s);s-- >0;)g.isOdd()&&g.iadd(x),g.iushrn(1);a.cmp(c)>=0?(a.isub(c),d.isub(g)):(c.isub(a),g.isub(d))}var k;return a.cmpn(1)===0?k=d:k=g,k.cmpn(0)<0&&k.iadd(f),k},o.prototype.gcd=function(f){if(this.isZero())return f.abs();if(f.isZero())return this.abs();var a=this.clone(),c=f.clone();a.negative=0,c.negative=0;for(var d=0;a.isEven()&&c.isEven();d++)a.iushrn(1),c.iushrn(1);do{for(;a.isEven();)a.iushrn(1);for(;c.isEven();)c.iushrn(1);var g=a.cmp(c);if(g<0){var x=a;a=c,c=x}else if(g===0||c.cmpn(1)===0)break;a.isub(c)}while(!0);return c.iushln(d)},o.prototype.invm=function(f){return this.egcd(f).a.umod(f)},o.prototype.isEven=function(){return(this.words[0]&1)===0},o.prototype.isOdd=function(){return(this.words[0]&1)===1},o.prototype.andln=function(f){return this.words[0]&f},o.prototype.bincn=function(f){i(typeof f=="number");var a=f%26,c=(f-a)/26,d=1<>>26,M&=67108863,this.words[x]=M}return g!==0&&(this.words[x]=g,this.length++),this},o.prototype.isZero=function(){return this.length===1&&this.words[0]===0},o.prototype.cmpn=function(f){var a=f<0;if(this.negative!==0&&!a)return-1;if(this.negative===0&&a)return 1;this._strip();var c;if(this.length>1)c=1;else{a&&(f=-f),i(f<=67108863,"Number is too big");var d=this.words[0]|0;c=d===f?0:df.length)return 1;if(this.length=0;c--){var d=this.words[c]|0,g=f.words[c]|0;if(d!==g){dg&&(a=1);break}}return a},o.prototype.gtn=function(f){return this.cmpn(f)===1},o.prototype.gt=function(f){return this.cmp(f)===1},o.prototype.gten=function(f){return this.cmpn(f)>=0},o.prototype.gte=function(f){return this.cmp(f)>=0},o.prototype.ltn=function(f){return this.cmpn(f)===-1},o.prototype.lt=function(f){return this.cmp(f)===-1},o.prototype.lten=function(f){return this.cmpn(f)<=0},o.prototype.lte=function(f){return this.cmp(f)<=0},o.prototype.eqn=function(f){return this.cmpn(f)===0},o.prototype.eq=function(f){return this.cmp(f)===0},o.red=function(f){return new Y(f)},o.prototype.toRed=function(f){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),f.convertTo(this)._forceRed(f)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(f){return this.red=f,this},o.prototype.forceRed=function(f){return i(!this.red,"Already a number in reduction context"),this._forceRed(f)},o.prototype.redAdd=function(f){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,f)},o.prototype.redIAdd=function(f){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,f)},o.prototype.redSub=function(f){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,f)},o.prototype.redISub=function(f){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,f)},o.prototype.redShl=function(f){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,f)},o.prototype.redMul=function(f){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.mul(this,f)},o.prototype.redIMul=function(f){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.imul(this,f)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(f){return i(this.red&&!f.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,f)};var H={k256:null,p224:null,p192:null,p25519:null};function z(A,f){this.name=A,this.p=new o(f,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}z.prototype._tmp=function(){var f=new o(null);return f.words=new Array(Math.ceil(this.n/13)),f},z.prototype.ireduce=function(f){var a=f,c;do this.split(a,this.tmp),a=this.imulK(a),a=a.iadd(this.tmp),c=a.bitLength();while(c>this.n);var d=c0?a.isub(this.p):a.strip!==void 0?a.strip():a._strip(),a},z.prototype.split=function(f,a){f.iushrn(this.n,0,a)},z.prototype.imulK=function(f){return f.imul(this.k)};function Pt(){z.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(Pt,z),Pt.prototype.split=function(f,a){for(var c=4194303,d=Math.min(f.length,9),g=0;g>>22,x=M}x>>>=22,f.words[g-10]=x,x===0&&f.length>10?f.length-=10:f.length-=9},Pt.prototype.imulK=function(f){f.words[f.length]=0,f.words[f.length+1]=0,f.length+=2;for(var a=0,c=0;c>>=26,f.words[c]=g,a=d}return a!==0&&(f.words[f.length++]=a),f},o._prime=function(f){if(H[f])return H[f];var a;if(f==="k256")a=new Pt;else if(f==="p224")a=new W;else if(f==="p192")a=new Rt;else if(f==="p25519")a=new Yt;else throw new Error("Unknown prime "+f);return H[f]=a,a};function Y(A){if(typeof A=="string"){var f=o._prime(A);this.m=f.p,this.prime=f}else i(A.gtn(1),"modulus must be greater than 1"),this.m=A,this.prime=null}Y.prototype._verify1=function(f){i(f.negative===0,"red works only with positives"),i(f.red,"red works only with red numbers")},Y.prototype._verify2=function(f,a){i((f.negative|a.negative)===0,"red works only with positives"),i(f.red&&f.red===a.red,"red works only with red numbers")},Y.prototype.imod=function(f){return this.prime?this.prime.ireduce(f)._forceRed(this):(w(f,f.umod(this.m)._forceRed(this)),f)},Y.prototype.neg=function(f){return f.isZero()?f.clone():this.m.sub(f)._forceRed(this)},Y.prototype.add=function(f,a){this._verify2(f,a);var c=f.add(a);return c.cmp(this.m)>=0&&c.isub(this.m),c._forceRed(this)},Y.prototype.iadd=function(f,a){this._verify2(f,a);var c=f.iadd(a);return c.cmp(this.m)>=0&&c.isub(this.m),c},Y.prototype.sub=function(f,a){this._verify2(f,a);var c=f.sub(a);return c.cmpn(0)<0&&c.iadd(this.m),c._forceRed(this)},Y.prototype.isub=function(f,a){this._verify2(f,a);var c=f.isub(a);return c.cmpn(0)<0&&c.iadd(this.m),c},Y.prototype.shl=function(f,a){return this._verify1(f),this.imod(f.ushln(a))},Y.prototype.imul=function(f,a){return this._verify2(f,a),this.imod(f.imul(a))},Y.prototype.mul=function(f,a){return this._verify2(f,a),this.imod(f.mul(a))},Y.prototype.isqr=function(f){return this.imul(f,f.clone())},Y.prototype.sqr=function(f){return this.mul(f,f)},Y.prototype.sqrt=function(f){if(f.isZero())return f.clone();var a=this.m.andln(3);if(i(a%2===1),a===3){var c=this.m.add(new o(1)).iushrn(2);return this.pow(f,c)}for(var d=this.m.subn(1),g=0;!d.isZero()&&d.andln(1)===0;)g++,d.iushrn(1);i(!d.isZero());var x=new o(1).toRed(this),M=x.redNeg(),l=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new o(2*s*s).toRed(this);this.pow(s,l).cmp(M)!==0;)s.redIAdd(M);for(var v=this.pow(s,d),k=this.pow(f,d.addn(1).iushrn(1)),u=this.pow(f,d),E=g;u.cmp(x)!==0;){for(var _=u,B=0;_.cmp(x)!==0;B++)_=_.redSqr();i(B=0;g--){for(var v=a.words[g],k=s-1;k>=0;k--){var u=v>>k&1;if(x!==d[0]&&(x=this.sqr(x)),u===0&&M===0){l=0;continue}M<<=1,M|=u,l++,!(l!==c&&(g!==0||k!==0))&&(x=this.mul(x,d[M]),l=0,M=0)}s=26}return x},Y.prototype.convertTo=function(f){var a=f.umod(this.m);return a===f?a.clone():a},Y.prototype.convertFrom=function(f){var a=f.clone();return a.red=null,a},o.mont=function(f){return new Vt(f)};function Vt(A){Y.call(this,A),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}n(Vt,Y),Vt.prototype.convertTo=function(f){return this.imod(f.ushln(this.shift))},Vt.prototype.convertFrom=function(f){var a=this.imod(f.mul(this.rinv));return a.red=null,a},Vt.prototype.imul=function(f,a){if(f.isZero()||a.isZero())return f.words[0]=0,f.length=1,f;var c=f.imul(a),d=c.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),g=c.isub(d).iushrn(this.shift),x=g;return g.cmp(this.m)>=0?x=g.isub(this.m):g.cmpn(0)<0&&(x=g.iadd(this.m)),x._forceRed(this)},Vt.prototype.mul=function(f,a){if(f.isZero()||a.isZero())return new o(0)._forceRed(this);var c=f.mul(a),d=c.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),g=c.isub(d).iushrn(this.shift),x=g;return g.cmp(this.m)>=0?x=g.isub(this.m):g.cmpn(0)<0&&(x=g.iadd(this.m)),x._forceRed(this)},Vt.prototype.invm=function(f){var a=this.imod(f._invmp(this.m).mul(this.r2));return a._forceRed(this)}})(e,On)})(Ln);var K=Ln.exports;const jn="bignumber/5.7.0";var Rr=K.BN;const Ae=new L(jn),wi={},Qn=9007199254740991;function C0(e){return e!=null&&(V.isBigNumber(e)||typeof e=="number"&&e%1===0||typeof e=="string"&&!!e.match(/^-?[0-9]+$/)||Qt(e)||typeof e=="bigint"||ir(e))}let Jn=!1;class V{constructor(t,r){t!==wi&&Ae.throwError("cannot call constructor directly; use BigNumber.from",L.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=r,this._isBigNumber=!0,Object.freeze(this)}fromTwos(t){return Lt(j(this).fromTwos(t))}toTwos(t){return Lt(j(this).toTwos(t))}abs(){return this._hex[0]==="-"?V.from(this._hex.substring(1)):this}add(t){return Lt(j(this).add(j(t)))}sub(t){return Lt(j(this).sub(j(t)))}div(t){return V.from(t).isZero()&&Wt("division-by-zero","div"),Lt(j(this).div(j(t)))}mul(t){return Lt(j(this).mul(j(t)))}mod(t){const r=j(t);return r.isNeg()&&Wt("division-by-zero","mod"),Lt(j(this).umod(r))}pow(t){const r=j(t);return r.isNeg()&&Wt("negative-power","pow"),Lt(j(this).pow(r))}and(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Wt("unbound-bitwise-result","and"),Lt(j(this).and(r))}or(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Wt("unbound-bitwise-result","or"),Lt(j(this).or(r))}xor(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Wt("unbound-bitwise-result","xor"),Lt(j(this).xor(r))}mask(t){return(this.isNegative()||t<0)&&Wt("negative-width","mask"),Lt(j(this).maskn(t))}shl(t){return(this.isNegative()||t<0)&&Wt("negative-width","shl"),Lt(j(this).shln(t))}shr(t){return(this.isNegative()||t<0)&&Wt("negative-width","shr"),Lt(j(this).shrn(t))}eq(t){return j(this).eq(j(t))}lt(t){return j(this).lt(j(t))}lte(t){return j(this).lte(j(t))}gt(t){return j(this).gt(j(t))}gte(t){return j(this).gte(j(t))}isNegative(){return this._hex[0]==="-"}isZero(){return j(this).isZero()}toNumber(){try{return j(this).toNumber()}catch{Wt("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch{}return Ae.throwError("this platform does not support BigInt",L.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(arguments[0]===10?Jn||(Jn=!0,Ae.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?Ae.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",L.errors.UNEXPECTED_ARGUMENT,{}):Ae.throwError("BigNumber.toString does not accept parameters",L.errors.UNEXPECTED_ARGUMENT,{})),j(this).toString(10)}toHexString(){return this._hex}toJSON(t){return{type:"BigNumber",hex:this.toHexString()}}static from(t){if(t instanceof V)return t;if(typeof t=="string")return t.match(/^-?0x[0-9a-f]+$/i)?new V(wi,vr(t)):t.match(/^-?[0-9]+$/)?new V(wi,vr(new Rr(t))):Ae.throwArgumentError("invalid BigNumber string","value",t);if(typeof t=="number")return t%1&&Wt("underflow","BigNumber.from",t),(t>=Qn||t<=-Qn)&&Wt("overflow","BigNumber.from",t),V.from(String(t));const r=t;if(typeof r=="bigint")return V.from(r.toString());if(ir(r))return V.from(Kt(r));if(r)if(r.toHexString){const i=r.toHexString();if(typeof i=="string")return V.from(i)}else{let i=r._hex;if(i==null&&r.type==="BigNumber"&&(i=r.hex),typeof i=="string"&&(Qt(i)||i[0]==="-"&&Qt(i.substring(1))))return V.from(i)}return Ae.throwArgumentError("invalid BigNumber value","value",t)}static isBigNumber(t){return!!(t&&t._isBigNumber)}}function vr(e){if(typeof e!="string")return vr(e.toString(16));if(e[0]==="-")return e=e.substring(1),e[0]==="-"&&Ae.throwArgumentError("invalid hex","value",e),e=vr(e),e==="0x00"?e:"-"+e;if(e.substring(0,2)!=="0x"&&(e="0x"+e),e==="0x")return"0x00";for(e.length%2&&(e="0x0"+e.substring(2));e.length>4&&e.substring(0,4)==="0x00";)e="0x"+e.substring(4);return e}function Lt(e){return V.from(vr(e))}function j(e){const t=V.from(e).toHexString();return t[0]==="-"?new Rr("-"+t.substring(3),16):new Rr(t.substring(2),16)}function Wt(e,t,r){const i={fault:e,operation:t};return r!=null&&(i.value=r),Ae.throwError(e,L.errors.NUMERIC_FAULT,i)}function R0(e){return new Rr(e,36).toString(16)}const Ht=new L(jn),mr={},Gn=V.from(0),Yn=V.from(-1);function Vn(e,t,r,i){const n={fault:t,operation:r};return i!==void 0&&(n.value=i),Ht.throwError(e,L.errors.NUMERIC_FAULT,n)}let gr="0";for(;gr.length<256;)gr+=gr;function xi(e){if(typeof e!="number")try{e=V.from(e).toNumber()}catch{}return typeof e=="number"&&e>=0&&e<=256&&!(e%1)?"1"+gr.substring(0,e):Ht.throwArgumentError("invalid decimal size","decimals",e)}function Mi(e,t){t==null&&(t=0);const r=xi(t);e=V.from(e);const i=e.lt(Gn);i&&(e=e.mul(Yn));let n=e.mod(r).toString();for(;n.length2&&Ht.throwArgumentError("too many decimal points","value",e);let o=n[0],h=n[1];for(o||(o="0"),h||(h="0");h[h.length-1]==="0";)h=h.substring(0,h.length-1);for(h.length>r.length-1&&Vn("fractional component exceeds decimals","underflow","parseFixed"),h===""&&(h="0");h.lengtht[h]==null?b:(typeof t[h]!==p&&Ht.throwArgumentError("invalid fixed format ("+h+" not "+p+")","format."+h,t[h]),t[h]);r=o("signed","boolean",r),i=o("width","number",i),n=o("decimals","number",n)}return i%8&&Ht.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",i),n>80&&Ht.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",n),new dr(mr,r,i,n)}}class Ut{constructor(t,r,i,n){t!==mr&&Ht.throwError("cannot use FixedNumber constructor; use FixedNumber.from",L.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=n,this._hex=r,this._value=i,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(t){this.format.name!==t.format.name&&Ht.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",t)}addUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.add(i),this.format.decimals,this.format)}subUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.sub(i),this.format.decimals,this.format)}mulUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.mul(i).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.mul(this.format._multiplier).div(i),this.format.decimals,this.format)}floor(){const t=this.toString().split(".");t.length===1&&t.push("0");let r=Ut.from(t[0],this.format);const i=!t[1].match(/^(0*)$/);return this.isNegative()&&i&&(r=r.subUnsafe(Wn.toFormat(r.format))),r}ceiling(){const t=this.toString().split(".");t.length===1&&t.push("0");let r=Ut.from(t[0],this.format);const i=!t[1].match(/^(0*)$/);return!this.isNegative()&&i&&(r=r.addUnsafe(Wn.toFormat(r.format))),r}round(t){t==null&&(t=0);const r=this.toString().split(".");if(r.length===1&&r.push("0"),(t<0||t>80||t%1)&&Ht.throwArgumentError("invalid decimal count","decimals",t),r[1].length<=t)return this;const i=Ut.from("1"+gr.substring(0,t),this.format),n=O0.toFormat(this.format);return this.mulUnsafe(i).addUnsafe(n).floor().divUnsafe(i)}isZero(){return this._value==="0.0"||this._value==="0"}isNegative(){return this._value[0]==="-"}toString(){return this._value}toHexString(t){if(t==null)return this._hex;t%8&&Ht.throwArgumentError("invalid byte width","width",t);const r=V.from(this._hex).fromTwos(this.format.width).toTwos(t).toHexString();return oe(r,t/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(t){return Ut.fromString(this._value,t)}static fromValue(t,r,i){return i==null&&r!=null&&!C0(r)&&(i=r,r=null),r==null&&(r=0),i==null&&(i="fixed"),Ut.fromString(Mi(t,r),dr.from(i))}static fromString(t,r){r==null&&(r="fixed");const i=dr.from(r),n=be(t,i.decimals);!i.signed&&n.lt(Gn)&&Vn("unsigned value cannot be negative","overflow","value",t);let o=null;i.signed?o=n.toTwos(i.width).toHexString():(o=n.toHexString(),o=oe(o,i.width/8));const h=Mi(n,i.decimals);return new Ut(mr,o,h,i)}static fromBytes(t,r){r==null&&(r="fixed");const i=dr.from(r);if(Ot(t).length>i.width/8)throw new Error("overflow");let n=V.from(t);i.signed&&(n=n.fromTwos(i.width));const o=n.toTwos((i.signed?0:1)+i.width).toHexString(),h=Mi(n,i.decimals);return new Ut(mr,o,h,i)}static from(t,r){if(typeof t=="string")return Ut.fromString(t,r);if(ir(t))return Ut.fromBytes(t,r);try{return Ut.fromValue(t,0,r)}catch(i){if(i.code!==L.errors.INVALID_ARGUMENT)throw i}return Ht.throwArgumentError("invalid FixedNumber value","value",t)}static isFixedNumber(t){return!!(t&&t._isFixedNumber)}}const Wn=Ut.from(1),O0=Ut.from("0.5"),P0="strings/5.7.0",Xn=new L(P0);var Or;(function(e){e.current="",e.NFC="NFC",e.NFD="NFD",e.NFKC="NFKC",e.NFKD="NFKD"})(Or||(Or={}));var nr;(function(e){e.UNEXPECTED_CONTINUE="unexpected continuation byte",e.BAD_PREFIX="bad codepoint prefix",e.OVERRUN="string overrun",e.MISSING_CONTINUE="missing continuation byte",e.OUT_OF_RANGE="out of UTF-8 range",e.UTF16_SURROGATE="UTF-16 surrogate",e.OVERLONG="overlong representation"})(nr||(nr={}));function D0(e,t,r,i,n){return Xn.throwArgumentError(`invalid codepoint at offset ${t}; ${e}`,"bytes",r)}function Zn(e,t,r,i,n){if(e===nr.BAD_PREFIX||e===nr.UNEXPECTED_CONTINUE){let o=0;for(let h=t+1;h>6===2;h++)o++;return o}return e===nr.OVERRUN?r.length-t-1:0}function F0(e,t,r,i,n){return e===nr.OVERLONG?(i.push(n),0):(i.push(65533),Zn(e,t,r))}Object.freeze({error:D0,ignore:Zn,replace:F0});function Ei(e,t=Or.current){t!=Or.current&&(Xn.checkNormalize(),e=e.normalize(t));let r=[];for(let i=0;i>6|192),r.push(n&63|128);else if((n&64512)==55296){i++;const o=e.charCodeAt(i);if(i>=e.length||(o&64512)!==56320)throw new Error("invalid utf-8 string");const h=65536+((n&1023)<<10)+(o&1023);r.push(h>>18|240),r.push(h>>12&63|128),r.push(h>>6&63|128),r.push(h&63|128)}else r.push(n>>12|224),r.push(n>>6&63|128),r.push(n&63|128)}return Ot(r)}function T0(e){if(e.length%4!==0)throw new Error("bad data");let t=[];for(let r=0;r{let o=n.split(":");r+=parseInt(o[0],16),i[r]=t(o[1])}),i}function $n(e){let t=0;return e.split(",").map(r=>{let i=r.split("-");i.length===1?i[1]="0":i[1]===""&&(i[1]="1");let n=t+parseInt(i[0],16);return t=parseInt(i[1],16),{l:n,h:t}})}$n("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(e=>parseInt(e,16)),Si("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),Si("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),Si("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",T0),$n("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");const tf="hash/5.7.0";function U0(e){e=atob(e);const t=[];for(let r=0;r0&&Array.isArray(p)?n(p,h-1):r.push(p)})};return n(e,t),r}function k0(e){const t={};for(let r=0;r>--b&1}const y=31,S=Math.pow(2,y),I=S>>>1,N=I>>1,C=S-1;let F=0;for(let H=0;H1;){let Yt=z+Pt>>>1;H>>1|w(),W=W<<1^I,Rt=(Rt^I)<<1|I|1;J=W,Bt=1+Rt-W}let G=i-4;return U.map(H=>{switch(H-G){case 3:return G+65792+(e[p++]<<16|e[p++]<<8|e[p++]);case 2:return G+256+(e[p++]<<8|e[p++]);case 1:return G+e[p++];default:return H-1}})}function K0(e){let t=0;return()=>e[t++]}function H0(e){return K0(q0(e))}function z0(e){return e&1?~e>>1:e>>1}function L0(e,t){let r=Array(e);for(let i=0;it[h]):r}function Q0(e){let t=[];for(;;){let r=e();if(r==0)break;t.push(G0(r,e))}for(;;){let r=e()-1;if(r<0)break;t.push(Y0(r,e))}return k0(ef(t))}function J0(e){let t=[];for(;;){let r=e();if(r==0)break;t.push(r)}return t}function nf(e,t,r){let i=Array(e).fill(void 0).map(()=>[]);for(let n=0;ni[h].push(o));return i}function G0(e,t){let r=1+t(),i=t(),n=J0(t),o=nf(n.length,1+e,t);return ef(o.map((h,p)=>{const b=h[0],m=h.slice(1);return Array(n[p]).fill(void 0).map((w,y)=>{let S=y*i;return[b+y*r,m.map(I=>I+S)]})}))}function Y0(e,t){let r=1+t();return nf(r,1+e,t).map(n=>[n[0],n.slice(1)])}function V0(e){let t=Pr(e).sort((i,n)=>i-n);return r();function r(){let i=[];for(;;){let m=Pr(e,t);if(m.length==0)break;i.push({set:new Set(m),node:r()})}i.sort((m,w)=>w.set.size-m.set.size);let n=e(),o=n%3;n=n/3|0;let h=!!(n&1);n>>=1;let p=n==1,b=n==2;return{branches:i,valid:o,fe0f:h,save:p,check:b}}}function W0(){return H0(U0("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"))}const Dr=W0();new Set(Pr(Dr)),new Set(Pr(Dr)),Q0(Dr),V0(Dr),new L(tf);const X0=new Uint8Array(32);X0.fill(0);const Z0=`Ethereum Signed Message: +-`;function ff(e){return typeof e=="string"&&(e=Ei(e)),yi(E0([Ei(Z0),Ei(String(e.length)),e]))}const $0="rlp/5.7.0";new L($0);const ts="address/5.7.0",Ar=new L(ts);function of(e){Qt(e,20)||Ar.throwArgumentError("invalid address","address",e),e=e.toLowerCase();const t=e.substring(2).split(""),r=new Uint8Array(40);for(let n=0;n<40;n++)r[n]=t[n].charCodeAt(0);const i=Ot(yi(r));for(let n=0;n<40;n+=2)i[n>>1]>>4>=8&&(t[n]=t[n].toUpperCase()),(i[n>>1]&15)>=8&&(t[n+1]=t[n+1].toUpperCase());return"0x"+t.join("")}const es=9007199254740991;function rs(e){return Math.log10?Math.log10(e):Math.log(e)/Math.LN10}const Ni={};for(let e=0;e<10;e++)Ni[String(e)]=String(e);for(let e=0;e<26;e++)Ni[String.fromCharCode(65+e)]=String(10+e);const sf=Math.floor(rs(es));function is(e){e=e.toUpperCase(),e=e.substring(4)+e.substring(0,2)+"00";let t=e.split("").map(i=>Ni[i]).join("");for(;t.length>=sf;){let i=t.substring(0,sf);t=parseInt(i,10)%97+t.substring(i.length)}let r=String(98-parseInt(t,10)%97);for(;r.length<2;)r="0"+r;return r}function ns(e){let t=null;if(typeof e!="string"&&Ar.throwArgumentError("invalid address","address",e),e.match(/^(0x)?[0-9a-fA-F]{40}$/))e.substring(0,2)!=="0x"&&(e="0x"+e),t=of(e),e.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&t!==e&&Ar.throwArgumentError("bad address checksum","address",e);else if(e.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(e.substring(2,4)!==is(e)&&Ar.throwArgumentError("bad icap checksum","address",e),t=R0(e.substring(4));t.length<40;)t="0"+t;t=of("0x"+t)}else Ar.throwArgumentError("invalid address","address",e);return t}const fs="properties/5.7.0";new L(fs);function br(e,t,r){Object.defineProperty(e,t,{enumerable:!0,value:r,writable:!1})}new L(tf);const os=new Uint8Array(32);os.fill(0),V.from(-1);const ss=V.from(0),as=V.from(1);V.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),oe(as.toHexString(),32),oe(ss.toHexString(),32);var se={},Q={},yr=af;function af(e,t){if(!e)throw new Error(t||"Assertion failed")}af.equal=function(t,r,i){if(t!=r)throw new Error(i||"Assertion failed: "+t+" != "+r)};var Ii={exports:{}};typeof Object.create=="function"?Ii.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Ii.exports=function(t,r){if(r){t.super_=r;var i=function(){};i.prototype=r.prototype,t.prototype=new i,t.prototype.constructor=t}};var us=yr,hs=Ii.exports;Q.inherits=hs;function cs(e,t){return(e.charCodeAt(t)&64512)!==55296||t<0||t+1>=e.length?!1:(e.charCodeAt(t+1)&64512)===56320}function ls(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if(typeof e=="string")if(t){if(t==="hex")for(e=e.replace(/[^a-z0-9]+/ig,""),e.length%2!==0&&(e="0"+e),n=0;n>6|192,r[i++]=o&63|128):cs(e,n)?(o=65536+((o&1023)<<10)+(e.charCodeAt(++n)&1023),r[i++]=o>>18|240,r[i++]=o>>12&63|128,r[i++]=o>>6&63|128,r[i++]=o&63|128):(r[i++]=o>>12|224,r[i++]=o>>6&63|128,r[i++]=o&63|128)}else for(n=0;n>>24|e>>>8&65280|e<<8&16711680|(e&255)<<24;return t>>>0}Q.htonl=uf;function ps(e,t){for(var r="",i=0;i>>0}return o}Q.join32=vs;function ms(e,t){for(var r=new Array(e.length*4),i=0,n=0;i>>24,r[n+1]=o>>>16&255,r[n+2]=o>>>8&255,r[n+3]=o&255):(r[n+3]=o>>>24,r[n+2]=o>>>16&255,r[n+1]=o>>>8&255,r[n]=o&255)}return r}Q.split32=ms;function gs(e,t){return e>>>t|e<<32-t}Q.rotr32=gs;function As(e,t){return e<>>32-t}Q.rotl32=As;function bs(e,t){return e+t>>>0}Q.sum32=bs;function ys(e,t,r){return e+t+r>>>0}Q.sum32_3=ys;function ws(e,t,r,i){return e+t+r+i>>>0}Q.sum32_4=ws;function xs(e,t,r,i,n){return e+t+r+i+n>>>0}Q.sum32_5=xs;function Ms(e,t,r,i){var n=e[t],o=e[t+1],h=i+o>>>0,p=(h>>0,e[t+1]=h}Q.sum64=Ms;function Es(e,t,r,i){var n=t+i>>>0,o=(n>>0}Q.sum64_hi=Es;function Ss(e,t,r,i){var n=t+i;return n>>>0}Q.sum64_lo=Ss;function Ns(e,t,r,i,n,o,h,p){var b=0,m=t;m=m+i>>>0,b+=m>>0,b+=m>>0,b+=m>>0}Q.sum64_4_hi=Ns;function Is(e,t,r,i,n,o,h,p){var b=t+i+o+p;return b>>>0}Q.sum64_4_lo=Is;function _s(e,t,r,i,n,o,h,p,b,m){var w=0,y=t;y=y+i>>>0,w+=y>>0,w+=y>>0,w+=y>>0,w+=y>>0}Q.sum64_5_hi=_s;function Bs(e,t,r,i,n,o,h,p,b,m){var w=t+i+o+p+m;return w>>>0}Q.sum64_5_lo=Bs;function Cs(e,t,r){var i=t<<32-r|e>>>r;return i>>>0}Q.rotr64_hi=Cs;function Rs(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}Q.rotr64_lo=Rs;function Os(e,t,r){return e>>>r}Q.shr64_hi=Os;function Ps(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}Q.shr64_lo=Ps;var fr={},lf=Q,Ds=yr;function Fr(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}fr.BlockHash=Fr,Fr.prototype.update=function(t,r){if(t=lf.toArray(t,r),this.pending?this.pending=this.pending.concat(t):this.pending=t,this.pendingTotal+=t.length,this.pending.length>=this._delta8){t=this.pending;var i=t.length%this._delta8;this.pending=t.slice(t.length-i,t.length),this.pending.length===0&&(this.pending=null),t=lf.join32(t,0,t.length-i,this.endian);for(var n=0;n>>24&255,n[o++]=t>>>16&255,n[o++]=t>>>8&255,n[o++]=t&255}else for(n[o++]=t&255,n[o++]=t>>>8&255,n[o++]=t>>>16&255,n[o++]=t>>>24&255,n[o++]=0,n[o++]=0,n[o++]=0,n[o++]=0,h=8;h>>3}ae.g0_256=qs;function Ks(e){return ue(e,17)^ue(e,19)^e>>>10}ae.g1_256=Ks;var sr=Q,Hs=fr,zs=ae,_i=sr.rotl32,wr=sr.sum32,Ls=sr.sum32_5,js=zs.ft_1,mf=Hs.BlockHash,Qs=[1518500249,1859775393,2400959708,3395469782];function he(){if(!(this instanceof he))return new he;mf.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}sr.inherits(he,mf);var Js=he;he.blockSize=512,he.outSize=160,he.hmacStrength=80,he.padLength=64,he.prototype._update=function(t,r){for(var i=this.W,n=0;n<16;n++)i[n]=t[r+n];for(;nthis.blockSize&&(t=new this.Hash().update(t).digest()),Pa(t.length<=this.blockSize);for(var r=t.length;r>8,S=w&255;y?b.push(y,S):b.push(S)}return b}r.toArray=i;function n(h){return h.length===1?"0"+h:h}r.zero2=n;function o(h){for(var p="",b=0;b(S>>1)-1?C=(S>>1)-F:C=F,I.isubn(C)):C=0,y[N]=C,I.iushrn(1)}return y}r.getNAF=i;function n(b,m){var w=[[],[]];b=b.clone(),m=m.clone();for(var y=0,S=0,I;b.cmpn(-y)>0||m.cmpn(-S)>0;){var N=b.andln(3)+y&3,C=m.andln(3)+S&3;N===3&&(N=-1),C===3&&(C=-1);var F;N&1?(I=b.andln(7)+y&7,(I===3||I===5)&&C===2?F=-N:F=N):F=0,w[0].push(F);var U;C&1?(I=m.andln(7)+S&7,(I===3||I===5)&&N===2?U=-C:U=C):U=0,w[1].push(U),2*y===F+1&&(y=1-y),2*S===U+1&&(S=1-S),b.iushrn(1),m.iushrn(1)}return w}r.getJSF=n;function o(b,m,w){var y="_"+m;b.prototype[m]=function(){return this[y]!==void 0?this[y]:this[y]=w.call(this)}}r.cachedProperty=o;function h(b){return typeof b=="string"?r.toArray(b,"hex"):b}r.parseBytes=h;function p(b){return new K(b,"hex","le")}r.intFromLE=p}),Ur=Jt.getNAF,Ta=Jt.getJSF,kr=Jt.assert;function Ce(e,t){this.type=e,this.p=new K(t.p,16),this.red=t.prime?K.red(t.prime):K.mont(this.p),this.zero=new K(0).toRed(this.red),this.one=new K(1).toRed(this.red),this.two=new K(2).toRed(this.red),this.n=t.n&&new K(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var Ze=Ce;Ce.prototype.point=function(){throw new Error("Not implemented")},Ce.prototype.validate=function(){throw new Error("Not implemented")},Ce.prototype._fixedNafMul=function(t,r){kr(t.precomputed);var i=t._getDoubles(),n=Ur(r,1,this._bitLength),o=(1<=p;m--)b=(b<<1)+n[m];h.push(b)}for(var w=this.jpoint(null,null,null),y=this.jpoint(null,null,null),S=o;S>0;S--){for(p=0;p=0;b--){for(var m=0;b>=0&&h[b]===0;b--)m++;if(b>=0&&m++,p=p.dblp(m),b<0)break;var w=h[b];kr(w!==0),t.type==="affine"?w>0?p=p.mixedAdd(o[w-1>>1]):p=p.mixedAdd(o[-w-1>>1].neg()):w>0?p=p.add(o[w-1>>1]):p=p.add(o[-w-1>>1].neg())}return t.type==="affine"?p.toP():p},Ce.prototype._wnafMulAdd=function(t,r,i,n,o){var h=this._wnafT1,p=this._wnafT2,b=this._wnafT3,m=0,w,y,S;for(w=0;w=1;w-=2){var N=w-1,C=w;if(h[N]!==1||h[C]!==1){b[N]=Ur(i[N],h[N],this._bitLength),b[C]=Ur(i[C],h[C],this._bitLength),m=Math.max(b[N].length,m),m=Math.max(b[C].length,m);continue}var F=[r[N],null,null,r[C]];r[N].y.cmp(r[C].y)===0?(F[1]=r[N].add(r[C]),F[2]=r[N].toJ().mixedAdd(r[C].neg())):r[N].y.cmp(r[C].y.redNeg())===0?(F[1]=r[N].toJ().mixedAdd(r[C]),F[2]=r[N].add(r[C].neg())):(F[1]=r[N].toJ().mixedAdd(r[C]),F[2]=r[N].toJ().mixedAdd(r[C].neg()));var U=[-3,-1,-5,-7,0,7,5,1,3],J=Ta(i[N],i[C]);for(m=Math.max(J[0].length,m),b[N]=new Array(m),b[C]=new Array(m),y=0;y=0;w--){for(var Pt=0;w>=0;){var W=!0;for(y=0;y=0&&Pt++,H=H.dblp(Pt),w<0)break;for(y=0;y0?S=p[y][Rt-1>>1]:Rt<0&&(S=p[y][-Rt-1>>1].neg()),S.type==="affine"?H=H.mixedAdd(S):H=H.add(S))}}for(w=0;w=Math.ceil((t.bitLength()+1)/r.step):!1},Xt.prototype._getDoubles=function(t,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var i=[this],n=this,o=0;o=0&&(I=m,N=w),y.negative&&(y=y.neg(),S=S.neg()),I.negative&&(I=I.neg(),N=N.neg()),[{a:y,b:S},{a:I,b:N}]},Zt.prototype._endoSplit=function(t){var r=this.endo.basis,i=r[0],n=r[1],o=n.b.mul(t).divRound(this.n),h=i.b.neg().mul(t).divRound(this.n),p=o.mul(i.a),b=h.mul(n.a),m=o.mul(i.b),w=h.mul(n.b),y=t.sub(p).sub(b),S=m.add(w).neg();return{k1:y,k2:S}},Zt.prototype.pointFromX=function(t,r){t=new K(t,16),t.red||(t=t.toRed(this.red));var i=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=i.redSqrt();if(n.redSqr().redSub(i).cmp(this.zero)!==0)throw new Error("invalid point");var o=n.fromRed().isOdd();return(r&&!o||!r&&o)&&(n=n.redNeg()),this.point(t,n)},Zt.prototype.validate=function(t){if(t.inf)return!0;var r=t.x,i=t.y,n=this.a.redMul(r),o=r.redSqr().redMul(r).redIAdd(n).redIAdd(this.b);return i.redSqr().redISub(o).cmpn(0)===0},Zt.prototype._endoWnafMulAdd=function(t,r,i){for(var n=this._endoWnafT1,o=this._endoWnafT2,h=0;h":""},Ft.prototype.isInfinity=function(){return this.inf},Ft.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(this.x.cmp(t.x)===0)return this.curve.point(null,null);var r=this.y.redSub(t.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(t.x).redInvm()));var i=r.redSqr().redISub(this.x).redISub(t.x),n=r.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,n)},Ft.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(t.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,i=this.x.redSqr(),n=t.redInvm(),o=i.redAdd(i).redIAdd(i).redIAdd(r).redMul(n),h=o.redSqr().redISub(this.x.redAdd(this.x)),p=o.redMul(this.x.redSub(h)).redISub(this.y);return this.curve.point(h,p)},Ft.prototype.getX=function(){return this.x.fromRed()},Ft.prototype.getY=function(){return this.y.fromRed()},Ft.prototype.mul=function(t){return t=new K(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},Ft.prototype.mulAdd=function(t,r,i){var n=[this,r],o=[t,i];return this.curve.endo?this.curve._endoWnafMulAdd(n,o):this.curve._wnafMulAdd(1,n,o,2)},Ft.prototype.jmulAdd=function(t,r,i){var n=[this,r],o=[t,i];return this.curve.endo?this.curve._endoWnafMulAdd(n,o,!0):this.curve._wnafMulAdd(1,n,o,2,!0)},Ft.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||this.x.cmp(t.x)===0&&this.y.cmp(t.y)===0)},Ft.prototype.neg=function(t){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var i=this.precomputed,n=function(o){return o.neg()};r.precomputed={naf:i.naf&&{wnd:i.naf.wnd,points:i.naf.points.map(n)},doubles:i.doubles&&{step:i.doubles.step,points:i.doubles.points.map(n)}}}return r},Ft.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var t=this.curve.jpoint(this.x,this.y,this.curve.one);return t};function Tt(e,t,r,i){Ze.BasePoint.call(this,e,"jacobian"),t===null&&r===null&&i===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new K(0)):(this.x=new K(t,16),this.y=new K(r,16),this.z=new K(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}Di(Tt,Ze.BasePoint),Zt.prototype.jpoint=function(t,r,i){return new Tt(this,t,r,i)},Tt.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),r=t.redSqr(),i=this.x.redMul(r),n=this.y.redMul(r).redMul(t);return this.curve.point(i,n)},Tt.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},Tt.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var r=t.z.redSqr(),i=this.z.redSqr(),n=this.x.redMul(r),o=t.x.redMul(i),h=this.y.redMul(r.redMul(t.z)),p=t.y.redMul(i.redMul(this.z)),b=n.redSub(o),m=h.redSub(p);if(b.cmpn(0)===0)return m.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var w=b.redSqr(),y=w.redMul(b),S=n.redMul(w),I=m.redSqr().redIAdd(y).redISub(S).redISub(S),N=m.redMul(S.redISub(I)).redISub(h.redMul(y)),C=this.z.redMul(t.z).redMul(b);return this.curve.jpoint(I,N,C)},Tt.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var r=this.z.redSqr(),i=this.x,n=t.x.redMul(r),o=this.y,h=t.y.redMul(r).redMul(this.z),p=i.redSub(n),b=o.redSub(h);if(p.cmpn(0)===0)return b.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var m=p.redSqr(),w=m.redMul(p),y=i.redMul(m),S=b.redSqr().redIAdd(w).redISub(y).redISub(y),I=b.redMul(y.redISub(S)).redISub(o.redMul(w)),N=this.z.redMul(p);return this.curve.jpoint(S,I,N)},Tt.prototype.dblp=function(t){if(t===0)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var i=this;for(r=0;r=0)return!1;if(i.redIAdd(o),this.x.cmp(i)===0)return!0}},Tt.prototype.inspect=function(){return this.isInfinity()?"":""},Tt.prototype.isInfinity=function(){return this.z.cmpn(0)===0};var qr=cr(function(e,t){var r=t;r.base=Ze,r.short=ka,r.mont=null,r.edwards=null}),Kr=cr(function(e,t){var r=t,i=Jt.assert;function n(p){p.type==="short"?this.curve=new qr.short(p):p.type==="edwards"?this.curve=new qr.edwards(p):this.curve=new qr.mont(p),this.g=this.curve.g,this.n=this.curve.n,this.hash=p.hash,i(this.g.validate(),"Invalid curve"),i(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}r.PresetCurve=n;function o(p,b){Object.defineProperty(r,p,{configurable:!0,enumerable:!0,get:function(){var m=new n(b);return Object.defineProperty(r,p,{configurable:!0,enumerable:!0,value:m}),m}})}o("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:se.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),o("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:se.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),o("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:se.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),o("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:se.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),o("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:se.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),o("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:se.sha256,gRed:!1,g:["9"]}),o("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:se.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var h;try{h=null.crash()}catch{h=void 0}o("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:se.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",h]})});function Re(e){if(!(this instanceof Re))return new Re(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=fe.toArray(e.entropy,e.entropyEnc||"hex"),r=fe.toArray(e.nonce,e.nonceEnc||"hex"),i=fe.toArray(e.pers,e.persEnc||"hex");Pi(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,r,i)}var Rf=Re;Re.prototype._init=function(t,r,i){var n=t.concat(r).concat(i);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var o=0;o=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(i||[])),this._reseed=1},Re.prototype.generate=function(t,r,i,n){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(n=i,i=r,r=null),i&&(i=fe.toArray(i,n||"hex"),this._update(i));for(var o=[];o.length"};var qa=Jt.assert;function Hr(e,t){if(e instanceof Hr)return e;this._importDER(e,t)||(qa(e.r&&e.s,"Signature without r or s"),this.r=new K(e.r,16),this.s=new K(e.s,16),e.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}var zr=Hr;function Ka(){this.place=0}function Ui(e,t){var r=e[t.place++];if(!(r&128))return r;var i=r&15;if(i===0||i>4)return!1;for(var n=0,o=0,h=t.place;o>>=0;return n<=127?!1:(t.place=h,n)}function Of(e){for(var t=0,r=e.length-1;!e[t]&&!(e[t+1]&128)&&t>>3);for(e.push(r|128);--r;)e.push(t>>>(r<<3)&255);e.push(t)}Hr.prototype.toDER=function(t){var r=this.r.toArray(),i=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),i[0]&128&&(i=[0].concat(i)),r=Of(r),i=Of(i);!i[0]&&!(i[1]&128);)i=i.slice(1);var n=[2];ki(n,r.length),n=n.concat(r),n.push(2),ki(n,i.length);var o=n.concat(i),h=[48];return ki(h,o.length),h=h.concat(o),Jt.encode(h,t)};var Ha=function(){throw new Error("unsupported")},Pf=Jt.assert;function $t(e){if(!(this instanceof $t))return new $t(e);typeof e=="string"&&(Pf(Object.prototype.hasOwnProperty.call(Kr,e),"Unknown curve "+e),e=Kr[e]),e instanceof Kr.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}var za=$t;$t.prototype.keyPair=function(t){return new Ti(this,t)},$t.prototype.keyFromPrivate=function(t,r){return Ti.fromPrivate(this,t,r)},$t.prototype.keyFromPublic=function(t,r){return Ti.fromPublic(this,t,r)},$t.prototype.genKeyPair=function(t){t||(t={});for(var r=new Rf({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||Ha(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),i=this.n.byteLength(),n=this.n.sub(new K(2));;){var o=new K(r.generate(i));if(!(o.cmp(n)>0))return o.iaddn(1),this.keyFromPrivate(o)}},$t.prototype._truncateToN=function(t,r){var i=t.byteLength()*8-this.n.bitLength();return i>0&&(t=t.ushrn(i)),!r&&t.cmp(this.n)>=0?t.sub(this.n):t},$t.prototype.sign=function(t,r,i,n){typeof i=="object"&&(n=i,i=null),n||(n={}),r=this.keyFromPrivate(r,i),t=this._truncateToN(new K(t,16));for(var o=this.n.byteLength(),h=r.getPrivate().toArray("be",o),p=t.toArray("be",o),b=new Rf({hash:this.hash,entropy:h,nonce:p,pers:n.pers,persEnc:n.persEnc||"utf8"}),m=this.n.sub(new K(1)),w=0;;w++){var y=n.k?n.k(w):new K(b.generate(this.n.byteLength()));if(y=this._truncateToN(y,!0),!(y.cmpn(1)<=0||y.cmp(m)>=0)){var S=this.g.mul(y);if(!S.isInfinity()){var I=S.getX(),N=I.umod(this.n);if(N.cmpn(0)!==0){var C=y.invm(this.n).mul(N.mul(r.getPrivate()).iadd(t));if(C=C.umod(this.n),C.cmpn(0)!==0){var F=(S.getY().isOdd()?1:0)|(I.cmp(N)!==0?2:0);return n.canonical&&C.cmp(this.nh)>0&&(C=this.n.sub(C),F^=1),new zr({r:N,s:C,recoveryParam:F})}}}}}},$t.prototype.verify=function(t,r,i,n){t=this._truncateToN(new K(t,16)),i=this.keyFromPublic(i,n),r=new zr(r,"hex");var o=r.r,h=r.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0||h.cmpn(1)<0||h.cmp(this.n)>=0)return!1;var p=h.invm(this.n),b=p.mul(t).umod(this.n),m=p.mul(o).umod(this.n),w;return this.curve._maxwellTrick?(w=this.g.jmulAdd(b,i.getPublic(),m),w.isInfinity()?!1:w.eqXToP(o)):(w=this.g.mulAdd(b,i.getPublic(),m),w.isInfinity()?!1:w.getX().umod(this.n).cmp(o)===0)},$t.prototype.recoverPubKey=function(e,t,r,i){Pf((3&r)===r,"The recovery param is more than two bits"),t=new zr(t,i);var n=this.n,o=new K(e),h=t.r,p=t.s,b=r&1,m=r>>1;if(h.cmp(this.curve.p.umod(this.curve.n))>=0&&m)throw new Error("Unable to find sencond key candinate");m?h=this.curve.pointFromX(h.add(this.curve.n),b):h=this.curve.pointFromX(h,b);var w=t.r.invm(n),y=n.sub(o).mul(w).umod(n),S=p.mul(w).umod(n);return this.g.mulAdd(y,h,S)},$t.prototype.getKeyRecoveryParam=function(e,t,r,i){if(t=new zr(t,i),t.recoveryParam!==null)return t.recoveryParam;for(var n=0;n<4;n++){var o;try{o=this.recoverPubKey(e,t,n)}catch{continue}if(o.eq(r))return n}throw new Error("Unable to find valid recovery factor")};var La=cr(function(e,t){var r=t;r.version="6.5.4",r.utils=Jt,r.rand=function(){throw new Error("unsupported")},r.curve=qr,r.curves=Kr,r.ec=za,r.eddsa=null}),ja=La.ec;const Qa="signing-key/5.7.0",qi=new L(Qa);let Ki=null;function ve(){return Ki||(Ki=new ja("secp256k1")),Ki}class Ja{constructor(t){br(this,"curve","secp256k1"),br(this,"privateKey",Kt(t)),N0(this.privateKey)!==32&&qi.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const r=ve().keyFromPrivate(Ot(this.privateKey));br(this,"publicKey","0x"+r.getPublic(!1,"hex")),br(this,"compressedPublicKey","0x"+r.getPublic(!0,"hex")),br(this,"_isSigningKey",!0)}_addPoint(t){const r=ve().keyFromPublic(Ot(this.publicKey)),i=ve().keyFromPublic(Ot(t));return"0x"+r.pub.add(i.pub).encodeCompressed("hex")}signDigest(t){const r=ve().keyFromPrivate(Ot(this.privateKey)),i=Ot(t);i.length!==32&&qi.throwArgumentError("bad digest length","digest",t);const n=r.sign(i,{canonical:!0});return zn({recoveryParam:n.recoveryParam,r:oe("0x"+n.r.toString(16),32),s:oe("0x"+n.s.toString(16),32)})}computeSharedSecret(t){const r=ve().keyFromPrivate(Ot(this.privateKey)),i=ve().keyFromPublic(Ot(Df(t)));return oe("0x"+r.derive(i.getPublic()).toString(16),32)}static isSigningKey(t){return!!(t&&t._isSigningKey)}}function Ga(e,t){const r=zn(t),i={r:Ot(r.r),s:Ot(r.s)};return"0x"+ve().recoverPubKey(Ot(e),i,r.recoveryParam).encode("hex",!1)}function Df(e,t){const r=Ot(e);if(r.length===32){const i=new Ja(r);return t?"0x"+ve().keyFromPrivate(r).getPublic(!0,"hex"):i.publicKey}else{if(r.length===33)return t?Kt(r):"0x"+ve().keyFromPublic(r).getPublic(!1,"hex");if(r.length===65)return t?"0x"+ve().keyFromPublic(r).getPublic(!0,"hex"):Kt(r)}return qi.throwArgumentError("invalid public or private key","key","[REDACTED]")}const Ya="transactions/5.7.0";new L(Ya);var Ff;(function(e){e[e.legacy=0]="legacy",e[e.eip2930=1]="eip2930",e[e.eip1559=2]="eip1559"})(Ff||(Ff={}));function Va(e){const t=Df(e);return ns(Hn(yi(Hn(t,1)),12))}function Wa(e,t){return Va(Ga(Ot(e),t))}const Xa="https://rpc.walletconnect.com/v1";async function Tf(e,t,r,i,n,o){switch(r.t){case"eip191":return Uf(e,t,r.s);case"eip1271":return await kf(e,t,r.s,i,n,o);default:throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${r.t}`)}}function Uf(e,t,r){return Wa(ff(t),r).toLowerCase()===e.toLowerCase()}async function kf(e,t,r,i,n,o){try{const h="0x1626ba7e",p="0000000000000000000000000000000000000000000000000000000000000040",b="0000000000000000000000000000000000000000000000000000000000000041",m=r.substring(2),w=ff(t).substring(2),y=h+w+p+b+m,S=await fetch(`${o||Xa}/?chainId=${i}&projectId=${n}`,{method:"POST",body:JSON.stringify({id:Za(),jsonrpc:"2.0",method:"eth_call",params:[{to:e,data:y},"latest"]})}),{result:I}=await S.json();return I?I.slice(0,h.length).toLowerCase()===h.toLowerCase():!1}catch(h){return console.error("isValidEip1271Signature: ",h),!1}}function Za(){return Date.now()+Math.floor(Math.random()*1e3)}var $a=Object.defineProperty,tu=Object.defineProperties,eu=Object.getOwnPropertyDescriptors,qf=Object.getOwnPropertySymbols,ru=Object.prototype.hasOwnProperty,iu=Object.prototype.propertyIsEnumerable,Kf=(e,t,r)=>t in e?$a(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Hi=(e,t)=>{for(var r in t||(t={}))ru.call(t,r)&&Kf(e,r,t[r]);if(qf)for(var r of qf(t))iu.call(t,r)&&Kf(e,r,t[r]);return e},Hf=(e,t)=>tu(e,eu(t));const nu="did:pkh:",Lr=e=>e?.split(":"),zi=e=>{const t=e&&Lr(e);if(t)return e.includes(nu)?t[3]:t[1]},fu=e=>{const t=e&&Lr(e);if(t)return t[2]+":"+t[3]},Li=e=>{const t=e&&Lr(e);if(t)return t.pop()};async function ou(e){const{cacao:t,projectId:r}=e,{s:i,p:n}=t,o=zf(n,n.iss),h=Li(n.iss);return await Tf(h,o,i,zi(n.iss),r)}const zf=(e,t)=>{const r=`${e.domain} wants you to sign in with your Ethereum account:`,i=Li(t);if(!e.aud&&!e.uri)throw new Error("Either `aud` or `uri` is required to construct the message");let n=e.statement||void 0;const o=`URI: ${e.aud||e.uri}`,h=`Version: ${e.version}`,p=`Chain ID: ${zi(t)}`,b=`Nonce: ${e.nonce}`,m=`Issued At: ${e.iat}`,w=e.resources?`Resources:${e.resources.map(S=>` ++ */(function(e){(function(){var t="input is invalid type",r="finalize already called",i=typeof window=="object",n=i?window:{};n.JS_SHA3_NO_WINDOW&&(i=!1);var o=!i&&typeof self=="object",h=!n.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;h?n=Pn:o&&(n=self);var p=!n.JS_SHA3_NO_COMMON_JS&&!0&&e.exports,b=!n.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",m="0123456789abcdef".split(""),w=[31,7936,2031616,520093696],y=[4,1024,262144,67108864],S=[1,256,65536,16777216],I=[6,1536,393216,100663296],N=[0,8,16,24],C=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],F=[224,256,384,512],U=[128,256],J=["hex","buffer","arrayBuffer","array","digest"],Bt={128:168,256:136};(n.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(u){return Object.prototype.toString.call(u)==="[object Array]"}),b&&(n.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(u){return typeof u=="object"&&u.buffer&&u.buffer.constructor===ArrayBuffer});for(var G=function(u,E,_){return function(B){return new s(u,E,u).update(B)[_]()}},H=function(u,E,_){return function(B,R){return new s(u,E,R).update(B)[_]()}},z=function(u,E,_){return function(B,R,T,P){return f["cshake"+u].update(B,R,T,P)[_]()}},Pt=function(u,E,_){return function(B,R,T,P){return f["kmac"+u].update(B,R,T,P)[_]()}},W=function(u,E,_,B){for(var R=0;R>5,this.byteCount=this.blockCount<<2,this.outputBlocks=_>>5,this.extraBytes=(_&31)>>3;for(var B=0;B<50;++B)this.s[B]=0}s.prototype.update=function(u){if(this.finalized)throw new Error(r);var E,_=typeof u;if(_!=="string"){if(_==="object"){if(u===null)throw new Error(t);if(b&&u.constructor===ArrayBuffer)u=new Uint8Array(u);else if(!Array.isArray(u)&&(!b||!ArrayBuffer.isView(u)))throw new Error(t)}else throw new Error(t);E=!0}for(var B=this.blocks,R=this.byteCount,T=u.length,P=this.blockCount,O=0,Ct=this.s,D,q;O>2]|=u[O]<>2]|=q<>2]|=(192|q>>6)<>2]|=(128|q&63)<=57344?(B[D>>2]|=(224|q>>12)<>2]|=(128|q>>6&63)<>2]|=(128|q&63)<>2]|=(240|q>>18)<>2]|=(128|q>>12&63)<>2]|=(128|q>>6&63)<>2]|=(128|q&63)<=R){for(this.start=D-R,this.block=B[P],D=0;D>8,_=u&255;_>0;)R.unshift(_),u=u>>8,_=u&255,++B;return E?R.push(B):R.unshift(B),this.update(R),R.length},s.prototype.encodeString=function(u){var E,_=typeof u;if(_!=="string"){if(_==="object"){if(u===null)throw new Error(t);if(b&&u.constructor===ArrayBuffer)u=new Uint8Array(u);else if(!Array.isArray(u)&&(!b||!ArrayBuffer.isView(u)))throw new Error(t)}else throw new Error(t);E=!0}var B=0,R=u.length;if(E)B=R;else for(var T=0;T=57344?B+=3:(P=65536+((P&1023)<<10|u.charCodeAt(++T)&1023),B+=4)}return B+=this.encode(B*8),this.update(u),B},s.prototype.bytepad=function(u,E){for(var _=this.encode(E),B=0;B>2]|=this.padding[E&3],this.lastByteIndex===this.byteCount)for(u[0]=u[_],E=1;E<_+1;++E)u[E]=0;for(u[_-1]|=2147483648,E=0;E<_;++E)B[E]^=u[E];k(B)}},s.prototype.toString=s.prototype.hex=function(){this.finalize();for(var u=this.blockCount,E=this.s,_=this.outputBlocks,B=this.extraBytes,R=0,T=0,P="",O;T<_;){for(R=0;R>4&15]+m[O&15]+m[O>>12&15]+m[O>>8&15]+m[O>>20&15]+m[O>>16&15]+m[O>>28&15]+m[O>>24&15];T%u===0&&(k(E),R=0)}return B&&(O=E[R],P+=m[O>>4&15]+m[O&15],B>1&&(P+=m[O>>12&15]+m[O>>8&15]),B>2&&(P+=m[O>>20&15]+m[O>>16&15])),P},s.prototype.arrayBuffer=function(){this.finalize();var u=this.blockCount,E=this.s,_=this.outputBlocks,B=this.extraBytes,R=0,T=0,P=this.outputBits>>3,O;B?O=new ArrayBuffer(_+1<<2):O=new ArrayBuffer(P);for(var Ct=new Uint32Array(O);T<_;){for(R=0;R>8&255,P[O+2]=Ct>>16&255,P[O+3]=Ct>>24&255;T%u===0&&k(E)}return B&&(O=T<<2,Ct=E[R],P[O]=Ct&255,B>1&&(P[O+1]=Ct>>8&255),B>2&&(P[O+2]=Ct>>16&255)),P};function v(u,E,_){s.call(this,u,E,_)}v.prototype=new s,v.prototype.finalize=function(){return this.encode(this.outputBits,!0),s.prototype.finalize.call(this)};var k=function(u){var E,_,B,R,T,P,O,Ct,D,q,De,X,Z,Fe,$,tt,Te,et,rt,Ue,it,nt,ke,ft,ot,qe,st,at,Ke,ut,ht,He,ct,lt,ze,dt,pt,Le,vt,mt,je,gt,At,Qe,bt,yt,Je,wt,xt,Ge,Mt,Et,Ye,St,Nt,Ve,It,_t,Me,Ee,Se,Ne,Ie;for(B=0;B<48;B+=2)R=u[0]^u[10]^u[20]^u[30]^u[40],T=u[1]^u[11]^u[21]^u[31]^u[41],P=u[2]^u[12]^u[22]^u[32]^u[42],O=u[3]^u[13]^u[23]^u[33]^u[43],Ct=u[4]^u[14]^u[24]^u[34]^u[44],D=u[5]^u[15]^u[25]^u[35]^u[45],q=u[6]^u[16]^u[26]^u[36]^u[46],De=u[7]^u[17]^u[27]^u[37]^u[47],X=u[8]^u[18]^u[28]^u[38]^u[48],Z=u[9]^u[19]^u[29]^u[39]^u[49],E=X^(P<<1|O>>>31),_=Z^(O<<1|P>>>31),u[0]^=E,u[1]^=_,u[10]^=E,u[11]^=_,u[20]^=E,u[21]^=_,u[30]^=E,u[31]^=_,u[40]^=E,u[41]^=_,E=R^(Ct<<1|D>>>31),_=T^(D<<1|Ct>>>31),u[2]^=E,u[3]^=_,u[12]^=E,u[13]^=_,u[22]^=E,u[23]^=_,u[32]^=E,u[33]^=_,u[42]^=E,u[43]^=_,E=P^(q<<1|De>>>31),_=O^(De<<1|q>>>31),u[4]^=E,u[5]^=_,u[14]^=E,u[15]^=_,u[24]^=E,u[25]^=_,u[34]^=E,u[35]^=_,u[44]^=E,u[45]^=_,E=Ct^(X<<1|Z>>>31),_=D^(Z<<1|X>>>31),u[6]^=E,u[7]^=_,u[16]^=E,u[17]^=_,u[26]^=E,u[27]^=_,u[36]^=E,u[37]^=_,u[46]^=E,u[47]^=_,E=q^(R<<1|T>>>31),_=De^(T<<1|R>>>31),u[8]^=E,u[9]^=_,u[18]^=E,u[19]^=_,u[28]^=E,u[29]^=_,u[38]^=E,u[39]^=_,u[48]^=E,u[49]^=_,Fe=u[0],$=u[1],yt=u[11]<<4|u[10]>>>28,Je=u[10]<<4|u[11]>>>28,at=u[20]<<3|u[21]>>>29,Ke=u[21]<<3|u[20]>>>29,Ee=u[31]<<9|u[30]>>>23,Se=u[30]<<9|u[31]>>>23,gt=u[40]<<18|u[41]>>>14,At=u[41]<<18|u[40]>>>14,lt=u[2]<<1|u[3]>>>31,ze=u[3]<<1|u[2]>>>31,tt=u[13]<<12|u[12]>>>20,Te=u[12]<<12|u[13]>>>20,wt=u[22]<<10|u[23]>>>22,xt=u[23]<<10|u[22]>>>22,ut=u[33]<<13|u[32]>>>19,ht=u[32]<<13|u[33]>>>19,Ne=u[42]<<2|u[43]>>>30,Ie=u[43]<<2|u[42]>>>30,St=u[5]<<30|u[4]>>>2,Nt=u[4]<<30|u[5]>>>2,dt=u[14]<<6|u[15]>>>26,pt=u[15]<<6|u[14]>>>26,et=u[25]<<11|u[24]>>>21,rt=u[24]<<11|u[25]>>>21,Ge=u[34]<<15|u[35]>>>17,Mt=u[35]<<15|u[34]>>>17,He=u[45]<<29|u[44]>>>3,ct=u[44]<<29|u[45]>>>3,ft=u[6]<<28|u[7]>>>4,ot=u[7]<<28|u[6]>>>4,Ve=u[17]<<23|u[16]>>>9,It=u[16]<<23|u[17]>>>9,Le=u[26]<<25|u[27]>>>7,vt=u[27]<<25|u[26]>>>7,Ue=u[36]<<21|u[37]>>>11,it=u[37]<<21|u[36]>>>11,Et=u[47]<<24|u[46]>>>8,Ye=u[46]<<24|u[47]>>>8,Qe=u[8]<<27|u[9]>>>5,bt=u[9]<<27|u[8]>>>5,qe=u[18]<<20|u[19]>>>12,st=u[19]<<20|u[18]>>>12,_t=u[29]<<7|u[28]>>>25,Me=u[28]<<7|u[29]>>>25,mt=u[38]<<8|u[39]>>>24,je=u[39]<<8|u[38]>>>24,nt=u[48]<<14|u[49]>>>18,ke=u[49]<<14|u[48]>>>18,u[0]=Fe^~tt&et,u[1]=$^~Te&rt,u[10]=ft^~qe&at,u[11]=ot^~st&Ke,u[20]=lt^~dt&Le,u[21]=ze^~pt&vt,u[30]=Qe^~yt&wt,u[31]=bt^~Je&xt,u[40]=St^~Ve&_t,u[41]=Nt^~It&Me,u[2]=tt^~et&Ue,u[3]=Te^~rt&it,u[12]=qe^~at&ut,u[13]=st^~Ke&ht,u[22]=dt^~Le&mt,u[23]=pt^~vt&je,u[32]=yt^~wt&Ge,u[33]=Je^~xt&Mt,u[42]=Ve^~_t&Ee,u[43]=It^~Me&Se,u[4]=et^~Ue&nt,u[5]=rt^~it&ke,u[14]=at^~ut&He,u[15]=Ke^~ht&ct,u[24]=Le^~mt>,u[25]=vt^~je&At,u[34]=wt^~Ge&Et,u[35]=xt^~Mt&Ye,u[44]=_t^~Ee&Ne,u[45]=Me^~Se&Ie,u[6]=Ue^~nt&Fe,u[7]=it^~ke&$,u[16]=ut^~He&ft,u[17]=ht^~ct&ot,u[26]=mt^~gt<,u[27]=je^~At&ze,u[36]=Ge^~Et&Qe,u[37]=Mt^~Ye&bt,u[46]=Ee^~Ne&St,u[47]=Se^~Ie&Nt,u[8]=nt^~Fe&tt,u[9]=ke^~$&Te,u[18]=He^~ft&qe,u[19]=ct^~ot&st,u[28]=gt^~lt&dt,u[29]=At^~ze&pt,u[38]=Et^~Qe&yt,u[39]=Ye^~bt&Je,u[48]=Ne^~St&Ve,u[49]=Ie^~Nt&It,u[0]^=C[B],u[1]^=C[B+1]};if(p)e.exports=f;else for(c=0;c{try{if("test".normalize(t)!=="test")throw new Error("bad normalize")}catch{e.push(t)}}),e.length)throw new Error("missing "+e.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(e){return e.message}return null}const kn=xs();var Ai;(function(e){e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.OFF="OFF"})(Ai||(Ai={}));var re;(function(e){e.UNKNOWN_ERROR="UNKNOWN_ERROR",e.NOT_IMPLEMENTED="NOT_IMPLEMENTED",e.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",e.NETWORK_ERROR="NETWORK_ERROR",e.SERVER_ERROR="SERVER_ERROR",e.TIMEOUT="TIMEOUT",e.BUFFER_OVERRUN="BUFFER_OVERRUN",e.NUMERIC_FAULT="NUMERIC_FAULT",e.MISSING_NEW="MISSING_NEW",e.INVALID_ARGUMENT="INVALID_ARGUMENT",e.MISSING_ARGUMENT="MISSING_ARGUMENT",e.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",e.CALL_EXCEPTION="CALL_EXCEPTION",e.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",e.NONCE_EXPIRED="NONCE_EXPIRED",e.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",e.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",e.TRANSACTION_REPLACED="TRANSACTION_REPLACED",e.ACTION_REJECTED="ACTION_REJECTED"})(re||(re={}));const qn="0123456789abcdef";class L{constructor(t){Object.defineProperty(this,"version",{enumerable:!0,value:t,writable:!1})}_log(t,r){const i=t.toLowerCase();Cr[i]==null&&this.throwArgumentError("invalid log level name","logLevel",t),!(Un>Cr[i])&&console.log.apply(console,r)}debug(...t){this._log(L.levels.DEBUG,t)}info(...t){this._log(L.levels.INFO,t)}warn(...t){this._log(L.levels.WARNING,t)}makeError(t,r,i){if(Tn)return this.makeError("censored error",r,{});r||(r=L.errors.UNKNOWN_ERROR),i||(i={});const n=[];Object.keys(i).forEach(b=>{const m=i[b];try{if(m instanceof Uint8Array){let w="";for(let y=0;y>4],w+=qn[m[y]&15];n.push(b+"=Uint8Array(0x"+w+")")}else n.push(b+"="+JSON.stringify(m))}catch{n.push(b+"="+JSON.stringify(i[b].toString()))}}),n.push(`code=${r}`),n.push(`version=${this.version}`);const o=t;let h="";switch(r){case re.NUMERIC_FAULT:{h="NUMERIC_FAULT";const b=t;switch(b){case"overflow":case"underflow":case"division-by-zero":h+="-"+b;break;case"negative-power":case"negative-width":h+="-unsupported";break;case"unbound-bitwise-result":h+="-unbound-result";break}break}case re.CALL_EXCEPTION:case re.INSUFFICIENT_FUNDS:case re.MISSING_NEW:case re.NONCE_EXPIRED:case re.REPLACEMENT_UNDERPRICED:case re.TRANSACTION_REPLACED:case re.UNPREDICTABLE_GAS_LIMIT:h=r;break}h&&(t+=" [ See: https://links.ethers.org/v5-errors-"+h+" ]"),n.length&&(t+=" ("+n.join(", ")+")");const p=new Error(t);return p.reason=o,p.code=r,Object.keys(i).forEach(function(b){p[b]=i[b]}),p}throwError(t,r,i){throw this.makeError(t,r,i)}throwArgumentError(t,r,i){return this.throwError(t,L.errors.INVALID_ARGUMENT,{argument:r,value:i})}assert(t,r,i,n){t||this.throwError(r,i,n)}assertArgument(t,r,i,n){t||this.throwArgumentError(r,i,n)}checkNormalize(t){kn&&this.throwError("platform missing String.prototype.normalize",L.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:kn})}checkSafeUint53(t,r){typeof t=="number"&&(r==null&&(r="value not safe"),(t<0||t>=9007199254740991)&&this.throwError(r,L.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:t}),t%1&&this.throwError(r,L.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:t}))}checkArgumentCount(t,r,i){i?i=": "+i:i="",tr&&this.throwError("too many arguments"+i,L.errors.UNEXPECTED_ARGUMENT,{count:t,expectedCount:r})}checkNew(t,r){(t===Object||t==null)&&this.throwError("missing new",L.errors.MISSING_NEW,{name:r.name})}checkAbstract(t,r){t===r?this.throwError("cannot instantiate abstract class "+JSON.stringify(r.name)+" directly; use a sub-class",L.errors.UNSUPPORTED_OPERATION,{name:t.name,operation:"new"}):(t===Object||t==null)&&this.throwError("missing new",L.errors.MISSING_NEW,{name:r.name})}static globalLogger(){return gi||(gi=new L(ws)),gi}static setCensorship(t,r){if(!t&&r&&this.globalLogger().throwError("cannot permanently disable censorship",L.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),Fn){if(!t)return;this.globalLogger().throwError("error censorship permanent",L.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}Tn=!!t,Fn=!!r}static setLogLevel(t){const r=Cr[t.toLowerCase()];if(r==null){L.globalLogger().warn("invalid log level - "+t);return}Un=r}static from(t){return new L(t)}}L.errors=re,L.levels=Ai;const Ms="bytes/5.7.0",Dt=new L(Ms);function Kn(e){return!!e.toHexString}function rr(e){return e.slice||(e.slice=function(){const t=Array.prototype.slice.call(arguments);return rr(new Uint8Array(Array.prototype.slice.apply(e,t)))}),e}function Es(e){return Qt(e)&&!(e.length%2)||ir(e)}function Hn(e){return typeof e=="number"&&e==e&&e%1===0}function ir(e){if(e==null)return!1;if(e.constructor===Uint8Array)return!0;if(typeof e=="string"||!Hn(e.length)||e.length<0)return!1;for(let t=0;t=256)return!1}return!0}function Ot(e,t){if(t||(t={}),typeof e=="number"){Dt.checkSafeUint53(e,"invalid arrayify value");const r=[];for(;e;)r.unshift(e&255),e=parseInt(String(e/256));return r.length===0&&r.push(0),rr(new Uint8Array(r))}if(t.allowMissingPrefix&&typeof e=="string"&&e.substring(0,2)!=="0x"&&(e="0x"+e),Kn(e)&&(e=e.toHexString()),Qt(e)){let r=e.substring(2);r.length%2&&(t.hexPad==="left"?r="0"+r:t.hexPad==="right"?r+="0":Dt.throwArgumentError("hex data is odd-length","value",e));const i=[];for(let n=0;nOt(n)),r=t.reduce((n,o)=>n+o.length,0),i=new Uint8Array(r);return t.reduce((n,o)=>(i.set(o,n),n+o.length),0),rr(i)}function Ns(e,t){e=Ot(e),e.length>t&&Dt.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(t);return r.set(e,t-e.length),rr(r)}function Qt(e,t){return!(typeof e!="string"||!e.match(/^0x[0-9A-Fa-f]*$/)||t&&e.length!==2+2*t)}const bi="0123456789abcdef";function Kt(e,t){if(t||(t={}),typeof e=="number"){Dt.checkSafeUint53(e,"invalid hexlify value");let r="";for(;e;)r=bi[e&15]+r,e=Math.floor(e/16);return r.length?(r.length%2&&(r="0"+r),"0x"+r):"0x00"}if(typeof e=="bigint")return e=e.toString(16),e.length%2?"0x0"+e:"0x"+e;if(t.allowMissingPrefix&&typeof e=="string"&&e.substring(0,2)!=="0x"&&(e="0x"+e),Kn(e))return e.toHexString();if(Qt(e))return e.length%2&&(t.hexPad==="left"?e="0x0"+e.substring(2):t.hexPad==="right"?e+="0":Dt.throwArgumentError("hex data is odd-length","value",e)),e.toLowerCase();if(ir(e)){let r="0x";for(let i=0;i>4]+bi[n&15]}return r}return Dt.throwArgumentError("invalid hexlify value","value",e)}function Is(e){if(typeof e!="string")e=Kt(e);else if(!Qt(e)||e.length%2)return null;return(e.length-2)/2}function zn(e,t,r){return typeof e!="string"?e=Kt(e):(!Qt(e)||e.length%2)&&Dt.throwArgumentError("invalid hexData","value",e),t=2+2*t,r!=null?"0x"+e.substring(t,2+2*r):"0x"+e.substring(t)}function oe(e,t){for(typeof e!="string"?e=Kt(e):Qt(e)||Dt.throwArgumentError("invalid hex string","value",e),e.length>2*t+2&&Dt.throwArgumentError("value out of range","value",arguments[1]);e.length<2*t+2;)e="0x0"+e.substring(2);return e}function Ln(e){const t={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(Es(e)){let r=Ot(e);r.length===64?(t.v=27+(r[32]>>7),r[32]&=127,t.r=Kt(r.slice(0,32)),t.s=Kt(r.slice(32,64))):r.length===65?(t.r=Kt(r.slice(0,32)),t.s=Kt(r.slice(32,64)),t.v=r[64]):Dt.throwArgumentError("invalid signature string","signature",e),t.v<27&&(t.v===0||t.v===1?t.v+=27:Dt.throwArgumentError("signature invalid v byte","signature",e)),t.recoveryParam=1-t.v%2,t.recoveryParam&&(r[32]|=128),t._vs=Kt(r.slice(32,64))}else{if(t.r=e.r,t.s=e.s,t.v=e.v,t.recoveryParam=e.recoveryParam,t._vs=e._vs,t._vs!=null){const n=Ns(Ot(t._vs),32);t._vs=Kt(n);const o=n[0]>=128?1:0;t.recoveryParam==null?t.recoveryParam=o:t.recoveryParam!==o&&Dt.throwArgumentError("signature recoveryParam mismatch _vs","signature",e),n[0]&=127;const h=Kt(n);t.s==null?t.s=h:t.s!==h&&Dt.throwArgumentError("signature v mismatch _vs","signature",e)}if(t.recoveryParam==null)t.v==null?Dt.throwArgumentError("signature missing v and recoveryParam","signature",e):t.v===0||t.v===1?t.recoveryParam=t.v:t.recoveryParam=1-t.v%2;else if(t.v==null)t.v=27+t.recoveryParam;else{const n=t.v===0||t.v===1?t.v:1-t.v%2;t.recoveryParam!==n&&Dt.throwArgumentError("signature recoveryParam mismatch v","signature",e)}t.r==null||!Qt(t.r)?Dt.throwArgumentError("signature missing or invalid r","signature",e):t.r=oe(t.r,32),t.s==null||!Qt(t.s)?Dt.throwArgumentError("signature missing or invalid s","signature",e):t.s=oe(t.s,32);const r=Ot(t.s);r[0]>=128&&Dt.throwArgumentError("signature s out of range","signature",e),t.recoveryParam&&(r[0]|=128);const i=Kt(r);t._vs&&(Qt(t._vs)||Dt.throwArgumentError("signature invalid _vs","signature",e),t._vs=oe(t._vs,32)),t._vs==null?t._vs=i:t._vs!==i&&Dt.throwArgumentError("signature _vs mismatch v and s","signature",e)}return t.yParityAndS=t._vs,t.compact=t.r+t.yParityAndS.substring(2),t}function yi(e){return"0x"+ys.keccak_256(Ot(e))}var jn={exports:{}},_s={},Bs=Object.freeze({__proto__:null,default:_s}),Cs=bs(Bs);(function(e){(function(t,r){function i(A,f){if(!A)throw new Error(f||"Assertion failed")}function n(A,f){A.super_=f;var a=function(){};a.prototype=f.prototype,A.prototype=new a,A.prototype.constructor=A}function o(A,f,a){if(o.isBN(A))return A;this.negative=0,this.words=null,this.length=0,this.red=null,A!==null&&((f==="le"||f==="be")&&(a=f,f=10),this._init(A||0,f||10,a||"be"))}typeof t=="object"?t.exports=o:r.BN=o,o.BN=o,o.wordSize=26;var h;try{typeof window<"u"&&typeof window.Buffer<"u"?h=window.Buffer:h=Cs.Buffer}catch{}o.isBN=function(f){return f instanceof o?!0:f!==null&&typeof f=="object"&&f.constructor.wordSize===o.wordSize&&Array.isArray(f.words)},o.max=function(f,a){return f.cmp(a)>0?f:a},o.min=function(f,a){return f.cmp(a)<0?f:a},o.prototype._init=function(f,a,c){if(typeof f=="number")return this._initNumber(f,a,c);if(typeof f=="object")return this._initArray(f,a,c);a==="hex"&&(a=16),i(a===(a|0)&&a>=2&&a<=36),f=f.toString().replace(/\s+/g,"");var d=0;f[0]==="-"&&(d++,this.negative=1),d=0;d-=3)x=f[d]|f[d-1]<<8|f[d-2]<<16,this.words[g]|=x<>>26-M&67108863,M+=24,M>=26&&(M-=26,g++);else if(c==="le")for(d=0,g=0;d>>26-M&67108863,M+=24,M>=26&&(M-=26,g++);return this._strip()};function p(A,f){var a=A.charCodeAt(f);if(a>=48&&a<=57)return a-48;if(a>=65&&a<=70)return a-55;if(a>=97&&a<=102)return a-87;i(!1,"Invalid character in "+A)}function b(A,f,a){var c=p(A,a);return a-1>=f&&(c|=p(A,a-1)<<4),c}o.prototype._parseHex=function(f,a,c){this.length=Math.ceil((f.length-a)/6),this.words=new Array(this.length);for(var d=0;d=a;d-=2)M=b(f,a,d)<=18?(g-=18,x+=1,this.words[x]|=M>>>26):g+=8;else{var l=f.length-a;for(d=l%2===0?a+1:a;d=18?(g-=18,x+=1,this.words[x]|=M>>>26):g+=8}this._strip()};function m(A,f,a,c){for(var d=0,g=0,x=Math.min(A.length,a),M=f;M=49?g=l-49+10:l>=17?g=l-17+10:g=l,i(l>=0&&g1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},o.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{o.prototype[Symbol.for("nodejs.util.inspect.custom")]=y}catch{o.prototype.inspect=y}else o.prototype.inspect=y;function y(){return(this.red?""}var S=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],I=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],N=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(f,a){f=f||10,a=a|0||1;var c;if(f===16||f==="hex"){c="";for(var d=0,g=0,x=0;x>>24-d&16777215,d+=2,d>=26&&(d-=26,x--),g!==0||x!==this.length-1?c=S[6-l.length]+l+c:c=l+c}for(g!==0&&(c=g.toString(16)+c);c.length%a!==0;)c="0"+c;return this.negative!==0&&(c="-"+c),c}if(f===(f|0)&&f>=2&&f<=36){var s=I[f],v=N[f];c="";var k=this.clone();for(k.negative=0;!k.isZero();){var u=k.modrn(v).toString(f);k=k.idivn(v),k.isZero()?c=u+c:c=S[s-u.length]+u+c}for(this.isZero()&&(c="0"+c);c.length%a!==0;)c="0"+c;return this.negative!==0&&(c="-"+c),c}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var f=this.words[0];return this.length===2?f+=this.words[1]*67108864:this.length===3&&this.words[2]===1?f+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-f:f},o.prototype.toJSON=function(){return this.toString(16,2)},h&&(o.prototype.toBuffer=function(f,a){return this.toArrayLike(h,f,a)}),o.prototype.toArray=function(f,a){return this.toArrayLike(Array,f,a)};var C=function(f,a){return f.allocUnsafe?f.allocUnsafe(a):new f(a)};o.prototype.toArrayLike=function(f,a,c){this._strip();var d=this.byteLength(),g=c||Math.max(1,d);i(d<=g,"byte array longer than desired length"),i(g>0,"Requested array length <= 0");var x=C(f,g),M=a==="le"?"LE":"BE";return this["_toArrayLike"+M](x,d),x},o.prototype._toArrayLikeLE=function(f,a){for(var c=0,d=0,g=0,x=0;g>8&255),c>16&255),x===6?(c>24&255),d=0,x=0):(d=M>>>24,x+=2)}if(c=0&&(f[c--]=M>>8&255),c>=0&&(f[c--]=M>>16&255),x===6?(c>=0&&(f[c--]=M>>24&255),d=0,x=0):(d=M>>>24,x+=2)}if(c>=0)for(f[c--]=d;c>=0;)f[c--]=0},Math.clz32?o.prototype._countBits=function(f){return 32-Math.clz32(f)}:o.prototype._countBits=function(f){var a=f,c=0;return a>=4096&&(c+=13,a>>>=13),a>=64&&(c+=7,a>>>=7),a>=8&&(c+=4,a>>>=4),a>=2&&(c+=2,a>>>=2),c+a},o.prototype._zeroBits=function(f){if(f===0)return 26;var a=f,c=0;return a&8191||(c+=13,a>>>=13),a&127||(c+=7,a>>>=7),a&15||(c+=4,a>>>=4),a&3||(c+=2,a>>>=2),a&1||c++,c},o.prototype.bitLength=function(){var f=this.words[this.length-1],a=this._countBits(f);return(this.length-1)*26+a};function F(A){for(var f=new Array(A.bitLength()),a=0;a>>d&1}return f}o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var f=0,a=0;af.length?this.clone().ior(f):f.clone().ior(this)},o.prototype.uor=function(f){return this.length>f.length?this.clone().iuor(f):f.clone().iuor(this)},o.prototype.iuand=function(f){var a;this.length>f.length?a=f:a=this;for(var c=0;cf.length?this.clone().iand(f):f.clone().iand(this)},o.prototype.uand=function(f){return this.length>f.length?this.clone().iuand(f):f.clone().iuand(this)},o.prototype.iuxor=function(f){var a,c;this.length>f.length?(a=this,c=f):(a=f,c=this);for(var d=0;df.length?this.clone().ixor(f):f.clone().ixor(this)},o.prototype.uxor=function(f){return this.length>f.length?this.clone().iuxor(f):f.clone().iuxor(this)},o.prototype.inotn=function(f){i(typeof f=="number"&&f>=0);var a=Math.ceil(f/26)|0,c=f%26;this._expand(a),c>0&&a--;for(var d=0;d0&&(this.words[d]=~this.words[d]&67108863>>26-c),this._strip()},o.prototype.notn=function(f){return this.clone().inotn(f)},o.prototype.setn=function(f,a){i(typeof f=="number"&&f>=0);var c=f/26|0,d=f%26;return this._expand(c+1),a?this.words[c]=this.words[c]|1<f.length?(c=this,d=f):(c=f,d=this);for(var g=0,x=0;x>>26;for(;g!==0&&x>>26;if(this.length=c.length,g!==0)this.words[this.length]=g,this.length++;else if(c!==this)for(;xf.length?this.clone().iadd(f):f.clone().iadd(this)},o.prototype.isub=function(f){if(f.negative!==0){f.negative=0;var a=this.iadd(f);return f.negative=1,a._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(f),this.negative=1,this._normSign();var c=this.cmp(f);if(c===0)return this.negative=0,this.length=1,this.words[0]=0,this;var d,g;c>0?(d=this,g=f):(d=f,g=this);for(var x=0,M=0;M>26,this.words[M]=a&67108863;for(;x!==0&&M>26,this.words[M]=a&67108863;if(x===0&&M>>26,k=l&67108863,u=Math.min(s,f.length-1),E=Math.max(0,s-A.length+1);E<=u;E++){var _=s-E|0;d=A.words[_]|0,g=f.words[E]|0,x=d*g+k,v+=x/67108864|0,k=x&67108863}a.words[s]=k|0,l=v|0}return l!==0?a.words[s]=l|0:a.length--,a._strip()}var J=function(f,a,c){var d=f.words,g=a.words,x=c.words,M=0,l,s,v,k=d[0]|0,u=k&8191,E=k>>>13,_=d[1]|0,B=_&8191,R=_>>>13,T=d[2]|0,P=T&8191,O=T>>>13,Ct=d[3]|0,D=Ct&8191,q=Ct>>>13,De=d[4]|0,X=De&8191,Z=De>>>13,Fe=d[5]|0,$=Fe&8191,tt=Fe>>>13,Te=d[6]|0,et=Te&8191,rt=Te>>>13,Ue=d[7]|0,it=Ue&8191,nt=Ue>>>13,ke=d[8]|0,ft=ke&8191,ot=ke>>>13,qe=d[9]|0,st=qe&8191,at=qe>>>13,Ke=g[0]|0,ut=Ke&8191,ht=Ke>>>13,He=g[1]|0,ct=He&8191,lt=He>>>13,ze=g[2]|0,dt=ze&8191,pt=ze>>>13,Le=g[3]|0,vt=Le&8191,mt=Le>>>13,je=g[4]|0,gt=je&8191,At=je>>>13,Qe=g[5]|0,bt=Qe&8191,yt=Qe>>>13,Je=g[6]|0,wt=Je&8191,xt=Je>>>13,Ge=g[7]|0,Mt=Ge&8191,Et=Ge>>>13,Ye=g[8]|0,St=Ye&8191,Nt=Ye>>>13,Ve=g[9]|0,It=Ve&8191,_t=Ve>>>13;c.negative=f.negative^a.negative,c.length=19,l=Math.imul(u,ut),s=Math.imul(u,ht),s=s+Math.imul(E,ut)|0,v=Math.imul(E,ht);var Me=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Me>>>26)|0,Me&=67108863,l=Math.imul(B,ut),s=Math.imul(B,ht),s=s+Math.imul(R,ut)|0,v=Math.imul(R,ht),l=l+Math.imul(u,ct)|0,s=s+Math.imul(u,lt)|0,s=s+Math.imul(E,ct)|0,v=v+Math.imul(E,lt)|0;var Ee=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,l=Math.imul(P,ut),s=Math.imul(P,ht),s=s+Math.imul(O,ut)|0,v=Math.imul(O,ht),l=l+Math.imul(B,ct)|0,s=s+Math.imul(B,lt)|0,s=s+Math.imul(R,ct)|0,v=v+Math.imul(R,lt)|0,l=l+Math.imul(u,dt)|0,s=s+Math.imul(u,pt)|0,s=s+Math.imul(E,dt)|0,v=v+Math.imul(E,pt)|0;var Se=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Se>>>26)|0,Se&=67108863,l=Math.imul(D,ut),s=Math.imul(D,ht),s=s+Math.imul(q,ut)|0,v=Math.imul(q,ht),l=l+Math.imul(P,ct)|0,s=s+Math.imul(P,lt)|0,s=s+Math.imul(O,ct)|0,v=v+Math.imul(O,lt)|0,l=l+Math.imul(B,dt)|0,s=s+Math.imul(B,pt)|0,s=s+Math.imul(R,dt)|0,v=v+Math.imul(R,pt)|0,l=l+Math.imul(u,vt)|0,s=s+Math.imul(u,mt)|0,s=s+Math.imul(E,vt)|0,v=v+Math.imul(E,mt)|0;var Ne=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,l=Math.imul(X,ut),s=Math.imul(X,ht),s=s+Math.imul(Z,ut)|0,v=Math.imul(Z,ht),l=l+Math.imul(D,ct)|0,s=s+Math.imul(D,lt)|0,s=s+Math.imul(q,ct)|0,v=v+Math.imul(q,lt)|0,l=l+Math.imul(P,dt)|0,s=s+Math.imul(P,pt)|0,s=s+Math.imul(O,dt)|0,v=v+Math.imul(O,pt)|0,l=l+Math.imul(B,vt)|0,s=s+Math.imul(B,mt)|0,s=s+Math.imul(R,vt)|0,v=v+Math.imul(R,mt)|0,l=l+Math.imul(u,gt)|0,s=s+Math.imul(u,At)|0,s=s+Math.imul(E,gt)|0,v=v+Math.imul(E,At)|0;var Ie=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,l=Math.imul($,ut),s=Math.imul($,ht),s=s+Math.imul(tt,ut)|0,v=Math.imul(tt,ht),l=l+Math.imul(X,ct)|0,s=s+Math.imul(X,lt)|0,s=s+Math.imul(Z,ct)|0,v=v+Math.imul(Z,lt)|0,l=l+Math.imul(D,dt)|0,s=s+Math.imul(D,pt)|0,s=s+Math.imul(q,dt)|0,v=v+Math.imul(q,pt)|0,l=l+Math.imul(P,vt)|0,s=s+Math.imul(P,mt)|0,s=s+Math.imul(O,vt)|0,v=v+Math.imul(O,mt)|0,l=l+Math.imul(B,gt)|0,s=s+Math.imul(B,At)|0,s=s+Math.imul(R,gt)|0,v=v+Math.imul(R,At)|0,l=l+Math.imul(u,bt)|0,s=s+Math.imul(u,yt)|0,s=s+Math.imul(E,bt)|0,v=v+Math.imul(E,yt)|0;var Wr=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Wr>>>26)|0,Wr&=67108863,l=Math.imul(et,ut),s=Math.imul(et,ht),s=s+Math.imul(rt,ut)|0,v=Math.imul(rt,ht),l=l+Math.imul($,ct)|0,s=s+Math.imul($,lt)|0,s=s+Math.imul(tt,ct)|0,v=v+Math.imul(tt,lt)|0,l=l+Math.imul(X,dt)|0,s=s+Math.imul(X,pt)|0,s=s+Math.imul(Z,dt)|0,v=v+Math.imul(Z,pt)|0,l=l+Math.imul(D,vt)|0,s=s+Math.imul(D,mt)|0,s=s+Math.imul(q,vt)|0,v=v+Math.imul(q,mt)|0,l=l+Math.imul(P,gt)|0,s=s+Math.imul(P,At)|0,s=s+Math.imul(O,gt)|0,v=v+Math.imul(O,At)|0,l=l+Math.imul(B,bt)|0,s=s+Math.imul(B,yt)|0,s=s+Math.imul(R,bt)|0,v=v+Math.imul(R,yt)|0,l=l+Math.imul(u,wt)|0,s=s+Math.imul(u,xt)|0,s=s+Math.imul(E,wt)|0,v=v+Math.imul(E,xt)|0;var Xr=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Xr>>>26)|0,Xr&=67108863,l=Math.imul(it,ut),s=Math.imul(it,ht),s=s+Math.imul(nt,ut)|0,v=Math.imul(nt,ht),l=l+Math.imul(et,ct)|0,s=s+Math.imul(et,lt)|0,s=s+Math.imul(rt,ct)|0,v=v+Math.imul(rt,lt)|0,l=l+Math.imul($,dt)|0,s=s+Math.imul($,pt)|0,s=s+Math.imul(tt,dt)|0,v=v+Math.imul(tt,pt)|0,l=l+Math.imul(X,vt)|0,s=s+Math.imul(X,mt)|0,s=s+Math.imul(Z,vt)|0,v=v+Math.imul(Z,mt)|0,l=l+Math.imul(D,gt)|0,s=s+Math.imul(D,At)|0,s=s+Math.imul(q,gt)|0,v=v+Math.imul(q,At)|0,l=l+Math.imul(P,bt)|0,s=s+Math.imul(P,yt)|0,s=s+Math.imul(O,bt)|0,v=v+Math.imul(O,yt)|0,l=l+Math.imul(B,wt)|0,s=s+Math.imul(B,xt)|0,s=s+Math.imul(R,wt)|0,v=v+Math.imul(R,xt)|0,l=l+Math.imul(u,Mt)|0,s=s+Math.imul(u,Et)|0,s=s+Math.imul(E,Mt)|0,v=v+Math.imul(E,Et)|0;var Zr=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(Zr>>>26)|0,Zr&=67108863,l=Math.imul(ft,ut),s=Math.imul(ft,ht),s=s+Math.imul(ot,ut)|0,v=Math.imul(ot,ht),l=l+Math.imul(it,ct)|0,s=s+Math.imul(it,lt)|0,s=s+Math.imul(nt,ct)|0,v=v+Math.imul(nt,lt)|0,l=l+Math.imul(et,dt)|0,s=s+Math.imul(et,pt)|0,s=s+Math.imul(rt,dt)|0,v=v+Math.imul(rt,pt)|0,l=l+Math.imul($,vt)|0,s=s+Math.imul($,mt)|0,s=s+Math.imul(tt,vt)|0,v=v+Math.imul(tt,mt)|0,l=l+Math.imul(X,gt)|0,s=s+Math.imul(X,At)|0,s=s+Math.imul(Z,gt)|0,v=v+Math.imul(Z,At)|0,l=l+Math.imul(D,bt)|0,s=s+Math.imul(D,yt)|0,s=s+Math.imul(q,bt)|0,v=v+Math.imul(q,yt)|0,l=l+Math.imul(P,wt)|0,s=s+Math.imul(P,xt)|0,s=s+Math.imul(O,wt)|0,v=v+Math.imul(O,xt)|0,l=l+Math.imul(B,Mt)|0,s=s+Math.imul(B,Et)|0,s=s+Math.imul(R,Mt)|0,v=v+Math.imul(R,Et)|0,l=l+Math.imul(u,St)|0,s=s+Math.imul(u,Nt)|0,s=s+Math.imul(E,St)|0,v=v+Math.imul(E,Nt)|0;var $r=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+($r>>>26)|0,$r&=67108863,l=Math.imul(st,ut),s=Math.imul(st,ht),s=s+Math.imul(at,ut)|0,v=Math.imul(at,ht),l=l+Math.imul(ft,ct)|0,s=s+Math.imul(ft,lt)|0,s=s+Math.imul(ot,ct)|0,v=v+Math.imul(ot,lt)|0,l=l+Math.imul(it,dt)|0,s=s+Math.imul(it,pt)|0,s=s+Math.imul(nt,dt)|0,v=v+Math.imul(nt,pt)|0,l=l+Math.imul(et,vt)|0,s=s+Math.imul(et,mt)|0,s=s+Math.imul(rt,vt)|0,v=v+Math.imul(rt,mt)|0,l=l+Math.imul($,gt)|0,s=s+Math.imul($,At)|0,s=s+Math.imul(tt,gt)|0,v=v+Math.imul(tt,At)|0,l=l+Math.imul(X,bt)|0,s=s+Math.imul(X,yt)|0,s=s+Math.imul(Z,bt)|0,v=v+Math.imul(Z,yt)|0,l=l+Math.imul(D,wt)|0,s=s+Math.imul(D,xt)|0,s=s+Math.imul(q,wt)|0,v=v+Math.imul(q,xt)|0,l=l+Math.imul(P,Mt)|0,s=s+Math.imul(P,Et)|0,s=s+Math.imul(O,Mt)|0,v=v+Math.imul(O,Et)|0,l=l+Math.imul(B,St)|0,s=s+Math.imul(B,Nt)|0,s=s+Math.imul(R,St)|0,v=v+Math.imul(R,Nt)|0,l=l+Math.imul(u,It)|0,s=s+Math.imul(u,_t)|0,s=s+Math.imul(E,It)|0,v=v+Math.imul(E,_t)|0;var ti=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ti>>>26)|0,ti&=67108863,l=Math.imul(st,ct),s=Math.imul(st,lt),s=s+Math.imul(at,ct)|0,v=Math.imul(at,lt),l=l+Math.imul(ft,dt)|0,s=s+Math.imul(ft,pt)|0,s=s+Math.imul(ot,dt)|0,v=v+Math.imul(ot,pt)|0,l=l+Math.imul(it,vt)|0,s=s+Math.imul(it,mt)|0,s=s+Math.imul(nt,vt)|0,v=v+Math.imul(nt,mt)|0,l=l+Math.imul(et,gt)|0,s=s+Math.imul(et,At)|0,s=s+Math.imul(rt,gt)|0,v=v+Math.imul(rt,At)|0,l=l+Math.imul($,bt)|0,s=s+Math.imul($,yt)|0,s=s+Math.imul(tt,bt)|0,v=v+Math.imul(tt,yt)|0,l=l+Math.imul(X,wt)|0,s=s+Math.imul(X,xt)|0,s=s+Math.imul(Z,wt)|0,v=v+Math.imul(Z,xt)|0,l=l+Math.imul(D,Mt)|0,s=s+Math.imul(D,Et)|0,s=s+Math.imul(q,Mt)|0,v=v+Math.imul(q,Et)|0,l=l+Math.imul(P,St)|0,s=s+Math.imul(P,Nt)|0,s=s+Math.imul(O,St)|0,v=v+Math.imul(O,Nt)|0,l=l+Math.imul(B,It)|0,s=s+Math.imul(B,_t)|0,s=s+Math.imul(R,It)|0,v=v+Math.imul(R,_t)|0;var ei=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ei>>>26)|0,ei&=67108863,l=Math.imul(st,dt),s=Math.imul(st,pt),s=s+Math.imul(at,dt)|0,v=Math.imul(at,pt),l=l+Math.imul(ft,vt)|0,s=s+Math.imul(ft,mt)|0,s=s+Math.imul(ot,vt)|0,v=v+Math.imul(ot,mt)|0,l=l+Math.imul(it,gt)|0,s=s+Math.imul(it,At)|0,s=s+Math.imul(nt,gt)|0,v=v+Math.imul(nt,At)|0,l=l+Math.imul(et,bt)|0,s=s+Math.imul(et,yt)|0,s=s+Math.imul(rt,bt)|0,v=v+Math.imul(rt,yt)|0,l=l+Math.imul($,wt)|0,s=s+Math.imul($,xt)|0,s=s+Math.imul(tt,wt)|0,v=v+Math.imul(tt,xt)|0,l=l+Math.imul(X,Mt)|0,s=s+Math.imul(X,Et)|0,s=s+Math.imul(Z,Mt)|0,v=v+Math.imul(Z,Et)|0,l=l+Math.imul(D,St)|0,s=s+Math.imul(D,Nt)|0,s=s+Math.imul(q,St)|0,v=v+Math.imul(q,Nt)|0,l=l+Math.imul(P,It)|0,s=s+Math.imul(P,_t)|0,s=s+Math.imul(O,It)|0,v=v+Math.imul(O,_t)|0;var ri=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ri>>>26)|0,ri&=67108863,l=Math.imul(st,vt),s=Math.imul(st,mt),s=s+Math.imul(at,vt)|0,v=Math.imul(at,mt),l=l+Math.imul(ft,gt)|0,s=s+Math.imul(ft,At)|0,s=s+Math.imul(ot,gt)|0,v=v+Math.imul(ot,At)|0,l=l+Math.imul(it,bt)|0,s=s+Math.imul(it,yt)|0,s=s+Math.imul(nt,bt)|0,v=v+Math.imul(nt,yt)|0,l=l+Math.imul(et,wt)|0,s=s+Math.imul(et,xt)|0,s=s+Math.imul(rt,wt)|0,v=v+Math.imul(rt,xt)|0,l=l+Math.imul($,Mt)|0,s=s+Math.imul($,Et)|0,s=s+Math.imul(tt,Mt)|0,v=v+Math.imul(tt,Et)|0,l=l+Math.imul(X,St)|0,s=s+Math.imul(X,Nt)|0,s=s+Math.imul(Z,St)|0,v=v+Math.imul(Z,Nt)|0,l=l+Math.imul(D,It)|0,s=s+Math.imul(D,_t)|0,s=s+Math.imul(q,It)|0,v=v+Math.imul(q,_t)|0;var ii=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ii>>>26)|0,ii&=67108863,l=Math.imul(st,gt),s=Math.imul(st,At),s=s+Math.imul(at,gt)|0,v=Math.imul(at,At),l=l+Math.imul(ft,bt)|0,s=s+Math.imul(ft,yt)|0,s=s+Math.imul(ot,bt)|0,v=v+Math.imul(ot,yt)|0,l=l+Math.imul(it,wt)|0,s=s+Math.imul(it,xt)|0,s=s+Math.imul(nt,wt)|0,v=v+Math.imul(nt,xt)|0,l=l+Math.imul(et,Mt)|0,s=s+Math.imul(et,Et)|0,s=s+Math.imul(rt,Mt)|0,v=v+Math.imul(rt,Et)|0,l=l+Math.imul($,St)|0,s=s+Math.imul($,Nt)|0,s=s+Math.imul(tt,St)|0,v=v+Math.imul(tt,Nt)|0,l=l+Math.imul(X,It)|0,s=s+Math.imul(X,_t)|0,s=s+Math.imul(Z,It)|0,v=v+Math.imul(Z,_t)|0;var ni=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ni>>>26)|0,ni&=67108863,l=Math.imul(st,bt),s=Math.imul(st,yt),s=s+Math.imul(at,bt)|0,v=Math.imul(at,yt),l=l+Math.imul(ft,wt)|0,s=s+Math.imul(ft,xt)|0,s=s+Math.imul(ot,wt)|0,v=v+Math.imul(ot,xt)|0,l=l+Math.imul(it,Mt)|0,s=s+Math.imul(it,Et)|0,s=s+Math.imul(nt,Mt)|0,v=v+Math.imul(nt,Et)|0,l=l+Math.imul(et,St)|0,s=s+Math.imul(et,Nt)|0,s=s+Math.imul(rt,St)|0,v=v+Math.imul(rt,Nt)|0,l=l+Math.imul($,It)|0,s=s+Math.imul($,_t)|0,s=s+Math.imul(tt,It)|0,v=v+Math.imul(tt,_t)|0;var fi=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(fi>>>26)|0,fi&=67108863,l=Math.imul(st,wt),s=Math.imul(st,xt),s=s+Math.imul(at,wt)|0,v=Math.imul(at,xt),l=l+Math.imul(ft,Mt)|0,s=s+Math.imul(ft,Et)|0,s=s+Math.imul(ot,Mt)|0,v=v+Math.imul(ot,Et)|0,l=l+Math.imul(it,St)|0,s=s+Math.imul(it,Nt)|0,s=s+Math.imul(nt,St)|0,v=v+Math.imul(nt,Nt)|0,l=l+Math.imul(et,It)|0,s=s+Math.imul(et,_t)|0,s=s+Math.imul(rt,It)|0,v=v+Math.imul(rt,_t)|0;var oi=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(oi>>>26)|0,oi&=67108863,l=Math.imul(st,Mt),s=Math.imul(st,Et),s=s+Math.imul(at,Mt)|0,v=Math.imul(at,Et),l=l+Math.imul(ft,St)|0,s=s+Math.imul(ft,Nt)|0,s=s+Math.imul(ot,St)|0,v=v+Math.imul(ot,Nt)|0,l=l+Math.imul(it,It)|0,s=s+Math.imul(it,_t)|0,s=s+Math.imul(nt,It)|0,v=v+Math.imul(nt,_t)|0;var si=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(si>>>26)|0,si&=67108863,l=Math.imul(st,St),s=Math.imul(st,Nt),s=s+Math.imul(at,St)|0,v=Math.imul(at,Nt),l=l+Math.imul(ft,It)|0,s=s+Math.imul(ft,_t)|0,s=s+Math.imul(ot,It)|0,v=v+Math.imul(ot,_t)|0;var ai=(M+l|0)+((s&8191)<<13)|0;M=(v+(s>>>13)|0)+(ai>>>26)|0,ai&=67108863,l=Math.imul(st,It),s=Math.imul(st,_t),s=s+Math.imul(at,It)|0,v=Math.imul(at,_t);var ui=(M+l|0)+((s&8191)<<13)|0;return M=(v+(s>>>13)|0)+(ui>>>26)|0,ui&=67108863,x[0]=Me,x[1]=Ee,x[2]=Se,x[3]=Ne,x[4]=Ie,x[5]=Wr,x[6]=Xr,x[7]=Zr,x[8]=$r,x[9]=ti,x[10]=ei,x[11]=ri,x[12]=ii,x[13]=ni,x[14]=fi,x[15]=oi,x[16]=si,x[17]=ai,x[18]=ui,M!==0&&(x[19]=M,c.length++),c};Math.imul||(J=U);function Bt(A,f,a){a.negative=f.negative^A.negative,a.length=A.length+f.length;for(var c=0,d=0,g=0;g>>26)|0,d+=x>>>26,x&=67108863}a.words[g]=M,c=x,x=d}return c!==0?a.words[g]=c:a.length--,a._strip()}function G(A,f,a){return Bt(A,f,a)}o.prototype.mulTo=function(f,a){var c,d=this.length+f.length;return this.length===10&&f.length===10?c=J(this,f,a):d<63?c=U(this,f,a):d<1024?c=Bt(this,f,a):c=G(this,f,a),c},o.prototype.mul=function(f){var a=new o(null);return a.words=new Array(this.length+f.length),this.mulTo(f,a)},o.prototype.mulf=function(f){var a=new o(null);return a.words=new Array(this.length+f.length),G(this,f,a)},o.prototype.imul=function(f){return this.clone().mulTo(f,this)},o.prototype.imuln=function(f){var a=f<0;a&&(f=-f),i(typeof f=="number"),i(f<67108864);for(var c=0,d=0;d>=26,c+=g/67108864|0,c+=x>>>26,this.words[d]=x&67108863}return c!==0&&(this.words[d]=c,this.length++),a?this.ineg():this},o.prototype.muln=function(f){return this.clone().imuln(f)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(f){var a=F(f);if(a.length===0)return new o(1);for(var c=this,d=0;d=0);var a=f%26,c=(f-a)/26,d=67108863>>>26-a<<26-a,g;if(a!==0){var x=0;for(g=0;g>>26-a}x&&(this.words[g]=x,this.length++)}if(c!==0){for(g=this.length-1;g>=0;g--)this.words[g+c]=this.words[g];for(g=0;g=0);var d;a?d=(a-a%26)/26:d=0;var g=f%26,x=Math.min((f-g)/26,this.length),M=67108863^67108863>>>g<x)for(this.length-=x,s=0;s=0&&(v!==0||s>=d);s--){var k=this.words[s]|0;this.words[s]=v<<26-g|k>>>g,v=k&M}return l&&v!==0&&(l.words[l.length++]=v),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},o.prototype.ishrn=function(f,a,c){return i(this.negative===0),this.iushrn(f,a,c)},o.prototype.shln=function(f){return this.clone().ishln(f)},o.prototype.ushln=function(f){return this.clone().iushln(f)},o.prototype.shrn=function(f){return this.clone().ishrn(f)},o.prototype.ushrn=function(f){return this.clone().iushrn(f)},o.prototype.testn=function(f){i(typeof f=="number"&&f>=0);var a=f%26,c=(f-a)/26,d=1<=0);var a=f%26,c=(f-a)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=c)return this;if(a!==0&&c++,this.length=Math.min(c,this.length),a!==0){var d=67108863^67108863>>>a<=67108864;a++)this.words[a]-=67108864,a===this.length-1?this.words[a+1]=1:this.words[a+1]++;return this.length=Math.max(this.length,a+1),this},o.prototype.isubn=function(f){if(i(typeof f=="number"),i(f<67108864),f<0)return this.iaddn(-f);if(this.negative!==0)return this.negative=0,this.iaddn(f),this.negative=1,this;if(this.words[0]-=f,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var a=0;a>26)-(l/67108864|0),this.words[g+c]=x&67108863}for(;g>26,this.words[g+c]=x&67108863;if(M===0)return this._strip();for(i(M===-1),M=0,g=0;g>26,this.words[g]=x&67108863;return this.negative=1,this._strip()},o.prototype._wordDiv=function(f,a){var c=this.length-f.length,d=this.clone(),g=f,x=g.words[g.length-1]|0,M=this._countBits(x);c=26-M,c!==0&&(g=g.ushln(c),d.iushln(c),x=g.words[g.length-1]|0);var l=d.length-g.length,s;if(a!=="mod"){s=new o(null),s.length=l+1,s.words=new Array(s.length);for(var v=0;v=0;u--){var E=(d.words[g.length+u]|0)*67108864+(d.words[g.length+u-1]|0);for(E=Math.min(E/x|0,67108863),d._ishlnsubmul(g,E,u);d.negative!==0;)E--,d.negative=0,d._ishlnsubmul(g,1,u),d.isZero()||(d.negative^=1);s&&(s.words[u]=E)}return s&&s._strip(),d._strip(),a!=="div"&&c!==0&&d.iushrn(c),{div:s||null,mod:d}},o.prototype.divmod=function(f,a,c){if(i(!f.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var d,g,x;return this.negative!==0&&f.negative===0?(x=this.neg().divmod(f,a),a!=="mod"&&(d=x.div.neg()),a!=="div"&&(g=x.mod.neg(),c&&g.negative!==0&&g.iadd(f)),{div:d,mod:g}):this.negative===0&&f.negative!==0?(x=this.divmod(f.neg(),a),a!=="mod"&&(d=x.div.neg()),{div:d,mod:x.mod}):this.negative&f.negative?(x=this.neg().divmod(f.neg(),a),a!=="div"&&(g=x.mod.neg(),c&&g.negative!==0&&g.isub(f)),{div:x.div,mod:g}):f.length>this.length||this.cmp(f)<0?{div:new o(0),mod:this}:f.length===1?a==="div"?{div:this.divn(f.words[0]),mod:null}:a==="mod"?{div:null,mod:new o(this.modrn(f.words[0]))}:{div:this.divn(f.words[0]),mod:new o(this.modrn(f.words[0]))}:this._wordDiv(f,a)},o.prototype.div=function(f){return this.divmod(f,"div",!1).div},o.prototype.mod=function(f){return this.divmod(f,"mod",!1).mod},o.prototype.umod=function(f){return this.divmod(f,"mod",!0).mod},o.prototype.divRound=function(f){var a=this.divmod(f);if(a.mod.isZero())return a.div;var c=a.div.negative!==0?a.mod.isub(f):a.mod,d=f.ushrn(1),g=f.andln(1),x=c.cmp(d);return x<0||g===1&&x===0?a.div:a.div.negative!==0?a.div.isubn(1):a.div.iaddn(1)},o.prototype.modrn=function(f){var a=f<0;a&&(f=-f),i(f<=67108863);for(var c=(1<<26)%f,d=0,g=this.length-1;g>=0;g--)d=(c*d+(this.words[g]|0))%f;return a?-d:d},o.prototype.modn=function(f){return this.modrn(f)},o.prototype.idivn=function(f){var a=f<0;a&&(f=-f),i(f<=67108863);for(var c=0,d=this.length-1;d>=0;d--){var g=(this.words[d]|0)+c*67108864;this.words[d]=g/f|0,c=g%f}return this._strip(),a?this.ineg():this},o.prototype.divn=function(f){return this.clone().idivn(f)},o.prototype.egcd=function(f){i(f.negative===0),i(!f.isZero());var a=this,c=f.clone();a.negative!==0?a=a.umod(f):a=a.clone();for(var d=new o(1),g=new o(0),x=new o(0),M=new o(1),l=0;a.isEven()&&c.isEven();)a.iushrn(1),c.iushrn(1),++l;for(var s=c.clone(),v=a.clone();!a.isZero();){for(var k=0,u=1;!(a.words[0]&u)&&k<26;++k,u<<=1);if(k>0)for(a.iushrn(k);k-- >0;)(d.isOdd()||g.isOdd())&&(d.iadd(s),g.isub(v)),d.iushrn(1),g.iushrn(1);for(var E=0,_=1;!(c.words[0]&_)&&E<26;++E,_<<=1);if(E>0)for(c.iushrn(E);E-- >0;)(x.isOdd()||M.isOdd())&&(x.iadd(s),M.isub(v)),x.iushrn(1),M.iushrn(1);a.cmp(c)>=0?(a.isub(c),d.isub(x),g.isub(M)):(c.isub(a),x.isub(d),M.isub(g))}return{a:x,b:M,gcd:c.iushln(l)}},o.prototype._invmp=function(f){i(f.negative===0),i(!f.isZero());var a=this,c=f.clone();a.negative!==0?a=a.umod(f):a=a.clone();for(var d=new o(1),g=new o(0),x=c.clone();a.cmpn(1)>0&&c.cmpn(1)>0;){for(var M=0,l=1;!(a.words[0]&l)&&M<26;++M,l<<=1);if(M>0)for(a.iushrn(M);M-- >0;)d.isOdd()&&d.iadd(x),d.iushrn(1);for(var s=0,v=1;!(c.words[0]&v)&&s<26;++s,v<<=1);if(s>0)for(c.iushrn(s);s-- >0;)g.isOdd()&&g.iadd(x),g.iushrn(1);a.cmp(c)>=0?(a.isub(c),d.isub(g)):(c.isub(a),g.isub(d))}var k;return a.cmpn(1)===0?k=d:k=g,k.cmpn(0)<0&&k.iadd(f),k},o.prototype.gcd=function(f){if(this.isZero())return f.abs();if(f.isZero())return this.abs();var a=this.clone(),c=f.clone();a.negative=0,c.negative=0;for(var d=0;a.isEven()&&c.isEven();d++)a.iushrn(1),c.iushrn(1);do{for(;a.isEven();)a.iushrn(1);for(;c.isEven();)c.iushrn(1);var g=a.cmp(c);if(g<0){var x=a;a=c,c=x}else if(g===0||c.cmpn(1)===0)break;a.isub(c)}while(!0);return c.iushln(d)},o.prototype.invm=function(f){return this.egcd(f).a.umod(f)},o.prototype.isEven=function(){return(this.words[0]&1)===0},o.prototype.isOdd=function(){return(this.words[0]&1)===1},o.prototype.andln=function(f){return this.words[0]&f},o.prototype.bincn=function(f){i(typeof f=="number");var a=f%26,c=(f-a)/26,d=1<>>26,M&=67108863,this.words[x]=M}return g!==0&&(this.words[x]=g,this.length++),this},o.prototype.isZero=function(){return this.length===1&&this.words[0]===0},o.prototype.cmpn=function(f){var a=f<0;if(this.negative!==0&&!a)return-1;if(this.negative===0&&a)return 1;this._strip();var c;if(this.length>1)c=1;else{a&&(f=-f),i(f<=67108863,"Number is too big");var d=this.words[0]|0;c=d===f?0:df.length)return 1;if(this.length=0;c--){var d=this.words[c]|0,g=f.words[c]|0;if(d!==g){dg&&(a=1);break}}return a},o.prototype.gtn=function(f){return this.cmpn(f)===1},o.prototype.gt=function(f){return this.cmp(f)===1},o.prototype.gten=function(f){return this.cmpn(f)>=0},o.prototype.gte=function(f){return this.cmp(f)>=0},o.prototype.ltn=function(f){return this.cmpn(f)===-1},o.prototype.lt=function(f){return this.cmp(f)===-1},o.prototype.lten=function(f){return this.cmpn(f)<=0},o.prototype.lte=function(f){return this.cmp(f)<=0},o.prototype.eqn=function(f){return this.cmpn(f)===0},o.prototype.eq=function(f){return this.cmp(f)===0},o.red=function(f){return new Y(f)},o.prototype.toRed=function(f){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),f.convertTo(this)._forceRed(f)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(f){return this.red=f,this},o.prototype.forceRed=function(f){return i(!this.red,"Already a number in reduction context"),this._forceRed(f)},o.prototype.redAdd=function(f){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,f)},o.prototype.redIAdd=function(f){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,f)},o.prototype.redSub=function(f){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,f)},o.prototype.redISub=function(f){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,f)},o.prototype.redShl=function(f){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,f)},o.prototype.redMul=function(f){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.mul(this,f)},o.prototype.redIMul=function(f){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.imul(this,f)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(f){return i(this.red&&!f.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,f)};var H={k256:null,p224:null,p192:null,p25519:null};function z(A,f){this.name=A,this.p=new o(f,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}z.prototype._tmp=function(){var f=new o(null);return f.words=new Array(Math.ceil(this.n/13)),f},z.prototype.ireduce=function(f){var a=f,c;do this.split(a,this.tmp),a=this.imulK(a),a=a.iadd(this.tmp),c=a.bitLength();while(c>this.n);var d=c0?a.isub(this.p):a.strip!==void 0?a.strip():a._strip(),a},z.prototype.split=function(f,a){f.iushrn(this.n,0,a)},z.prototype.imulK=function(f){return f.imul(this.k)};function Pt(){z.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(Pt,z),Pt.prototype.split=function(f,a){for(var c=4194303,d=Math.min(f.length,9),g=0;g>>22,x=M}x>>>=22,f.words[g-10]=x,x===0&&f.length>10?f.length-=10:f.length-=9},Pt.prototype.imulK=function(f){f.words[f.length]=0,f.words[f.length+1]=0,f.length+=2;for(var a=0,c=0;c>>=26,f.words[c]=g,a=d}return a!==0&&(f.words[f.length++]=a),f},o._prime=function(f){if(H[f])return H[f];var a;if(f==="k256")a=new Pt;else if(f==="p224")a=new W;else if(f==="p192")a=new Rt;else if(f==="p25519")a=new Yt;else throw new Error("Unknown prime "+f);return H[f]=a,a};function Y(A){if(typeof A=="string"){var f=o._prime(A);this.m=f.p,this.prime=f}else i(A.gtn(1),"modulus must be greater than 1"),this.m=A,this.prime=null}Y.prototype._verify1=function(f){i(f.negative===0,"red works only with positives"),i(f.red,"red works only with red numbers")},Y.prototype._verify2=function(f,a){i((f.negative|a.negative)===0,"red works only with positives"),i(f.red&&f.red===a.red,"red works only with red numbers")},Y.prototype.imod=function(f){return this.prime?this.prime.ireduce(f)._forceRed(this):(w(f,f.umod(this.m)._forceRed(this)),f)},Y.prototype.neg=function(f){return f.isZero()?f.clone():this.m.sub(f)._forceRed(this)},Y.prototype.add=function(f,a){this._verify2(f,a);var c=f.add(a);return c.cmp(this.m)>=0&&c.isub(this.m),c._forceRed(this)},Y.prototype.iadd=function(f,a){this._verify2(f,a);var c=f.iadd(a);return c.cmp(this.m)>=0&&c.isub(this.m),c},Y.prototype.sub=function(f,a){this._verify2(f,a);var c=f.sub(a);return c.cmpn(0)<0&&c.iadd(this.m),c._forceRed(this)},Y.prototype.isub=function(f,a){this._verify2(f,a);var c=f.isub(a);return c.cmpn(0)<0&&c.iadd(this.m),c},Y.prototype.shl=function(f,a){return this._verify1(f),this.imod(f.ushln(a))},Y.prototype.imul=function(f,a){return this._verify2(f,a),this.imod(f.imul(a))},Y.prototype.mul=function(f,a){return this._verify2(f,a),this.imod(f.mul(a))},Y.prototype.isqr=function(f){return this.imul(f,f.clone())},Y.prototype.sqr=function(f){return this.mul(f,f)},Y.prototype.sqrt=function(f){if(f.isZero())return f.clone();var a=this.m.andln(3);if(i(a%2===1),a===3){var c=this.m.add(new o(1)).iushrn(2);return this.pow(f,c)}for(var d=this.m.subn(1),g=0;!d.isZero()&&d.andln(1)===0;)g++,d.iushrn(1);i(!d.isZero());var x=new o(1).toRed(this),M=x.redNeg(),l=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new o(2*s*s).toRed(this);this.pow(s,l).cmp(M)!==0;)s.redIAdd(M);for(var v=this.pow(s,d),k=this.pow(f,d.addn(1).iushrn(1)),u=this.pow(f,d),E=g;u.cmp(x)!==0;){for(var _=u,B=0;_.cmp(x)!==0;B++)_=_.redSqr();i(B=0;g--){for(var v=a.words[g],k=s-1;k>=0;k--){var u=v>>k&1;if(x!==d[0]&&(x=this.sqr(x)),u===0&&M===0){l=0;continue}M<<=1,M|=u,l++,!(l!==c&&(g!==0||k!==0))&&(x=this.mul(x,d[M]),l=0,M=0)}s=26}return x},Y.prototype.convertTo=function(f){var a=f.umod(this.m);return a===f?a.clone():a},Y.prototype.convertFrom=function(f){var a=f.clone();return a.red=null,a},o.mont=function(f){return new Vt(f)};function Vt(A){Y.call(this,A),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}n(Vt,Y),Vt.prototype.convertTo=function(f){return this.imod(f.ushln(this.shift))},Vt.prototype.convertFrom=function(f){var a=this.imod(f.mul(this.rinv));return a.red=null,a},Vt.prototype.imul=function(f,a){if(f.isZero()||a.isZero())return f.words[0]=0,f.length=1,f;var c=f.imul(a),d=c.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),g=c.isub(d).iushrn(this.shift),x=g;return g.cmp(this.m)>=0?x=g.isub(this.m):g.cmpn(0)<0&&(x=g.iadd(this.m)),x._forceRed(this)},Vt.prototype.mul=function(f,a){if(f.isZero()||a.isZero())return new o(0)._forceRed(this);var c=f.mul(a),d=c.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),g=c.isub(d).iushrn(this.shift),x=g;return g.cmp(this.m)>=0?x=g.isub(this.m):g.cmpn(0)<0&&(x=g.iadd(this.m)),x._forceRed(this)},Vt.prototype.invm=function(f){var a=this.imod(f._invmp(this.m).mul(this.r2));return a._forceRed(this)}})(e,Pn)})(jn);var K=jn.exports;const Qn="bignumber/5.7.0";var Rr=K.BN;const Ae=new L(Qn),wi={},Jn=9007199254740991;function Rs(e){return e!=null&&(V.isBigNumber(e)||typeof e=="number"&&e%1===0||typeof e=="string"&&!!e.match(/^-?[0-9]+$/)||Qt(e)||typeof e=="bigint"||ir(e))}let Gn=!1;class V{constructor(t,r){t!==wi&&Ae.throwError("cannot call constructor directly; use BigNumber.from",L.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=r,this._isBigNumber=!0,Object.freeze(this)}fromTwos(t){return Lt(j(this).fromTwos(t))}toTwos(t){return Lt(j(this).toTwos(t))}abs(){return this._hex[0]==="-"?V.from(this._hex.substring(1)):this}add(t){return Lt(j(this).add(j(t)))}sub(t){return Lt(j(this).sub(j(t)))}div(t){return V.from(t).isZero()&&Wt("division-by-zero","div"),Lt(j(this).div(j(t)))}mul(t){return Lt(j(this).mul(j(t)))}mod(t){const r=j(t);return r.isNeg()&&Wt("division-by-zero","mod"),Lt(j(this).umod(r))}pow(t){const r=j(t);return r.isNeg()&&Wt("negative-power","pow"),Lt(j(this).pow(r))}and(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Wt("unbound-bitwise-result","and"),Lt(j(this).and(r))}or(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Wt("unbound-bitwise-result","or"),Lt(j(this).or(r))}xor(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Wt("unbound-bitwise-result","xor"),Lt(j(this).xor(r))}mask(t){return(this.isNegative()||t<0)&&Wt("negative-width","mask"),Lt(j(this).maskn(t))}shl(t){return(this.isNegative()||t<0)&&Wt("negative-width","shl"),Lt(j(this).shln(t))}shr(t){return(this.isNegative()||t<0)&&Wt("negative-width","shr"),Lt(j(this).shrn(t))}eq(t){return j(this).eq(j(t))}lt(t){return j(this).lt(j(t))}lte(t){return j(this).lte(j(t))}gt(t){return j(this).gt(j(t))}gte(t){return j(this).gte(j(t))}isNegative(){return this._hex[0]==="-"}isZero(){return j(this).isZero()}toNumber(){try{return j(this).toNumber()}catch{Wt("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch{}return Ae.throwError("this platform does not support BigInt",L.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(arguments[0]===10?Gn||(Gn=!0,Ae.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?Ae.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",L.errors.UNEXPECTED_ARGUMENT,{}):Ae.throwError("BigNumber.toString does not accept parameters",L.errors.UNEXPECTED_ARGUMENT,{})),j(this).toString(10)}toHexString(){return this._hex}toJSON(t){return{type:"BigNumber",hex:this.toHexString()}}static from(t){if(t instanceof V)return t;if(typeof t=="string")return t.match(/^-?0x[0-9a-f]+$/i)?new V(wi,vr(t)):t.match(/^-?[0-9]+$/)?new V(wi,vr(new Rr(t))):Ae.throwArgumentError("invalid BigNumber string","value",t);if(typeof t=="number")return t%1&&Wt("underflow","BigNumber.from",t),(t>=Jn||t<=-Jn)&&Wt("overflow","BigNumber.from",t),V.from(String(t));const r=t;if(typeof r=="bigint")return V.from(r.toString());if(ir(r))return V.from(Kt(r));if(r)if(r.toHexString){const i=r.toHexString();if(typeof i=="string")return V.from(i)}else{let i=r._hex;if(i==null&&r.type==="BigNumber"&&(i=r.hex),typeof i=="string"&&(Qt(i)||i[0]==="-"&&Qt(i.substring(1))))return V.from(i)}return Ae.throwArgumentError("invalid BigNumber value","value",t)}static isBigNumber(t){return!!(t&&t._isBigNumber)}}function vr(e){if(typeof e!="string")return vr(e.toString(16));if(e[0]==="-")return e=e.substring(1),e[0]==="-"&&Ae.throwArgumentError("invalid hex","value",e),e=vr(e),e==="0x00"?e:"-"+e;if(e.substring(0,2)!=="0x"&&(e="0x"+e),e==="0x")return"0x00";for(e.length%2&&(e="0x0"+e.substring(2));e.length>4&&e.substring(0,4)==="0x00";)e="0x"+e.substring(4);return e}function Lt(e){return V.from(vr(e))}function j(e){const t=V.from(e).toHexString();return t[0]==="-"?new Rr("-"+t.substring(3),16):new Rr(t.substring(2),16)}function Wt(e,t,r){const i={fault:e,operation:t};return r!=null&&(i.value=r),Ae.throwError(e,L.errors.NUMERIC_FAULT,i)}function Os(e){return new Rr(e,36).toString(16)}const Ht=new L(Qn),mr={},Yn=V.from(0),Vn=V.from(-1);function Wn(e,t,r,i){const n={fault:t,operation:r};return i!==void 0&&(n.value=i),Ht.throwError(e,L.errors.NUMERIC_FAULT,n)}let gr="0";for(;gr.length<256;)gr+=gr;function xi(e){if(typeof e!="number")try{e=V.from(e).toNumber()}catch{}return typeof e=="number"&&e>=0&&e<=256&&!(e%1)?"1"+gr.substring(0,e):Ht.throwArgumentError("invalid decimal size","decimals",e)}function Mi(e,t){t==null&&(t=0);const r=xi(t);e=V.from(e);const i=e.lt(Yn);i&&(e=e.mul(Vn));let n=e.mod(r).toString();for(;n.length2&&Ht.throwArgumentError("too many decimal points","value",e);let o=n[0],h=n[1];for(o||(o="0"),h||(h="0");h[h.length-1]==="0";)h=h.substring(0,h.length-1);for(h.length>r.length-1&&Wn("fractional component exceeds decimals","underflow","parseFixed"),h===""&&(h="0");h.lengtht[h]==null?b:(typeof t[h]!==p&&Ht.throwArgumentError("invalid fixed format ("+h+" not "+p+")","format."+h,t[h]),t[h]);r=o("signed","boolean",r),i=o("width","number",i),n=o("decimals","number",n)}return i%8&&Ht.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",i),n>80&&Ht.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",n),new dr(mr,r,i,n)}}class Ut{constructor(t,r,i,n){t!==mr&&Ht.throwError("cannot use FixedNumber constructor; use FixedNumber.from",L.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=n,this._hex=r,this._value=i,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(t){this.format.name!==t.format.name&&Ht.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",t)}addUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.add(i),this.format.decimals,this.format)}subUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.sub(i),this.format.decimals,this.format)}mulUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.mul(i).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.mul(this.format._multiplier).div(i),this.format.decimals,this.format)}floor(){const t=this.toString().split(".");t.length===1&&t.push("0");let r=Ut.from(t[0],this.format);const i=!t[1].match(/^(0*)$/);return this.isNegative()&&i&&(r=r.subUnsafe(Xn.toFormat(r.format))),r}ceiling(){const t=this.toString().split(".");t.length===1&&t.push("0");let r=Ut.from(t[0],this.format);const i=!t[1].match(/^(0*)$/);return!this.isNegative()&&i&&(r=r.addUnsafe(Xn.toFormat(r.format))),r}round(t){t==null&&(t=0);const r=this.toString().split(".");if(r.length===1&&r.push("0"),(t<0||t>80||t%1)&&Ht.throwArgumentError("invalid decimal count","decimals",t),r[1].length<=t)return this;const i=Ut.from("1"+gr.substring(0,t),this.format),n=Ps.toFormat(this.format);return this.mulUnsafe(i).addUnsafe(n).floor().divUnsafe(i)}isZero(){return this._value==="0.0"||this._value==="0"}isNegative(){return this._value[0]==="-"}toString(){return this._value}toHexString(t){if(t==null)return this._hex;t%8&&Ht.throwArgumentError("invalid byte width","width",t);const r=V.from(this._hex).fromTwos(this.format.width).toTwos(t).toHexString();return oe(r,t/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(t){return Ut.fromString(this._value,t)}static fromValue(t,r,i){return i==null&&r!=null&&!Rs(r)&&(i=r,r=null),r==null&&(r=0),i==null&&(i="fixed"),Ut.fromString(Mi(t,r),dr.from(i))}static fromString(t,r){r==null&&(r="fixed");const i=dr.from(r),n=be(t,i.decimals);!i.signed&&n.lt(Yn)&&Wn("unsigned value cannot be negative","overflow","value",t);let o=null;i.signed?o=n.toTwos(i.width).toHexString():(o=n.toHexString(),o=oe(o,i.width/8));const h=Mi(n,i.decimals);return new Ut(mr,o,h,i)}static fromBytes(t,r){r==null&&(r="fixed");const i=dr.from(r);if(Ot(t).length>i.width/8)throw new Error("overflow");let n=V.from(t);i.signed&&(n=n.fromTwos(i.width));const o=n.toTwos((i.signed?0:1)+i.width).toHexString(),h=Mi(n,i.decimals);return new Ut(mr,o,h,i)}static from(t,r){if(typeof t=="string")return Ut.fromString(t,r);if(ir(t))return Ut.fromBytes(t,r);try{return Ut.fromValue(t,0,r)}catch(i){if(i.code!==L.errors.INVALID_ARGUMENT)throw i}return Ht.throwArgumentError("invalid FixedNumber value","value",t)}static isFixedNumber(t){return!!(t&&t._isFixedNumber)}}const Xn=Ut.from(1),Ps=Ut.from("0.5"),Ds="strings/5.7.0",Zn=new L(Ds);var Or;(function(e){e.current="",e.NFC="NFC",e.NFD="NFD",e.NFKC="NFKC",e.NFKD="NFKD"})(Or||(Or={}));var nr;(function(e){e.UNEXPECTED_CONTINUE="unexpected continuation byte",e.BAD_PREFIX="bad codepoint prefix",e.OVERRUN="string overrun",e.MISSING_CONTINUE="missing continuation byte",e.OUT_OF_RANGE="out of UTF-8 range",e.UTF16_SURROGATE="UTF-16 surrogate",e.OVERLONG="overlong representation"})(nr||(nr={}));function Fs(e,t,r,i,n){return Zn.throwArgumentError(`invalid codepoint at offset ${t}; ${e}`,"bytes",r)}function $n(e,t,r,i,n){if(e===nr.BAD_PREFIX||e===nr.UNEXPECTED_CONTINUE){let o=0;for(let h=t+1;h>6===2;h++)o++;return o}return e===nr.OVERRUN?r.length-t-1:0}function Ts(e,t,r,i,n){return e===nr.OVERLONG?(i.push(n),0):(i.push(65533),$n(e,t,r))}Object.freeze({error:Fs,ignore:$n,replace:Ts});function Ei(e,t=Or.current){t!=Or.current&&(Zn.checkNormalize(),e=e.normalize(t));let r=[];for(let i=0;i>6|192),r.push(n&63|128);else if((n&64512)==55296){i++;const o=e.charCodeAt(i);if(i>=e.length||(o&64512)!==56320)throw new Error("invalid utf-8 string");const h=65536+((n&1023)<<10)+(o&1023);r.push(h>>18|240),r.push(h>>12&63|128),r.push(h>>6&63|128),r.push(h&63|128)}else r.push(n>>12|224),r.push(n>>6&63|128),r.push(n&63|128)}return Ot(r)}function Us(e){if(e.length%4!==0)throw new Error("bad data");let t=[];for(let r=0;r{let o=n.split(":");r+=parseInt(o[0],16),i[r]=t(o[1])}),i}function tf(e){let t=0;return e.split(",").map(r=>{let i=r.split("-");i.length===1?i[1]="0":i[1]===""&&(i[1]="1");let n=t+parseInt(i[0],16);return t=parseInt(i[1],16),{l:n,h:t}})}tf("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(e=>parseInt(e,16)),Si("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),Si("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),Si("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",Us),tf("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");const ef="hash/5.7.0";function ks(e){e=atob(e);const t=[];for(let r=0;r0&&Array.isArray(p)?n(p,h-1):r.push(p)})};return n(e,t),r}function qs(e){const t={};for(let r=0;r>--b&1}const y=31,S=Math.pow(2,y),I=S>>>1,N=I>>1,C=S-1;let F=0;for(let H=0;H1;){let Yt=z+Pt>>>1;H>>1|w(),W=W<<1^I,Rt=(Rt^I)<<1|I|1;J=W,Bt=1+Rt-W}let G=i-4;return U.map(H=>{switch(H-G){case 3:return G+65792+(e[p++]<<16|e[p++]<<8|e[p++]);case 2:return G+256+(e[p++]<<8|e[p++]);case 1:return G+e[p++];default:return H-1}})}function Hs(e){let t=0;return()=>e[t++]}function zs(e){return Hs(Ks(e))}function Ls(e){return e&1?~e>>1:e>>1}function js(e,t){let r=Array(e);for(let i=0;it[h]):r}function Js(e){let t=[];for(;;){let r=e();if(r==0)break;t.push(Ys(r,e))}for(;;){let r=e()-1;if(r<0)break;t.push(Vs(r,e))}return qs(rf(t))}function Gs(e){let t=[];for(;;){let r=e();if(r==0)break;t.push(r)}return t}function ff(e,t,r){let i=Array(e).fill(void 0).map(()=>[]);for(let n=0;ni[h].push(o));return i}function Ys(e,t){let r=1+t(),i=t(),n=Gs(t),o=ff(n.length,1+e,t);return rf(o.map((h,p)=>{const b=h[0],m=h.slice(1);return Array(n[p]).fill(void 0).map((w,y)=>{let S=y*i;return[b+y*r,m.map(I=>I+S)]})}))}function Vs(e,t){let r=1+t();return ff(r,1+e,t).map(n=>[n[0],n.slice(1)])}function Ws(e){let t=Pr(e).sort((i,n)=>i-n);return r();function r(){let i=[];for(;;){let m=Pr(e,t);if(m.length==0)break;i.push({set:new Set(m),node:r()})}i.sort((m,w)=>w.set.size-m.set.size);let n=e(),o=n%3;n=n/3|0;let h=!!(n&1);n>>=1;let p=n==1,b=n==2;return{branches:i,valid:o,fe0f:h,save:p,check:b}}}function Xs(){return zs(ks("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"))}const Dr=Xs();new Set(Pr(Dr)),new Set(Pr(Dr)),Js(Dr),Ws(Dr),new L(ef);const Zs=new Uint8Array(32);Zs.fill(0);const $s=`Ethereum Signed Message: ++`;function of(e){return typeof e=="string"&&(e=Ei(e)),yi(Ss([Ei($s),Ei(String(e.length)),e]))}const t0="rlp/5.7.0";new L(t0);const e0="address/5.7.0",Ar=new L(e0);function sf(e){Qt(e,20)||Ar.throwArgumentError("invalid address","address",e),e=e.toLowerCase();const t=e.substring(2).split(""),r=new Uint8Array(40);for(let n=0;n<40;n++)r[n]=t[n].charCodeAt(0);const i=Ot(yi(r));for(let n=0;n<40;n+=2)i[n>>1]>>4>=8&&(t[n]=t[n].toUpperCase()),(i[n>>1]&15)>=8&&(t[n+1]=t[n+1].toUpperCase());return"0x"+t.join("")}const r0=9007199254740991;function i0(e){return Math.log10?Math.log10(e):Math.log(e)/Math.LN10}const Ni={};for(let e=0;e<10;e++)Ni[String(e)]=String(e);for(let e=0;e<26;e++)Ni[String.fromCharCode(65+e)]=String(10+e);const af=Math.floor(i0(r0));function n0(e){e=e.toUpperCase(),e=e.substring(4)+e.substring(0,2)+"00";let t=e.split("").map(i=>Ni[i]).join("");for(;t.length>=af;){let i=t.substring(0,af);t=parseInt(i,10)%97+t.substring(i.length)}let r=String(98-parseInt(t,10)%97);for(;r.length<2;)r="0"+r;return r}function f0(e){let t=null;if(typeof e!="string"&&Ar.throwArgumentError("invalid address","address",e),e.match(/^(0x)?[0-9a-fA-F]{40}$/))e.substring(0,2)!=="0x"&&(e="0x"+e),t=sf(e),e.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&t!==e&&Ar.throwArgumentError("bad address checksum","address",e);else if(e.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(e.substring(2,4)!==n0(e)&&Ar.throwArgumentError("bad icap checksum","address",e),t=Os(e.substring(4));t.length<40;)t="0"+t;t=sf("0x"+t)}else Ar.throwArgumentError("invalid address","address",e);return t}const o0="properties/5.7.0";new L(o0);function br(e,t,r){Object.defineProperty(e,t,{enumerable:!0,value:r,writable:!1})}new L(ef);const s0=new Uint8Array(32);s0.fill(0),V.from(-1);const a0=V.from(0),u0=V.from(1);V.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),oe(u0.toHexString(),32),oe(a0.toHexString(),32);var se={},Q={},yr=uf;function uf(e,t){if(!e)throw new Error(t||"Assertion failed")}uf.equal=function(t,r,i){if(t!=r)throw new Error(i||"Assertion failed: "+t+" != "+r)};var Ii={exports:{}};typeof Object.create=="function"?Ii.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Ii.exports=function(t,r){if(r){t.super_=r;var i=function(){};i.prototype=r.prototype,t.prototype=new i,t.prototype.constructor=t}};var h0=yr,c0=Ii.exports;Q.inherits=c0;function l0(e,t){return(e.charCodeAt(t)&64512)!==55296||t<0||t+1>=e.length?!1:(e.charCodeAt(t+1)&64512)===56320}function d0(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if(typeof e=="string")if(t){if(t==="hex")for(e=e.replace(/[^a-z0-9]+/ig,""),e.length%2!==0&&(e="0"+e),n=0;n>6|192,r[i++]=o&63|128):l0(e,n)?(o=65536+((o&1023)<<10)+(e.charCodeAt(++n)&1023),r[i++]=o>>18|240,r[i++]=o>>12&63|128,r[i++]=o>>6&63|128,r[i++]=o&63|128):(r[i++]=o>>12|224,r[i++]=o>>6&63|128,r[i++]=o&63|128)}else for(n=0;n>>24|e>>>8&65280|e<<8&16711680|(e&255)<<24;return t>>>0}Q.htonl=hf;function v0(e,t){for(var r="",i=0;i>>0}return o}Q.join32=m0;function g0(e,t){for(var r=new Array(e.length*4),i=0,n=0;i>>24,r[n+1]=o>>>16&255,r[n+2]=o>>>8&255,r[n+3]=o&255):(r[n+3]=o>>>24,r[n+2]=o>>>16&255,r[n+1]=o>>>8&255,r[n]=o&255)}return r}Q.split32=g0;function A0(e,t){return e>>>t|e<<32-t}Q.rotr32=A0;function b0(e,t){return e<>>32-t}Q.rotl32=b0;function y0(e,t){return e+t>>>0}Q.sum32=y0;function w0(e,t,r){return e+t+r>>>0}Q.sum32_3=w0;function x0(e,t,r,i){return e+t+r+i>>>0}Q.sum32_4=x0;function M0(e,t,r,i,n){return e+t+r+i+n>>>0}Q.sum32_5=M0;function E0(e,t,r,i){var n=e[t],o=e[t+1],h=i+o>>>0,p=(h>>0,e[t+1]=h}Q.sum64=E0;function S0(e,t,r,i){var n=t+i>>>0,o=(n>>0}Q.sum64_hi=S0;function N0(e,t,r,i){var n=t+i;return n>>>0}Q.sum64_lo=N0;function I0(e,t,r,i,n,o,h,p){var b=0,m=t;m=m+i>>>0,b+=m>>0,b+=m>>0,b+=m>>0}Q.sum64_4_hi=I0;function _0(e,t,r,i,n,o,h,p){var b=t+i+o+p;return b>>>0}Q.sum64_4_lo=_0;function B0(e,t,r,i,n,o,h,p,b,m){var w=0,y=t;y=y+i>>>0,w+=y>>0,w+=y>>0,w+=y>>0,w+=y>>0}Q.sum64_5_hi=B0;function C0(e,t,r,i,n,o,h,p,b,m){var w=t+i+o+p+m;return w>>>0}Q.sum64_5_lo=C0;function R0(e,t,r){var i=t<<32-r|e>>>r;return i>>>0}Q.rotr64_hi=R0;function O0(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}Q.rotr64_lo=O0;function P0(e,t,r){return e>>>r}Q.shr64_hi=P0;function D0(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}Q.shr64_lo=D0;var fr={},df=Q,F0=yr;function Fr(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}fr.BlockHash=Fr,Fr.prototype.update=function(t,r){if(t=df.toArray(t,r),this.pending?this.pending=this.pending.concat(t):this.pending=t,this.pendingTotal+=t.length,this.pending.length>=this._delta8){t=this.pending;var i=t.length%this._delta8;this.pending=t.slice(t.length-i,t.length),this.pending.length===0&&(this.pending=null),t=df.join32(t,0,t.length-i,this.endian);for(var n=0;n>>24&255,n[o++]=t>>>16&255,n[o++]=t>>>8&255,n[o++]=t&255}else for(n[o++]=t&255,n[o++]=t>>>8&255,n[o++]=t>>>16&255,n[o++]=t>>>24&255,n[o++]=0,n[o++]=0,n[o++]=0,n[o++]=0,h=8;h>>3}ae.g0_256=K0;function H0(e){return ue(e,17)^ue(e,19)^e>>>10}ae.g1_256=H0;var sr=Q,z0=fr,L0=ae,_i=sr.rotl32,wr=sr.sum32,j0=sr.sum32_5,Q0=L0.ft_1,gf=z0.BlockHash,J0=[1518500249,1859775393,2400959708,3395469782];function he(){if(!(this instanceof he))return new he;gf.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}sr.inherits(he,gf);var G0=he;he.blockSize=512,he.outSize=160,he.hmacStrength=80,he.padLength=64,he.prototype._update=function(t,r){for(var i=this.W,n=0;n<16;n++)i[n]=t[r+n];for(;nthis.blockSize&&(t=new this.Hash().update(t).digest()),Da(t.length<=this.blockSize);for(var r=t.length;r>8,S=w&255;y?b.push(y,S):b.push(S)}return b}r.toArray=i;function n(h){return h.length===1?"0"+h:h}r.zero2=n;function o(h){for(var p="",b=0;b(S>>1)-1?C=(S>>1)-F:C=F,I.isubn(C)):C=0,y[N]=C,I.iushrn(1)}return y}r.getNAF=i;function n(b,m){var w=[[],[]];b=b.clone(),m=m.clone();for(var y=0,S=0,I;b.cmpn(-y)>0||m.cmpn(-S)>0;){var N=b.andln(3)+y&3,C=m.andln(3)+S&3;N===3&&(N=-1),C===3&&(C=-1);var F;N&1?(I=b.andln(7)+y&7,(I===3||I===5)&&C===2?F=-N:F=N):F=0,w[0].push(F);var U;C&1?(I=m.andln(7)+S&7,(I===3||I===5)&&N===2?U=-C:U=C):U=0,w[1].push(U),2*y===F+1&&(y=1-y),2*S===U+1&&(S=1-S),b.iushrn(1),m.iushrn(1)}return w}r.getJSF=n;function o(b,m,w){var y="_"+m;b.prototype[m]=function(){return this[y]!==void 0?this[y]:this[y]=w.call(this)}}r.cachedProperty=o;function h(b){return typeof b=="string"?r.toArray(b,"hex"):b}r.parseBytes=h;function p(b){return new K(b,"hex","le")}r.intFromLE=p}),Ur=Jt.getNAF,Ua=Jt.getJSF,kr=Jt.assert;function Ce(e,t){this.type=e,this.p=new K(t.p,16),this.red=t.prime?K.red(t.prime):K.mont(this.p),this.zero=new K(0).toRed(this.red),this.one=new K(1).toRed(this.red),this.two=new K(2).toRed(this.red),this.n=t.n&&new K(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var Ze=Ce;Ce.prototype.point=function(){throw new Error("Not implemented")},Ce.prototype.validate=function(){throw new Error("Not implemented")},Ce.prototype._fixedNafMul=function(t,r){kr(t.precomputed);var i=t._getDoubles(),n=Ur(r,1,this._bitLength),o=(1<=p;m--)b=(b<<1)+n[m];h.push(b)}for(var w=this.jpoint(null,null,null),y=this.jpoint(null,null,null),S=o;S>0;S--){for(p=0;p=0;b--){for(var m=0;b>=0&&h[b]===0;b--)m++;if(b>=0&&m++,p=p.dblp(m),b<0)break;var w=h[b];kr(w!==0),t.type==="affine"?w>0?p=p.mixedAdd(o[w-1>>1]):p=p.mixedAdd(o[-w-1>>1].neg()):w>0?p=p.add(o[w-1>>1]):p=p.add(o[-w-1>>1].neg())}return t.type==="affine"?p.toP():p},Ce.prototype._wnafMulAdd=function(t,r,i,n,o){var h=this._wnafT1,p=this._wnafT2,b=this._wnafT3,m=0,w,y,S;for(w=0;w=1;w-=2){var N=w-1,C=w;if(h[N]!==1||h[C]!==1){b[N]=Ur(i[N],h[N],this._bitLength),b[C]=Ur(i[C],h[C],this._bitLength),m=Math.max(b[N].length,m),m=Math.max(b[C].length,m);continue}var F=[r[N],null,null,r[C]];r[N].y.cmp(r[C].y)===0?(F[1]=r[N].add(r[C]),F[2]=r[N].toJ().mixedAdd(r[C].neg())):r[N].y.cmp(r[C].y.redNeg())===0?(F[1]=r[N].toJ().mixedAdd(r[C]),F[2]=r[N].add(r[C].neg())):(F[1]=r[N].toJ().mixedAdd(r[C]),F[2]=r[N].toJ().mixedAdd(r[C].neg()));var U=[-3,-1,-5,-7,0,7,5,1,3],J=Ua(i[N],i[C]);for(m=Math.max(J[0].length,m),b[N]=new Array(m),b[C]=new Array(m),y=0;y=0;w--){for(var Pt=0;w>=0;){var W=!0;for(y=0;y=0&&Pt++,H=H.dblp(Pt),w<0)break;for(y=0;y0?S=p[y][Rt-1>>1]:Rt<0&&(S=p[y][-Rt-1>>1].neg()),S.type==="affine"?H=H.mixedAdd(S):H=H.add(S))}}for(w=0;w=Math.ceil((t.bitLength()+1)/r.step):!1},Xt.prototype._getDoubles=function(t,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var i=[this],n=this,o=0;o=0&&(I=m,N=w),y.negative&&(y=y.neg(),S=S.neg()),I.negative&&(I=I.neg(),N=N.neg()),[{a:y,b:S},{a:I,b:N}]},Zt.prototype._endoSplit=function(t){var r=this.endo.basis,i=r[0],n=r[1],o=n.b.mul(t).divRound(this.n),h=i.b.neg().mul(t).divRound(this.n),p=o.mul(i.a),b=h.mul(n.a),m=o.mul(i.b),w=h.mul(n.b),y=t.sub(p).sub(b),S=m.add(w).neg();return{k1:y,k2:S}},Zt.prototype.pointFromX=function(t,r){t=new K(t,16),t.red||(t=t.toRed(this.red));var i=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=i.redSqrt();if(n.redSqr().redSub(i).cmp(this.zero)!==0)throw new Error("invalid point");var o=n.fromRed().isOdd();return(r&&!o||!r&&o)&&(n=n.redNeg()),this.point(t,n)},Zt.prototype.validate=function(t){if(t.inf)return!0;var r=t.x,i=t.y,n=this.a.redMul(r),o=r.redSqr().redMul(r).redIAdd(n).redIAdd(this.b);return i.redSqr().redISub(o).cmpn(0)===0},Zt.prototype._endoWnafMulAdd=function(t,r,i){for(var n=this._endoWnafT1,o=this._endoWnafT2,h=0;h":""},Ft.prototype.isInfinity=function(){return this.inf},Ft.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(this.x.cmp(t.x)===0)return this.curve.point(null,null);var r=this.y.redSub(t.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(t.x).redInvm()));var i=r.redSqr().redISub(this.x).redISub(t.x),n=r.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,n)},Ft.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(t.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,i=this.x.redSqr(),n=t.redInvm(),o=i.redAdd(i).redIAdd(i).redIAdd(r).redMul(n),h=o.redSqr().redISub(this.x.redAdd(this.x)),p=o.redMul(this.x.redSub(h)).redISub(this.y);return this.curve.point(h,p)},Ft.prototype.getX=function(){return this.x.fromRed()},Ft.prototype.getY=function(){return this.y.fromRed()},Ft.prototype.mul=function(t){return t=new K(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},Ft.prototype.mulAdd=function(t,r,i){var n=[this,r],o=[t,i];return this.curve.endo?this.curve._endoWnafMulAdd(n,o):this.curve._wnafMulAdd(1,n,o,2)},Ft.prototype.jmulAdd=function(t,r,i){var n=[this,r],o=[t,i];return this.curve.endo?this.curve._endoWnafMulAdd(n,o,!0):this.curve._wnafMulAdd(1,n,o,2,!0)},Ft.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||this.x.cmp(t.x)===0&&this.y.cmp(t.y)===0)},Ft.prototype.neg=function(t){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var i=this.precomputed,n=function(o){return o.neg()};r.precomputed={naf:i.naf&&{wnd:i.naf.wnd,points:i.naf.points.map(n)},doubles:i.doubles&&{step:i.doubles.step,points:i.doubles.points.map(n)}}}return r},Ft.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var t=this.curve.jpoint(this.x,this.y,this.curve.one);return t};function Tt(e,t,r,i){Ze.BasePoint.call(this,e,"jacobian"),t===null&&r===null&&i===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new K(0)):(this.x=new K(t,16),this.y=new K(r,16),this.z=new K(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}Di(Tt,Ze.BasePoint),Zt.prototype.jpoint=function(t,r,i){return new Tt(this,t,r,i)},Tt.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),r=t.redSqr(),i=this.x.redMul(r),n=this.y.redMul(r).redMul(t);return this.curve.point(i,n)},Tt.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},Tt.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var r=t.z.redSqr(),i=this.z.redSqr(),n=this.x.redMul(r),o=t.x.redMul(i),h=this.y.redMul(r.redMul(t.z)),p=t.y.redMul(i.redMul(this.z)),b=n.redSub(o),m=h.redSub(p);if(b.cmpn(0)===0)return m.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var w=b.redSqr(),y=w.redMul(b),S=n.redMul(w),I=m.redSqr().redIAdd(y).redISub(S).redISub(S),N=m.redMul(S.redISub(I)).redISub(h.redMul(y)),C=this.z.redMul(t.z).redMul(b);return this.curve.jpoint(I,N,C)},Tt.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var r=this.z.redSqr(),i=this.x,n=t.x.redMul(r),o=this.y,h=t.y.redMul(r).redMul(this.z),p=i.redSub(n),b=o.redSub(h);if(p.cmpn(0)===0)return b.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var m=p.redSqr(),w=m.redMul(p),y=i.redMul(m),S=b.redSqr().redIAdd(w).redISub(y).redISub(y),I=b.redMul(y.redISub(S)).redISub(o.redMul(w)),N=this.z.redMul(p);return this.curve.jpoint(S,I,N)},Tt.prototype.dblp=function(t){if(t===0)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var i=this;for(r=0;r=0)return!1;if(i.redIAdd(o),this.x.cmp(i)===0)return!0}},Tt.prototype.inspect=function(){return this.isInfinity()?"":""},Tt.prototype.isInfinity=function(){return this.z.cmpn(0)===0};var qr=cr(function(e,t){var r=t;r.base=Ze,r.short=qa,r.mont=null,r.edwards=null}),Kr=cr(function(e,t){var r=t,i=Jt.assert;function n(p){p.type==="short"?this.curve=new qr.short(p):p.type==="edwards"?this.curve=new qr.edwards(p):this.curve=new qr.mont(p),this.g=this.curve.g,this.n=this.curve.n,this.hash=p.hash,i(this.g.validate(),"Invalid curve"),i(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}r.PresetCurve=n;function o(p,b){Object.defineProperty(r,p,{configurable:!0,enumerable:!0,get:function(){var m=new n(b);return Object.defineProperty(r,p,{configurable:!0,enumerable:!0,value:m}),m}})}o("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:se.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),o("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:se.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),o("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:se.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),o("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:se.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),o("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:se.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),o("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:se.sha256,gRed:!1,g:["9"]}),o("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:se.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var h;try{h=null.crash()}catch{h=void 0}o("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:se.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",h]})});function Re(e){if(!(this instanceof Re))return new Re(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=fe.toArray(e.entropy,e.entropyEnc||"hex"),r=fe.toArray(e.nonce,e.nonceEnc||"hex"),i=fe.toArray(e.pers,e.persEnc||"hex");Pi(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,r,i)}var Of=Re;Re.prototype._init=function(t,r,i){var n=t.concat(r).concat(i);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var o=0;o=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(i||[])),this._reseed=1},Re.prototype.generate=function(t,r,i,n){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(n=i,i=r,r=null),i&&(i=fe.toArray(i,n||"hex"),this._update(i));for(var o=[];o.length"};var Ka=Jt.assert;function Hr(e,t){if(e instanceof Hr)return e;this._importDER(e,t)||(Ka(e.r&&e.s,"Signature without r or s"),this.r=new K(e.r,16),this.s=new K(e.s,16),e.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}var zr=Hr;function Ha(){this.place=0}function Ui(e,t){var r=e[t.place++];if(!(r&128))return r;var i=r&15;if(i===0||i>4)return!1;for(var n=0,o=0,h=t.place;o>>=0;return n<=127?!1:(t.place=h,n)}function Pf(e){for(var t=0,r=e.length-1;!e[t]&&!(e[t+1]&128)&&t>>3);for(e.push(r|128);--r;)e.push(t>>>(r<<3)&255);e.push(t)}Hr.prototype.toDER=function(t){var r=this.r.toArray(),i=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),i[0]&128&&(i=[0].concat(i)),r=Pf(r),i=Pf(i);!i[0]&&!(i[1]&128);)i=i.slice(1);var n=[2];ki(n,r.length),n=n.concat(r),n.push(2),ki(n,i.length);var o=n.concat(i),h=[48];return ki(h,o.length),h=h.concat(o),Jt.encode(h,t)};var za=function(){throw new Error("unsupported")},Df=Jt.assert;function $t(e){if(!(this instanceof $t))return new $t(e);typeof e=="string"&&(Df(Object.prototype.hasOwnProperty.call(Kr,e),"Unknown curve "+e),e=Kr[e]),e instanceof Kr.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}var La=$t;$t.prototype.keyPair=function(t){return new Ti(this,t)},$t.prototype.keyFromPrivate=function(t,r){return Ti.fromPrivate(this,t,r)},$t.prototype.keyFromPublic=function(t,r){return Ti.fromPublic(this,t,r)},$t.prototype.genKeyPair=function(t){t||(t={});for(var r=new Of({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||za(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),i=this.n.byteLength(),n=this.n.sub(new K(2));;){var o=new K(r.generate(i));if(!(o.cmp(n)>0))return o.iaddn(1),this.keyFromPrivate(o)}},$t.prototype._truncateToN=function(t,r){var i=t.byteLength()*8-this.n.bitLength();return i>0&&(t=t.ushrn(i)),!r&&t.cmp(this.n)>=0?t.sub(this.n):t},$t.prototype.sign=function(t,r,i,n){typeof i=="object"&&(n=i,i=null),n||(n={}),r=this.keyFromPrivate(r,i),t=this._truncateToN(new K(t,16));for(var o=this.n.byteLength(),h=r.getPrivate().toArray("be",o),p=t.toArray("be",o),b=new Of({hash:this.hash,entropy:h,nonce:p,pers:n.pers,persEnc:n.persEnc||"utf8"}),m=this.n.sub(new K(1)),w=0;;w++){var y=n.k?n.k(w):new K(b.generate(this.n.byteLength()));if(y=this._truncateToN(y,!0),!(y.cmpn(1)<=0||y.cmp(m)>=0)){var S=this.g.mul(y);if(!S.isInfinity()){var I=S.getX(),N=I.umod(this.n);if(N.cmpn(0)!==0){var C=y.invm(this.n).mul(N.mul(r.getPrivate()).iadd(t));if(C=C.umod(this.n),C.cmpn(0)!==0){var F=(S.getY().isOdd()?1:0)|(I.cmp(N)!==0?2:0);return n.canonical&&C.cmp(this.nh)>0&&(C=this.n.sub(C),F^=1),new zr({r:N,s:C,recoveryParam:F})}}}}}},$t.prototype.verify=function(t,r,i,n){t=this._truncateToN(new K(t,16)),i=this.keyFromPublic(i,n),r=new zr(r,"hex");var o=r.r,h=r.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0||h.cmpn(1)<0||h.cmp(this.n)>=0)return!1;var p=h.invm(this.n),b=p.mul(t).umod(this.n),m=p.mul(o).umod(this.n),w;return this.curve._maxwellTrick?(w=this.g.jmulAdd(b,i.getPublic(),m),w.isInfinity()?!1:w.eqXToP(o)):(w=this.g.mulAdd(b,i.getPublic(),m),w.isInfinity()?!1:w.getX().umod(this.n).cmp(o)===0)},$t.prototype.recoverPubKey=function(e,t,r,i){Df((3&r)===r,"The recovery param is more than two bits"),t=new zr(t,i);var n=this.n,o=new K(e),h=t.r,p=t.s,b=r&1,m=r>>1;if(h.cmp(this.curve.p.umod(this.curve.n))>=0&&m)throw new Error("Unable to find sencond key candinate");m?h=this.curve.pointFromX(h.add(this.curve.n),b):h=this.curve.pointFromX(h,b);var w=t.r.invm(n),y=n.sub(o).mul(w).umod(n),S=p.mul(w).umod(n);return this.g.mulAdd(y,h,S)},$t.prototype.getKeyRecoveryParam=function(e,t,r,i){if(t=new zr(t,i),t.recoveryParam!==null)return t.recoveryParam;for(var n=0;n<4;n++){var o;try{o=this.recoverPubKey(e,t,n)}catch{continue}if(o.eq(r))return n}throw new Error("Unable to find valid recovery factor")};var ja=cr(function(e,t){var r=t;r.version="6.5.4",r.utils=Jt,r.rand=function(){throw new Error("unsupported")},r.curve=qr,r.curves=Kr,r.ec=La,r.eddsa=null}),Qa=ja.ec;const Ja="signing-key/5.7.0",qi=new L(Ja);let Ki=null;function ve(){return Ki||(Ki=new Qa("secp256k1")),Ki}class Ga{constructor(t){br(this,"curve","secp256k1"),br(this,"privateKey",Kt(t)),Is(this.privateKey)!==32&&qi.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const r=ve().keyFromPrivate(Ot(this.privateKey));br(this,"publicKey","0x"+r.getPublic(!1,"hex")),br(this,"compressedPublicKey","0x"+r.getPublic(!0,"hex")),br(this,"_isSigningKey",!0)}_addPoint(t){const r=ve().keyFromPublic(Ot(this.publicKey)),i=ve().keyFromPublic(Ot(t));return"0x"+r.pub.add(i.pub).encodeCompressed("hex")}signDigest(t){const r=ve().keyFromPrivate(Ot(this.privateKey)),i=Ot(t);i.length!==32&&qi.throwArgumentError("bad digest length","digest",t);const n=r.sign(i,{canonical:!0});return Ln({recoveryParam:n.recoveryParam,r:oe("0x"+n.r.toString(16),32),s:oe("0x"+n.s.toString(16),32)})}computeSharedSecret(t){const r=ve().keyFromPrivate(Ot(this.privateKey)),i=ve().keyFromPublic(Ot(Ff(t)));return oe("0x"+r.derive(i.getPublic()).toString(16),32)}static isSigningKey(t){return!!(t&&t._isSigningKey)}}function Ya(e,t){const r=Ln(t),i={r:Ot(r.r),s:Ot(r.s)};return"0x"+ve().recoverPubKey(Ot(e),i,r.recoveryParam).encode("hex",!1)}function Ff(e,t){const r=Ot(e);if(r.length===32){const i=new Ga(r);return t?"0x"+ve().keyFromPrivate(r).getPublic(!0,"hex"):i.publicKey}else{if(r.length===33)return t?Kt(r):"0x"+ve().keyFromPublic(r).getPublic(!1,"hex");if(r.length===65)return t?"0x"+ve().keyFromPublic(r).getPublic(!0,"hex"):Kt(r)}return qi.throwArgumentError("invalid public or private key","key","[REDACTED]")}const Va="transactions/5.7.0";new L(Va);var Tf;(function(e){e[e.legacy=0]="legacy",e[e.eip2930=1]="eip2930",e[e.eip1559=2]="eip1559"})(Tf||(Tf={}));function Wa(e){const t=Ff(e);return f0(zn(yi(zn(t,1)),12))}function Xa(e,t){return Wa(Ya(Ot(e),t))}const Za="https://rpc.walletconnect.com/v1";async function Uf(e,t,r,i,n,o){switch(r.t){case"eip191":return kf(e,t,r.s);case"eip1271":return await qf(e,t,r.s,i,n,o);default:throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${r.t}`)}}function kf(e,t,r){return Xa(of(t),r).toLowerCase()===e.toLowerCase()}async function qf(e,t,r,i,n,o){try{const h="0x1626ba7e",p="0000000000000000000000000000000000000000000000000000000000000040",b="0000000000000000000000000000000000000000000000000000000000000041",m=r.substring(2),w=of(t).substring(2),y=h+w+p+b+m,S=await fetch(`${o||Za}/?chainId=${i}&projectId=${n}`,{method:"POST",body:JSON.stringify({id:$a(),jsonrpc:"2.0",method:"eth_call",params:[{to:e,data:y},"latest"]})}),{result:I}=await S.json();return I?I.slice(0,h.length).toLowerCase()===h.toLowerCase():!1}catch(h){return console.error("isValidEip1271Signature: ",h),!1}}function $a(){return Date.now()+Math.floor(Math.random()*1e3)}var tu=Object.defineProperty,eu=Object.defineProperties,ru=Object.getOwnPropertyDescriptors,Kf=Object.getOwnPropertySymbols,iu=Object.prototype.hasOwnProperty,nu=Object.prototype.propertyIsEnumerable,Hf=(e,t,r)=>t in e?tu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Hi=(e,t)=>{for(var r in t||(t={}))iu.call(t,r)&&Hf(e,r,t[r]);if(Kf)for(var r of Kf(t))nu.call(t,r)&&Hf(e,r,t[r]);return e},zf=(e,t)=>eu(e,ru(t));const fu="did:pkh:",Lr=e=>e?.split(":"),zi=e=>{const t=e&&Lr(e);if(t)return e.includes(fu)?t[3]:t[1]},ou=e=>{const t=e&&Lr(e);if(t)return t[2]+":"+t[3]},Li=e=>{const t=e&&Lr(e);if(t)return t.pop()};async function su(e){const{cacao:t,projectId:r}=e,{s:i,p:n}=t,o=Lf(n,n.iss),h=Li(n.iss);return await Uf(h,o,i,zi(n.iss),r)}const Lf=(e,t)=>{const r=`${e.domain} wants you to sign in with your Ethereum account:`,i=Li(t);if(!e.aud&&!e.uri)throw new Error("Either `aud` or `uri` is required to construct the message");let n=e.statement||void 0;const o=`URI: ${e.aud||e.uri}`,h=`Version: ${e.version}`,p=`Chain ID: ${zi(t)}`,b=`Nonce: ${e.nonce}`,m=`Issued At: ${e.iat}`,w=e.resources?`Resources:${e.resources.map(S=>` + - ${S}`).join("")}`:void 0,y=Qr(e.resources);if(y){const S=Oe(y);n=Ji(n,S)}return[r,i,"",n,"",o,h,p,b,m,w].filter(S=>S!=null).join(` +-`)};function su(e,t,r){return r.includes("did:pkh:")||(r=`did:pkh:${r}`),{h:{t:"caip122"},p:{iss:r,domain:e.domain,aud:e.aud,version:e.version,nonce:e.nonce,iat:e.iat,statement:e.statement,requestId:e.requestId,resources:e.resources,nbf:e.nbf,exp:e.exp},s:t}}function au(e){var t;const{authPayload:r,chains:i,methods:n}=e,o=r.statement||"";if(!(i!=null&&i.length))return r;const h=r.chains,p=mi(h,i);if(!(p!=null&&p.length))throw new Error("No supported chains");const b=Lf(r.resources);if(!b)return r;me(b);const m=jf(b,"eip155");let w=r?.resources||[];if(m!=null&&m.length){const y=Qf(m),S=mi(y,n);if(!(S!=null&&S.length))throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(y)}, supported: ${JSON.stringify(n)}`);const I=ji("request",S,{chains:p}),N=Vf(b,"eip155",I);w=((t=r?.resources)==null?void 0:t.slice(0,-1))||[],w.push(jr(N))}return Hf(Hi({},r),{statement:Xf(o,Qr(w)),chains:p,resources:r!=null&&r.resources||w.length>0?w:void 0})}function Lf(e){const t=Qr(e);if(t&&Qi(t))return Oe(t)}function uu(e,t){var r;return(r=e?.att)==null?void 0:r.hasOwnProperty(t)}function jf(e,t){var r,i;return(r=e?.att)!=null&&r[t]?Object.keys((i=e?.att)==null?void 0:i[t]):[]}function hu(e){return e?.map(t=>Object.keys(t))||[]}function Qf(e){return e?.map(t=>{var r;return(r=t.split("/"))==null?void 0:r[1]})||[]}function Jf(e){return Buffer.from(JSON.stringify(e)).toString("base64")}function Gf(e){return JSON.parse(Buffer.from(e,"base64").toString("utf-8"))}function me(e){if(!e)throw new Error("No recap provided, value is undefined");if(!e.att)throw new Error("No `att` property found");const t=Object.keys(e.att);if(!(t!=null&&t.length))throw new Error("No resources found in `att` property");t.forEach(r=>{const i=e.att[r];if(Array.isArray(i))throw new Error(`Resource must be an object: ${r}`);if(typeof i!="object")throw new Error(`Resource must be an object: ${r}`);if(!Object.keys(i).length)throw new Error(`Resource object is empty: ${r}`);Object.keys(i).forEach(n=>{const o=i[n];if(!Array.isArray(o))throw new Error(`Ability limits ${n} must be an array of objects, found: ${o}`);if(!o.length)throw new Error(`Value of ${n} is empty array, must be an array with objects`);o.forEach(h=>{if(typeof h!="object")throw new Error(`Ability limits (${n}) must be an array of objects, found: ${h}`)})})})}function Yf(e,t,r,i={}){return r?.sort((n,o)=>n.localeCompare(o)),{att:{[e]:ji(t,r,i)}}}function Vf(e,t,r){var i;return e.att[t]=Hi({},r),((i=Object.keys(e.att))==null?void 0:i.sort((n,o)=>n.localeCompare(o))).reduce((n,o)=>(n.att[o]=e.att[o],n),{att:{}})}function ji(e,t,r={}){t=t?.sort((n,o)=>n.localeCompare(o));const i=t.map(n=>({[`${e}/${n}`]:[r]}));return Object.assign({},...i)}function jr(e){return me(e),`urn:recap:${Jf(e).replace(/=/g,"")}`}function Oe(e){const t=Gf(e.replace("urn:recap:",""));return me(t),t}function cu(e,t,r){const i=Yf(e,t,r);return jr(i)}function Qi(e){return e&&e.includes("urn:recap:")}function lu(e,t){const r=Oe(e),i=Oe(t),n=Wf(r,i);return jr(n)}function Wf(e,t){me(e),me(t);const r=Object.keys(e.att).concat(Object.keys(t.att)).sort((n,o)=>n.localeCompare(o)),i={att:{}};return r.forEach(n=>{var o,h;Object.keys(((o=e.att)==null?void 0:o[n])||{}).concat(Object.keys(((h=t.att)==null?void 0:h[n])||{})).sort((p,b)=>p.localeCompare(b)).forEach(p=>{var b,m;i.att[n]=Hf(Hi({},i.att[n]),{[p]:((b=e.att[n])==null?void 0:b[p])||((m=t.att[n])==null?void 0:m[p])})})}),i}function Ji(e="",t){me(t);const r="I further authorize the stated URI to perform the following actions on my behalf: ";if(e.includes(r))return e;const i=[];let n=0;Object.keys(t.att).forEach(p=>{const b=Object.keys(t.att[p]).map(y=>({ability:y.split("/")[0],action:y.split("/")[1]}));b.sort((y,S)=>y.action.localeCompare(S.action));const m={};b.forEach(y=>{m[y.ability]||(m[y.ability]=[]),m[y.ability].push(y.action)});const w=Object.keys(m).map(y=>(n++,`(${n}) '${y}': '${m[y].join("', '")}' for '${p}'.`));i.push(w.join(", ").replace(".,","."))});const o=i.join(" "),h=`${r}${o}`;return`${e?e+" ":""}${h}`}function du(e){var t;const r=Oe(e);me(r);const i=(t=r.att)==null?void 0:t.eip155;return i?Object.keys(i).map(n=>n.split("/")[1]):[]}function pu(e){const t=Oe(e);me(t);const r=[];return Object.values(t.att).forEach(i=>{Object.values(i).forEach(n=>{var o;(o=n?.[0])!=null&&o.chains&&r.push(n[0].chains)})}),[...new Set(r.flat())]}function Xf(e,t){if(!t)return e;const r=Oe(t);return me(r),Ji(e,r)}function Qr(e){if(!e)return;const t=e?.[e.length-1];return Qi(t)?t:void 0}const Gi="base10",zt="base16",Jr="base64pad",Gr="utf8",Yi=0,lr=1,vu=0,Zf=1,Vi=12,Wi=32;function mu(){const e=cn.generateKeyPair();return{privateKey:te(e.secretKey,zt),publicKey:te(e.publicKey,zt)}}function gu(){const e=un(Wi);return te(e,zt)}function Au(e,t){const r=cn.sharedKey(ee(e,zt),ee(t,zt),!0),i=new Uo(ko,r).expand(Wi);return te(i,zt)}function bu(e){const t=hn(ee(e,zt));return te(t,zt)}function yu(e){const t=hn(ee(e,Gr));return te(t,zt)}function $f(e){return ee(`${e}`,Gi)}function Mr(e){return Number(te(e,Gi))}function wu(e){const t=$f(typeof e.type<"u"?e.type:Yi);if(Mr(t)===lr&&typeof e.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");const r=typeof e.senderPublicKey<"u"?ee(e.senderPublicKey,zt):void 0,i=typeof e.iv<"u"?ee(e.iv,zt):un(Vi),n=new an(ee(e.symKey,zt)).seal(i,ee(e.message,Gr));return to({type:t,sealed:n,iv:i,senderPublicKey:r})}function xu(e){const t=new an(ee(e.symKey,zt)),{sealed:r,iv:i}=Xi(e.encoded),n=t.open(i,r);if(n===null)throw new Error("Failed to decrypt");return te(n,Gr)}function to(e){if(Mr(e.type)===lr){if(typeof e.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");return te(ln([e.type,e.senderPublicKey,e.iv,e.sealed]),Jr)}return te(ln([e.type,e.iv,e.sealed]),Jr)}function Xi(e){const t=ee(e,Jr),r=t.slice(vu,Zf),i=Zf;if(Mr(r)===lr){const p=i+Wi,b=p+Vi,m=t.slice(i,p),w=t.slice(p,b),y=t.slice(b);return{type:r,sealed:y,iv:w,senderPublicKey:m}}const n=i+Vi,o=t.slice(i,n),h=t.slice(n);return{type:r,sealed:h,iv:o}}function Mu(e,t){const r=Xi(e);return eo({type:Mr(r.type),senderPublicKey:typeof r.senderPublicKey<"u"?te(r.senderPublicKey,zt):void 0,receiverPublicKey:t?.receiverPublicKey})}function eo(e){const t=e?.type||Yi;if(t===lr){if(typeof e?.senderPublicKey>"u")throw new Error("missing sender public key");if(typeof e?.receiverPublicKey>"u")throw new Error("missing receiver public key")}return{type:t,senderPublicKey:e?.senderPublicKey,receiverPublicKey:e?.receiverPublicKey}}function Eu(e){return e.type===lr&&typeof e.senderPublicKey=="string"&&typeof e.receiverPublicKey=="string"}const ro="irn";function Su(e){return e?.relay||{protocol:ro}}function Nu(e){const t=qo[e];if(typeof t>"u")throw new Error(`Relay Protocol not supported: ${e}`);return t}var Iu=Object.defineProperty,_u=Object.defineProperties,Bu=Object.getOwnPropertyDescriptors,io=Object.getOwnPropertySymbols,Cu=Object.prototype.hasOwnProperty,Ru=Object.prototype.propertyIsEnumerable,no=(e,t,r)=>t in e?Iu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,fo=(e,t)=>{for(var r in t||(t={}))Cu.call(t,r)&&no(e,r,t[r]);if(io)for(var r of io(t))Ru.call(t,r)&&no(e,r,t[r]);return e},Ou=(e,t)=>_u(e,Bu(t));function oo(e,t="-"){const r={},i="relay"+t;return Object.keys(e).forEach(n=>{if(n.startsWith(i)){const o=n.replace(i,""),h=e[n];r[o]=h}}),r}function Pu(e){e=e.includes("wc://")?e.replace("wc://",""):e,e=e.includes("wc:")?e.replace("wc:",""):e;const t=e.indexOf(":"),r=e.indexOf("?")!==-1?e.indexOf("?"):void 0,i=e.substring(0,t),n=e.substring(t+1,r).split("@"),o=typeof r<"u"?e.substring(r):"",h=Nr.parse(o),p=typeof h.methods=="string"?h.methods.split(","):void 0;return{protocol:i,topic:so(n[0]),version:parseInt(n[1],10),symKey:h.symKey,relay:oo(h),methods:p,expiryTimestamp:h.expiryTimestamp?parseInt(h.expiryTimestamp,10):void 0}}function so(e){return e.startsWith("//")?e.substring(2):e}function ao(e,t="-"){const r="relay",i={};return Object.keys(e).forEach(n=>{const o=r+t+n;e[n]&&(i[o]=e[n])}),i}function Du(e){return`${e.protocol}:${e.topic}@${e.version}?`+Nr.stringify(fo(Ou(fo({symKey:e.symKey},ao(e.relay)),{expiryTimestamp:e.expiryTimestamp}),e.methods?{methods:e.methods.join(",")}:{}))}var Fu=Object.defineProperty,Tu=Object.defineProperties,Uu=Object.getOwnPropertyDescriptors,uo=Object.getOwnPropertySymbols,ku=Object.prototype.hasOwnProperty,qu=Object.prototype.propertyIsEnumerable,ho=(e,t,r)=>t in e?Fu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Ku=(e,t)=>{for(var r in t||(t={}))ku.call(t,r)&&ho(e,r,t[r]);if(uo)for(var r of uo(t))qu.call(t,r)&&ho(e,r,t[r]);return e},Hu=(e,t)=>Tu(e,Uu(t));function $e(e){const t=[];return e.forEach(r=>{const[i,n]=r.split(":");t.push(`${i}:${n}`)}),t}function co(e){const t=[];return Object.values(e).forEach(r=>{t.push(...$e(r.accounts))}),t}function lo(e,t){const r=[];return Object.values(e).forEach(i=>{$e(i.accounts).includes(t)&&r.push(...i.methods)}),r}function po(e,t){const r=[];return Object.values(e).forEach(i=>{$e(i.accounts).includes(t)&&r.push(...i.events)}),r}function zu(e,t){const r=So(e,t);if(r)throw new Error(r.message);const i={};for(const[n,o]of Object.entries(e))i[n]={methods:o.methods,events:o.events,chains:o.accounts.map(h=>`${h.split(":")[0]}:${h.split(":")[1]}`)};return i}function Lu(e){const{proposal:{requiredNamespaces:t,optionalNamespaces:r={}},supportedNamespaces:i}=e,n=$i(t),o=$i(r),h={};Object.keys(i).forEach(m=>{const w=i[m].chains,y=i[m].methods,S=i[m].events,I=i[m].accounts;w.forEach(N=>{if(!I.some(C=>C.includes(N)))throw new Error(`No accounts provided for chain ${N} in namespace ${m}`)}),h[m]={chains:w,methods:y,events:S,accounts:I}});const p=Io(t,h,"approve()");if(p)throw new Error(p.message);const b={};return!Object.keys(t).length&&!Object.keys(r).length?h:(Object.keys(n).forEach(m=>{const w=i[m].chains.filter(N=>{var C,F;return(F=(C=n[m])==null?void 0:C.chains)==null?void 0:F.includes(N)}),y=i[m].methods.filter(N=>{var C,F;return(F=(C=n[m])==null?void 0:C.methods)==null?void 0:F.includes(N)}),S=i[m].events.filter(N=>{var C,F;return(F=(C=n[m])==null?void 0:C.events)==null?void 0:F.includes(N)}),I=w.map(N=>i[m].accounts.filter(C=>C.includes(`${N}:`))).flat();b[m]={chains:w,methods:y,events:S,accounts:I}}),Object.keys(o).forEach(m=>{var w,y,S,I,N,C;if(!i[m])return;const F=(y=(w=o[m])==null?void 0:w.chains)==null?void 0:y.filter(G=>i[m].chains.includes(G)),U=i[m].methods.filter(G=>{var H,z;return(z=(H=o[m])==null?void 0:H.methods)==null?void 0:z.includes(G)}),J=i[m].events.filter(G=>{var H,z;return(z=(H=o[m])==null?void 0:H.events)==null?void 0:z.includes(G)}),Bt=F?.map(G=>i[m].accounts.filter(H=>H.includes(`${G}:`))).flat();b[m]={chains:ge((S=b[m])==null?void 0:S.chains,F),methods:ge((I=b[m])==null?void 0:I.methods,U),events:ge((N=b[m])==null?void 0:N.events,J),accounts:ge((C=b[m])==null?void 0:C.accounts,Bt)}}),b)}function Zi(e){return e.includes(":")}function vo(e){return Zi(e)?e.split(":")[0]:e}function $i(e){var t,r,i;const n={};if(!Yr(e))return n;for(const[o,h]of Object.entries(e)){const p=Zi(o)?[o]:h.chains,b=h.methods||[],m=h.events||[],w=vo(o);n[w]=Hu(Ku({},n[w]),{chains:ge(p,(t=n[w])==null?void 0:t.chains),methods:ge(b,(r=n[w])==null?void 0:r.methods),events:ge(m,(i=n[w])==null?void 0:i.events)})}return n}function mo(e){const t={};return e?.forEach(r=>{const[i,n]=r.split(":");t[i]||(t[i]={accounts:[],chains:[],events:[]}),t[i].accounts.push(r),t[i].chains.push(`${i}:${n}`)}),t}function ju(e,t){t=t.map(i=>i.replace("did:pkh:",""));const r=mo(t);for(const[i,n]of Object.entries(r))n.methods?n.methods=ge(n.methods,e):n.methods=e,n.events=["chainChanged","accountsChanged"];return r}const go={INVALID_METHOD:{message:"Invalid method.",code:1001},INVALID_EVENT:{message:"Invalid event.",code:1002},INVALID_UPDATE_REQUEST:{message:"Invalid update request.",code:1003},INVALID_EXTEND_REQUEST:{message:"Invalid extend request.",code:1004},INVALID_SESSION_SETTLE_REQUEST:{message:"Invalid session settle request.",code:1005},UNAUTHORIZED_METHOD:{message:"Unauthorized method.",code:3001},UNAUTHORIZED_EVENT:{message:"Unauthorized event.",code:3002},UNAUTHORIZED_UPDATE_REQUEST:{message:"Unauthorized update request.",code:3003},UNAUTHORIZED_EXTEND_REQUEST:{message:"Unauthorized extend request.",code:3004},USER_REJECTED:{message:"User rejected.",code:5e3},USER_REJECTED_CHAINS:{message:"User rejected chains.",code:5001},USER_REJECTED_METHODS:{message:"User rejected methods.",code:5002},USER_REJECTED_EVENTS:{message:"User rejected events.",code:5003},UNSUPPORTED_CHAINS:{message:"Unsupported chains.",code:5100},UNSUPPORTED_METHODS:{message:"Unsupported methods.",code:5101},UNSUPPORTED_EVENTS:{message:"Unsupported events.",code:5102},UNSUPPORTED_ACCOUNTS:{message:"Unsupported accounts.",code:5103},UNSUPPORTED_NAMESPACE_KEY:{message:"Unsupported namespace key.",code:5104},USER_DISCONNECTED:{message:"User disconnected.",code:6e3},SESSION_SETTLEMENT_FAILED:{message:"Session settlement failed.",code:7e3},WC_METHOD_UNSUPPORTED:{message:"Unsupported wc_ method.",code:10001}},Ao={NOT_INITIALIZED:{message:"Not initialized.",code:1},NO_MATCHING_KEY:{message:"No matching key.",code:2},RESTORE_WILL_OVERRIDE:{message:"Restore will override.",code:3},RESUBSCRIBED:{message:"Resubscribed.",code:4},MISSING_OR_INVALID:{message:"Missing or invalid.",code:5},EXPIRED:{message:"Expired.",code:6},UNKNOWN_TYPE:{message:"Unknown type.",code:7},MISMATCHED_TOPIC:{message:"Mismatched topic.",code:8},NON_CONFORMING_NAMESPACES:{message:"Non conforming namespaces.",code:9}};function xe(e,t){const{message:r,code:i}=Ao[e];return{message:t?`${r} ${t}`:r,code:i}}function tr(e,t){const{message:r,code:i}=go[e];return{message:t?`${r} ${t}`:r,code:i}}function Er(e,t){return Array.isArray(e)?typeof t<"u"&&e.length?e.every(t):!0:!1}function Yr(e){return Object.getPrototypeOf(e)===Object.prototype&&Object.keys(e).length}function Pe(e){return typeof e>"u"}function Gt(e,t){return t&&Pe(e)?!0:typeof e=="string"&&!!e.trim().length}function Vr(e,t){return t&&Pe(e)?!0:typeof e=="number"&&!isNaN(e)}function Qu(e,t){const{requiredNamespaces:r}=t,i=Object.keys(e.namespaces),n=Object.keys(r);let o=!0;return _e(n,i)?(i.forEach(h=>{const{accounts:p,methods:b,events:m}=e.namespaces[h],w=$e(p),y=r[h];(!_e(_r(h,y),w)||!_e(y.methods,b)||!_e(y.events,m))&&(o=!1)}),o):!1}function Sr(e){return Gt(e,!1)&&e.includes(":")?e.split(":").length===2:!1}function bo(e){if(Gt(e,!1)&&e.includes(":")){const t=e.split(":");if(t.length===3){const r=t[0]+":"+t[1];return!!t[2]&&Sr(r)}}return!1}function Ju(e){if(Gt(e,!1))try{return typeof new URL(e)<"u"}catch{return!1}return!1}function Gu(e){var t;return(t=e?.proposer)==null?void 0:t.publicKey}function Yu(e){return e?.topic}function Vu(e,t){let r=null;return Gt(e?.publicKey,!1)||(r=xe("MISSING_OR_INVALID",`${t} controller public key should be a string`)),r}function tn(e){let t=!0;return Er(e)?e.length&&(t=e.every(r=>Gt(r,!1))):t=!1,t}function yo(e,t,r){let i=null;return Er(t)&&t.length?t.forEach(n=>{i||Sr(n)||(i=tr("UNSUPPORTED_CHAINS",`${r}, chain ${n} should be a string and conform to "namespace:chainId" format`))}):Sr(e)||(i=tr("UNSUPPORTED_CHAINS",`${r}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)),i}function wo(e,t,r){let i=null;return Object.entries(e).forEach(([n,o])=>{if(i)return;const h=yo(n,_r(n,o),`${t} ${r}`);h&&(i=h)}),i}function xo(e,t){let r=null;return Er(e)?e.forEach(i=>{r||bo(i)||(r=tr("UNSUPPORTED_ACCOUNTS",`${t}, account ${i} should be a string and conform to "namespace:chainId:address" format`))}):r=tr("UNSUPPORTED_ACCOUNTS",`${t}, accounts should be an array of strings conforming to "namespace:chainId:address" format`),r}function Mo(e,t){let r=null;return Object.values(e).forEach(i=>{if(r)return;const n=xo(i?.accounts,`${t} namespace`);n&&(r=n)}),r}function Eo(e,t){let r=null;return tn(e?.methods)?tn(e?.events)||(r=tr("UNSUPPORTED_EVENTS",`${t}, events should be an array of strings or empty array for no events`)):r=tr("UNSUPPORTED_METHODS",`${t}, methods should be an array of strings or empty array for no methods`),r}function en(e,t){let r=null;return Object.values(e).forEach(i=>{if(r)return;const n=Eo(i,`${t}, namespace`);n&&(r=n)}),r}function Wu(e,t,r){let i=null;if(e&&Yr(e)){const n=en(e,t);n&&(i=n);const o=wo(e,t,r);o&&(i=o)}else i=xe("MISSING_OR_INVALID",`${t}, ${r} should be an object with data`);return i}function So(e,t){let r=null;if(e&&Yr(e)){const i=en(e,t);i&&(r=i);const n=Mo(e,t);n&&(r=n)}else r=xe("MISSING_OR_INVALID",`${t}, namespaces should be an object with data`);return r}function No(e){return Gt(e.protocol,!0)}function Xu(e,t){let r=!1;return t&&!e?r=!0:e&&Er(e)&&e.length&&e.forEach(i=>{r=No(i)}),r}function Zu(e){return typeof e=="number"}function $u(e){return typeof e<"u"&&typeof e!==null}function th(e){return!(!e||typeof e!="object"||!e.code||!Vr(e.code,!1)||!e.message||!Gt(e.message,!1))}function eh(e){return!(Pe(e)||!Gt(e.method,!1))}function rh(e){return!(Pe(e)||Pe(e.result)&&Pe(e.error)||!Vr(e.id,!1)||!Gt(e.jsonrpc,!1))}function ih(e){return!(Pe(e)||!Gt(e.name,!1))}function nh(e,t){return!(!Sr(t)||!co(e).includes(t))}function fh(e,t,r){return Gt(r,!1)?lo(e,t).includes(r):!1}function oh(e,t,r){return Gt(r,!1)?po(e,t).includes(r):!1}function Io(e,t,r){let i=null;const n=sh(e),o=ah(t),h=Object.keys(n),p=Object.keys(o),b=_o(Object.keys(e)),m=_o(Object.keys(t)),w=b.filter(y=>!m.includes(y));return w.length&&(i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces keys don't satisfy requiredNamespaces. ++`)};function au(e,t,r){return r.includes("did:pkh:")||(r=`did:pkh:${r}`),{h:{t:"caip122"},p:{iss:r,domain:e.domain,aud:e.aud,version:e.version,nonce:e.nonce,iat:e.iat,statement:e.statement,requestId:e.requestId,resources:e.resources,nbf:e.nbf,exp:e.exp},s:t}}function uu(e){var t;const{authPayload:r,chains:i,methods:n}=e,o=r.statement||"";if(!(i!=null&&i.length))return r;const h=r.chains,p=mi(h,i);if(!(p!=null&&p.length))throw new Error("No supported chains");const b=jf(r.resources);if(!b)return r;me(b);const m=Qf(b,"eip155");let w=r?.resources||[];if(m!=null&&m.length){const y=Jf(m),S=mi(y,n);if(!(S!=null&&S.length))throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(y)}, supported: ${JSON.stringify(n)}`);const I=ji("request",S,{chains:p}),N=Wf(b,"eip155",I);w=((t=r?.resources)==null?void 0:t.slice(0,-1))||[],w.push(jr(N))}return zf(Hi({},r),{statement:Zf(o,Qr(w)),chains:p,resources:r!=null&&r.resources||w.length>0?w:void 0})}function jf(e){const t=Qr(e);if(t&&Qi(t))return Oe(t)}function hu(e,t){var r;return(r=e?.att)==null?void 0:r.hasOwnProperty(t)}function Qf(e,t){var r,i;return(r=e?.att)!=null&&r[t]?Object.keys((i=e?.att)==null?void 0:i[t]):[]}function cu(e){return e?.map(t=>Object.keys(t))||[]}function Jf(e){return e?.map(t=>{var r;return(r=t.split("/"))==null?void 0:r[1]})||[]}function Gf(e){return Buffer.from(JSON.stringify(e)).toString("base64")}function Yf(e){return JSON.parse(Buffer.from(e,"base64").toString("utf-8"))}function me(e){if(!e)throw new Error("No recap provided, value is undefined");if(!e.att)throw new Error("No `att` property found");const t=Object.keys(e.att);if(!(t!=null&&t.length))throw new Error("No resources found in `att` property");t.forEach(r=>{const i=e.att[r];if(Array.isArray(i))throw new Error(`Resource must be an object: ${r}`);if(typeof i!="object")throw new Error(`Resource must be an object: ${r}`);if(!Object.keys(i).length)throw new Error(`Resource object is empty: ${r}`);Object.keys(i).forEach(n=>{const o=i[n];if(!Array.isArray(o))throw new Error(`Ability limits ${n} must be an array of objects, found: ${o}`);if(!o.length)throw new Error(`Value of ${n} is empty array, must be an array with objects`);o.forEach(h=>{if(typeof h!="object")throw new Error(`Ability limits (${n}) must be an array of objects, found: ${h}`)})})})}function Vf(e,t,r,i={}){return r?.sort((n,o)=>n.localeCompare(o)),{att:{[e]:ji(t,r,i)}}}function Wf(e,t,r){var i;return e.att[t]=Hi({},r),((i=Object.keys(e.att))==null?void 0:i.sort((n,o)=>n.localeCompare(o))).reduce((n,o)=>(n.att[o]=e.att[o],n),{att:{}})}function ji(e,t,r={}){t=t?.sort((n,o)=>n.localeCompare(o));const i=t.map(n=>({[`${e}/${n}`]:[r]}));return Object.assign({},...i)}function jr(e){return me(e),`urn:recap:${Gf(e).replace(/=/g,"")}`}function Oe(e){const t=Yf(e.replace("urn:recap:",""));return me(t),t}function lu(e,t,r){const i=Vf(e,t,r);return jr(i)}function Qi(e){return e&&e.includes("urn:recap:")}function du(e,t){const r=Oe(e),i=Oe(t),n=Xf(r,i);return jr(n)}function Xf(e,t){me(e),me(t);const r=Object.keys(e.att).concat(Object.keys(t.att)).sort((n,o)=>n.localeCompare(o)),i={att:{}};return r.forEach(n=>{var o,h;Object.keys(((o=e.att)==null?void 0:o[n])||{}).concat(Object.keys(((h=t.att)==null?void 0:h[n])||{})).sort((p,b)=>p.localeCompare(b)).forEach(p=>{var b,m;i.att[n]=zf(Hi({},i.att[n]),{[p]:((b=e.att[n])==null?void 0:b[p])||((m=t.att[n])==null?void 0:m[p])})})}),i}function Ji(e="",t){me(t);const r="I further authorize the stated URI to perform the following actions on my behalf: ";if(e.includes(r))return e;const i=[];let n=0;Object.keys(t.att).forEach(p=>{const b=Object.keys(t.att[p]).map(y=>({ability:y.split("/")[0],action:y.split("/")[1]}));b.sort((y,S)=>y.action.localeCompare(S.action));const m={};b.forEach(y=>{m[y.ability]||(m[y.ability]=[]),m[y.ability].push(y.action)});const w=Object.keys(m).map(y=>(n++,`(${n}) '${y}': '${m[y].join("', '")}' for '${p}'.`));i.push(w.join(", ").replace(".,","."))});const o=i.join(" "),h=`${r}${o}`;return`${e?e+" ":""}${h}`}function pu(e){var t;const r=Oe(e);me(r);const i=(t=r.att)==null?void 0:t.eip155;return i?Object.keys(i).map(n=>n.split("/")[1]):[]}function vu(e){const t=Oe(e);me(t);const r=[];return Object.values(t.att).forEach(i=>{Object.values(i).forEach(n=>{var o;(o=n?.[0])!=null&&o.chains&&r.push(n[0].chains)})}),[...new Set(r.flat())]}function Zf(e,t){if(!t)return e;const r=Oe(t);return me(r),Ji(e,r)}function Qr(e){if(!e)return;const t=e?.[e.length-1];return Qi(t)?t:void 0}const Gi="base10",zt="base16",Jr="base64pad",Gr="utf8",Yi=0,lr=1,mu=0,$f=1,Vi=12,Wi=32;function gu(){const e=cn.generateKeyPair();return{privateKey:te(e.secretKey,zt),publicKey:te(e.publicKey,zt)}}function Au(){const e=un(Wi);return te(e,zt)}function bu(e,t){const r=cn.sharedKey(ee(e,zt),ee(t,zt),!0),i=new ko(qo,r).expand(Wi);return te(i,zt)}function yu(e){const t=hn(ee(e,zt));return te(t,zt)}function wu(e){const t=hn(ee(e,Gr));return te(t,zt)}function to(e){return ee(`${e}`,Gi)}function Mr(e){return Number(te(e,Gi))}function xu(e){const t=to(typeof e.type<"u"?e.type:Yi);if(Mr(t)===lr&&typeof e.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");const r=typeof e.senderPublicKey<"u"?ee(e.senderPublicKey,zt):void 0,i=typeof e.iv<"u"?ee(e.iv,zt):un(Vi),n=new an(ee(e.symKey,zt)).seal(i,ee(e.message,Gr));return eo({type:t,sealed:n,iv:i,senderPublicKey:r})}function Mu(e){const t=new an(ee(e.symKey,zt)),{sealed:r,iv:i}=Xi(e.encoded),n=t.open(i,r);if(n===null)throw new Error("Failed to decrypt");return te(n,Gr)}function eo(e){if(Mr(e.type)===lr){if(typeof e.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");return te(ln([e.type,e.senderPublicKey,e.iv,e.sealed]),Jr)}return te(ln([e.type,e.iv,e.sealed]),Jr)}function Xi(e){const t=ee(e,Jr),r=t.slice(mu,$f),i=$f;if(Mr(r)===lr){const p=i+Wi,b=p+Vi,m=t.slice(i,p),w=t.slice(p,b),y=t.slice(b);return{type:r,sealed:y,iv:w,senderPublicKey:m}}const n=i+Vi,o=t.slice(i,n),h=t.slice(n);return{type:r,sealed:h,iv:o}}function Eu(e,t){const r=Xi(e);return ro({type:Mr(r.type),senderPublicKey:typeof r.senderPublicKey<"u"?te(r.senderPublicKey,zt):void 0,receiverPublicKey:t?.receiverPublicKey})}function ro(e){const t=e?.type||Yi;if(t===lr){if(typeof e?.senderPublicKey>"u")throw new Error("missing sender public key");if(typeof e?.receiverPublicKey>"u")throw new Error("missing receiver public key")}return{type:t,senderPublicKey:e?.senderPublicKey,receiverPublicKey:e?.receiverPublicKey}}function Su(e){return e.type===lr&&typeof e.senderPublicKey=="string"&&typeof e.receiverPublicKey=="string"}const io="irn";function Nu(e){return e?.relay||{protocol:io}}function Iu(e){const t=Ko[e];if(typeof t>"u")throw new Error(`Relay Protocol not supported: ${e}`);return t}var _u=Object.defineProperty,Bu=Object.defineProperties,Cu=Object.getOwnPropertyDescriptors,no=Object.getOwnPropertySymbols,Ru=Object.prototype.hasOwnProperty,Ou=Object.prototype.propertyIsEnumerable,fo=(e,t,r)=>t in e?_u(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,oo=(e,t)=>{for(var r in t||(t={}))Ru.call(t,r)&&fo(e,r,t[r]);if(no)for(var r of no(t))Ou.call(t,r)&&fo(e,r,t[r]);return e},Pu=(e,t)=>Bu(e,Cu(t));function so(e,t="-"){const r={},i="relay"+t;return Object.keys(e).forEach(n=>{if(n.startsWith(i)){const o=n.replace(i,""),h=e[n];r[o]=h}}),r}function Du(e){e=e.includes("wc://")?e.replace("wc://",""):e,e=e.includes("wc:")?e.replace("wc:",""):e;const t=e.indexOf(":"),r=e.indexOf("?")!==-1?e.indexOf("?"):void 0,i=e.substring(0,t),n=e.substring(t+1,r).split("@"),o=typeof r<"u"?e.substring(r):"",h=Nr.parse(o),p=typeof h.methods=="string"?h.methods.split(","):void 0;return{protocol:i,topic:ao(n[0]),version:parseInt(n[1],10),symKey:h.symKey,relay:so(h),methods:p,expiryTimestamp:h.expiryTimestamp?parseInt(h.expiryTimestamp,10):void 0}}function ao(e){return e.startsWith("//")?e.substring(2):e}function uo(e,t="-"){const r="relay",i={};return Object.keys(e).forEach(n=>{const o=r+t+n;e[n]&&(i[o]=e[n])}),i}function Fu(e){return`${e.protocol}:${e.topic}@${e.version}?`+Nr.stringify(oo(Pu(oo({symKey:e.symKey},uo(e.relay)),{expiryTimestamp:e.expiryTimestamp}),e.methods?{methods:e.methods.join(",")}:{}))}var Tu=Object.defineProperty,Uu=Object.defineProperties,ku=Object.getOwnPropertyDescriptors,ho=Object.getOwnPropertySymbols,qu=Object.prototype.hasOwnProperty,Ku=Object.prototype.propertyIsEnumerable,co=(e,t,r)=>t in e?Tu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Hu=(e,t)=>{for(var r in t||(t={}))qu.call(t,r)&&co(e,r,t[r]);if(ho)for(var r of ho(t))Ku.call(t,r)&&co(e,r,t[r]);return e},zu=(e,t)=>Uu(e,ku(t));function $e(e){const t=[];return e.forEach(r=>{const[i,n]=r.split(":");t.push(`${i}:${n}`)}),t}function lo(e){const t=[];return Object.values(e).forEach(r=>{t.push(...$e(r.accounts))}),t}function po(e,t){const r=[];return Object.values(e).forEach(i=>{$e(i.accounts).includes(t)&&r.push(...i.methods)}),r}function vo(e,t){const r=[];return Object.values(e).forEach(i=>{$e(i.accounts).includes(t)&&r.push(...i.events)}),r}function Lu(e,t){const r=No(e,t);if(r)throw new Error(r.message);const i={};for(const[n,o]of Object.entries(e))i[n]={methods:o.methods,events:o.events,chains:o.accounts.map(h=>`${h.split(":")[0]}:${h.split(":")[1]}`)};return i}function ju(e){const{proposal:{requiredNamespaces:t,optionalNamespaces:r={}},supportedNamespaces:i}=e,n=$i(t),o=$i(r),h={};Object.keys(i).forEach(m=>{const w=i[m].chains,y=i[m].methods,S=i[m].events,I=i[m].accounts;w.forEach(N=>{if(!I.some(C=>C.includes(N)))throw new Error(`No accounts provided for chain ${N} in namespace ${m}`)}),h[m]={chains:w,methods:y,events:S,accounts:I}});const p=_o(t,h,"approve()");if(p)throw new Error(p.message);const b={};return!Object.keys(t).length&&!Object.keys(r).length?h:(Object.keys(n).forEach(m=>{const w=i[m].chains.filter(N=>{var C,F;return(F=(C=n[m])==null?void 0:C.chains)==null?void 0:F.includes(N)}),y=i[m].methods.filter(N=>{var C,F;return(F=(C=n[m])==null?void 0:C.methods)==null?void 0:F.includes(N)}),S=i[m].events.filter(N=>{var C,F;return(F=(C=n[m])==null?void 0:C.events)==null?void 0:F.includes(N)}),I=w.map(N=>i[m].accounts.filter(C=>C.includes(`${N}:`))).flat();b[m]={chains:w,methods:y,events:S,accounts:I}}),Object.keys(o).forEach(m=>{var w,y,S,I,N,C;if(!i[m])return;const F=(y=(w=o[m])==null?void 0:w.chains)==null?void 0:y.filter(G=>i[m].chains.includes(G)),U=i[m].methods.filter(G=>{var H,z;return(z=(H=o[m])==null?void 0:H.methods)==null?void 0:z.includes(G)}),J=i[m].events.filter(G=>{var H,z;return(z=(H=o[m])==null?void 0:H.events)==null?void 0:z.includes(G)}),Bt=F?.map(G=>i[m].accounts.filter(H=>H.includes(`${G}:`))).flat();b[m]={chains:ge((S=b[m])==null?void 0:S.chains,F),methods:ge((I=b[m])==null?void 0:I.methods,U),events:ge((N=b[m])==null?void 0:N.events,J),accounts:ge((C=b[m])==null?void 0:C.accounts,Bt)}}),b)}function Zi(e){return e.includes(":")}function mo(e){return Zi(e)?e.split(":")[0]:e}function $i(e){var t,r,i;const n={};if(!Yr(e))return n;for(const[o,h]of Object.entries(e)){const p=Zi(o)?[o]:h.chains,b=h.methods||[],m=h.events||[],w=mo(o);n[w]=zu(Hu({},n[w]),{chains:ge(p,(t=n[w])==null?void 0:t.chains),methods:ge(b,(r=n[w])==null?void 0:r.methods),events:ge(m,(i=n[w])==null?void 0:i.events)})}return n}function go(e){const t={};return e?.forEach(r=>{const[i,n]=r.split(":");t[i]||(t[i]={accounts:[],chains:[],events:[]}),t[i].accounts.push(r),t[i].chains.push(`${i}:${n}`)}),t}function Qu(e,t){t=t.map(i=>i.replace("did:pkh:",""));const r=go(t);for(const[i,n]of Object.entries(r))n.methods?n.methods=ge(n.methods,e):n.methods=e,n.events=["chainChanged","accountsChanged"];return r}const Ao={INVALID_METHOD:{message:"Invalid method.",code:1001},INVALID_EVENT:{message:"Invalid event.",code:1002},INVALID_UPDATE_REQUEST:{message:"Invalid update request.",code:1003},INVALID_EXTEND_REQUEST:{message:"Invalid extend request.",code:1004},INVALID_SESSION_SETTLE_REQUEST:{message:"Invalid session settle request.",code:1005},UNAUTHORIZED_METHOD:{message:"Unauthorized method.",code:3001},UNAUTHORIZED_EVENT:{message:"Unauthorized event.",code:3002},UNAUTHORIZED_UPDATE_REQUEST:{message:"Unauthorized update request.",code:3003},UNAUTHORIZED_EXTEND_REQUEST:{message:"Unauthorized extend request.",code:3004},USER_REJECTED:{message:"User rejected.",code:5e3},USER_REJECTED_CHAINS:{message:"User rejected chains.",code:5001},USER_REJECTED_METHODS:{message:"User rejected methods.",code:5002},USER_REJECTED_EVENTS:{message:"User rejected events.",code:5003},UNSUPPORTED_CHAINS:{message:"Unsupported chains.",code:5100},UNSUPPORTED_METHODS:{message:"Unsupported methods.",code:5101},UNSUPPORTED_EVENTS:{message:"Unsupported events.",code:5102},UNSUPPORTED_ACCOUNTS:{message:"Unsupported accounts.",code:5103},UNSUPPORTED_NAMESPACE_KEY:{message:"Unsupported namespace key.",code:5104},USER_DISCONNECTED:{message:"User disconnected.",code:6e3},SESSION_SETTLEMENT_FAILED:{message:"Session settlement failed.",code:7e3},WC_METHOD_UNSUPPORTED:{message:"Unsupported wc_ method.",code:10001}},bo={NOT_INITIALIZED:{message:"Not initialized.",code:1},NO_MATCHING_KEY:{message:"No matching key.",code:2},RESTORE_WILL_OVERRIDE:{message:"Restore will override.",code:3},RESUBSCRIBED:{message:"Resubscribed.",code:4},MISSING_OR_INVALID:{message:"Missing or invalid.",code:5},EXPIRED:{message:"Expired.",code:6},UNKNOWN_TYPE:{message:"Unknown type.",code:7},MISMATCHED_TOPIC:{message:"Mismatched topic.",code:8},NON_CONFORMING_NAMESPACES:{message:"Non conforming namespaces.",code:9}};function xe(e,t){const{message:r,code:i}=bo[e];return{message:t?`${r} ${t}`:r,code:i}}function tr(e,t){const{message:r,code:i}=Ao[e];return{message:t?`${r} ${t}`:r,code:i}}function Er(e,t){return Array.isArray(e)?typeof t<"u"&&e.length?e.every(t):!0:!1}function Yr(e){return Object.getPrototypeOf(e)===Object.prototype&&Object.keys(e).length}function Pe(e){return typeof e>"u"}function Gt(e,t){return t&&Pe(e)?!0:typeof e=="string"&&!!e.trim().length}function Vr(e,t){return t&&Pe(e)?!0:typeof e=="number"&&!isNaN(e)}function Ju(e,t){const{requiredNamespaces:r}=t,i=Object.keys(e.namespaces),n=Object.keys(r);let o=!0;return _e(n,i)?(i.forEach(h=>{const{accounts:p,methods:b,events:m}=e.namespaces[h],w=$e(p),y=r[h];(!_e(_r(h,y),w)||!_e(y.methods,b)||!_e(y.events,m))&&(o=!1)}),o):!1}function Sr(e){return Gt(e,!1)&&e.includes(":")?e.split(":").length===2:!1}function yo(e){if(Gt(e,!1)&&e.includes(":")){const t=e.split(":");if(t.length===3){const r=t[0]+":"+t[1];return!!t[2]&&Sr(r)}}return!1}function Gu(e){if(Gt(e,!1))try{return typeof new URL(e)<"u"}catch{return!1}return!1}function Yu(e){var t;return(t=e?.proposer)==null?void 0:t.publicKey}function Vu(e){return e?.topic}function Wu(e,t){let r=null;return Gt(e?.publicKey,!1)||(r=xe("MISSING_OR_INVALID",`${t} controller public key should be a string`)),r}function tn(e){let t=!0;return Er(e)?e.length&&(t=e.every(r=>Gt(r,!1))):t=!1,t}function wo(e,t,r){let i=null;return Er(t)&&t.length?t.forEach(n=>{i||Sr(n)||(i=tr("UNSUPPORTED_CHAINS",`${r}, chain ${n} should be a string and conform to "namespace:chainId" format`))}):Sr(e)||(i=tr("UNSUPPORTED_CHAINS",`${r}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)),i}function xo(e,t,r){let i=null;return Object.entries(e).forEach(([n,o])=>{if(i)return;const h=wo(n,_r(n,o),`${t} ${r}`);h&&(i=h)}),i}function Mo(e,t){let r=null;return Er(e)?e.forEach(i=>{r||yo(i)||(r=tr("UNSUPPORTED_ACCOUNTS",`${t}, account ${i} should be a string and conform to "namespace:chainId:address" format`))}):r=tr("UNSUPPORTED_ACCOUNTS",`${t}, accounts should be an array of strings conforming to "namespace:chainId:address" format`),r}function Eo(e,t){let r=null;return Object.values(e).forEach(i=>{if(r)return;const n=Mo(i?.accounts,`${t} namespace`);n&&(r=n)}),r}function So(e,t){let r=null;return tn(e?.methods)?tn(e?.events)||(r=tr("UNSUPPORTED_EVENTS",`${t}, events should be an array of strings or empty array for no events`)):r=tr("UNSUPPORTED_METHODS",`${t}, methods should be an array of strings or empty array for no methods`),r}function en(e,t){let r=null;return Object.values(e).forEach(i=>{if(r)return;const n=So(i,`${t}, namespace`);n&&(r=n)}),r}function Xu(e,t,r){let i=null;if(e&&Yr(e)){const n=en(e,t);n&&(i=n);const o=xo(e,t,r);o&&(i=o)}else i=xe("MISSING_OR_INVALID",`${t}, ${r} should be an object with data`);return i}function No(e,t){let r=null;if(e&&Yr(e)){const i=en(e,t);i&&(r=i);const n=Eo(e,t);n&&(r=n)}else r=xe("MISSING_OR_INVALID",`${t}, namespaces should be an object with data`);return r}function Io(e){return Gt(e.protocol,!0)}function Zu(e,t){let r=!1;return t&&!e?r=!0:e&&Er(e)&&e.length&&e.forEach(i=>{r=Io(i)}),r}function $u(e){return typeof e=="number"}function th(e){return typeof e<"u"&&typeof e!==null}function eh(e){return!(!e||typeof e!="object"||!e.code||!Vr(e.code,!1)||!e.message||!Gt(e.message,!1))}function rh(e){return!(Pe(e)||!Gt(e.method,!1))}function ih(e){return!(Pe(e)||Pe(e.result)&&Pe(e.error)||!Vr(e.id,!1)||!Gt(e.jsonrpc,!1))}function nh(e){return!(Pe(e)||!Gt(e.name,!1))}function fh(e,t){return!(!Sr(t)||!lo(e).includes(t))}function oh(e,t,r){return Gt(r,!1)?po(e,t).includes(r):!1}function sh(e,t,r){return Gt(r,!1)?vo(e,t).includes(r):!1}function _o(e,t,r){let i=null;const n=ah(e),o=uh(t),h=Object.keys(n),p=Object.keys(o),b=Bo(Object.keys(e)),m=Bo(Object.keys(t)),w=b.filter(y=>!m.includes(y));return w.length&&(i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces keys don't satisfy requiredNamespaces. + Required: ${w.toString()} + Received: ${Object.keys(t).toString()}`)),_e(h,p)||(i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces chains don't satisfy required namespaces. + Required: ${h.toString()} + Approved: ${p.toString()}`)),Object.keys(t).forEach(y=>{if(!y.includes(":")||i)return;const S=$e(t[y].accounts);S.includes(y)||(i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces accounts don't satisfy namespace accounts for ${y} + Required: ${y} +- Approved: ${S.toString()}`))}),h.forEach(y=>{i||(_e(n[y].methods,o[y].methods)?_e(n[y].events,o[y].events)||(i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces events don't satisfy namespace events for ${y}`)):i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces methods don't satisfy namespace methods for ${y}`))}),i}function sh(e){const t={};return Object.keys(e).forEach(r=>{var i;r.includes(":")?t[r]=e[r]:(i=e[r].chains)==null||i.forEach(n=>{t[n]={methods:e[r].methods,events:e[r].events}})}),t}function _o(e){return[...new Set(e.map(t=>t.includes(":")?t.split(":")[0]:t))]}function ah(e){const t={};return Object.keys(e).forEach(r=>{if(r.includes(":"))t[r]=e[r];else{const i=$e(e[r].accounts);i?.forEach(n=>{t[n]={accounts:e[r].accounts.filter(o=>o.includes(`${n}:`)),methods:e[r].methods,events:e[r].events}})}}),t}function uh(e,t){return Vr(e,!1)&&e<=t.max&&e>=t.min}function hh(){const e=We();return new Promise(t=>{switch(e){case qt.browser:t(Bo());break;case qt.reactNative:t(Co());break;case qt.node:t(Ro());break;default:t(!0)}})}function Bo(){return pr()&&navigator?.onLine}async function Co(){if(er()&&typeof global<"u"&&global!=null&&global.NetInfo){const e=await(global==null?void 0:global.NetInfo.fetch());return e?.isConnected}return!0}function Ro(){return!0}function ch(e){switch(We()){case qt.browser:Oo(e);break;case qt.reactNative:Po(e);break;case qt.node:break}}function Oo(e){!er()&&pr()&&(window.addEventListener("online",()=>e(!0)),window.addEventListener("offline",()=>e(!1)))}function Po(e){er()&&typeof global<"u"&&global!=null&&global.NetInfo&&global?.NetInfo.addEventListener(t=>e(t?.isConnected))}const rn={};class lh{static get(t){return rn[t]}static set(t,r){rn[t]=r}static delete(t){delete rn[t]}}export{Gi as BASE10,zt as BASE16,Jr as BASE64,Yo as COLON,di as DEFAULT_DEPTH,Br as EMPTY_SPACE,qt as ENV_MAP,Ao as INTERNAL_ERRORS,lh as MemoryStore,Vo as ONE_THOUSAND,xn as REACT_NATIVE_PRODUCT,ro as RELAYER_DEFAULT_PROTOCOL,go as SDK_ERRORS,En as SDK_TYPE,Mn as SLASH,Yi as TYPE_0,lr as TYPE_1,Gr as UTF8,Vf as addResourceToRecap,Sn as appendToQueryString,e0 as assertType,ji as assignAbilityToActions,Gf as base64Decode,Jf as base64Encode,Lu as buildApprovedNamespaces,su as buildAuthObject,ju as buildNamespacesFromAuth,Xf as buildRecapStatement,d0 as calcExpiry,s0 as capitalize,Rn as capitalizeWord,a0 as createDelayedPromise,cu as createEncodedRecap,u0 as createExpiringPromise,Yf as createRecap,Oe as decodeRecap,Mr as decodeTypeByte,xu as decrypt,Au as deriveSymKey,Xi as deserialize,jr as encodeRecap,$f as encodeTypeByte,wu as encrypt,v0 as engineEvent,o0 as enumify,vn as formatAccountId,Ko as formatAccountWithChain,pn as formatChainId,vi as formatExpirerTarget,c0 as formatIdTarget,zf as formatMessage,r0 as formatMessageContext,ao as formatRelayParams,$o as formatRelayRpcUrl,Ji as formatStatementFromRecap,h0 as formatTopicTarget,_n as formatUA,Du as formatUri,mu as generateKeyPair,gu as generateRandomBytes32,$e as getAccountsChains,zo as getAccountsFromNamespaces,mn as getAddressFromAccount,Ho as getAddressesFromAccounts,Xo as getAppMetadata,Bo as getBrowserOnlineStatus,Wo as getBundleId,gn as getChainFromAccount,An as getChainsFromAccounts,_r as getChainsFromNamespace,Lo as getChainsFromNamespaces,pu as getChainsFromRecap,jo as getChainsFromRequiredNamespaces,mi as getCommonValuesInArrays,Lf as getDecodedRecapFromResources,g0 as getDeepLink,Li as getDidAddress,Lr as getDidAddressSegments,zi as getDidChainId,We as getEnvironment,t0 as getHttpUrl,xe as getInternalError,In as getJavascriptID,Nn as getJavascriptOS,Cn as getLastItems,du as getMethodsFromRecap,fu as getNamespacedDidChainId,co as getNamespacesChains,po as getNamespacesEventsForChainId,mo as getNamespacesFromAccounts,lo as getNamespacesMethodsForChainId,Ro as getNodeOnlineStatus,Qf as getReCapActions,Co as getReactNativeOnlineStatus,hu as getRecapAbilitiesFromResource,Qr as getRecapFromResources,jf as getRecapResource,Zo as getRelayClientMetadata,Nu as getRelayProtocolApi,Su as getRelayProtocolName,zu as getRequiredNamespacesFromNamespaces,tr as getSdkError,li as getUniqueValues,m0 as handleDeeplinkRedirect,_e as hasOverlap,bu as hashKey,yu as hashMessage,pr as isBrowser,Zi as isCaipNamespace,Io as isConformingNamespaces,p0 as isExpired,pi as isNode,hh as isOnline,Gu as isProposalStruct,er as isReactNative,Qi as isRecap,Qu as isSessionCompatible,Yu as isSessionStruct,Eu as isTypeOneEnvelope,Pe as isUndefined,bo as isValidAccountId,xo as isValidAccounts,Eo as isValidActions,Er as isValidArray,Sr as isValidChainId,yo as isValidChains,Vu as isValidController,kf as isValidEip1271Signature,Uf as isValidEip191Signature,th as isValidErrorReason,ih as isValidEvent,Zu as isValidId,Mo as isValidNamespaceAccounts,en as isValidNamespaceActions,wo as isValidNamespaceChains,tn as isValidNamespaceMethodsOrEvents,So as isValidNamespaces,nh as isValidNamespacesChainId,oh as isValidNamespacesEvent,fh as isValidNamespacesRequest,Vr as isValidNumber,Yr as isValidObject,$u as isValidParams,me as isValidRecap,No as isValidRelay,Xu as isValidRelays,eh as isValidRequest,uh as isValidRequestExpiry,Wu as isValidRequiredNamespaces,rh as isValidResponse,Gt as isValidString,Ju as isValidUrl,f0 as mapEntries,i0 as mapToObj,ge as mergeArrays,lu as mergeEncodedRecaps,Wf as mergeRecaps,$i as normalizeNamespaces,n0 as objToMap,ci as parseAccountId,dn as parseChainId,Bn as parseContextNames,l0 as parseExpirerTarget,vo as parseNamespaceKey,oo as parseRelayParams,so as parseTopic,Pu as parseUri,au as populateAuthPayload,uu as recapHasResource,to as serialize,Oo as subscribeToBrowserNetworkChange,ch as subscribeToNetworkChange,Po as subscribeToReactNativeNetworkChange,Mu as validateDecoding,eo as validateEncoding,ou as validateSignedCacao,Tf as verifySignature}; ++ Approved: ${S.toString()}`))}),h.forEach(y=>{i||(_e(n[y].methods,o[y].methods)?_e(n[y].events,o[y].events)||(i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces events don't satisfy namespace events for ${y}`)):i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces methods don't satisfy namespace methods for ${y}`))}),i}function ah(e){const t={};return Object.keys(e).forEach(r=>{var i;r.includes(":")?t[r]=e[r]:(i=e[r].chains)==null||i.forEach(n=>{t[n]={methods:e[r].methods,events:e[r].events}})}),t}function Bo(e){return[...new Set(e.map(t=>t.includes(":")?t.split(":")[0]:t))]}function uh(e){const t={};return Object.keys(e).forEach(r=>{if(r.includes(":"))t[r]=e[r];else{const i=$e(e[r].accounts);i?.forEach(n=>{t[n]={accounts:e[r].accounts.filter(o=>o.includes(`${n}:`)),methods:e[r].methods,events:e[r].events}})}}),t}function hh(e,t){return Vr(e,!1)&&e<=t.max&&e>=t.min}function ch(){const e=We();return new Promise(t=>{switch(e){case qt.browser:t(Co());break;case qt.reactNative:t(Ro());break;case qt.node:t(Oo());break;default:t(!0)}})}function Co(){return pr()&&navigator?.onLine}async function Ro(){if(er()&&typeof global<"u"&&global!=null&&global.NetInfo){const e=await(global==null?void 0:global.NetInfo.fetch());return e?.isConnected}return!0}function Oo(){return!0}function lh(e){switch(We()){case qt.browser:Po(e);break;case qt.reactNative:Do(e);break;case qt.node:break}}function Po(e){!er()&&pr()&&(window.addEventListener("online",()=>e(!0)),window.addEventListener("offline",()=>e(!1)))}function Do(e){er()&&typeof global<"u"&&global!=null&&global.NetInfo&&global?.NetInfo.addEventListener(t=>e(t?.isConnected))}const rn={};class dh{static get(t){return rn[t]}static set(t,r){rn[t]=r}static delete(t){delete rn[t]}}export{Gi as BASE10,zt as BASE16,Jr as BASE64,Vo as COLON,di as DEFAULT_DEPTH,Br as EMPTY_SPACE,qt as ENV_MAP,bo as INTERNAL_ERRORS,dh as MemoryStore,Wo as ONE_THOUSAND,xn as REACT_NATIVE_PRODUCT,io as RELAYER_DEFAULT_PROTOCOL,Ao as SDK_ERRORS,En as SDK_TYPE,Mn as SLASH,Yi as TYPE_0,lr as TYPE_1,Gr as UTF8,Wf as addResourceToRecap,Sn as appendToQueryString,rs as assertType,ji as assignAbilityToActions,Yf as base64Decode,Gf as base64Encode,ju as buildApprovedNamespaces,au as buildAuthObject,Qu as buildNamespacesFromAuth,Zf as buildRecapStatement,ps as calcExpiry,as as capitalize,Rn as capitalizeWord,us as createDelayedPromise,lu as createEncodedRecap,hs as createExpiringPromise,Vf as createRecap,Oe as decodeRecap,Mr as decodeTypeByte,Mu as decrypt,bu as deriveSymKey,Xi as deserialize,jr as encodeRecap,to as encodeTypeByte,xu as encrypt,ms as engineEvent,ss as enumify,vn as formatAccountId,Ho as formatAccountWithChain,pn as formatChainId,vi as formatExpirerTarget,ls as formatIdTarget,Lf as formatMessage,is as formatMessageContext,uo as formatRelayParams,ts as formatRelayRpcUrl,Ji as formatStatementFromRecap,cs as formatTopicTarget,_n as formatUA,Fu as formatUri,gu as generateKeyPair,Au as generateRandomBytes32,$e as getAccountsChains,Lo as getAccountsFromNamespaces,mn as getAddressFromAccount,zo as getAddressesFromAccounts,Zo as getAppMetadata,Co as getBrowserOnlineStatus,Xo as getBundleId,gn as getChainFromAccount,An as getChainsFromAccounts,_r as getChainsFromNamespace,jo as getChainsFromNamespaces,vu as getChainsFromRecap,Qo as getChainsFromRequiredNamespaces,mi as getCommonValuesInArrays,jf as getDecodedRecapFromResources,As as getDeepLink,Li as getDidAddress,Lr as getDidAddressSegments,zi as getDidChainId,We as getEnvironment,es as getHttpUrl,xe as getInternalError,In as getJavascriptID,Nn as getJavascriptOS,Cn as getLastItems,pu as getMethodsFromRecap,ou as getNamespacedDidChainId,lo as getNamespacesChains,vo as getNamespacesEventsForChainId,go as getNamespacesFromAccounts,po as getNamespacesMethodsForChainId,Oo as getNodeOnlineStatus,Jf as getReCapActions,Ro as getReactNativeOnlineStatus,cu as getRecapAbilitiesFromResource,Qr as getRecapFromResources,Qf as getRecapResource,$o as getRelayClientMetadata,Iu as getRelayProtocolApi,Nu as getRelayProtocolName,Lu as getRequiredNamespacesFromNamespaces,tr as getSdkError,li as getUniqueValues,gs as handleDeeplinkRedirect,_e as hasOverlap,yu as hashKey,wu as hashMessage,pr as isBrowser,Zi as isCaipNamespace,_o as isConformingNamespaces,vs as isExpired,pi as isNode,ch as isOnline,Yu as isProposalStruct,er as isReactNative,Qi as isRecap,Ju as isSessionCompatible,Vu as isSessionStruct,On as isTelegram,Su as isTypeOneEnvelope,Pe as isUndefined,yo as isValidAccountId,Mo as isValidAccounts,So as isValidActions,Er as isValidArray,Sr as isValidChainId,wo as isValidChains,Wu as isValidController,qf as isValidEip1271Signature,kf as isValidEip191Signature,eh as isValidErrorReason,nh as isValidEvent,$u as isValidId,Eo as isValidNamespaceAccounts,en as isValidNamespaceActions,xo as isValidNamespaceChains,tn as isValidNamespaceMethodsOrEvents,No as isValidNamespaces,fh as isValidNamespacesChainId,sh as isValidNamespacesEvent,oh as isValidNamespacesRequest,Vr as isValidNumber,Yr as isValidObject,th as isValidParams,me as isValidRecap,Io as isValidRelay,Zu as isValidRelays,rh as isValidRequest,hh as isValidRequestExpiry,Xu as isValidRequiredNamespaces,ih as isValidResponse,Gt as isValidString,Gu as isValidUrl,os as mapEntries,ns as mapToObj,ge as mergeArrays,du as mergeEncodedRecaps,Xf as mergeRecaps,$i as normalizeNamespaces,fs as objToMap,ci as parseAccountId,dn as parseChainId,Bn as parseContextNames,ds as parseExpirerTarget,mo as parseNamespaceKey,so as parseRelayParams,ao as parseTopic,Du as parseUri,uu as populateAuthPayload,hu as recapHasResource,eo as serialize,Po as subscribeToBrowserNetworkChange,lh as subscribeToNetworkChange,Do as subscribeToReactNativeNetworkChange,Eu as validateDecoding,ro as validateEncoding,su as validateSignedCacao,Uf as verifySignature}; + //# sourceMappingURL=index.es.js.map +diff --git a/node_modules/@walletconnect/utils/dist/index.es.js.map b/node_modules/@walletconnect/utils/dist/index.es.js.map +index 890cbb5..d0103cb 100644 +--- a/node_modules/@walletconnect/utils/dist/index.es.js.map ++++ b/node_modules/@walletconnect/utils/dist/index.es.js.map +@@ -1 +1 @@ +-{"version":3,"file":"index.es.js","sources":["../src/caip.ts","../src/misc.ts","../../../node_modules/js-sha3/src/sha3.js","../../../node_modules/@ethersproject/logger/lib.esm/_version.js","../../../node_modules/@ethersproject/logger/lib.esm/index.js","../../../node_modules/@ethersproject/bytes/lib.esm/_version.js","../../../node_modules/@ethersproject/bytes/lib.esm/index.js","../../../node_modules/@ethersproject/keccak256/lib.esm/index.js","../../../node_modules/bn.js/lib/bn.js","../../../node_modules/@ethersproject/bignumber/lib.esm/_version.js","../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js","../../../node_modules/@ethersproject/bignumber/lib.esm/fixednumber.js","../../../node_modules/@ethersproject/strings/lib.esm/_version.js","../../../node_modules/@ethersproject/strings/lib.esm/utf8.js","../../../node_modules/@ethersproject/strings/lib.esm/idna.js","../../../node_modules/@ethersproject/hash/lib.esm/_version.js","../../../node_modules/@ethersproject/base64/lib.esm/base64.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js","../../../node_modules/@ethersproject/hash/lib.esm/namehash.js","../../../node_modules/@ethersproject/hash/lib.esm/message.js","../../../node_modules/@ethersproject/rlp/lib.esm/_version.js","../../../node_modules/@ethersproject/rlp/lib.esm/index.js","../../../node_modules/@ethersproject/address/lib.esm/_version.js","../../../node_modules/@ethersproject/address/lib.esm/index.js","../../../node_modules/@ethersproject/properties/lib.esm/_version.js","../../../node_modules/@ethersproject/properties/lib.esm/index.js","../../../node_modules/@ethersproject/hash/lib.esm/typed-data.js","../../../node_modules/minimalistic-assert/index.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/hash.js/lib/hash/utils.js","../../../node_modules/hash.js/lib/hash/common.js","../../../node_modules/hash.js/lib/hash/sha/common.js","../../../node_modules/hash.js/lib/hash/sha/1.js","../../../node_modules/hash.js/lib/hash/sha/256.js","../../../node_modules/hash.js/lib/hash/sha/224.js","../../../node_modules/hash.js/lib/hash/sha/512.js","../../../node_modules/hash.js/lib/hash/sha/384.js","../../../node_modules/hash.js/lib/hash/sha.js","../../../node_modules/hash.js/lib/hash/ripemd.js","../../../node_modules/hash.js/lib/hash/hmac.js","../../../node_modules/hash.js/lib/hash.js","../../../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../../../node_modules/@ethersproject/signing-key/lib.esm/_version.js","../../../node_modules/@ethersproject/signing-key/lib.esm/index.js","../../../node_modules/@ethersproject/transactions/lib.esm/_version.js","../../../node_modules/@ethersproject/transactions/lib.esm/index.js","../src/signatures.ts","../src/cacao.ts","../src/crypto.ts","../src/relay.ts","../src/uri.ts","../src/namespaces.ts","../src/errors.ts","../src/validators.ts","../src/network.ts","../src/memoryStore.ts"],"sourcesContent":["import { SessionTypes, ProposalTypes } from \"@walletconnect/types\";\n\ninterface ChainIdParams {\n namespace: string;\n reference: string;\n}\n\ninterface AccountIdParams extends ChainIdParams {\n address: string;\n}\n\nconst CAIP_DELIMITER = \":\";\n\nexport function parseChainId(chain: string): ChainIdParams {\n const [namespace, reference] = chain.split(CAIP_DELIMITER);\n return { namespace, reference };\n}\n\nexport function formatChainId(params: ChainIdParams): string {\n const { namespace, reference } = params;\n return [namespace, reference].join(CAIP_DELIMITER);\n}\n\nexport function parseAccountId(account: string): AccountIdParams {\n const [namespace, reference, address] = account.split(CAIP_DELIMITER);\n return { namespace, reference, address };\n}\n\nexport function formatAccountId(params: AccountIdParams): string {\n const { namespace, reference, address } = params;\n return [namespace, reference, address].join(CAIP_DELIMITER);\n}\n\nexport function getUniqueValues(array: string[], parser: (str: string) => string): string[] {\n const unique: string[] = [];\n array.forEach((str) => {\n const value = parser(str);\n if (!unique.includes(value)) unique.push(value);\n });\n return unique;\n}\n\nexport function getAddressFromAccount(account: string) {\n const { address } = parseAccountId(account);\n return address;\n}\n\nexport function getChainFromAccount(account: string) {\n const { namespace, reference } = parseAccountId(account);\n const chain = formatChainId({ namespace, reference });\n return chain;\n}\n\nexport function formatAccountWithChain(address: string, chain: string) {\n const { namespace, reference } = parseChainId(chain);\n const account = formatAccountId({ namespace, reference, address });\n return account;\n}\n\nexport function getAddressesFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getAddressFromAccount);\n}\n\nexport function getChainsFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getChainFromAccount);\n}\n\nexport function getAccountsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const accounts: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n accounts.push(...ns.accounts);\n });\n return accounts;\n}\n\nexport function getChainsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n chains.push(...getChainsFromAccounts(ns.accounts));\n });\n return chains;\n}\n\nexport function getChainsFromRequiredNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(requiredNamespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = requiredNamespaces[key];\n chains.push(...getChainsFromNamespace(key, ns));\n });\n return chains;\n}\n\nexport function getChainsFromNamespace(\n namespace: string,\n namespaceProps: ProposalTypes.BaseRequiredNamespace,\n) {\n // check if chainId is provided in the key as `eip155:1` or in the namespace as chains[]\n return namespace.includes(\":\") ? [namespace] : namespaceProps.chains || [];\n}\n","import { detect } from \"detect-browser\";\nimport { FIVE_MINUTES, fromMiliseconds, toMiliseconds } from \"@walletconnect/time\";\nimport {\n SignClientTypes,\n RelayerClientMetadata,\n EngineTypes,\n RelayerTypes,\n} from \"@walletconnect/types\";\nimport { getDocument, getLocation, getNavigator } from \"@walletconnect/window-getters\";\nimport { getWindowMetadata } from \"@walletconnect/window-metadata\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-utils\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport * as qs from \"query-string\";\n\n// -- constants -----------------------------------------//\nexport const REACT_NATIVE_PRODUCT = \"ReactNative\";\n\nexport const ENV_MAP = {\n reactNative: \"react-native\",\n node: \"node\",\n browser: \"browser\",\n unknown: \"unknown\",\n};\n\nexport const EMPTY_SPACE = \" \";\n\nexport const COLON = \":\";\n\nexport const SLASH = \"/\";\n\nexport const DEFAULT_DEPTH = 2;\n\nexport const ONE_THOUSAND = 1000;\n\nexport const SDK_TYPE = \"js\";\n\n// -- env -----------------------------------------------//\n\nexport function isNode(): boolean {\n return (\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\"\n );\n}\n\nexport function isReactNative(): boolean {\n return !getDocument() && !!getNavigator() && navigator.product === REACT_NATIVE_PRODUCT;\n}\n\nexport function isBrowser(): boolean {\n return !isNode() && !!getNavigator() && !!getDocument();\n}\n\nexport function getEnvironment(): string {\n if (isReactNative()) return ENV_MAP.reactNative;\n if (isNode()) return ENV_MAP.node;\n if (isBrowser()) return ENV_MAP.browser;\n return ENV_MAP.unknown;\n}\n\nexport function getBundleId(): string | undefined {\n try {\n if (\n isReactNative() &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Application !== \"undefined\"\n ) {\n return (global as any).Application?.applicationId;\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\n// -- query -----------------------------------------------//\n\nexport function appendToQueryString(queryString: string, newQueryParams: any): string {\n let queryParams = qs.parse(queryString);\n\n queryParams = { ...queryParams, ...newQueryParams };\n\n queryString = qs.stringify(queryParams);\n\n return queryString;\n}\n\n// -- metadata ----------------------------------------------//\n\nexport function getAppMetadata(): SignClientTypes.Metadata {\n return (\n getWindowMetadata() || {\n name: \"\",\n description: \"\",\n url: \"\",\n icons: [\"\"],\n }\n );\n}\n\nexport function getRelayClientMetadata(protocol: string, version: number): RelayerClientMetadata {\n const env = getEnvironment();\n\n const metadata: RelayerClientMetadata = { protocol, version, env };\n if (env === \"browser\") {\n metadata.host = getLocation()?.host || \"unknown\";\n }\n return metadata;\n}\n\n// -- rpcUrl ----------------------------------------------//\n\nexport function getJavascriptOS() {\n const env = getEnvironment();\n // global.Platform is set by react-native-compat\n if (\n env === ENV_MAP.reactNative &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Platform !== \"undefined\"\n ) {\n const { OS, Version } = (global as any).Platform;\n return [OS, Version].join(\"-\");\n }\n\n const info = detect();\n if (info === null) return \"unknown\";\n const os = info.os ? info.os.replace(\" \", \"\").toLowerCase() : \"unknown\";\n if (info.type === \"browser\") {\n return [os, info.name, info.version].join(\"-\");\n }\n return [os, info.version].join(\"-\");\n}\n\nexport function getJavascriptID() {\n const env = getEnvironment();\n return env === ENV_MAP.browser ? [env, getLocation()?.host || \"unknown\"].join(\":\") : env;\n}\n\nexport function formatUA(protocol: string, version: number, sdkVersion: string) {\n const os = getJavascriptOS();\n const id = getJavascriptID();\n return [[protocol, version].join(\"-\"), [SDK_TYPE, sdkVersion].join(\"-\"), os, id].join(\"/\");\n}\nconsole;\n\nexport function formatRelayRpcUrl({\n protocol,\n version,\n relayUrl,\n sdkVersion,\n auth,\n projectId,\n useOnCloseEvent,\n bundleId,\n}: RelayerTypes.RpcUrlParams) {\n const splitUrl = relayUrl.split(\"?\");\n const ua = formatUA(protocol, version, sdkVersion);\n const params = {\n auth,\n ua,\n projectId,\n useOnCloseEvent: useOnCloseEvent || undefined,\n origin: bundleId || undefined,\n };\n const queryString = appendToQueryString(splitUrl[1] || \"\", params);\n return splitUrl[0] + \"?\" + queryString;\n}\n\nexport function getHttpUrl(url: string) {\n // regex from https://stackoverflow.com/questions/3883871/regexp-to-grab-protocol-from-url\n const matches = url.match(/^[^:]+(?=:\\/\\/)/gi) || [];\n let protocol = matches[0];\n const domain = typeof protocol !== \"undefined\" ? url.split(\"://\")[1] : url;\n protocol = protocol === \"wss\" ? \"https\" : \"http\";\n return [protocol, domain].join(\"://\");\n}\n\n// -- assert ------------------------------------------------- //\n\nexport function assertType(obj: any, key: string, type: string) {\n if (!obj[key] || typeof obj[key] !== type) {\n throw new Error(`Missing or invalid \"${key}\" param`);\n }\n}\n\n// -- context ------------------------------------------------- //\n\nexport function parseContextNames(context: string, depth = DEFAULT_DEPTH) {\n return getLastItems(context.split(SLASH), depth);\n}\n\nexport function formatMessageContext(context: string): string {\n return parseContextNames(context).join(EMPTY_SPACE);\n}\n\n// -- array ------------------------------------------------- //\n\nexport function hasOverlap(a: any[], b: any[]): boolean {\n const matches = a.filter((x) => b.includes(x));\n return matches.length === a.length;\n}\n\nexport function getLastItems(arr: any[], depth = DEFAULT_DEPTH): any[] {\n return arr.slice(Math.max(arr.length - depth, 0));\n}\n\n// -- map ------------------------------------------------- //\n\nexport function mapToObj(map: Map): Record {\n return Object.fromEntries(map.entries());\n}\n\nexport function objToMap(obj: Record): Map {\n return new Map(Object.entries(obj));\n}\n\nexport function mapEntries(\n obj: Record,\n cb: (x: A) => B,\n): Record {\n const res = {};\n Object.keys(obj).forEach((key) => {\n res[key] = cb(obj[key]);\n });\n return res;\n}\n\n// -- enum ------------------------------------------------- //\n\n// source: https://github.com/microsoft/TypeScript/issues/3192#issuecomment-261720275\nexport const enumify = (x: T): T => x;\n\n// -- string ------------------------------------------------- //\n\nexport function capitalizeWord(word: string) {\n return word.trim().replace(/^\\w/, (c) => c.toUpperCase());\n}\n\nexport function capitalize(str: string) {\n return str\n .split(EMPTY_SPACE)\n .map((w) => capitalizeWord(w))\n .join(EMPTY_SPACE);\n}\n\n// -- promises --------------------------------------------- //\nexport function createDelayedPromise(\n expiry: number = FIVE_MINUTES,\n expireErrorMessage?: string,\n) {\n const timeout = toMiliseconds(expiry || FIVE_MINUTES);\n let cacheResolve: undefined | ((value: T | PromiseLike) => void);\n let cacheReject: undefined | ((value?: ErrorResponse) => void);\n let cacheTimeout: undefined | NodeJS.Timeout;\n\n const done = () =>\n new Promise((promiseResolve, promiseReject) => {\n cacheTimeout = setTimeout(() => {\n promiseReject(new Error(expireErrorMessage));\n }, timeout);\n cacheResolve = promiseResolve;\n cacheReject = promiseReject;\n });\n const resolve = (value?: T) => {\n if (cacheTimeout && cacheResolve) {\n clearTimeout(cacheTimeout);\n cacheResolve(value as T);\n }\n };\n const reject = (value?: ErrorResponse) => {\n if (cacheTimeout && cacheReject) {\n clearTimeout(cacheTimeout);\n cacheReject(value);\n }\n };\n\n return {\n resolve,\n reject,\n done,\n };\n}\n\nexport function createExpiringPromise(\n promise: Promise,\n expiry: number,\n expireErrorMessage?: string,\n) {\n return new Promise(async (resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error(expireErrorMessage)), expiry);\n try {\n const result = await promise;\n resolve(result);\n } catch (error) {\n reject(error);\n }\n clearTimeout(timeout);\n });\n}\n\n// -- expirer --------------------------------------------- //\n\nexport function formatExpirerTarget(type: \"topic\" | \"id\", value: string | number): string {\n if (typeof value === \"string\" && value.startsWith(`${type}:`)) return value;\n if (type.toLowerCase() === \"topic\") {\n if (typeof value !== \"string\")\n throw new Error(`Value must be \"string\" for expirer target type: topic`);\n return `topic:${value}`;\n } else if (type.toLowerCase() === \"id\") {\n if (typeof value !== \"number\")\n throw new Error(`Value must be \"number\" for expirer target type: id`);\n return `id:${value}`;\n }\n throw new Error(`Unknown expirer target type: ${type}`);\n}\n\nexport function formatTopicTarget(topic: string): string {\n return formatExpirerTarget(\"topic\", topic);\n}\n\nexport function formatIdTarget(id: number): string {\n return formatExpirerTarget(\"id\", id);\n}\n\nexport function parseExpirerTarget(target: string) {\n const [type, value] = target.split(\":\");\n const parsed: { id?: number; topic?: string } = { id: undefined, topic: undefined };\n if (type === \"topic\" && typeof value === \"string\") {\n parsed.topic = value;\n } else if (type === \"id\" && Number.isInteger(Number(value))) {\n parsed.id = Number(value);\n } else {\n throw new Error(`Invalid target, expected id:number or topic:string, got ${type}:${value}`);\n }\n\n return parsed;\n}\n\nexport function calcExpiry(ttl: number, now?: number): number {\n return fromMiliseconds((now || Date.now()) + toMiliseconds(ttl));\n}\n\nexport function isExpired(expiry: number) {\n return Date.now() >= toMiliseconds(expiry);\n}\n\n// -- events ---------------------------------------------- //\n\nexport function engineEvent(event: EngineTypes.Event, id?: number | string | undefined) {\n return `${event}${id ? `:${id}` : \"\"}`;\n}\n\nexport function mergeArrays(a: T[] = [], b: T[] = []): T[] {\n return [...new Set([...a, ...b])];\n}\n\nexport async function handleDeeplinkRedirect({\n id,\n topic,\n wcDeepLink,\n}: {\n id: number;\n topic: string;\n wcDeepLink: string;\n}) {\n try {\n if (!wcDeepLink) return;\n\n const json = typeof wcDeepLink === \"string\" ? JSON.parse(wcDeepLink) : wcDeepLink;\n let deeplink = json?.href;\n\n if (typeof deeplink !== \"string\") return;\n\n if (deeplink.endsWith(\"/\")) deeplink = deeplink.slice(0, -1);\n\n const link = `${deeplink}/wc?requestId=${id}&sessionTopic=${topic}`;\n\n const env = getEnvironment();\n\n if (env === ENV_MAP.browser) {\n if (link.startsWith(\"https://\") || link.startsWith(\"http://\")) {\n window.open(link, \"_blank\", \"noreferrer noopener\");\n } else {\n window.open(link, \"_self\", \"noreferrer noopener\");\n }\n } else if (env === ENV_MAP.reactNative) {\n // global.Linking is set by react-native-compat\n if (typeof (global as any)?.Linking !== \"undefined\") {\n await (global as any).Linking.openURL(link);\n }\n }\n } catch (err) {\n // Silent error, just log in console\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport async function getDeepLink(store: IKeyValueStorage, key: string) {\n try {\n const deepLink = await store.getItem(key);\n if (deepLink) return deepLink;\n\n // check localStorage as fallback\n if (!isBrowser()) return;\n return localStorage.getItem(key) as string;\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport function getCommonValuesInArrays(arr1: T[], arr2: T[]): T[] {\n return arr1.filter((value) => arr2.includes(value));\n}\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","export const version = \"logger/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nimport { version } from \"./_version\";\nlet _globalLogger = null;\nfunction _checkNormalize() {\n try {\n const missing = [];\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n }\n ;\n }\n catch (error) {\n missing.push(form);\n }\n });\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\");\n }\n }\n catch (error) {\n return error.message;\n }\n return null;\n}\nconst _normalizeError = _checkNormalize();\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ///////////////////\n // Generic Errors\n // Unknown Error\n ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n // Not Implemented\n ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n // Unsupported Operation\n // - operation\n ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n // Some sort of bad response from the server\n ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n // Timeout\n ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n ///////////////////\n // Operational Errors\n // Buffer Overrun\n ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n ///////////////////\n // Argument Errors\n // Missing new operator to an object\n // - name: The name of the class\n ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n ///////////////////\n // Blockchain Errors\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n // Nonce has already been used\n // - transaction: the transaction attempted\n ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n ///////////////////\n // Interaction Errors\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ErrorCode[\"ACTION_REJECTED\"] = \"ACTION_REJECTED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nexport class Logger {\n constructor(version) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n _log(logLevel, args) {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) {\n return;\n }\n console.log.apply(console, args);\n }\n debug(...args) {\n this._log(Logger.levels.DEBUG, args);\n }\n info(...args) {\n this._log(Logger.levels.INFO, args);\n }\n warn(...args) {\n this._log(Logger.levels.WARNING, args);\n }\n makeError(message, code, params) {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, {});\n }\n if (!code) {\n code = Logger.errors.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n const messageDetails = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n }\n else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n }\n catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${code}`);\n messageDetails.push(`version=${this.version}`);\n const reason = message;\n let url = \"\";\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n switch (fault) {\n case \"overflow\":\n case \"underflow\":\n case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\":\n case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n // @TODO: Any??\n const error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n return error;\n }\n throwError(message, code, params) {\n throw this.makeError(message, code, params);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, params) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code, params);\n }\n assertArgument(condition, message, name, value) {\n if (!!condition) {\n return;\n }\n this.throwArgumentError(message, name, value);\n }\n checkNormalize(message) {\n if (message == null) {\n message = \"platform missing String.prototype.normalize\";\n }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n checkSafeUint53(value, message) {\n if (typeof (value) !== \"number\") {\n return;\n }\n if (message == null) {\n message = \"value not safe\";\n }\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n checkArgumentCount(count, expectedCount, message) {\n if (message) {\n message = \": \" + message;\n }\n else {\n message = \"\";\n }\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n checkNew(target, kind) {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n checkAbstract(target, kind) {\n if (target === kind) {\n this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n }\n else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setCensorship(censorship, permanent) {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n if (_permanentCensorErrors) {\n if (!censorship) {\n return;\n }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n static setLogLevel(logLevel) {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n static from(version) {\n return new Logger(version);\n }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n//# sourceMappingURL=index.js.map","export const version = \"bytes/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nfunction isHexable(value) {\n return !!(value.toHexString);\n}\nfunction addSlice(array) {\n if (array.slice) {\n return array;\n }\n array.slice = function () {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n };\n return array;\n}\nexport function isBytesLike(value) {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\nfunction isInteger(value) {\n return (typeof (value) === \"number\" && value == value && (value % 1) === 0);\n}\nexport function isBytes(value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof (value) === \"string\") {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\nexport function arrayify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return addSlice(new Uint8Array(result));\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n value = value.toHexString();\n }\n if (isHexString(value)) {\n let hex = value.substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n }\n else if (options.hexPad === \"right\") {\n hex += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return addSlice(new Uint8Array(result));\n }\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nexport function concat(items) {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return addSlice(result);\n}\nexport function stripZeros(value) {\n let result = arrayify(value);\n if (result.length === 0) {\n return result;\n }\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n return result;\n}\nexport function zeroPad(value, length) {\n value = arrayify(value);\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n if (hex.length) {\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return \"0x\" + hex;\n }\n return \"0x00\";\n }\n if (typeof (value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) {\n return (\"0x0\" + value);\n }\n return \"0x\" + value;\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n return value.toHexString();\n }\n if (isHexString(value)) {\n if (value.length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + value.substring(2);\n }\n else if (options.hexPad === \"right\") {\n value += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return value.toLowerCase();\n }\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n return (data.length - 2) / 2;\n}\nexport function hexDataSlice(data, offset, endOffset) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n }\n offset = 2 + 2 * offset;\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n return \"0x\" + data.substring(offset);\n}\nexport function hexConcat(items) {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\nexport function hexValue(value) {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") {\n return \"0x0\";\n }\n return trimmed;\n}\nexport function hexStripZeros(value) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") {\n offset++;\n }\n return \"0x\" + value.substring(offset);\n}\nexport function hexZeroPad(value, length) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n return value;\n}\nexport function splitSignature(signature) {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n if (isBytesLike(signature)) {\n let bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n }\n else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n }\n else {\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n }\n else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n }\n else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1 : 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n }\n else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n }\n else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n }\n else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n }\n else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n }\n else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n }\n else {\n const recId = (result.v === 0 || result.v === 1) ? result.v : (1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n }\n else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n }\n else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n }\n else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\nexport function joinSignature(signature) {\n signature = splitSignature(signature);\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\" : \"0x1b\")\n ]));\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nimport sha3 from \"js-sha3\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function keccak256(data) {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n//# sourceMappingURL=index.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","export const version = \"bignumber/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\nimport _BN from \"bn.js\";\nvar BN = _BN.BN;\nimport { hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst _constructorGuard = {};\nconst MAX_SAFE = 0x1fffffffffffff;\nexport function isBigNumberish(value) {\n return (value != null) && (BigNumber.isBigNumber(value) ||\n (typeof (value) === \"number\" && (value % 1) === 0) ||\n (typeof (value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof (value) === \"bigint\") ||\n isBytes(value));\n}\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\nexport class BigNumber {\n constructor(constructorGuard, hex) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n this._hex = hex;\n this._isBigNumber = true;\n Object.freeze(this);\n }\n fromTwos(value) {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n toTwos(value) {\n return toBigNumber(toBN(this).toTwos(value));\n }\n abs() {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n add(other) {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n sub(other) {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n div(other) {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n mul(other) {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n mod(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n pow(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n and(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n or(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n xor(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n mask(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n shl(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n shr(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n eq(other) {\n return toBN(this).eq(toBN(other));\n }\n lt(other) {\n return toBN(this).lt(toBN(other));\n }\n lte(other) {\n return toBN(this).lte(toBN(other));\n }\n gt(other) {\n return toBN(this).gt(toBN(other));\n }\n gte(other) {\n return toBN(this).gte(toBN(other));\n }\n isNegative() {\n return (this._hex[0] === \"-\");\n }\n isZero() {\n return toBN(this).isZero();\n }\n toNumber() {\n try {\n return toBN(this).toNumber();\n }\n catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n toBigInt() {\n try {\n return BigInt(this.toString());\n }\n catch (e) { }\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n toString() {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n }\n else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n }\n return toBN(this).toString(10);\n }\n toHexString() {\n return this._hex;\n }\n toJSON(key) {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n static from(value) {\n if (value instanceof BigNumber) {\n return value;\n }\n if (typeof (value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n if (typeof (value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n return BigNumber.from(String(value));\n }\n const anyValue = value;\n if (typeof (anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n if (anyValue) {\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof (hex) === \"string\") {\n return BigNumber.from(hex);\n }\n }\n else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n if (typeof (hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n static isBigNumber(value) {\n return !!(value && value._isBigNumber);\n }\n}\n// Normalize the hex string\nfunction toHex(value) {\n // For BN, call on the hex string\n if (typeof (value) !== \"string\") {\n return toHex(value.toString(16));\n }\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") {\n logger.throwArgumentError(\"invalid hex\", \"value\", value);\n }\n // Call toHex on the positive component\n value = toHex(value);\n // Do not allow \"-0x00\"\n if (value === \"0x00\") {\n return value;\n }\n // Negate the value\n return \"-\" + value;\n }\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n // Normalize zero\n if (value === \"0x\") {\n return \"0x00\";\n }\n // Make the string even length\n if (value.length % 2) {\n value = \"0x0\" + value.substring(2);\n }\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n return value;\n}\nfunction toBigNumber(value) {\n return BigNumber.from(toHex(value));\n}\nfunction toBN(value) {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\nfunction throwFault(fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value != null) {\n params.value = value;\n }\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n// value should have no prefix\nexport function _base36To16(value) {\n return (new BN(value, 36)).toString(16);\n}\n// value should have no prefix\nexport function _base16To36(value) {\n return (new BN(value, 16)).toString(36);\n}\n//# sourceMappingURL=bignumber.js.map","\"use strict\";\nimport { arrayify, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { BigNumber, isBigNumberish } from \"./bignumber\";\nconst _constructorGuard = {};\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n }\n catch (e) { }\n }\n if (typeof (decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\nexport function formatFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n const negative = value.lt(Zero);\n if (negative) {\n value = value.mul(NegativeOne);\n }\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n }\n else {\n value = whole + \".\" + fraction;\n }\n if (negative) {\n value = \"-\" + value;\n }\n return value;\n}\nexport function parseFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n let whole = comps[0], fraction = comps[1];\n if (!whole) {\n whole = \"0\";\n }\n if (!fraction) {\n fraction = \"0\";\n }\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n if (negative) {\n wei = wei.mul(NegativeOne);\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\n if (typeof (value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type + \")\", \"format.\" + key, value[key]);\n }\n return value[key];\n };\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.format = format;\n this._hex = hex;\n this._value = value;\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n _checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n addUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n subUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n divUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n isNegative() {\n return (this._value[0] === \"-\");\n }\n toString() { return this._value; }\n toHexString(width) {\n if (width == null) {\n return this._hex;\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid byte width\", \"width\", width);\n }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(this._value, format);\n }\n static fromValue(value, decimals, format) {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n if (decimals == null) {\n decimals = 0;\n }\n if (format == null) {\n format = \"fixed\";\n }\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n let hex = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n }\n else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) {\n numeric = numeric.fromTwos(fixedFormat.width);\n }\n const hex = numeric.toTwos((fixedFormat.signed ? 0 : 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","export const version = \"strings/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n bytes = arrayify(bytes);\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return arrayify(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\";\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","\"use strict\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, func) {\n if (!func) {\n func = function (value) { return [parseInt(value, 16)]; };\n }\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n return [codepoint + range.s];\n }\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n let complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","export const version = \"hash/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function decode(textData) {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\nexport function encode(data) {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n//# sourceMappingURL=base64.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array, depth) {\n if (depth == null) {\n depth = 1;\n }\n const result = [];\n const forEach = result.forEach;\n const flatDeep = function (arr, depth) {\n forEach.call(arr, function (val) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n }\n else {\n result.push(val);\n }\n });\n };\n flatDeep(array, depth);\n return result;\n}\nfunction fromEntries(array) {\n const result = {};\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\nexport function decode_arithmetic(bytes) {\n let pos = 0;\n function u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n // decode the frequency table\n let symbol_count = u16();\n let total = 1;\n let acc = [0, 1]; // first symbol has frequency 1\n for (let i = 1; i < symbol_count; i++) {\n acc.push(total += u16());\n }\n // skip the sized-payload that the last 3 symbols index into\n let skip = u16();\n let pos_payload = pos;\n pos += skip;\n let read_width = 0;\n let read_buffer = 0;\n function read_bit() {\n if (read_width == 0) {\n // this will read beyond end of buffer\n // but (undefined|0) => zero pad\n read_buffer = (read_buffer << 8) | bytes[pos++];\n read_width = 8;\n }\n return (read_buffer >> --read_width) & 1;\n }\n const N = 31;\n const FULL = Math.pow(2, N);\n const HALF = FULL >>> 1;\n const QRTR = HALF >> 1;\n const MASK = FULL - 1;\n // fill register\n let register = 0;\n for (let i = 0; i < N; i++)\n register = (register << 1) | read_bit();\n let symbols = [];\n let low = 0;\n let range = FULL; // treat like a float\n while (true) {\n let value = Math.floor((((register - low + 1) * total) - 1) / range);\n let start = 0;\n let end = symbol_count;\n while (end - start > 1) { // binary search\n let mid = (start + end) >>> 1;\n if (value < acc[mid]) {\n end = mid;\n }\n else {\n start = mid;\n }\n }\n if (start == 0)\n break; // first symbol is end mark\n symbols.push(start);\n let a = low + Math.floor(range * acc[start] / total);\n let b = low + Math.floor(range * acc[start + 1] / total) - 1;\n while (((a ^ b) & HALF) == 0) {\n register = (register << 1) & MASK | read_bit();\n a = (a << 1) & MASK;\n b = (b << 1) & MASK | 1;\n }\n while (a & ~b & QRTR) {\n register = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n a = (a << 1) ^ HALF;\n b = ((b ^ HALF) << 1) | HALF | 1;\n }\n low = a;\n range = 1 + b - a;\n }\n let offset = symbol_count - 4;\n return symbols.map(x => {\n switch (x - offset) {\n case 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 1: return offset + bytes[pos_payload++];\n default: return x - 1;\n }\n });\n}\n// returns an iterator which returns the next symbol\nexport function read_payload(v) {\n let pos = 0;\n return () => v[pos++];\n}\nexport function read_compressed_payload(bytes) {\n return read_payload(decode_arithmetic(bytes));\n}\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i) {\n return (i & 1) ? (~i >> 1) : (i >> 1);\n}\nfunction read_counts(n, next) {\n let v = Array(n);\n for (let i = 0; i < n; i++)\n v[i] = 1 + next();\n return v;\n}\nfunction read_ascending(n, next) {\n let v = Array(n);\n for (let i = 0, x = -1; i < n; i++)\n v[i] = x += 1 + next();\n return v;\n}\nfunction read_deltas(n, next) {\n let v = Array(n);\n for (let i = 0, x = 0; i < n; i++)\n v[i] = x += signed(next());\n return v;\n}\nexport function read_member_array(next, lookup) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next) {\n let ret = [];\n while (true) {\n let w = next();\n if (w == 0)\n break;\n ret.push(read_linear_table(w, next));\n }\n while (true) {\n let w = next() - 1;\n if (w < 0)\n break;\n ret.push(read_replacement_table(w, next));\n }\n return fromEntries(flat(ret));\n}\nexport function read_zero_terminated_array(next) {\n let v = [];\n while (true) {\n let i = next();\n if (i == 0)\n break;\n v.push(i);\n }\n return v;\n}\nfunction read_transposed(n, w, next) {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\nfunction read_linear_table(w, next) {\n let dx = 1 + next();\n let dy = next();\n let vN = read_zero_terminated_array(next);\n let m = read_transposed(vN.length, 1 + w, next);\n return flat(m.map((v, i) => {\n const x = v[0], ys = v.slice(1);\n //let [x, ...ys] = v;\n //return Array(vN[i]).fill().map((_, j) => {\n return Array(vN[i]).fill(undefined).map((_, j) => {\n let j_dy = j * dy;\n return [x + j * dx, ys.map(y => y + j_dy)];\n });\n }));\n}\nfunction read_replacement_table(w, next) {\n let n = 1 + next();\n let m = read_transposed(n, 1 + w, next);\n return m.map(v => [v[0], v.slice(1)]);\n}\nexport function read_emoji_trie(next) {\n let sorted = read_member_array(next).sort((a, b) => a - b);\n return read();\n function read() {\n let branches = [];\n while (true) {\n let keys = read_member_array(next, sorted);\n if (keys.length == 0)\n break;\n branches.push({ set: new Set(keys), node: read() });\n }\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n let temp = next();\n let valid = temp % 3;\n temp = (temp / 3) | 0;\n let fe0f = !!(temp & 1);\n temp >>= 1;\n let save = temp == 1;\n let check = temp == 2;\n return { branches, valid, fe0f, save, check };\n }\n}\n//# sourceMappingURL=decoder.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { decode } from \"@ethersproject/base64\";\nimport { read_compressed_payload } from './decoder.js';\nexport function getData() {\n return read_compressed_payload(decode('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'));\n}\n//# sourceMappingURL=include.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\nimport { getData } from './include.js';\nconst r = getData();\nimport { read_member_array, read_mapped_map, read_emoji_trie } from './decoder.js';\n// @TODO: This should be lazily loaded\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\nfunction explode_cp(name) {\n return toUtf8CodePoints(name);\n}\nfunction filter_fe0f(cps) {\n return cps.filter(cp => cp != 0xFE0F);\n}\nexport function ens_normalize_post_check(name) {\n for (let label of name.split('.')) {\n let cps = explode_cp(label);\n try {\n for (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n if (cps[i] !== UNDERSCORE) {\n throw new Error(`underscore only allowed at start`);\n }\n }\n if (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n throw new Error(`invalid label extension`);\n }\n }\n catch (err) {\n throw new Error(`Invalid label \"${label}\": ${err.message}`);\n }\n }\n return name;\n}\nexport function ens_normalize(name) {\n return ens_normalize_post_check(normalize(name, filter_fe0f));\n}\nfunction normalize(name, emoji_filter) {\n let input = explode_cp(name).reverse(); // flip for pop\n let output = [];\n while (input.length) {\n let emoji = consume_emoji_reversed(input);\n if (emoji) {\n output.push(...emoji_filter(emoji));\n continue;\n }\n let cp = input.pop();\n if (VALID.has(cp)) {\n output.push(cp);\n continue;\n }\n if (IGNORED.has(cp)) {\n continue;\n }\n let cps = MAPPED[cp];\n if (cps) {\n output.push(...cps);\n continue;\n }\n throw new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n }\n return ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\nfunction nfc(s) {\n return s.normalize('NFC');\n}\nfunction consume_emoji_reversed(cps, eaten) {\n var _a;\n let node = EMOJI_ROOT;\n let emoji;\n let saved;\n let stack = [];\n let pos = cps.length;\n if (eaten)\n eaten.length = 0; // clear input buffer (if needed)\n while (pos) {\n let cp = cps[--pos];\n node = (_a = node.branches.find(x => x.set.has(cp))) === null || _a === void 0 ? void 0 : _a.node;\n if (!node)\n break;\n if (node.save) { // remember\n saved = cp;\n }\n else if (node.check) { // check exclusion\n if (cp === saved)\n break;\n }\n stack.push(cp);\n if (node.fe0f) {\n stack.push(0xFE0F);\n if (pos > 0 && cps[pos - 1] == 0xFE0F)\n pos--; // consume optional FE0F\n }\n if (node.valid) { // this is a valid emoji (so far)\n emoji = stack.slice(); // copy stack\n if (node.valid == 2)\n emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n if (eaten)\n eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n cps.length = pos; // truncate\n }\n }\n return emoji;\n}\n//# sourceMappingURL=lib.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { ens_normalize } from \"./ens-normalize/lib\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nfunction checkComponent(comp) {\n if (comp.length === 0) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n return comp;\n}\nfunction ensNameSplit(name) {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps = [];\n if (name.length === 0) {\n return comps;\n }\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n // There was a stray separator at the end of the name\n if (last >= bytes.length) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\nexport function ensNormalize(name) {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\nexport function isValidName(name) {\n try {\n return (ensNameSplit(name).length !== 0);\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n /* istanbul ignore if */\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let result = Zeros;\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n }))) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","export const version = \"rlp/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { arrayify, hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n const data = Array.prototype.slice.call(arrayify(object));\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n }\n else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nexport function encode(object) {\n return hexlify(_encode(object));\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result };\n }\n else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\nexport function decode(data) {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=index.js.map","export const version = \"address/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction getChecksumAddress(address) {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER = 0x1fffffffffffff;\nfunction log10(x) {\n if (Math.log10) {\n return Math.log10(x);\n }\n return Math.log(x) / Math.LN10;\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nexport function getAddress(address) {\n let result = null;\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n // Maybe ICAP? (we only support direct mode)\n }\n else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n result = _base36To16(address.substring(4));\n while (result.length < 40) {\n result = \"0\" + result;\n }\n result = getChecksumAddress(\"0x\" + result);\n }\n else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n return result;\n}\nexport function isAddress(address) {\n try {\n getAddress(address);\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function getIcapAddress(address) {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction) {\n let from = null;\n try {\n from = getAddress(transaction.from);\n }\n catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n return getAddress(hexDataSlice(keccak256(encode([from, nonce])), 12));\n}\nexport function getCreate2Address(from, salt, initCodeHash) {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([\"0xff\", getAddress(from), salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=index.js.map","export const version = \"properties/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor, key) {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) {\n return ctor[key];\n }\n if (!ctor.prototype || typeof (ctor.prototype) !== \"object\") {\n break;\n }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\nexport function resolveProperties(object) {\n return __awaiter(this, void 0, void 0, function* () {\n const promises = Object.keys(object).map((key) => {\n const value = object[key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n const results = yield Promise.all(promises);\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, {});\n });\n}\nexport function checkProperties(object, properties) {\n if (!object || typeof (object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\nexport function shallowCopy(object) {\n const result = {};\n for (const key in object) {\n result[key] = object[key];\n }\n return result;\n}\nconst opaque = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\nfunction _isFrozen(object) {\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof (object)]) {\n return true;\n }\n if (Array.isArray(object) || typeof (object) === \"object\") {\n if (!Object.isFrozen(object)) {\n return false;\n }\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value = null;\n try {\n value = object[keys[i]];\n }\n catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n if (!_isFrozen(value)) {\n return false;\n }\n }\n return true;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object) {\n if (_isFrozen(object)) {\n return object;\n }\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n if (typeof (object) === \"object\") {\n const result = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) {\n continue;\n }\n defineReadOnly(result, key, deepCopy(value));\n }\n return result;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\nexport function deepCopy(object) {\n return _deepCopy(object);\n}\nexport class Description {\n constructor(info) {\n for (const key in info) {\n this[key] = deepCopy(info[key]);\n }\n }\n}\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { id } from \"./id\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst NegativeOne = BigNumber.from(-1);\nconst Zero = BigNumber.from(0);\nconst One = BigNumber.from(1);\nconst MaxUint256 = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return hexConcat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n try {\n return BigNumber.from(value).toString();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) {\n throw new Error(\"bad length\");\n }\n return hexlify(bytes);\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n const boundsUpper = MaxUint256.mask(signed ? (width - 1) : width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne) : Zero;\n return function (value) {\n const v = BigNumber.from(value);\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n return function (value) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${type}`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n switch (type) {\n case \"address\": return function (value) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n defineReadOnly(this, \"_encoderCache\", {});\n defineReadOnly(this, \"_types\", {});\n // Link struct types to their direct child structs\n const links = {};\n // Link structs to structs which contain them as a child\n const parents = {};\n // Link all subtypes within a given struct\n const subtypes = {};\n Object.keys(types).forEach((type) => {\n links[type] = {};\n parents[type] = [];\n subtypes[type] = {};\n });\n for (const name in types) {\n const uniqueNames = {};\n types[name].forEach((field) => {\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n return;\n }\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\n else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${primaryTypes.map((t) => (JSON.stringify(t))).join(\", \")}`, \"types\", types);\n }\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n // Check for circular type references\n function checkCircular(type, found) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found[type] = true;\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) {\n return;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n delete found[type];\n }\n checkCircular(this.primaryType, {});\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n getEncoder(type) {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n _getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return encoder;\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n return keccak256(hexConcat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n encodeType(name) {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return callback(type, value);\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v) => this._visit(subtype, v, callback));\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, {});\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(name)}`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static resolveNames(domain, types, value, resolveName) {\n return __awaiter(this, void 0, void 0, function* () {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n // Look up all ENS names\n const ensCache = {};\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = yield resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n });\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n//# sourceMappingURL=typed-data.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","import BN from 'bn.js';\nimport hash from 'hash.js';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, basedir, module) {\n\treturn module = {\n\t\tpath: basedir,\n\t\texports: {},\n\t\trequire: function (path, base) {\n\t\t\treturn commonjsRequire(path, (base === undefined || base === null) ? module.path : base);\n\t\t}\n\t}, fn(module, module.exports), module.exports;\n}\n\nfunction getDefaultExportFromNamespaceIfPresent (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n;\n}\n\nfunction getDefaultExportFromNamespaceIfNotNamed (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n;\n}\n\nfunction getAugmentedNamespace(n) {\n\tif (n.__esModule) return n;\n\tvar a = Object.defineProperty({}, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n}\n\nvar minimalisticAssert = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\nvar utils_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n});\n\nvar utils_1$1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\n\n\n\nutils.assert = minimalisticAssert;\nutils.toArray = utils_1.toArray;\nutils.zero2 = utils_1.zero2;\nutils.toHex = utils_1.toHex;\nutils.encode = utils_1.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n});\n\n'use strict';\n\n\n\nvar getNAF = utils_1$1.getNAF;\nvar getJSF = utils_1$1.getJSF;\nvar assert$1 = utils_1$1.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nvar base = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert$1(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert$1(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils_1$1.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert$1(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert$1(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils_1$1.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\nvar inherits_browser = createCommonjsModule(function (module) {\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n});\n\n'use strict';\n\n\n\n\n\n\nvar assert$2 = utils_1$1.assert;\n\nfunction ShortCurve(conf) {\n base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits_browser(ShortCurve, base);\nvar short_1 = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert$2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits_browser(Point, base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits_browser(JPoint, base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nvar curve_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curve = exports;\n\ncurve.base = base;\ncurve.short = short_1;\ncurve.mont = /*RicMoo:ethers:require(./mont)*/(null);\ncurve.edwards = /*RicMoo:ethers:require(./edwards)*/(null);\n});\n\nvar curves_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curves = exports;\n\n\n\n\n\nvar assert = utils_1$1.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve_1.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve_1.edwards(options);\n else\n this.curve = new curve_1.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = /*RicMoo:ethers:require(./precomputed/secp256k1)*/(null).crash();\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n});\n\n'use strict';\n\n\n\n\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils_1.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils_1.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils_1.toArray(options.pers, options.persEnc || 'hex');\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nvar hmacDrbg = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils_1.toArray(entropy, entropyEnc);\n add = utils_1.toArray(add, addEnc);\n\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils_1.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils_1.encode(res, enc);\n};\n\n'use strict';\n\n\n\nvar assert$3 = utils_1$1.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nvar key = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert$3(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert$3(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert$3(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n'use strict';\n\n\n\n\nvar assert$4 = utils_1$1.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert$4(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nvar signature = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils_1$1.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils_1$1.encode(res, enc);\n};\n\n'use strict';\n\n\n\n\n\nvar rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nvar assert$5 = utils_1$1.assert;\n\n\n\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert$5(Object.prototype.hasOwnProperty.call(curves_1, options),\n 'Unknown curve ' + options);\n\n options = curves_1[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves_1.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nvar ec = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new key(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return key.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return key.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature$1, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature$1 = new signature(signature$1, 'hex');\n\n // Perform primitive values validation\n var r = signature$1.r;\n var s = signature$1.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature$1, j, enc) {\n assert$5((3 & j) === j, 'The recovery param is more than two bits');\n signature$1 = new signature(signature$1, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature$1.r;\n var s = signature$1.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature$1.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature$1, Q, enc) {\n signature$1 = new signature(signature$1, enc);\n if (signature$1.recoveryParam !== null)\n return signature$1.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature$1, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\nvar elliptic_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = /*RicMoo:ethers*/{ version: \"6.5.4\" }.version;\nelliptic.utils = utils_1$1;\nelliptic.rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nelliptic.curve = curve_1;\nelliptic.curves = curves_1;\n\n// Protocols\nelliptic.ec = ec;\nelliptic.eddsa = /*RicMoo:ethers:require(./elliptic/eddsa)*/(null);\n});\n\nvar EC$1 = elliptic_1.ec;\n\nexport { EC$1 as EC };\n//# sourceMappingURL=elliptic.js.map\n","export const version = \"signing-key/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { EC } from \"./elliptic\";\nimport { arrayify, hexDataLength, hexlify, hexZeroPad, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nlet _curve = null;\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\nexport class SigningKey {\n constructor(privateKey) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n _addPoint(other) {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n signDigest(digest) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n });\n }\n computeSharedSecret(otherKey) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n static isSigningKey(value) {\n return !!(value && value._isSigningKey);\n }\n}\nexport function recoverPublicKey(digest, signature) {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\nexport function computePublicKey(key, compressed) {\n const bytes = arrayify(key);\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n }\n else if (bytes.length === 33) {\n if (compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n }\n else if (bytes.length === 65) {\n if (!compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n//# sourceMappingURL=index.js.map","export const version = \"transactions/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport var TransactionTypes;\n(function (TransactionTypes) {\n TransactionTypes[TransactionTypes[\"legacy\"] = 0] = \"legacy\";\n TransactionTypes[TransactionTypes[\"eip2930\"] = 1] = \"eip2930\";\n TransactionTypes[TransactionTypes[\"eip1559\"] = 2] = \"eip1559\";\n})(TransactionTypes || (TransactionTypes = {}));\n;\n///////////////////////////////\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleNumber(value) {\n if (value === \"0x\") {\n return Zero;\n }\n return BigNumber.from(value);\n}\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\nconst allowedTransactionKeys = {\n chainId: true, data: true, gasLimit: true, gasPrice: true, nonce: true, to: true, type: true, value: true\n};\nexport function computeAddress(key) {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\nfunction formatNumber(value, name) {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${addr}:${index}]`, storageKey);\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${index}]`, set);\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, {});\n return accessSetify(addr, Object.keys(storageKeys).sort());\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _serializeEip1559(transaction, signature) {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x02\", RLP.encode(fields)]);\n}\nfunction _serializeEip2930(transaction, signature) {\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x01\", RLP.encode(fields)]);\n}\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction, signature) {\n checkProperties(transaction, allowedTransactionKeys);\n const raw = [];\n transactionFields.forEach(function (fieldInfo) {\n let value = transaction[fieldInfo.name] || ([]);\n const options = {};\n if (fieldInfo.numeric) {\n options.hexPad = \"left\";\n }\n value = arrayify(hexlify(value, options));\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n }\n raw.push(hexlify(value));\n });\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n if (typeof (chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n }\n else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam;\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n }\n else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n return RLP.encode(raw);\n}\nexport function serialize(transaction, signature) {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${transaction.type}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) {\n throw new Error(\"bad recid\");\n }\n tx.v = recid;\n }\n catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n }\n catch (error) { }\n}\nfunction _parseEip1559(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _parseEip2930(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n const tx = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n return tx;\n}\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction) {\n const transaction = RLP.decode(rawTransaction);\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n const tx = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n // Legacy unsigned transaction\n if (transaction.length === 6) {\n return tx;\n }\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n }\n catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n }\n else {\n // Signed Transaction\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) {\n tx.chainId = 0;\n }\n let recoveryParam = tx.v - 27;\n const raw = transaction.slice(0, 6);\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n }\n catch (error) { }\n tx.hash = keccak256(rawTransaction);\n }\n tx.type = null;\n return tx;\n}\nexport function parse(rawTransaction) {\n const payload = arrayify(rawTransaction);\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) {\n return _parse(payload);\n }\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${payload[0]}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n//# sourceMappingURL=index.js.map","import { AuthTypes } from \"@walletconnect/types\";\nimport { hashMessage } from \"@ethersproject/hash\";\nimport { recoverAddress } from \"@ethersproject/transactions\";\nconst DEFAULT_RPC_URL = \"https://rpc.walletconnect.com/v1\";\n\nexport async function verifySignature(\n address: string,\n reconstructedMessage: string,\n cacaoSignature: AuthTypes.CacaoSignature,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n): Promise {\n // Determine if this signature is from an EOA or a contract.\n switch (cacaoSignature.t) {\n case \"eip191\":\n return isValidEip191Signature(address, reconstructedMessage, cacaoSignature.s);\n case \"eip1271\":\n return await isValidEip1271Signature(\n address,\n reconstructedMessage,\n cacaoSignature.s,\n chainId,\n projectId,\n baseRpcUrl,\n );\n break;\n default:\n throw new Error(\n `verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${cacaoSignature.t}`,\n );\n }\n}\n\nexport function isValidEip191Signature(\n address: string,\n message: string,\n signature: string,\n): boolean {\n const recoveredAddress = recoverAddress(hashMessage(message), signature);\n return recoveredAddress.toLowerCase() === address.toLowerCase();\n}\n\nexport async function isValidEip1271Signature(\n address: string,\n reconstructedMessage: string,\n signature: string,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n) {\n try {\n const eip1271MagicValue = \"0x1626ba7e\";\n const dynamicTypeOffset = \"0000000000000000000000000000000000000000000000000000000000000040\";\n const dynamicTypeLength = \"0000000000000000000000000000000000000000000000000000000000000041\";\n const nonPrefixedSignature = signature.substring(2);\n const nonPrefixedHashedMessage = hashMessage(reconstructedMessage).substring(2);\n\n const data =\n eip1271MagicValue +\n nonPrefixedHashedMessage +\n dynamicTypeOffset +\n dynamicTypeLength +\n nonPrefixedSignature;\n const response = await fetch(\n `${baseRpcUrl || DEFAULT_RPC_URL}/?chainId=${chainId}&projectId=${projectId}`,\n {\n method: \"POST\",\n body: JSON.stringify({\n id: generateJsonRpcId(),\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: address, data }, \"latest\"],\n }),\n },\n );\n const { result } = await response.json();\n if (!result) return false;\n\n // Remove right-padded zeros from result to get only the concrete recovered value.\n const recoveredValue = result.slice(0, eip1271MagicValue.length);\n return recoveredValue.toLowerCase() === eip1271MagicValue.toLowerCase();\n } catch (error: any) {\n // eslint-disable-next-line no-console\n console.error(\"isValidEip1271Signature: \", error);\n return false;\n }\n}\n\nfunction generateJsonRpcId() {\n return Date.now() + Math.floor(Math.random() * 1000);\n}\n","/* eslint-disable no-console */\nimport { AuthTypes } from \"@walletconnect/types\";\nimport { getCommonValuesInArrays } from \"./misc\";\nimport { verifySignature } from \"./signatures\";\nconst didPrefix = \"did:pkh:\";\nexport const getDidAddressSegments = (iss: string) => {\n return iss?.split(\":\");\n};\n\nexport const getDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return iss.includes(didPrefix) ? segments[3] : segments[1];\n }\n return undefined;\n};\n\nexport const getNamespacedDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments[2] + \":\" + segments[3];\n }\n return undefined;\n};\n\nexport const getDidAddress = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments.pop();\n }\n return undefined;\n};\n\nexport async function validateSignedCacao(params: { cacao: AuthTypes.Cacao; projectId?: string }) {\n const { cacao, projectId } = params;\n const { s: signature, p: payload } = cacao;\n const reconstructed = formatMessage(payload, payload.iss);\n const walletAddress = getDidAddress(payload.iss) as string;\n const isValid = await verifySignature(\n walletAddress,\n reconstructed,\n signature,\n getDidChainId(payload.iss) as string,\n projectId as string,\n );\n\n return isValid;\n}\n\nexport const formatMessage = (cacao: AuthTypes.FormatMessageParams, iss: string) => {\n const header = `${cacao.domain} wants you to sign in with your Ethereum account:`;\n const walletAddress = getDidAddress(iss);\n\n if (!cacao.aud && !cacao.uri) {\n throw new Error(\"Either `aud` or `uri` is required to construct the message\");\n }\n\n let statement = cacao.statement || undefined;\n const uri = `URI: ${cacao.aud || cacao.uri}`;\n const version = `Version: ${cacao.version}`;\n const chainId = `Chain ID: ${getDidChainId(iss)}`;\n const nonce = `Nonce: ${cacao.nonce}`;\n const issuedAt = `Issued At: ${cacao.iat}`;\n const resources = cacao.resources\n ? `Resources:${cacao.resources.map((resource) => `\\n- ${resource}`).join(\"\")}`\n : undefined;\n const recap = getRecapFromResources(cacao.resources);\n if (recap) {\n const decoded = decodeRecap(recap);\n statement = formatStatementFromRecap(statement, decoded);\n }\n\n const message = [\n header,\n walletAddress,\n ``,\n statement,\n ``,\n uri,\n version,\n chainId,\n nonce,\n issuedAt,\n resources,\n ]\n .filter((val) => val !== undefined && val !== null) // remove unnecessary empty lines\n .join(\"\\n\");\n\n return message;\n};\n\nexport function buildAuthObject(\n requestPayload: AuthTypes.PayloadParams,\n signature: AuthTypes.CacaoSignature,\n iss: string,\n) {\n if (!iss.includes(\"did:pkh:\")) {\n iss = `did:pkh:${iss}`;\n }\n\n const authObject: AuthTypes.Cacao = {\n h: {\n t: \"caip122\",\n },\n p: {\n iss,\n domain: requestPayload.domain,\n aud: requestPayload.aud,\n version: requestPayload.version,\n nonce: requestPayload.nonce,\n iat: requestPayload.iat,\n statement: requestPayload.statement,\n requestId: requestPayload.requestId,\n resources: requestPayload.resources,\n nbf: requestPayload.nbf,\n exp: requestPayload.exp,\n },\n s: signature,\n };\n return authObject;\n}\ntype PopulateAuthPayloadParams = {\n authPayload: AuthTypes.PayloadParams;\n chains: string[];\n methods: string[];\n};\nexport function populateAuthPayload(params: PopulateAuthPayloadParams): AuthTypes.PayloadParams {\n const { authPayload, chains, methods } = params;\n const statement = authPayload.statement || \"\";\n\n if (!chains?.length) return authPayload;\n\n const requested = authPayload.chains;\n const supported = chains;\n\n const supportedChains = getCommonValuesInArrays(requested, supported);\n if (!supportedChains?.length) {\n throw new Error(\"No supported chains\");\n }\n\n const requestedRecaps = getDecodedRecapFromResources(authPayload.resources);\n if (!requestedRecaps) return authPayload;\n\n isValidRecap(requestedRecaps);\n const resource = getRecapResource(requestedRecaps, \"eip155\");\n let updatedResources = authPayload?.resources || [];\n\n if (resource?.length) {\n const actions = getReCapActions(resource);\n const supportedActions = getCommonValuesInArrays(actions, methods);\n if (!supportedActions?.length) {\n throw new Error(\n `Supported methods don't satisfy the requested: ${JSON.stringify(\n actions,\n )}, supported: ${JSON.stringify(methods)}`,\n );\n }\n const formattedActions = assignAbilityToActions(\"request\", supportedActions as string[], {\n chains: supportedChains,\n });\n const updatedRecap = addResourceToRecap(requestedRecaps, \"eip155\", formattedActions);\n // remove recap from resources as we will add the updated one\n updatedResources = authPayload?.resources?.slice(0, -1) || [];\n updatedResources.push(encodeRecap(updatedRecap));\n }\n\n return {\n ...authPayload,\n statement: buildRecapStatement(statement, getRecapFromResources(updatedResources)),\n chains: supportedChains,\n resources: authPayload?.resources || updatedResources.length > 0 ? updatedResources : undefined,\n };\n}\n\nexport function getDecodedRecapFromResources(resources?: string[]) {\n const resource = getRecapFromResources(resources);\n if (!resource) return;\n if (!isRecap(resource)) return;\n return decodeRecap(resource);\n}\n\nexport function recapHasResource(recap: any, resource: string) {\n return recap?.att?.hasOwnProperty(resource);\n}\n\nexport function getRecapResource(recap: any, resource: string): any[] {\n return recap?.att?.[resource] ? Object.keys(recap?.att?.[resource]) : [];\n}\n\nexport function getRecapAbilitiesFromResource(actions: any[]) {\n return actions?.map((action) => Object.keys(action)) || [];\n}\n\nexport function getReCapActions(abilities: any[]) {\n return abilities?.map((ability) => ability.split(\"/\")?.[1]) || [];\n}\n\nexport function base64Encode(input: unknown): string {\n return Buffer.from(JSON.stringify(input)).toString(\"base64\");\n}\n\nexport function base64Decode(encodedString: string): string {\n return JSON.parse(Buffer.from(encodedString, \"base64\").toString(\"utf-8\"));\n}\n\nexport function isValidRecap(recap: any) {\n if (!recap) throw new Error(\"No recap provided, value is undefined\");\n if (!recap.att) throw new Error(\"No `att` property found\");\n const resources = Object.keys(recap.att);\n if (!resources?.length) throw new Error(\"No resources found in `att` property\");\n resources.forEach((resource) => {\n const resourceAbilities = recap.att[resource];\n if (Array.isArray(resourceAbilities))\n throw new Error(`Resource must be an object: ${resource}`);\n if (typeof resourceAbilities !== \"object\")\n throw new Error(`Resource must be an object: ${resource}`);\n if (!Object.keys(resourceAbilities).length)\n throw new Error(`Resource object is empty: ${resource}`);\n\n Object.keys(resourceAbilities).forEach((ability) => {\n const limits = resourceAbilities[ability];\n if (!Array.isArray(limits))\n throw new Error(`Ability limits ${ability} must be an array of objects, found: ${limits}`);\n if (!limits.length)\n throw new Error(`Value of ${ability} is empty array, must be an array with objects`);\n limits.forEach((limit) => {\n if (typeof limit !== \"object\")\n throw new Error(\n `Ability limits (${ability}) must be an array of objects, found: ${limit}`,\n );\n });\n });\n });\n}\n\nexport function createRecap(resource: string, ability: string, actions: string[], limits = {}) {\n actions?.sort((a, b) => a.localeCompare(b));\n return {\n att: { [resource]: assignAbilityToActions(ability, actions, limits) },\n };\n}\n\ntype RecapType = {\n att: {\n [key: string]: Record;\n };\n};\nexport function addResourceToRecap(recap: RecapType, resource: string, actions: unknown[]) {\n recap.att[resource] = {\n ...actions,\n };\n const keys = Object.keys(recap.att)?.sort((a, b) => a.localeCompare(b));\n const sorted = keys.reduce(\n (obj, key) => {\n obj.att[key] = recap.att[key];\n return obj;\n },\n { att: {} },\n );\n return sorted;\n}\n\nexport function assignAbilityToActions(ability: string, actions: string[], limits = {}) {\n // sort resources alphabetically\n actions = actions?.sort((a, b) => a.localeCompare(b));\n const abilities = actions.map((action) => {\n return {\n [`${ability}/${action}`]: [limits],\n };\n });\n return Object.assign({}, ...abilities);\n}\n\nexport function encodeRecap(recap: any) {\n isValidRecap(recap);\n // remove the padding from the base64 string as per recap spec\n return `urn:recap:${base64Encode(recap).replace(/=/g, \"\")}`;\n}\n\nexport function decodeRecap(recap: any): RecapType {\n // base64Decode adds padding internally so don't need to add it back if it was removed\n const decoded = base64Decode(recap.replace(\"urn:recap:\", \"\"));\n isValidRecap(decoded);\n return decoded as unknown as RecapType;\n}\n\nexport function createEncodedRecap(resource: string, ability: string, actions: string[]): string {\n const recap = createRecap(resource, ability, actions);\n return encodeRecap(recap);\n}\n\nexport function isRecap(resource: string) {\n return resource && resource.includes(\"urn:recap:\");\n}\n\nexport function mergeEncodedRecaps(recap1: string, recap2: string) {\n const decoded1 = decodeRecap(recap1);\n const decoded2 = decodeRecap(recap2);\n const merged = mergeRecaps(decoded1, decoded2);\n return encodeRecap(merged);\n}\n\nexport function mergeRecaps(recap1: RecapType, recap2: RecapType) {\n isValidRecap(recap1);\n isValidRecap(recap2);\n const keys = Object.keys(recap1.att)\n .concat(Object.keys(recap2.att))\n .sort((a, b) => a.localeCompare(b));\n const mergedRecap = { att: {} };\n keys.forEach((key) => {\n const actions = Object.keys(recap1.att?.[key] || {})\n .concat(Object.keys(recap2.att?.[key] || {}))\n .sort((a, b) => a.localeCompare(b));\n actions.forEach((action) => {\n mergedRecap.att[key] = {\n ...mergedRecap.att[key],\n [action]: recap1.att[key]?.[action] || recap2.att[key]?.[action],\n };\n });\n });\n return mergedRecap;\n}\n\nexport function formatStatementFromRecap(statement = \"\", recap: RecapType) {\n isValidRecap(recap);\n const base = \"I further authorize the stated URI to perform the following actions on my behalf: \";\n\n if (statement.includes(base)) return statement;\n\n const statementForRecap: string[] = [];\n let currentCounter = 0;\n Object.keys(recap.att).forEach((resource) => {\n const actions = Object.keys(recap.att[resource]).map((ability: any) => {\n return {\n ability: ability.split(\"/\")[0],\n action: ability.split(\"/\")[1],\n };\n });\n //\n actions.sort((a, b) => a.action.localeCompare(b.action));\n const uniqueAbilities = {};\n actions.forEach((action: any) => {\n if (!uniqueAbilities[action.ability]) {\n uniqueAbilities[action.ability] = [];\n }\n uniqueAbilities[action.ability].push(action.action);\n });\n const abilities = Object.keys(uniqueAbilities).map((ability) => {\n currentCounter++;\n return `(${currentCounter}) '${ability}': '${uniqueAbilities[ability].join(\n \"', '\",\n )}' for '${resource}'.`;\n });\n statementForRecap.push(abilities.join(\", \").replace(\".,\", \".\"));\n });\n\n const recapStatemet = statementForRecap.join(\" \");\n const recapStatement = `${base}${recapStatemet}`;\n // add a space if there is a statement\n return `${statement ? statement + \" \" : \"\"}${recapStatement}`;\n}\n\nexport function getMethodsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n // methods are only available for eip155 as per the current implementation\n const resource = decoded.att?.eip155;\n if (!resource) return [];\n return Object.keys(resource).map((ability: any) => ability.split(\"/\")[1]);\n}\n\nexport function getChainsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n const chains: string[] = [];\n\n Object.values(decoded.att).forEach((resource: any) => {\n Object.values(resource).forEach((ability: any) => {\n if (ability?.[0]?.chains) {\n chains.push(ability[0].chains);\n }\n });\n });\n return [...new Set(chains.flat())];\n}\n\nexport function buildRecapStatement(statement: string, recap: unknown) {\n if (!recap) return statement;\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n return formatStatementFromRecap(statement, decoded);\n}\n\nexport function getRecapFromResources(resources?: string[]) {\n if (!resources) return;\n // per spec, recap is always the last resource\n const resource = resources?.[resources.length - 1];\n return isRecap(resource) ? resource : undefined;\n}\n","import { ChaCha20Poly1305 } from \"@stablelib/chacha20poly1305\";\nimport { HKDF } from \"@stablelib/hkdf\";\nimport { randomBytes } from \"@stablelib/random\";\nimport { hash, SHA256 } from \"@stablelib/sha256\";\nimport * as x25519 from \"@stablelib/x25519\";\nimport { CryptoTypes } from \"@walletconnect/types\";\nimport { concat, fromString, toString } from \"uint8arrays\";\n\nexport const BASE10 = \"base10\";\nexport const BASE16 = \"base16\";\nexport const BASE64 = \"base64pad\";\nexport const UTF8 = \"utf8\";\n\nexport const TYPE_0 = 0;\nexport const TYPE_1 = 1;\n\nconst ZERO_INDEX = 0;\nconst TYPE_LENGTH = 1;\nconst IV_LENGTH = 12;\nconst KEY_LENGTH = 32;\n\nexport function generateKeyPair(): CryptoTypes.KeyPair {\n const keyPair = x25519.generateKeyPair();\n return {\n privateKey: toString(keyPair.secretKey, BASE16),\n publicKey: toString(keyPair.publicKey, BASE16),\n };\n}\n\nexport function generateRandomBytes32(): string {\n const random = randomBytes(KEY_LENGTH);\n return toString(random, BASE16);\n}\n\nexport function deriveSymKey(privateKeyA: string, publicKeyB: string): string {\n const sharedKey = x25519.sharedKey(\n fromString(privateKeyA, BASE16),\n fromString(publicKeyB, BASE16),\n true,\n );\n const hkdf = new HKDF(SHA256, sharedKey);\n const symKey = hkdf.expand(KEY_LENGTH);\n return toString(symKey, BASE16);\n}\n\nexport function hashKey(key: string): string {\n const result = hash(fromString(key, BASE16));\n return toString(result, BASE16);\n}\n\nexport function hashMessage(message: string): string {\n const result = hash(fromString(message, UTF8));\n return toString(result, BASE16);\n}\n\nexport function encodeTypeByte(type: number): Uint8Array {\n return fromString(`${type}`, BASE10);\n}\n\nexport function decodeTypeByte(byte: Uint8Array): number {\n return Number(toString(byte, BASE10));\n}\n\nexport function encrypt(params: CryptoTypes.EncryptParams): string {\n const type = encodeTypeByte(typeof params.type !== \"undefined\" ? params.type : TYPE_0);\n if (decodeTypeByte(type) === TYPE_1 && typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n const senderPublicKey =\n typeof params.senderPublicKey !== \"undefined\"\n ? fromString(params.senderPublicKey, BASE16)\n : undefined;\n\n const iv =\n typeof params.iv !== \"undefined\" ? fromString(params.iv, BASE16) : randomBytes(IV_LENGTH);\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const sealed = box.seal(iv, fromString(params.message, UTF8));\n return serialize({ type, sealed, iv, senderPublicKey });\n}\n\nexport function decrypt(params: CryptoTypes.DecryptParams): string {\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const { sealed, iv } = deserialize(params.encoded);\n const message = box.open(iv, sealed);\n if (message === null) throw new Error(\"Failed to decrypt\");\n return toString(message, UTF8);\n}\n\nexport function serialize(params: CryptoTypes.EncodingParams): string {\n if (decodeTypeByte(params.type) === TYPE_1) {\n if (typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n return toString(\n concat([params.type, params.senderPublicKey, params.iv, params.sealed]),\n BASE64,\n );\n }\n // default to type 0 envelope\n return toString(concat([params.type, params.iv, params.sealed]), BASE64);\n}\n\nexport function deserialize(encoded: string): CryptoTypes.EncodingParams {\n const bytes = fromString(encoded, BASE64);\n const type = bytes.slice(ZERO_INDEX, TYPE_LENGTH);\n const slice1 = TYPE_LENGTH;\n if (decodeTypeByte(type) === TYPE_1) {\n const slice2 = slice1 + KEY_LENGTH;\n const slice3 = slice2 + IV_LENGTH;\n const senderPublicKey = bytes.slice(slice1, slice2);\n const iv = bytes.slice(slice2, slice3);\n const sealed = bytes.slice(slice3);\n return { type, sealed, iv, senderPublicKey };\n }\n // default to type 0 envelope\n const slice2 = slice1 + IV_LENGTH;\n const iv = bytes.slice(slice1, slice2);\n const sealed = bytes.slice(slice2);\n return { type, sealed, iv };\n}\n\nexport function validateDecoding(\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n): CryptoTypes.EncodingValidation {\n const deserialized = deserialize(encoded);\n return validateEncoding({\n type: decodeTypeByte(deserialized.type),\n senderPublicKey:\n typeof deserialized.senderPublicKey !== \"undefined\"\n ? toString(deserialized.senderPublicKey, BASE16)\n : undefined,\n receiverPublicKey: opts?.receiverPublicKey,\n });\n}\n\nexport function validateEncoding(opts?: CryptoTypes.EncodeOptions): CryptoTypes.EncodingValidation {\n const type = opts?.type || TYPE_0;\n if (type === TYPE_1) {\n if (typeof opts?.senderPublicKey === \"undefined\") {\n throw new Error(\"missing sender public key\");\n }\n if (typeof opts?.receiverPublicKey === \"undefined\") {\n throw new Error(\"missing receiver public key\");\n }\n }\n return {\n type,\n senderPublicKey: opts?.senderPublicKey,\n receiverPublicKey: opts?.receiverPublicKey,\n };\n}\n\nexport function isTypeOneEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return (\n result.type === TYPE_1 &&\n typeof result.senderPublicKey === \"string\" &&\n typeof result.receiverPublicKey === \"string\"\n );\n}\n","import { RELAY_JSONRPC } from \"@walletconnect/relay-api\";\nimport { RelayerTypes } from \"@walletconnect/types\";\n\nexport const RELAYER_DEFAULT_PROTOCOL = \"irn\";\n\nexport function getRelayProtocolName(\n opts?: RelayerTypes.RequestOptions,\n): RelayerTypes.ProtocolOptions {\n return opts?.relay || { protocol: RELAYER_DEFAULT_PROTOCOL };\n}\n\nexport function getRelayProtocolApi(protocol: string) {\n const jsonrpc = RELAY_JSONRPC[protocol];\n if (typeof jsonrpc === \"undefined\") {\n throw new Error(`Relay Protocol not supported: ${protocol}`);\n }\n return jsonrpc;\n}\n","import * as qs from \"query-string\";\nimport { EngineTypes, RelayerTypes } from \"@walletconnect/types\";\n\n// -- uri -------------------------------------------------- //\n\nexport function parseRelayParams(params: any, delimiter = \"-\"): RelayerTypes.ProtocolOptions {\n const relay: any = {};\n const prefix = \"relay\" + delimiter;\n Object.keys(params).forEach((key) => {\n if (key.startsWith(prefix)) {\n const name = key.replace(prefix, \"\");\n const value = params[key];\n relay[name] = value;\n }\n });\n return relay;\n}\n\nexport function parseUri(str: string): EngineTypes.UriParameters {\n // remove android schema prefix\n str = str.includes(\"wc://\") ? str.replace(\"wc://\", \"\") : str;\n // remove ios schema prefix\n str = str.includes(\"wc:\") ? str.replace(\"wc:\", \"\") : str;\n const pathStart: number = str.indexOf(\":\");\n const pathEnd: number | undefined = str.indexOf(\"?\") !== -1 ? str.indexOf(\"?\") : undefined;\n const protocol: string = str.substring(0, pathStart);\n const path: string = str.substring(pathStart + 1, pathEnd);\n const requiredValues = path.split(\"@\");\n const queryString: string = typeof pathEnd !== \"undefined\" ? str.substring(pathEnd) : \"\";\n const queryParams = qs.parse(queryString);\n const methods =\n typeof queryParams.methods === \"string\" ? queryParams.methods.split(\",\") : undefined;\n const result = {\n protocol,\n topic: parseTopic(requiredValues[0]),\n version: parseInt(requiredValues[1], 10),\n symKey: queryParams.symKey as string,\n relay: parseRelayParams(queryParams),\n methods,\n expiryTimestamp: queryParams.expiryTimestamp\n ? parseInt(queryParams.expiryTimestamp as string, 10)\n : undefined,\n };\n return result;\n}\n\nexport function parseTopic(topic: string): string {\n return topic.startsWith(\"//\") ? topic.substring(2) : topic;\n}\n\nexport function formatRelayParams(relay: RelayerTypes.ProtocolOptions, delimiter = \"-\") {\n const prefix = \"relay\";\n const params: any = {};\n Object.keys(relay).forEach((key) => {\n const k = prefix + delimiter + key;\n if (relay[key]) {\n params[k] = relay[key];\n }\n });\n return params;\n}\n\nexport function formatUri(params: EngineTypes.UriParameters): string {\n return (\n `${params.protocol}:${params.topic}@${params.version}?` +\n qs.stringify({\n symKey: params.symKey,\n ...formatRelayParams(params.relay),\n expiryTimestamp: params.expiryTimestamp,\n ...(params.methods ? { methods: params.methods.join(\",\") } : {}),\n })\n );\n}\n","import { ProposalTypes, SessionTypes } from \"@walletconnect/types\";\nimport { mergeArrays } from \"./misc\";\nimport { isConformingNamespaces, isValidNamespaces, isValidObject } from \"./validators\";\n\nexport function getAccountsChains(accounts: SessionTypes.Namespace[\"accounts\"]) {\n const chains: string[] = [];\n accounts.forEach((account) => {\n const [chain, chainId] = account.split(\":\");\n chains.push(`${chain}:${chainId}`);\n });\n\n return chains;\n}\n\nexport function getNamespacesChains(namespaces: SessionTypes.Namespaces) {\n const chains: string[] = [];\n Object.values(namespaces).forEach((namespace) => {\n chains.push(...getAccountsChains(namespace.accounts));\n });\n\n return chains;\n}\n\nexport function getNamespacesMethodsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const methods: SessionTypes.Namespace[\"methods\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) methods.push(...namespace.methods);\n });\n\n return methods;\n}\n\nexport function getNamespacesEventsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const events: SessionTypes.Namespace[\"events\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) events.push(...namespace.events);\n });\n\n return events;\n}\n\nexport function getRequiredNamespacesFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n caller: string,\n): ProposalTypes.RequiredNamespaces {\n const validNamespacesError = isValidNamespaces(namespaces, caller);\n if (validNamespacesError) throw new Error(validNamespacesError.message);\n\n const required = {};\n for (const [namespace, values] of Object.entries(namespaces)) {\n required[namespace] = {\n methods: values.methods,\n events: values.events,\n chains: values.accounts.map((account) => `${account.split(\":\")[0]}:${account.split(\":\")[1]}`),\n };\n }\n return required;\n}\n\nexport type BuildApprovedNamespacesParams = {\n proposal: ProposalTypes.Struct;\n supportedNamespaces: Record<\n string,\n { chains: string[]; methods: string[]; events: string[]; accounts: string[] }\n >;\n};\n\n/**\n * util designed for Wallets that builds namespaces structure by provided supported chains, methods, events & accounts.\n * It takes required & optional namespaces provided in the session proposal\n * along with the supported chains/methods/events/accounts by the wallet and returns a structured namespaces object\n * @param {BuildApprovedNamespacesParams} params\n * @returns {SessionTypes.Namespaces}\n */\nexport function buildApprovedNamespaces(\n params: BuildApprovedNamespacesParams,\n): SessionTypes.Namespaces {\n const {\n proposal: { requiredNamespaces, optionalNamespaces = {} },\n supportedNamespaces,\n } = params;\n const normalizedRequired = normalizeNamespaces(requiredNamespaces);\n const normalizedOptional = normalizeNamespaces(optionalNamespaces);\n\n // build approved namespaces\n const namespaces = {};\n Object.keys(supportedNamespaces).forEach((namespace) => {\n const supportedChains = supportedNamespaces[namespace].chains;\n const supportedMethods = supportedNamespaces[namespace].methods;\n const supportedEvents = supportedNamespaces[namespace].events;\n const supportedAccounts = supportedNamespaces[namespace].accounts;\n\n supportedChains.forEach((chain) => {\n if (!supportedAccounts.some((account) => account.includes(chain))) {\n throw new Error(`No accounts provided for chain ${chain} in namespace ${namespace}`);\n }\n });\n\n namespaces[namespace] = {\n chains: supportedChains,\n methods: supportedMethods,\n events: supportedEvents,\n accounts: supportedAccounts,\n };\n });\n\n // verify all required namespaces are supported\n const err = isConformingNamespaces(requiredNamespaces, namespaces, \"approve()\");\n if (err) throw new Error(err.message);\n\n const approvedNamespaces = {};\n\n // if both required & optional namespaces are empty, return all supported namespaces by the wallet\n if (!Object.keys(requiredNamespaces).length && !Object.keys(optionalNamespaces).length)\n return namespaces;\n\n // assign accounts for the required namespaces\n Object.keys(normalizedRequired).forEach((requiredNamespace) => {\n const chains = supportedNamespaces[requiredNamespace].chains.filter((chain) =>\n normalizedRequired[requiredNamespace]?.chains?.includes(chain),\n );\n const methods = supportedNamespaces[requiredNamespace].methods.filter((method) =>\n normalizedRequired[requiredNamespace]?.methods?.includes(method),\n );\n const events = supportedNamespaces[requiredNamespace].events.filter((event) =>\n normalizedRequired[requiredNamespace]?.events?.includes(event),\n );\n\n const accounts = chains\n .map((chain: string) =>\n supportedNamespaces[requiredNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[requiredNamespace] = {\n chains,\n methods,\n events,\n accounts,\n };\n });\n\n // add optional namespaces\n Object.keys(normalizedOptional).forEach((optionalNamespace) => {\n if (!supportedNamespaces[optionalNamespace]) return;\n\n const chainsToAdd = normalizedOptional[optionalNamespace]?.chains?.filter((chain) =>\n supportedNamespaces[optionalNamespace].chains.includes(chain),\n );\n const methodsToAdd = supportedNamespaces[optionalNamespace].methods.filter((method) =>\n normalizedOptional[optionalNamespace]?.methods?.includes(method),\n );\n const eventsToAdd = supportedNamespaces[optionalNamespace].events.filter((event) =>\n normalizedOptional[optionalNamespace]?.events?.includes(event),\n );\n\n const accountsToAdd = chainsToAdd\n ?.map((chain: string) =>\n supportedNamespaces[optionalNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[optionalNamespace] = {\n chains: mergeArrays(approvedNamespaces[optionalNamespace]?.chains, chainsToAdd),\n methods: mergeArrays(approvedNamespaces[optionalNamespace]?.methods, methodsToAdd),\n events: mergeArrays(approvedNamespaces[optionalNamespace]?.events, eventsToAdd),\n accounts: mergeArrays(approvedNamespaces[optionalNamespace]?.accounts, accountsToAdd),\n };\n });\n\n return approvedNamespaces;\n}\n\nexport function isCaipNamespace(namespace: string): boolean {\n return namespace.includes(\":\");\n}\n\nexport function parseNamespaceKey(namespace: string) {\n return isCaipNamespace(namespace) ? namespace.split(\":\")[0] : namespace;\n}\n\n/**\n * Converts\n * ```\n * {\n * \"eip155:1\": {...},\n * \"eip155:2\": {...},\n * }\n * ```\n * into\n * ```\n * {\n * \"eip155\": {\n * chains: [\"eip155:1\", \"eip155:2\"],\n * ...\n * }\n * }\n *```\n */\nexport function normalizeNamespaces(\n namespaces: ProposalTypes.RequiredNamespaces,\n): ProposalTypes.RequiredNamespaces {\n const normalizedNamespaces = {} as ProposalTypes.RequiredNamespaces;\n if (!isValidObject(namespaces)) return normalizedNamespaces;\n for (const [key, values] of Object.entries(namespaces)) {\n const chains = isCaipNamespace(key) ? [key] : values.chains;\n const methods = values.methods || [];\n const events = values.events || [];\n const normalizedKey = parseNamespaceKey(key);\n normalizedNamespaces[normalizedKey] = {\n ...normalizedNamespaces[normalizedKey],\n chains: mergeArrays(chains, normalizedNamespaces[normalizedKey]?.chains),\n methods: mergeArrays(methods, normalizedNamespaces[normalizedKey]?.methods),\n events: mergeArrays(events, normalizedNamespaces[normalizedKey]?.events),\n };\n }\n return normalizedNamespaces;\n}\n\nexport function getNamespacesFromAccounts(accounts: string[]) {\n const namespaces = {};\n accounts?.forEach((account) => {\n const [namespace, chainId] = account.split(\":\");\n if (!namespaces[namespace]) {\n namespaces[namespace] = {\n accounts: [],\n chains: [],\n events: [],\n };\n }\n namespaces[namespace].accounts.push(account);\n namespaces[namespace].chains.push(`${namespace}:${chainId}`);\n });\n\n return namespaces;\n}\n\nexport function buildNamespacesFromAuth(methods: string[], accounts: string[]) {\n accounts = accounts.map((account) => account.replace(\"did:pkh:\", \"\"));\n\n const namespaces = getNamespacesFromAccounts(accounts);\n\n for (const [_, values] of Object.entries(namespaces) as [string, SessionTypes.Namespace][]) {\n if (!values.methods) {\n values.methods = methods;\n } else {\n values.methods = mergeArrays(values.methods, methods);\n }\n values.events = [\"chainChanged\", \"accountsChanged\"];\n }\n return namespaces;\n}\n","/**\n * Types\n */\nexport type SdkErrorKey = keyof typeof SDK_ERRORS;\nexport type InternalErrorKey = keyof typeof INTERNAL_ERRORS;\n\n/**\n * Constants\n */\nexport const SDK_ERRORS = {\n /* ----- INVALID (1xxx) ----- */\n INVALID_METHOD: {\n message: \"Invalid method.\",\n code: 1001,\n },\n INVALID_EVENT: {\n message: \"Invalid event.\",\n code: 1002,\n },\n INVALID_UPDATE_REQUEST: {\n message: \"Invalid update request.\",\n code: 1003,\n },\n INVALID_EXTEND_REQUEST: {\n message: \"Invalid extend request.\",\n code: 1004,\n },\n INVALID_SESSION_SETTLE_REQUEST: {\n message: \"Invalid session settle request.\",\n code: 1005,\n },\n /* ----- UNAUTHORIZED (3xxx) ----- */\n UNAUTHORIZED_METHOD: {\n message: \"Unauthorized method.\",\n code: 3001,\n },\n UNAUTHORIZED_EVENT: {\n message: \"Unauthorized event.\",\n code: 3002,\n },\n UNAUTHORIZED_UPDATE_REQUEST: {\n message: \"Unauthorized update request.\",\n code: 3003,\n },\n UNAUTHORIZED_EXTEND_REQUEST: {\n message: \"Unauthorized extend request.\",\n code: 3004,\n },\n /* ----- REJECTED (5xxx) ----- */\n USER_REJECTED: {\n message: \"User rejected.\",\n code: 5000,\n },\n USER_REJECTED_CHAINS: {\n message: \"User rejected chains.\",\n code: 5001,\n },\n USER_REJECTED_METHODS: {\n message: \"User rejected methods.\",\n code: 5002,\n },\n USER_REJECTED_EVENTS: {\n message: \"User rejected events.\",\n code: 5003,\n },\n UNSUPPORTED_CHAINS: {\n message: \"Unsupported chains.\",\n code: 5100,\n },\n UNSUPPORTED_METHODS: {\n message: \"Unsupported methods.\",\n code: 5101,\n },\n UNSUPPORTED_EVENTS: {\n message: \"Unsupported events.\",\n code: 5102,\n },\n UNSUPPORTED_ACCOUNTS: {\n message: \"Unsupported accounts.\",\n code: 5103,\n },\n UNSUPPORTED_NAMESPACE_KEY: {\n message: \"Unsupported namespace key.\",\n code: 5104,\n },\n /* ----- REASON (6xxx) ----- */\n USER_DISCONNECTED: {\n message: \"User disconnected.\",\n code: 6000,\n },\n /* ----- FAILURE (7xxx) ----- */\n SESSION_SETTLEMENT_FAILED: {\n message: \"Session settlement failed.\",\n code: 7000,\n },\n /* ----- PAIRING (10xxx) ----- */\n WC_METHOD_UNSUPPORTED: {\n message: \"Unsupported wc_ method.\",\n code: 10001,\n },\n};\n\nexport const INTERNAL_ERRORS = {\n NOT_INITIALIZED: {\n message: \"Not initialized.\",\n code: 1,\n },\n NO_MATCHING_KEY: {\n message: \"No matching key.\",\n code: 2,\n },\n RESTORE_WILL_OVERRIDE: {\n message: \"Restore will override.\",\n code: 3,\n },\n RESUBSCRIBED: {\n message: \"Resubscribed.\",\n code: 4,\n },\n MISSING_OR_INVALID: {\n message: \"Missing or invalid.\",\n code: 5,\n },\n EXPIRED: {\n message: \"Expired.\",\n code: 6,\n },\n UNKNOWN_TYPE: {\n message: \"Unknown type.\",\n code: 7,\n },\n MISMATCHED_TOPIC: {\n message: \"Mismatched topic.\",\n code: 8,\n },\n NON_CONFORMING_NAMESPACES: {\n message: \"Non conforming namespaces.\",\n code: 9,\n },\n};\n\n/**\n * Utilities\n */\nexport function getInternalError(key: InternalErrorKey, context?: string | number) {\n const { message, code } = INTERNAL_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n\nexport function getSdkError(key: SdkErrorKey, context?: string | number) {\n const { message, code } = SDK_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n","import { SessionTypes, ProposalTypes, RelayerTypes, EngineTypes } from \"@walletconnect/types\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport {\n getNamespacesChains,\n getNamespacesMethodsForChainId,\n getNamespacesEventsForChainId,\n getAccountsChains,\n} from \"./namespaces\";\nimport { getSdkError, getInternalError } from \"./errors\";\nimport { hasOverlap } from \"./misc\";\nimport { getChainsFromNamespace } from \"./caip\";\n\nexport type ErrorObject = { message: string; code: number } | null;\n\n// -- types validation ----------------------------------------------------- //\n\nexport function isValidArray(arr: any, itemCondition?: (item: any) => boolean) {\n if (Array.isArray(arr)) {\n if (typeof itemCondition !== \"undefined\" && arr.length) {\n return arr.every(itemCondition);\n } else {\n return true;\n }\n }\n return false;\n}\n\nexport function isValidObject(obj: any) {\n return Object.getPrototypeOf(obj) === Object.prototype && Object.keys(obj).length;\n}\n\nexport function isUndefined(input: any): input is undefined {\n return typeof input === \"undefined\";\n}\n\nexport function isValidString(input: any, optional: boolean): input is string {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"string\" && Boolean(input.trim().length);\n}\n\nexport function isValidNumber(input: any, optional: boolean) {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"number\" && !isNaN(input);\n}\n\n// -- protocol validation -------------------------------------------------- //\n\nexport function isSessionCompatible(session: SessionTypes.Struct, params: EngineTypes.FindParams) {\n const { requiredNamespaces } = params;\n const sessionKeys = Object.keys(session.namespaces);\n const paramsKeys = Object.keys(requiredNamespaces);\n let compatible = true;\n\n if (!hasOverlap(paramsKeys, sessionKeys)) return false;\n\n sessionKeys.forEach((key) => {\n const { accounts, methods, events } = session.namespaces[key];\n const chains = getAccountsChains(accounts);\n const requiredNamespace = requiredNamespaces[key];\n if (\n !hasOverlap(getChainsFromNamespace(key, requiredNamespace), chains) ||\n !hasOverlap(requiredNamespace.methods, methods) ||\n !hasOverlap(requiredNamespace.events, events)\n ) {\n compatible = false;\n }\n });\n\n return compatible;\n}\n\nexport function isValidChainId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n return split.length === 2;\n }\n return false;\n}\n\nexport function isValidAccountId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n if (split.length === 3) {\n const chainId = split[0] + \":\" + split[1];\n return !!split[2] && isValidChainId(chainId);\n }\n }\n return false;\n}\n\nexport function isValidUrl(value: any) {\n if (isValidString(value, false)) {\n try {\n const url = new URL(value);\n return typeof url !== \"undefined\";\n } catch (e) {\n return false;\n }\n }\n return false;\n}\n\nexport function isProposalStruct(input: any): input is ProposalTypes.Struct {\n return input?.proposer?.publicKey;\n}\n\nexport function isSessionStruct(input: any): input is SessionTypes.Struct {\n return input?.topic;\n}\n\nexport function isValidController(input: any, method: string) {\n let error: ErrorObject = null;\n if (!isValidString(input?.publicKey, false)) {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method} controller public key should be a string`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceMethodsOrEvents(input: any): input is string {\n let valid = true;\n if (isValidArray(input)) {\n if (input.length) {\n valid = input.every((item: any) => isValidString(item, false));\n }\n } else {\n valid = false;\n }\n\n return valid;\n}\n\nexport function isValidChains(key: string, chains: any, context: string) {\n let error: ErrorObject = null;\n\n if (isValidArray(chains) && chains.length) {\n chains.forEach((chain: any) => {\n if (error) return;\n if (!isValidChainId(chain)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chain ${chain} should be a string and conform to \"namespace:chainId\" format`,\n );\n }\n });\n } else if (!isValidChainId(key)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chains must be defined as \"namespace:chainId\" e.g. \"eip155:1\": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: [\"eip155:1\", \"eip155:5\"] }`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceChains(namespaces: any, method: string, type: string) {\n let error: ErrorObject = null;\n Object.entries(namespaces).forEach(([key, namespace]: [string, any]) => {\n if (error) return;\n const validChainsError = isValidChains(\n key,\n getChainsFromNamespace(key, namespace),\n `${method} ${type}`,\n );\n if (validChainsError) {\n error = validChainsError;\n }\n });\n\n return error;\n}\n\nexport function isValidAccounts(accounts: any, context: string) {\n let error: ErrorObject = null;\n if (isValidArray(accounts)) {\n accounts.forEach((account: any) => {\n if (error) return;\n if (!isValidAccountId(account)) {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, account ${account} should be a string and conform to \"namespace:chainId:address\" format`,\n );\n }\n });\n } else {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, accounts should be an array of strings conforming to \"namespace:chainId:address\" format`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceAccounts(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validAccountsError = isValidAccounts(namespace?.accounts, `${method} namespace`);\n if (validAccountsError) {\n error = validAccountsError;\n }\n });\n\n return error;\n}\n\nexport function isValidActions(namespace: any, context: string) {\n let error: ErrorObject = null;\n if (!isValidNamespaceMethodsOrEvents(namespace?.methods)) {\n error = getSdkError(\n \"UNSUPPORTED_METHODS\",\n `${context}, methods should be an array of strings or empty array for no methods`,\n );\n } else if (!isValidNamespaceMethodsOrEvents(namespace?.events)) {\n error = getSdkError(\n \"UNSUPPORTED_EVENTS\",\n `${context}, events should be an array of strings or empty array for no events`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceActions(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validActionsError = isValidActions(namespace, `${method}, namespace`);\n if (validActionsError) {\n error = validActionsError;\n }\n });\n\n return error;\n}\n\nexport function isValidRequiredNamespaces(input: any, method: string, type: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validChainsError = isValidNamespaceChains(input, method, type);\n if (validChainsError) {\n error = validChainsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, ${type} should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaces(input: any, method: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validAccountsError = isValidNamespaceAccounts(input, method);\n if (validAccountsError) {\n error = validAccountsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, namespaces should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidRelay(input: any): input is RelayerTypes.ProtocolOptions {\n return isValidString(input.protocol, true);\n}\n\nexport function isValidRelays(\n input: any,\n optional: boolean,\n): input is RelayerTypes.ProtocolOptions[] {\n let valid = false;\n\n if (optional && !input) valid = true;\n else if (input && isValidArray(input) && input.length) {\n input.forEach((relay: RelayerTypes.ProtocolOptions) => {\n valid = isValidRelay(relay);\n });\n }\n\n return valid;\n}\n\nexport function isValidId(input: any) {\n return typeof input === \"number\";\n}\n\nexport function isValidParams(input: any) {\n return typeof input !== \"undefined\" && typeof input !== null;\n}\n\nexport function isValidErrorReason(input: any): input is ErrorResponse {\n if (!input) return false;\n if (typeof input !== \"object\") return false;\n if (!input.code || !isValidNumber(input.code, false)) return false;\n if (!input.message || !isValidString(input.message, false)) return false;\n\n return true;\n}\n\nexport function isValidRequest(request: any) {\n if (isUndefined(request)) return false;\n if (!isValidString(request.method, false)) return false;\n return true;\n}\n\nexport function isValidResponse(response: any) {\n if (isUndefined(response)) return false;\n if (isUndefined(response.result) && isUndefined(response.error)) return false;\n if (!isValidNumber(response.id, false)) return false;\n if (!isValidString(response.jsonrpc, false)) return false;\n return true;\n}\n\nexport function isValidEvent(event: any) {\n if (isUndefined(event)) return false;\n if (!isValidString(event.name, false)) return false;\n return true;\n}\n\nexport function isValidNamespacesChainId(namespaces: SessionTypes.Namespaces, chainId: string) {\n if (!isValidChainId(chainId)) return false;\n const chains = getNamespacesChains(namespaces);\n if (!chains.includes(chainId)) return false;\n\n return true;\n}\n\nexport function isValidNamespacesRequest(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n method: string,\n) {\n if (!isValidString(method, false)) return false;\n const methods = getNamespacesMethodsForChainId(namespaces, chainId);\n return methods.includes(method);\n}\n\nexport function isValidNamespacesEvent(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n eventName: string,\n) {\n if (!isValidString(eventName, false)) return false;\n const events = getNamespacesEventsForChainId(namespaces, chainId);\n return events.includes(eventName);\n}\n\nexport function isConformingNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n namespaces: SessionTypes.Namespaces,\n context: string,\n) {\n let error: ErrorObject = null;\n\n const parsedRequired = parseNamespaces(requiredNamespaces);\n const parsedApproved = parseApprovedNamespaces(namespaces);\n const requiredChains = Object.keys(parsedRequired);\n const approvedChains = Object.keys(parsedApproved);\n\n const uniqueRequired = filterDuplicateNamespaces(Object.keys(requiredNamespaces));\n const uniqueApproved = filterDuplicateNamespaces(Object.keys(namespaces));\n const missingRequiredNamespaces = uniqueRequired.filter(\n (namespace) => !uniqueApproved.includes(namespace),\n );\n\n if (missingRequiredNamespaces.length) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces keys don't satisfy requiredNamespaces.\n Required: ${missingRequiredNamespaces.toString()}\n Received: ${Object.keys(namespaces).toString()}`,\n );\n }\n\n if (!hasOverlap(requiredChains, approvedChains)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces chains don't satisfy required namespaces.\n Required: ${requiredChains.toString()}\n Approved: ${approvedChains.toString()}`,\n );\n }\n\n // validate inline defined chains with approved accounts\n Object.keys(namespaces).forEach((chain) => {\n if (!chain.includes(\":\")) return;\n if (error) return;\n const chains = getAccountsChains(namespaces[chain].accounts);\n if (!chains.includes(chain)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces accounts don't satisfy namespace accounts for ${chain}\n Required: ${chain}\n Approved: ${chains.toString()}`,\n );\n }\n });\n\n requiredChains.forEach((chain) => {\n if (error) return;\n\n if (!hasOverlap(parsedRequired[chain].methods, parsedApproved[chain].methods)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces methods don't satisfy namespace methods for ${chain}`,\n );\n } else if (!hasOverlap(parsedRequired[chain].events, parsedApproved[chain].events)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces events don't satisfy namespace events for ${chain}`,\n );\n }\n });\n\n return error;\n}\n\nfunction parseNamespaces(namespaces: ProposalTypes.RequiredNamespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n // e.g. `eip155:1`\n const isInlineChainDefinition = key.includes(\":\");\n\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n namespaces[key].chains?.forEach((chain) => {\n parsed[chain] = {\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nfunction filterDuplicateNamespaces(namespaces: string[]) {\n return [\n ...new Set(\n namespaces.map((namespace) =>\n namespace.includes(\":\") ? namespace.split(\":\")[0] : namespace,\n ),\n ),\n ];\n}\n\nfunction parseApprovedNamespaces(namespaces: SessionTypes.Namespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n const isInlineChainDefinition = key.includes(\":\");\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n const chains = getAccountsChains(namespaces[key].accounts);\n chains?.forEach((chain) => {\n parsed[chain] = {\n accounts: namespaces[key].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nexport function isValidRequestExpiry(expiry: number, boundaries: { min: number; max: number }) {\n return isValidNumber(expiry, false) && expiry <= boundaries.max && expiry >= boundaries.min;\n}\n","import { getEnvironment, ENV_MAP, isBrowser, isReactNative } from \"./misc\";\n\nexport function isOnline(): Promise {\n const env = getEnvironment();\n return new Promise((resolve) => {\n switch (env) {\n case ENV_MAP.browser:\n resolve(getBrowserOnlineStatus());\n break;\n case ENV_MAP.reactNative:\n resolve(getReactNativeOnlineStatus());\n break;\n case ENV_MAP.node:\n resolve(getNodeOnlineStatus());\n break;\n default:\n resolve(true);\n }\n });\n}\n\nexport function getBrowserOnlineStatus() {\n return isBrowser() && navigator?.onLine;\n}\n\nexport async function getReactNativeOnlineStatus(): Promise {\n // global.NetInfo is set in react-native-compat\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n const state = await (global as any)?.NetInfo.fetch();\n return state?.isConnected;\n }\n // fallback to true if global.NetInfo is undefined, meaning an older version of react-native-compat is used\n return true;\n}\n\nexport function getNodeOnlineStatus() {\n /**\n * TODO: need to implement\n */\n return true;\n}\n\nexport function subscribeToNetworkChange(callbackHandler: (connected: boolean) => void) {\n const env = getEnvironment();\n switch (env) {\n case ENV_MAP.browser:\n subscribeToBrowserNetworkChange(callbackHandler);\n break;\n case ENV_MAP.reactNative:\n subscribeToReactNativeNetworkChange(callbackHandler);\n break;\n case ENV_MAP.node:\n // wip: need to implement\n break;\n default:\n break;\n }\n}\n\nexport function subscribeToBrowserNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (!isReactNative() && isBrowser()) {\n window.addEventListener(\"online\", () => callbackHandler(true));\n window.addEventListener(\"offline\", () => callbackHandler(false));\n }\n}\n\n// global.NetInfo is set in react-native-compat\nexport function subscribeToReactNativeNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n (global as any)?.NetInfo.addEventListener((state: any) => callbackHandler(state?.isConnected));\n }\n}\n","const memoryStore = {};\n\nexport abstract class MemoryStore {\n static get(key: string) {\n return memoryStore[key] as T | undefined;\n }\n\n static set(key: string, value: unknown) {\n memoryStore[key] = value;\n }\n\n static delete(key: string) {\n delete memoryStore[key];\n }\n}\n"],"names":["CAIP_DELIMITER","chain","namespace","reference","params","account","address","array","parser","unique","str","value","accounts","namespaces","keys","key","ns","chains","requiredNamespaces","namespaceProps","h","l","E","g","u","getDocument","getNavigator","_a","e","queryString","newQueryParams","queryParams","qs","__spreadValues","getWindowMetadata","protocol","version","env","metadata","getLocation","OS","Version","info","detect","os","sdkVersion","id","relayUrl","auth","projectId","useOnCloseEvent","bundleId","splitUrl","ua","url","domain","obj","type","context","depth","a","b","x","arr","map","cb","res","word","c","w","expiry","FIVE_MINUTES","expireErrorMessage","timeout","toMiliseconds","cacheResolve","cacheReject","cacheTimeout","promiseResolve","promiseReject","promise","resolve","reject","result","error","topic","target","parsed","ttl","now","fromMiliseconds","event","wcDeepLink","json","deeplink","link","err","store","deepLink","arr1","arr2","global","logger","this","_BN","_constructorGuard","throwFault","toHex","Zero","r","hashMessage","minimalisticAssert","assert","inherits_browserModule","require$$0","require$$1","utils","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","BlockHash","common","ft_1","ch32","maj32","s0_256","s1_256","g0_256","g1_256","shaCommon","require$$2","require$$3","SHA256","SHA512","require$$4","BN","EC","DEFAULT_RPC_URL","reconstructedMessage","cacaoSignature","chainId","baseRpcUrl","message","signature","recoverAddress","eip1271MagicValue","dynamicTypeOffset","dynamicTypeLength","nonPrefixedSignature","nonPrefixedHashedMessage","data","response","generateJsonRpcId","j","A","y","$","m","didPrefix","iss","segments","cacao","payload","reconstructed","walletAddress","verifySignature","header","statement","uri","nonce","issuedAt","resources","resource","recap","decoded","val","requestPayload","authPayload","methods","requested","supportedChains","getCommonValuesInArrays","requestedRecaps","updatedResources","actions","supportedActions","formattedActions","updatedRecap","__spreadProps","_b","action","abilities","ability","input","encodedString","resourceAbilities","limits","limit","recap1","recap2","decoded1","decoded2","merged","mergedRecap","base","statementForRecap","currentCounter","uniqueAbilities","recapStatemet","recapStatement","ZERO_INDEX","TYPE_LENGTH","IV_LENGTH","KEY_LENGTH","keyPair","x25519","toString","random","randomBytes","privateKeyA","publicKeyB","sharedKey","fromString","symKey","HKDF","hash","byte","senderPublicKey","iv","sealed","ChaCha20Poly1305","box","concat","encoded","bytes","slice1","slice2","slice3","opts","deserialized","jsonrpc","RELAY_JSONRPC","delimiter","relay","prefix","name","pathStart","pathEnd","requiredValues","k","events","caller","validNamespacesError","isValidNamespaces","required","values","optionalNamespaces","supportedNamespaces","normalizedRequired","normalizedOptional","supportedMethods","supportedEvents","supportedAccounts","isConformingNamespaces","approvedNamespaces","requiredNamespace","method","optionalNamespace","_c","_d","_e","_f","chainsToAdd","methodsToAdd","eventsToAdd","accountsToAdd","mergeArrays","normalizedNamespaces","isValidObject","normalizedKey","_","code","itemCondition","optional","session","sessionKeys","paramsKeys","compatible","hasOverlap","getAccountsChains","getChainsFromNamespace","split","getInternalError","valid","item","getSdkError","validChainsError","validAccountsError","validActionsError","request","getNamespacesChains","getNamespacesMethodsForChainId","eventName","getNamespacesEventsForChainId","parsedRequired","parseNamespaces","parsedApproved","parseApprovedNamespaces","requiredChains","approvedChains","uniqueRequired","filterDuplicateNamespaces","uniqueApproved","missingRequiredNamespaces","boundaries","getEnvironment","ENV_MAP","isBrowser","isReactNative","state","callbackHandler","memoryStore"],"mappings":"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EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACrF,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;OAC1B,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAChD;AACA,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,C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EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C;AACA,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CA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G,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,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AG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,C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E,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UA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,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACtD,CAAC,CAAC;AACF;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACtD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,CAAC,CAAC;AACF;AACA,IAAI,CAAC,GAAG;AACR,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;A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"} +\ No newline at end of file ++{"version":3,"file":"index.es.js","sources":["../src/caip.js","../src/misc.js","../../../node_modules/js-sha3/src/sha3.js","../../../node_modules/@ethersproject/logger/lib.esm/_version.js","../../../node_modules/@ethersproject/logger/lib.esm/index.js","../../../node_modules/@ethersproject/bytes/lib.esm/_version.js","../../../node_modules/@ethersproject/bytes/lib.esm/index.js","../../../node_modules/@ethersproject/keccak256/lib.esm/index.js","../../../node_modules/bn.js/lib/bn.js","../../../node_modules/@ethersproject/bignumber/lib.esm/_version.js","../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js","../../../node_modules/@ethersproject/bignumber/lib.esm/fixednumber.js","../../../node_modules/@ethersproject/strings/lib.esm/_version.js","../../../node_modules/@ethersproject/strings/lib.esm/utf8.js","../../../node_modules/@ethersproject/strings/lib.esm/idna.js","../../../node_modules/@ethersproject/hash/lib.esm/_version.js","../../../node_modules/@ethersproject/base64/lib.esm/base64.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js","../../../node_modules/@ethersproject/hash/lib.esm/namehash.js","../../../node_modules/@ethersproject/hash/lib.esm/message.js","../../../node_modules/@ethersproject/rlp/lib.esm/_version.js","../../../node_modules/@ethersproject/rlp/lib.esm/index.js","../../../node_modules/@ethersproject/address/lib.esm/_version.js","../../../node_modules/@ethersproject/address/lib.esm/index.js","../../../node_modules/@ethersproject/properties/lib.esm/_version.js","../../../node_modules/@ethersproject/properties/lib.esm/index.js","../../../node_modules/@ethersproject/hash/lib.esm/typed-data.js","../../../node_modules/minimalistic-assert/index.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/hash.js/lib/hash/utils.js","../../../node_modules/hash.js/lib/hash/common.js","../../../node_modules/hash.js/lib/hash/sha/common.js","../../../node_modules/hash.js/lib/hash/sha/1.js","../../../node_modules/hash.js/lib/hash/sha/256.js","../../../node_modules/hash.js/lib/hash/sha/224.js","../../../node_modules/hash.js/lib/hash/sha/512.js","../../../node_modules/hash.js/lib/hash/sha/384.js","../../../node_modules/hash.js/lib/hash/sha.js","../../../node_modules/hash.js/lib/hash/ripemd.js","../../../node_modules/hash.js/lib/hash/hmac.js","../../../node_modules/hash.js/lib/hash.js","../../../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../../../node_modules/@ethersproject/signing-key/lib.esm/_version.js","../../../node_modules/@ethersproject/signing-key/lib.esm/index.js","../../../node_modules/@ethersproject/transactions/lib.esm/_version.js","../../../node_modules/@ethersproject/transactions/lib.esm/index.js","../src/signatures.js","../src/cacao.js","../src/crypto.js","../src/relay.js","../src/uri.js","../src/namespaces.js","../src/errors.js","../src/validators.js","../src/network.js","../src/memoryStore.js"],"sourcesContent":["const CAIP_DELIMITER = \":\";\nexport function parseChainId(chain) {\n const [namespace, reference] = chain.split(CAIP_DELIMITER);\n return { namespace, reference };\n}\nexport function formatChainId(params) {\n const { namespace, reference } = params;\n return [namespace, reference].join(CAIP_DELIMITER);\n}\nexport function parseAccountId(account) {\n const [namespace, reference, address] = account.split(CAIP_DELIMITER);\n return { namespace, reference, address };\n}\nexport function formatAccountId(params) {\n const { namespace, reference, address } = params;\n return [namespace, reference, address].join(CAIP_DELIMITER);\n}\nexport function getUniqueValues(array, parser) {\n const unique = [];\n array.forEach((str) => {\n const value = parser(str);\n if (!unique.includes(value))\n unique.push(value);\n });\n return unique;\n}\nexport function getAddressFromAccount(account) {\n const { address } = parseAccountId(account);\n return address;\n}\nexport function getChainFromAccount(account) {\n const { namespace, reference } = parseAccountId(account);\n const chain = formatChainId({ namespace, reference });\n return chain;\n}\nexport function formatAccountWithChain(address, chain) {\n const { namespace, reference } = parseChainId(chain);\n const account = formatAccountId({ namespace, reference, address });\n return account;\n}\nexport function getAddressesFromAccounts(accounts) {\n return getUniqueValues(accounts, getAddressFromAccount);\n}\nexport function getChainsFromAccounts(accounts) {\n return getUniqueValues(accounts, getChainFromAccount);\n}\nexport function getAccountsFromNamespaces(namespaces, keys = []) {\n const accounts = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key))\n return;\n const ns = namespaces[key];\n accounts.push(...ns.accounts);\n });\n return accounts;\n}\nexport function getChainsFromNamespaces(namespaces, keys = []) {\n const chains = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key))\n return;\n const ns = namespaces[key];\n chains.push(...getChainsFromAccounts(ns.accounts));\n });\n return chains;\n}\nexport function getChainsFromRequiredNamespaces(requiredNamespaces, keys = []) {\n const chains = [];\n Object.keys(requiredNamespaces).forEach((key) => {\n if (keys.length && !keys.includes(key))\n return;\n const ns = requiredNamespaces[key];\n chains.push(...getChainsFromNamespace(key, ns));\n });\n return chains;\n}\nexport function getChainsFromNamespace(namespace, namespaceProps) {\n return namespace.includes(\":\") ? [namespace] : namespaceProps.chains || [];\n}\n//# sourceMappingURL=caip.js.map","import { detect } from \"detect-browser\";\nimport { FIVE_MINUTES, fromMiliseconds, toMiliseconds } from \"@walletconnect/time\";\nimport { getDocument, getLocation, getNavigator } from \"@walletconnect/window-getters\";\nimport { getWindowMetadata } from \"@walletconnect/window-metadata\";\nimport * as qs from \"query-string\";\nexport const REACT_NATIVE_PRODUCT = \"ReactNative\";\nexport const ENV_MAP = {\n reactNative: \"react-native\",\n node: \"node\",\n browser: \"browser\",\n unknown: \"unknown\",\n};\nexport const EMPTY_SPACE = \" \";\nexport const COLON = \":\";\nexport const SLASH = \"/\";\nexport const DEFAULT_DEPTH = 2;\nexport const ONE_THOUSAND = 1000;\nexport const SDK_TYPE = \"js\";\nexport function isNode() {\n return (typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\");\n}\nexport function isReactNative() {\n return !getDocument() && !!getNavigator() && navigator.product === REACT_NATIVE_PRODUCT;\n}\nexport function isBrowser() {\n return !isNode() && !!getNavigator() && !!getDocument();\n}\nexport function getEnvironment() {\n if (isReactNative())\n return ENV_MAP.reactNative;\n if (isNode())\n return ENV_MAP.node;\n if (isBrowser())\n return ENV_MAP.browser;\n return ENV_MAP.unknown;\n}\nexport function getBundleId() {\n try {\n if (isReactNative() &&\n typeof global !== \"undefined\" &&\n typeof global?.Application !== \"undefined\") {\n return global.Application?.applicationId;\n }\n return undefined;\n }\n catch {\n return undefined;\n }\n}\nexport function appendToQueryString(queryString, newQueryParams) {\n let queryParams = qs.parse(queryString);\n queryParams = { ...queryParams, ...newQueryParams };\n queryString = qs.stringify(queryParams);\n return queryString;\n}\nexport function getAppMetadata() {\n return (getWindowMetadata() || {\n name: \"\",\n description: \"\",\n url: \"\",\n icons: [\"\"],\n });\n}\nexport function getRelayClientMetadata(protocol, version) {\n const env = getEnvironment();\n const metadata = { protocol, version, env };\n if (env === \"browser\") {\n metadata.host = getLocation()?.host || \"unknown\";\n }\n return metadata;\n}\nexport function getJavascriptOS() {\n const env = getEnvironment();\n if (env === ENV_MAP.reactNative &&\n typeof global !== \"undefined\" &&\n typeof global?.Platform !== \"undefined\") {\n const { OS, Version } = global.Platform;\n return [OS, Version].join(\"-\");\n }\n const info = detect();\n if (info === null)\n return \"unknown\";\n const os = info.os ? info.os.replace(\" \", \"\").toLowerCase() : \"unknown\";\n if (info.type === \"browser\") {\n return [os, info.name, info.version].join(\"-\");\n }\n return [os, info.version].join(\"-\");\n}\nexport function getJavascriptID() {\n const env = getEnvironment();\n return env === ENV_MAP.browser ? [env, getLocation()?.host || \"unknown\"].join(\":\") : env;\n}\nexport function formatUA(protocol, version, sdkVersion) {\n const os = getJavascriptOS();\n const id = getJavascriptID();\n return [[protocol, version].join(\"-\"), [SDK_TYPE, sdkVersion].join(\"-\"), os, id].join(\"/\");\n}\nconsole;\nexport function formatRelayRpcUrl({ protocol, version, relayUrl, sdkVersion, auth, projectId, useOnCloseEvent, bundleId, }) {\n const splitUrl = relayUrl.split(\"?\");\n const ua = formatUA(protocol, version, sdkVersion);\n const params = {\n auth,\n ua,\n projectId,\n useOnCloseEvent: useOnCloseEvent || undefined,\n origin: bundleId || undefined,\n };\n const queryString = appendToQueryString(splitUrl[1] || \"\", params);\n return splitUrl[0] + \"?\" + queryString;\n}\nexport function getHttpUrl(url) {\n const matches = url.match(/^[^:]+(?=:\\/\\/)/gi) || [];\n let protocol = matches[0];\n const domain = typeof protocol !== \"undefined\" ? url.split(\"://\")[1] : url;\n protocol = protocol === \"wss\" ? \"https\" : \"http\";\n return [protocol, domain].join(\"://\");\n}\nexport function assertType(obj, key, type) {\n if (!obj[key] || typeof obj[key] !== type) {\n throw new Error(`Missing or invalid \"${key}\" param`);\n }\n}\nexport function parseContextNames(context, depth = DEFAULT_DEPTH) {\n return getLastItems(context.split(SLASH), depth);\n}\nexport function formatMessageContext(context) {\n return parseContextNames(context).join(EMPTY_SPACE);\n}\nexport function hasOverlap(a, b) {\n const matches = a.filter((x) => b.includes(x));\n return matches.length === a.length;\n}\nexport function getLastItems(arr, depth = DEFAULT_DEPTH) {\n return arr.slice(Math.max(arr.length - depth, 0));\n}\nexport function mapToObj(map) {\n return Object.fromEntries(map.entries());\n}\nexport function objToMap(obj) {\n return new Map(Object.entries(obj));\n}\nexport function mapEntries(obj, cb) {\n const res = {};\n Object.keys(obj).forEach((key) => {\n res[key] = cb(obj[key]);\n });\n return res;\n}\nexport const enumify = (x) => x;\nexport function capitalizeWord(word) {\n return word.trim().replace(/^\\w/, (c) => c.toUpperCase());\n}\nexport function capitalize(str) {\n return str\n .split(EMPTY_SPACE)\n .map((w) => capitalizeWord(w))\n .join(EMPTY_SPACE);\n}\nexport function createDelayedPromise(expiry = FIVE_MINUTES, expireErrorMessage) {\n const timeout = toMiliseconds(expiry || FIVE_MINUTES);\n let cacheResolve;\n let cacheReject;\n let cacheTimeout;\n const done = () => new Promise((promiseResolve, promiseReject) => {\n cacheTimeout = setTimeout(() => {\n promiseReject(new Error(expireErrorMessage));\n }, timeout);\n cacheResolve = promiseResolve;\n cacheReject = promiseReject;\n });\n const resolve = (value) => {\n if (cacheTimeout && cacheResolve) {\n clearTimeout(cacheTimeout);\n cacheResolve(value);\n }\n };\n const reject = (value) => {\n if (cacheTimeout && cacheReject) {\n clearTimeout(cacheTimeout);\n cacheReject(value);\n }\n };\n return {\n resolve,\n reject,\n done,\n };\n}\nexport function createExpiringPromise(promise, expiry, expireErrorMessage) {\n return new Promise(async (resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error(expireErrorMessage)), expiry);\n try {\n const result = await promise;\n resolve(result);\n }\n catch (error) {\n reject(error);\n }\n clearTimeout(timeout);\n });\n}\nexport function formatExpirerTarget(type, value) {\n if (typeof value === \"string\" && value.startsWith(`${type}:`))\n return value;\n if (type.toLowerCase() === \"topic\") {\n if (typeof value !== \"string\")\n throw new Error(`Value must be \"string\" for expirer target type: topic`);\n return `topic:${value}`;\n }\n else if (type.toLowerCase() === \"id\") {\n if (typeof value !== \"number\")\n throw new Error(`Value must be \"number\" for expirer target type: id`);\n return `id:${value}`;\n }\n throw new Error(`Unknown expirer target type: ${type}`);\n}\nexport function formatTopicTarget(topic) {\n return formatExpirerTarget(\"topic\", topic);\n}\nexport function formatIdTarget(id) {\n return formatExpirerTarget(\"id\", id);\n}\nexport function parseExpirerTarget(target) {\n const [type, value] = target.split(\":\");\n const parsed = { id: undefined, topic: undefined };\n if (type === \"topic\" && typeof value === \"string\") {\n parsed.topic = value;\n }\n else if (type === \"id\" && Number.isInteger(Number(value))) {\n parsed.id = Number(value);\n }\n else {\n throw new Error(`Invalid target, expected id:number or topic:string, got ${type}:${value}`);\n }\n return parsed;\n}\nexport function calcExpiry(ttl, now) {\n return fromMiliseconds((now || Date.now()) + toMiliseconds(ttl));\n}\nexport function isExpired(expiry) {\n return Date.now() >= toMiliseconds(expiry);\n}\nexport function engineEvent(event, id) {\n return `${event}${id ? `:${id}` : \"\"}`;\n}\nexport function mergeArrays(a = [], b = []) {\n return [...new Set([...a, ...b])];\n}\nexport function isTelegram() {\n return (typeof window !== \"undefined\" &&\n (Boolean(window.TelegramWebviewProxy) ||\n Boolean(window.Telegram) ||\n Boolean(window.TelegramWebviewProxyProto)));\n}\nexport async function handleDeeplinkRedirect({ id, topic, wcDeepLink, }) {\n try {\n if (!wcDeepLink)\n return;\n const json = typeof wcDeepLink === \"string\" ? JSON.parse(wcDeepLink) : wcDeepLink;\n let deeplink = json?.href;\n if (typeof deeplink !== \"string\")\n return;\n if (deeplink.endsWith(\"/\"))\n deeplink = deeplink.slice(0, -1);\n const link = `${deeplink}/wc?requestId=${id}&sessionTopic=${topic}`;\n const env = getEnvironment();\n if (env === ENV_MAP.browser) {\n if (link.startsWith(\"https://\") || link.startsWith(\"http://\")) {\n window.open(link, \"_blank\", \"noreferrer noopener\");\n }\n else {\n if (isTelegram()) {\n window.open(link, \"_blank\", \"noreferrer noopener\");\n }\n else {\n window.open(link, \"_self\", \"noreferrer noopener\");\n }\n }\n }\n else if (env === ENV_MAP.reactNative) {\n if (typeof global?.Linking !== \"undefined\") {\n await global.Linking.openURL(link);\n }\n }\n }\n catch (err) {\n console.error(err);\n }\n}\nexport async function getDeepLink(store, key) {\n try {\n const deepLink = await store.getItem(key);\n if (deepLink)\n return deepLink;\n if (!isBrowser())\n return;\n return localStorage.getItem(key);\n }\n catch (err) {\n console.error(err);\n }\n}\nexport function getCommonValuesInArrays(arr1, arr2) {\n return arr1.filter((value) => arr2.includes(value));\n}\n//# sourceMappingURL=misc.js.map","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","export const version = \"logger/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nimport { version } from \"./_version\";\nlet _globalLogger = null;\nfunction _checkNormalize() {\n try {\n const missing = [];\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n }\n ;\n }\n catch (error) {\n missing.push(form);\n }\n });\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\");\n }\n }\n catch (error) {\n return error.message;\n }\n return null;\n}\nconst _normalizeError = _checkNormalize();\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ///////////////////\n // Generic Errors\n // Unknown Error\n ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n // Not Implemented\n ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n // Unsupported Operation\n // - operation\n ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n // Some sort of bad response from the server\n ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n // Timeout\n ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n ///////////////////\n // Operational Errors\n // Buffer Overrun\n ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n ///////////////////\n // Argument Errors\n // Missing new operator to an object\n // - name: The name of the class\n ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n ///////////////////\n // Blockchain Errors\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n // Nonce has already been used\n // - transaction: the transaction attempted\n ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n ///////////////////\n // Interaction Errors\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ErrorCode[\"ACTION_REJECTED\"] = \"ACTION_REJECTED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nexport class Logger {\n constructor(version) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n _log(logLevel, args) {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) {\n return;\n }\n console.log.apply(console, args);\n }\n debug(...args) {\n this._log(Logger.levels.DEBUG, args);\n }\n info(...args) {\n this._log(Logger.levels.INFO, args);\n }\n warn(...args) {\n this._log(Logger.levels.WARNING, args);\n }\n makeError(message, code, params) {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, {});\n }\n if (!code) {\n code = Logger.errors.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n const messageDetails = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n }\n else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n }\n catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${code}`);\n messageDetails.push(`version=${this.version}`);\n const reason = message;\n let url = \"\";\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n switch (fault) {\n case \"overflow\":\n case \"underflow\":\n case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\":\n case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n // @TODO: Any??\n const error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n return error;\n }\n throwError(message, code, params) {\n throw this.makeError(message, code, params);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, params) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code, params);\n }\n assertArgument(condition, message, name, value) {\n if (!!condition) {\n return;\n }\n this.throwArgumentError(message, name, value);\n }\n checkNormalize(message) {\n if (message == null) {\n message = \"platform missing String.prototype.normalize\";\n }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n checkSafeUint53(value, message) {\n if (typeof (value) !== \"number\") {\n return;\n }\n if (message == null) {\n message = \"value not safe\";\n }\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n checkArgumentCount(count, expectedCount, message) {\n if (message) {\n message = \": \" + message;\n }\n else {\n message = \"\";\n }\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n checkNew(target, kind) {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n checkAbstract(target, kind) {\n if (target === kind) {\n this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n }\n else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setCensorship(censorship, permanent) {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n if (_permanentCensorErrors) {\n if (!censorship) {\n return;\n }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n static setLogLevel(logLevel) {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n static from(version) {\n return new Logger(version);\n }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n//# sourceMappingURL=index.js.map","export const version = \"bytes/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nfunction isHexable(value) {\n return !!(value.toHexString);\n}\nfunction addSlice(array) {\n if (array.slice) {\n return array;\n }\n array.slice = function () {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n };\n return array;\n}\nexport function isBytesLike(value) {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\nfunction isInteger(value) {\n return (typeof (value) === \"number\" && value == value && (value % 1) === 0);\n}\nexport function isBytes(value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof (value) === \"string\") {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\nexport function arrayify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return addSlice(new Uint8Array(result));\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n value = value.toHexString();\n }\n if (isHexString(value)) {\n let hex = value.substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n }\n else if (options.hexPad === \"right\") {\n hex += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return addSlice(new Uint8Array(result));\n }\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nexport function concat(items) {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return addSlice(result);\n}\nexport function stripZeros(value) {\n let result = arrayify(value);\n if (result.length === 0) {\n return result;\n }\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n return result;\n}\nexport function zeroPad(value, length) {\n value = arrayify(value);\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n if (hex.length) {\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return \"0x\" + hex;\n }\n return \"0x00\";\n }\n if (typeof (value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) {\n return (\"0x0\" + value);\n }\n return \"0x\" + value;\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n return value.toHexString();\n }\n if (isHexString(value)) {\n if (value.length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + value.substring(2);\n }\n else if (options.hexPad === \"right\") {\n value += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return value.toLowerCase();\n }\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n return (data.length - 2) / 2;\n}\nexport function hexDataSlice(data, offset, endOffset) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n }\n offset = 2 + 2 * offset;\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n return \"0x\" + data.substring(offset);\n}\nexport function hexConcat(items) {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\nexport function hexValue(value) {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") {\n return \"0x0\";\n }\n return trimmed;\n}\nexport function hexStripZeros(value) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") {\n offset++;\n }\n return \"0x\" + value.substring(offset);\n}\nexport function hexZeroPad(value, length) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n return value;\n}\nexport function splitSignature(signature) {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n if (isBytesLike(signature)) {\n let bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n }\n else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n }\n else {\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n }\n else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n }\n else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1 : 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n }\n else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n }\n else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n }\n else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n }\n else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n }\n else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n }\n else {\n const recId = (result.v === 0 || result.v === 1) ? result.v : (1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n }\n else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n }\n else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n }\n else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\nexport function joinSignature(signature) {\n signature = splitSignature(signature);\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\" : \"0x1b\")\n ]));\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nimport sha3 from \"js-sha3\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function keccak256(data) {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n//# sourceMappingURL=index.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","export const version = \"bignumber/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\nimport _BN from \"bn.js\";\nvar BN = _BN.BN;\nimport { hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst _constructorGuard = {};\nconst MAX_SAFE = 0x1fffffffffffff;\nexport function isBigNumberish(value) {\n return (value != null) && (BigNumber.isBigNumber(value) ||\n (typeof (value) === \"number\" && (value % 1) === 0) ||\n (typeof (value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof (value) === \"bigint\") ||\n isBytes(value));\n}\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\nexport class BigNumber {\n constructor(constructorGuard, hex) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n this._hex = hex;\n this._isBigNumber = true;\n Object.freeze(this);\n }\n fromTwos(value) {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n toTwos(value) {\n return toBigNumber(toBN(this).toTwos(value));\n }\n abs() {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n add(other) {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n sub(other) {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n div(other) {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n mul(other) {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n mod(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n pow(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n and(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n or(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n xor(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n mask(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n shl(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n shr(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n eq(other) {\n return toBN(this).eq(toBN(other));\n }\n lt(other) {\n return toBN(this).lt(toBN(other));\n }\n lte(other) {\n return toBN(this).lte(toBN(other));\n }\n gt(other) {\n return toBN(this).gt(toBN(other));\n }\n gte(other) {\n return toBN(this).gte(toBN(other));\n }\n isNegative() {\n return (this._hex[0] === \"-\");\n }\n isZero() {\n return toBN(this).isZero();\n }\n toNumber() {\n try {\n return toBN(this).toNumber();\n }\n catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n toBigInt() {\n try {\n return BigInt(this.toString());\n }\n catch (e) { }\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n toString() {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n }\n else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n }\n return toBN(this).toString(10);\n }\n toHexString() {\n return this._hex;\n }\n toJSON(key) {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n static from(value) {\n if (value instanceof BigNumber) {\n return value;\n }\n if (typeof (value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n if (typeof (value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n return BigNumber.from(String(value));\n }\n const anyValue = value;\n if (typeof (anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n if (anyValue) {\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof (hex) === \"string\") {\n return BigNumber.from(hex);\n }\n }\n else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n if (typeof (hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n static isBigNumber(value) {\n return !!(value && value._isBigNumber);\n }\n}\n// Normalize the hex string\nfunction toHex(value) {\n // For BN, call on the hex string\n if (typeof (value) !== \"string\") {\n return toHex(value.toString(16));\n }\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") {\n logger.throwArgumentError(\"invalid hex\", \"value\", value);\n }\n // Call toHex on the positive component\n value = toHex(value);\n // Do not allow \"-0x00\"\n if (value === \"0x00\") {\n return value;\n }\n // Negate the value\n return \"-\" + value;\n }\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n // Normalize zero\n if (value === \"0x\") {\n return \"0x00\";\n }\n // Make the string even length\n if (value.length % 2) {\n value = \"0x0\" + value.substring(2);\n }\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n return value;\n}\nfunction toBigNumber(value) {\n return BigNumber.from(toHex(value));\n}\nfunction toBN(value) {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\nfunction throwFault(fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value != null) {\n params.value = value;\n }\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n// value should have no prefix\nexport function _base36To16(value) {\n return (new BN(value, 36)).toString(16);\n}\n// value should have no prefix\nexport function _base16To36(value) {\n return (new BN(value, 16)).toString(36);\n}\n//# sourceMappingURL=bignumber.js.map","\"use strict\";\nimport { arrayify, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { BigNumber, isBigNumberish } from \"./bignumber\";\nconst _constructorGuard = {};\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n }\n catch (e) { }\n }\n if (typeof (decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\nexport function formatFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n const negative = value.lt(Zero);\n if (negative) {\n value = value.mul(NegativeOne);\n }\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n }\n else {\n value = whole + \".\" + fraction;\n }\n if (negative) {\n value = \"-\" + value;\n }\n return value;\n}\nexport function parseFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n let whole = comps[0], fraction = comps[1];\n if (!whole) {\n whole = \"0\";\n }\n if (!fraction) {\n fraction = \"0\";\n }\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n if (negative) {\n wei = wei.mul(NegativeOne);\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\n if (typeof (value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type + \")\", \"format.\" + key, value[key]);\n }\n return value[key];\n };\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.format = format;\n this._hex = hex;\n this._value = value;\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n _checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n addUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n subUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n divUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n isNegative() {\n return (this._value[0] === \"-\");\n }\n toString() { return this._value; }\n toHexString(width) {\n if (width == null) {\n return this._hex;\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid byte width\", \"width\", width);\n }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(this._value, format);\n }\n static fromValue(value, decimals, format) {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n if (decimals == null) {\n decimals = 0;\n }\n if (format == null) {\n format = \"fixed\";\n }\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n let hex = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n }\n else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) {\n numeric = numeric.fromTwos(fixedFormat.width);\n }\n const hex = numeric.toTwos((fixedFormat.signed ? 0 : 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","export const version = \"strings/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n bytes = arrayify(bytes);\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return arrayify(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\";\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","\"use strict\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, func) {\n if (!func) {\n func = function (value) { return [parseInt(value, 16)]; };\n }\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n return [codepoint + range.s];\n }\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n let complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","export const version = \"hash/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function decode(textData) {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\nexport function encode(data) {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n//# sourceMappingURL=base64.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array, depth) {\n if (depth == null) {\n depth = 1;\n }\n const result = [];\n const forEach = result.forEach;\n const flatDeep = function (arr, depth) {\n forEach.call(arr, function (val) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n }\n else {\n result.push(val);\n }\n });\n };\n flatDeep(array, depth);\n return result;\n}\nfunction fromEntries(array) {\n const result = {};\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\nexport function decode_arithmetic(bytes) {\n let pos = 0;\n function u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n // decode the frequency table\n let symbol_count = u16();\n let total = 1;\n let acc = [0, 1]; // first symbol has frequency 1\n for (let i = 1; i < symbol_count; i++) {\n acc.push(total += u16());\n }\n // skip the sized-payload that the last 3 symbols index into\n let skip = u16();\n let pos_payload = pos;\n pos += skip;\n let read_width = 0;\n let read_buffer = 0;\n function read_bit() {\n if (read_width == 0) {\n // this will read beyond end of buffer\n // but (undefined|0) => zero pad\n read_buffer = (read_buffer << 8) | bytes[pos++];\n read_width = 8;\n }\n return (read_buffer >> --read_width) & 1;\n }\n const N = 31;\n const FULL = Math.pow(2, N);\n const HALF = FULL >>> 1;\n const QRTR = HALF >> 1;\n const MASK = FULL - 1;\n // fill register\n let register = 0;\n for (let i = 0; i < N; i++)\n register = (register << 1) | read_bit();\n let symbols = [];\n let low = 0;\n let range = FULL; // treat like a float\n while (true) {\n let value = Math.floor((((register - low + 1) * total) - 1) / range);\n let start = 0;\n let end = symbol_count;\n while (end - start > 1) { // binary search\n let mid = (start + end) >>> 1;\n if (value < acc[mid]) {\n end = mid;\n }\n else {\n start = mid;\n }\n }\n if (start == 0)\n break; // first symbol is end mark\n symbols.push(start);\n let a = low + Math.floor(range * acc[start] / total);\n let b = low + Math.floor(range * acc[start + 1] / total) - 1;\n while (((a ^ b) & HALF) == 0) {\n register = (register << 1) & MASK | read_bit();\n a = (a << 1) & MASK;\n b = (b << 1) & MASK | 1;\n }\n while (a & ~b & QRTR) {\n register = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n a = (a << 1) ^ HALF;\n b = ((b ^ HALF) << 1) | HALF | 1;\n }\n low = a;\n range = 1 + b - a;\n }\n let offset = symbol_count - 4;\n return symbols.map(x => {\n switch (x - offset) {\n case 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 1: return offset + bytes[pos_payload++];\n default: return x - 1;\n }\n });\n}\n// returns an iterator which returns the next symbol\nexport function read_payload(v) {\n let pos = 0;\n return () => v[pos++];\n}\nexport function read_compressed_payload(bytes) {\n return read_payload(decode_arithmetic(bytes));\n}\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i) {\n return (i & 1) ? (~i >> 1) : (i >> 1);\n}\nfunction read_counts(n, next) {\n let v = Array(n);\n for (let i = 0; i < n; i++)\n v[i] = 1 + next();\n return v;\n}\nfunction read_ascending(n, next) {\n let v = Array(n);\n for (let i = 0, x = -1; i < n; i++)\n v[i] = x += 1 + next();\n return v;\n}\nfunction read_deltas(n, next) {\n let v = Array(n);\n for (let i = 0, x = 0; i < n; i++)\n v[i] = x += signed(next());\n return v;\n}\nexport function read_member_array(next, lookup) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next) {\n let ret = [];\n while (true) {\n let w = next();\n if (w == 0)\n break;\n ret.push(read_linear_table(w, next));\n }\n while (true) {\n let w = next() - 1;\n if (w < 0)\n break;\n ret.push(read_replacement_table(w, next));\n }\n return fromEntries(flat(ret));\n}\nexport function read_zero_terminated_array(next) {\n let v = [];\n while (true) {\n let i = next();\n if (i == 0)\n break;\n v.push(i);\n }\n return v;\n}\nfunction read_transposed(n, w, next) {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\nfunction read_linear_table(w, next) {\n let dx = 1 + next();\n let dy = next();\n let vN = read_zero_terminated_array(next);\n let m = read_transposed(vN.length, 1 + w, next);\n return flat(m.map((v, i) => {\n const x = v[0], ys = v.slice(1);\n //let [x, ...ys] = v;\n //return Array(vN[i]).fill().map((_, j) => {\n return Array(vN[i]).fill(undefined).map((_, j) => {\n let j_dy = j * dy;\n return [x + j * dx, ys.map(y => y + j_dy)];\n });\n }));\n}\nfunction read_replacement_table(w, next) {\n let n = 1 + next();\n let m = read_transposed(n, 1 + w, next);\n return m.map(v => [v[0], v.slice(1)]);\n}\nexport function read_emoji_trie(next) {\n let sorted = read_member_array(next).sort((a, b) => a - b);\n return read();\n function read() {\n let branches = [];\n while (true) {\n let keys = read_member_array(next, sorted);\n if (keys.length == 0)\n break;\n branches.push({ set: new Set(keys), node: read() });\n }\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n let temp = next();\n let valid = temp % 3;\n temp = (temp / 3) | 0;\n let fe0f = !!(temp & 1);\n temp >>= 1;\n let save = temp == 1;\n let check = temp == 2;\n return { branches, valid, fe0f, save, check };\n }\n}\n//# sourceMappingURL=decoder.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { decode } from \"@ethersproject/base64\";\nimport { read_compressed_payload } from './decoder.js';\nexport function getData() {\n return read_compressed_payload(decode('AEQF2AO2DEsA2wIrAGsBRABxAN8AZwCcAEwAqgA0AGwAUgByADcATAAVAFYAIQAyACEAKAAYAFgAGwAjABQAMAAmADIAFAAfABQAKwATACoADgAbAA8AHQAYABoAGQAxADgALAAoADwAEwA9ABMAGgARAA4ADwAWABMAFgAIAA8AHgQXBYMA5BHJAS8JtAYoAe4AExozi0UAH21tAaMnBT8CrnIyhrMDhRgDygIBUAEHcoFHUPe8AXBjAewCjgDQR8IICIcEcQLwATXCDgzvHwBmBoHNAqsBdBcUAykgDhAMShskMgo8AY8jqAQfAUAfHw8BDw87MioGlCIPBwZCa4ELatMAAMspJVgsDl8AIhckSg8XAHdvTwBcIQEiDT4OPhUqbyECAEoAS34Aej8Ybx83JgT/Xw8gHxZ/7w8RICxPHA9vBw+Pfw8PHwAPFv+fAsAvCc8vEr8ivwD/EQ8Bol8OEBa/A78hrwAPCU8vESNvvwWfHwNfAVoDHr+ZAAED34YaAdJPAK7PLwSEgDLHAGo1Pz8Pvx9fUwMrpb8O/58VTzAPIBoXIyQJNF8hpwIVAT8YGAUADDNBaX3RAMomJCg9EhUeA29MABsZBTMNJipjOhc19gcIDR8bBwQHEggCWi6DIgLuAQYA+BAFCha3A5XiAEsqM7UFFgFLhAMjFTMYE1Klnw74nRVBG/ASCm0BYRN/BrsU3VoWy+S0vV8LQx+vN8gF2AC2AK5EAWwApgYDKmAAroQ0NDQ0AT+OCg7wAAIHRAbpNgVcBV0APTA5BfbPFgMLzcYL/QqqA82eBALKCjQCjqYCht0/k2+OAsXQAoP3ASTKDgDw6ACKAUYCMpIKJpRaAE4A5womABzZvs0REEKiACIQAd5QdAECAj4Ywg/wGqY2AVgAYADYvAoCGAEubA0gvAY2ALAAbpbvqpyEAGAEpgQAJgAG7gAgAEACmghUFwCqAMpAINQIwC4DthRAAPcycKgApoIdABwBfCisABoATwBqASIAvhnSBP8aH/ECeAKXAq40NjgDBTwFYQU6AXs3oABgAD4XNgmcCY1eCl5tIFZeUqGgyoNHABgAEQAaABNwWQAmABMATPMa3T34ADldyprmM1M2XociUQgLzvwAXT3xABgAEQAaABNwIGFAnADD8AAgAD4BBJWzaCcIAIEBFMAWwKoAAdq9BWAF5wLQpALEtQAKUSGkahR4GnJM+gsAwCgeFAiUAECQ0BQuL8AAIAAAADKeIheclvFqQAAETr4iAMxIARMgAMIoHhQIAn0E0pDQFC4HhznoAAAAIAI2C0/4lvFqQAAETgBJJwYCAy4ABgYAFAA8MBKYEH4eRhTkAjYeFcgACAYAeABsOqyQ5gRwDayqugEgaIIAtgoACgDmEABmBAWGme5OBJJA2m4cDeoAmITWAXwrMgOgAGwBCh6CBXYF1Tzg1wKAAFdiuABRAFwAXQBsAG8AdgBrAHYAbwCEAHEwfxQBVE5TEQADVFhTBwBDANILAqcCzgLTApQCrQL6vAAMAL8APLhNBKkE6glGKTAU4Dr4N2EYEwBCkABKk8rHAbYBmwIoAiU4Ajf/Aq4CowCAANIChzgaNBsCsTgeODcFXrgClQKdAqQBiQGYAqsCsjTsNHsfNPA0ixsAWTWiOAMFPDQSNCk2BDZHNow2TTZUNhk28Jk9VzI3QkEoAoICoQKwAqcAQAAxBV4FXbS9BW47YkIXP1ciUqs05DS/FwABUwJW11e6nHuYZmSh/RAYA8oMKvZ8KASoUAJYWAJ6ILAsAZSoqjpgA0ocBIhmDgDWAAawRDQoAAcuAj5iAHABZiR2AIgiHgCaAU68ACxuHAG0ygM8MiZIAlgBdF4GagJqAPZOHAMuBgoATkYAsABiAHgAMLoGDPj0HpKEBAAOJgAuALggTAHWAeAMEDbd20Uege0ADwAWADkAQgA9OHd+2MUQZBBhBgNNDkxxPxUQArEPqwvqERoM1irQ090ANK4H8ANYB/ADWANYB/AH8ANYB/ADWANYA1gDWBwP8B/YxRBkD00EcgWTBZAE2wiIJk4RhgctCNdUEnQjHEwDSgEBIypJITuYMxAlR0wRTQgIATZHbKx9PQNMMbBU+pCnA9AyVDlxBgMedhKlAC8PeCE1uk6DekxxpQpQT7NX9wBFBgASqwAS5gBJDSgAUCwGPQBI4zTYABNGAE2bAE3KAExdGABKaAbgAFBXAFCOAFBJABI2SWdObALDOq0//QomCZhvwHdTBkIQHCemEPgMNAG2ATwN7kvZBPIGPATKH34ZGg/OlZ0Ipi3eDO4m5C6igFsj9iqEBe5L9TzeC05RaQ9aC2YJ5DpkgU8DIgEOIowK3g06CG4Q9ArKbA3mEUYHOgPWSZsApgcCCxIdNhW2JhFirQsKOXgG/Br3C5AmsBMqev0F1BoiBk4BKhsAANAu6IWxWjJcHU9gBgQLJiPIFKlQIQ0mQLh4SRocBxYlqgKSQ3FKiFE3HpQh9zw+DWcuFFF9B/Y8BhlQC4I8n0asRQ8R0z6OPUkiSkwtBDaALDAnjAnQD4YMunxzAVoJIgmyDHITMhEYN8YIOgcaLpclJxYIIkaWYJsE+KAD9BPSAwwFQAlCBxQDthwuEy8VKgUOgSXYAvQ21i60ApBWgQEYBcwPJh/gEFFH4Q7qCJwCZgOEJewALhUiABginAhEZABgj9lTBi7MCMhqbSN1A2gU6GIRdAeSDlgHqBw0FcAc4nDJXgyGCSiksAlcAXYJmgFgBOQICjVcjKEgQmdUi1kYnCBiQUBd/QIyDGYVoES+h3kCjA9sEhwBNgF0BzoNAgJ4Ee4RbBCWCOyGBTW2M/k6JgRQIYQgEgooA1BszwsoJvoM+WoBpBJjAw00PnfvZ6xgtyUX/gcaMsZBYSHyC5NPzgydGsIYQ1QvGeUHwAP0GvQn60FYBgADpAQUOk4z7wS+C2oIjAlAAEoOpBgH2BhrCnKM0QEyjAG4mgNYkoQCcJAGOAcMAGgMiAV65gAeAqgIpAAGANADWAA6Aq4HngAaAIZCAT4DKDABIuYCkAOUCDLMAZYwAfQqBBzEDBYA+DhuSwLDsgKAa2ajBd5ZAo8CSjYBTiYEBk9IUgOwcuIA3ABMBhTgSAEWrEvMG+REAeBwLADIAPwABjYHBkIBzgH0bgC4AWALMgmjtLYBTuoqAIQAFmwB2AKKAN4ANgCA8gFUAE4FWvoF1AJQSgESMhksWGIBvAMgATQBDgB6BsyOpsoIIARuB9QCEBwV4gLvLwe2AgMi4BPOQsYCvd9WADIXUu5eZwqoCqdeaAC0YTQHMnM9UQAPH6k+yAdy/BZIiQImSwBQ5gBQQzSaNTFWSTYBpwGqKQK38AFtqwBI/wK37gK3rQK3sAK6280C0gK33AK3zxAAUEIAUD9SklKDArekArw5AEQAzAHCO147WTteO1k7XjtZO147WTteO1kDmChYI03AVU0oJqkKbV9GYewMpw3VRMk6ShPcYFJgMxPJLbgUwhXPJVcZPhq9JwYl5VUKDwUt1GYxCC00dhe9AEApaYNCY4ceMQpMHOhTklT5LRwAskujM7ANrRsWREEFSHXuYisWDwojAmSCAmJDXE6wXDchAqH4AmiZAmYKAp+FOBwMAmY8AmYnBG8EgAN/FAN+kzkHOXgYOYM6JCQCbB4CMjc4CwJtyAJtr/CLADRoRiwBaADfAOIASwYHmQyOAP8MwwAOtgJ3MAJ2o0ACeUxEAni7Hl3cRa9G9AJ8QAJ6yQJ9CgJ88UgBSH5kJQAsFklZSlwWGErNAtECAtDNSygDiFADh+dExpEzAvKiXQQDA69Lz0wuJgTQTU1NsAKLQAKK2cIcCB5EaAa4Ao44Ao5dQZiCAo7aAo5deVG1UzYLUtVUhgKT/AKTDQDqAB1VH1WwVdEHLBwplocy4nhnRTw6ApegAu+zWCKpAFomApaQApZ9nQCqWa1aCoJOADwClrYClk9cRVzSApnMApllXMtdCBoCnJw5wzqeApwXAp+cAp65iwAeEDIrEAKd8gKekwC2PmE1YfACntQCoG8BqgKeoCACnk+mY8lkKCYsAiewAiZ/AqD8AqBN2AKmMAKlzwKoAAB+AqfzaH1osgAESmodatICrOQCrK8CrWgCrQMCVx4CVd0CseLYAx9PbJgCsr4OArLpGGzhbWRtSWADJc4Ctl08QG6RAylGArhfArlIFgK5K3hwN3DiAr0aAy2zAzISAr6JcgMDM3ICvhtzI3NQAsPMAsMFc4N0TDZGdOEDPKgDPJsDPcACxX0CxkgCxhGKAshqUgLIRQLJUALJLwJkngLd03h6YniveSZL0QMYpGcDAmH1GfSVJXsMXpNevBICz2wCz20wTFTT9BSgAMeuAs90ASrrA04TfkwGAtwoAtuLAtJQA1JdA1NgAQIDVY2AikABzBfuYUZ2AILPg44C2sgC2d+EEYRKpz0DhqYAMANkD4ZyWvoAVgLfZgLeuXR4AuIw7RUB8zEoAfScAfLTiALr9ALpcXoAAur6AurlAPpIAboC7ooC652Wq5cEAu5AA4XhmHpw4XGiAvMEAGoDjheZlAL3FAORbwOSiAL3mQL52gL4Z5odmqy8OJsfA52EAv77ARwAOp8dn7QDBY4DpmsDptoA0sYDBmuhiaIGCgMMSgFgASACtgNGAJwEgLpoBgC8BGzAEowcggCEDC6kdjoAJAM0C5IKRoABZCgiAIzw3AYBLACkfng9ogigkgNmWAN6AEQCvrkEVqTGAwCsBRbAA+4iQkMCHR072jI2PTbUNsk2RjY5NvA23TZKNiU3EDcZN5I+RTxDRTBCJkK5VBYKFhZfwQCWygU3AJBRHpu+OytgNxa61A40GMsYjsn7BVwFXQVcBV0FaAVdBVwFXQVcBV0FXAVdBVwFXUsaCNyKAK4AAQUHBwKU7oICoW1e7jAEzgPxA+YDwgCkBFDAwADABKzAAOxFLhitA1UFTDeyPkM+bj51QkRCuwTQWWQ8X+0AWBYzsACNA8xwzAGm7EZ/QisoCTAbLDs6fnLfb8H2GccsbgFw13M1HAVkBW/Jxsm9CNRO8E8FDD0FBQw9FkcClOYCoMFegpDfADgcMiA2AJQACB8AsigKAIzIEAJKeBIApY5yPZQIAKQiHb4fvj5BKSRPQrZCOz0oXyxgOywfKAnGbgMClQaCAkILXgdeCD9IIGUgQj5fPoY+dT52Ao5CM0dAX9BTVG9SDzFwWTQAbxBzJF/lOEIQQglCCkKJIAls5AcClQICoKPMODEFxhi6KSAbiyfIRrMjtCgdWCAkPlFBIitCsEJRzAbMAV/OEyQzDg0OAQQEJ36i328/Mk9AybDJsQlq3tDRApUKAkFzXf1d/j9uALYP6hCoFgCTGD8kPsFKQiobrm0+zj0KSD8kPnVCRBwMDyJRTHFgMTJa5rwXQiQ2YfI/JD7BMEJEHGINTw4TOFlIRzwJO0icMQpyPyQ+wzJCRBv6DVgnKB01NgUKj2bwYzMqCoBkznBgEF+zYDIocwRIX+NgHj4HICNfh2C4CwdwFWpTG/lgUhYGAwRfv2Ts8mAaXzVgml/XYIJfuWC4HI1gUF9pYJZgMR6ilQHMAOwLAlDRefC0in4AXAEJA6PjCwc0IamOANMMCAECRQDFNRTZBgd+CwQlRA+r6+gLBDEFBnwUBXgKATIArwAGRAAHA3cDdAN2A3kDdwN9A3oDdQN7A30DfAN4A3oDfQAYEAAlAtYASwMAUAFsAHcKAHcAmgB3AHUAdQB2AHVu8UgAygDAAHcAdQB1AHYAdQALCgB3AAsAmgB3AAsCOwB3AAtu8UgAygDAAHgKAJoAdwB3AHUAdQB2AHUAeAB1AHUAdgB1bvFIAMoAwAALCgCaAHcACwB3AAsCOwB3AAtu8UgAygDAAH4ACwGgALcBpwC6AahdAu0COwLtbvFIAMoAwAALCgCaAu0ACwLtAAsCOwLtAAtu8UgAygDAA24ACwNvAAu0VsQAAzsAABCkjUIpAAsAUIusOggWcgMeBxVsGwL67U/2HlzmWOEeOgALASvuAAseAfpKUpnpGgYJDCIZM6YyARUE9ThqAD5iXQgnAJYJPnOzw0ZAEZxEKsIAkA4DhAHnTAIDxxUDK0lxCQlPYgIvIQVYJQBVqE1GakUAKGYiDToSBA1EtAYAXQJYAIF8GgMHRyAAIAjOe9YncekRAA0KACUrjwE7Ayc6AAYWAqaiKG4McEcqANoN3+Mg9TwCBhIkuCny+JwUQ29L008JluRxu3K+oAdqiHOqFH0AG5SUIfUJ5SxCGfxdipRzqTmT4V5Zb+r1Uo4Vm+NqSSEl2mNvR2JhIa8SpYO6ntdwFXHCWTCK8f2+Hxo7uiG3drDycAuKIMP5bhi06ACnqArH1rz4Rqg//lm6SgJGEVbF9xJHISaR6HxqxSnkw6shDnelHKNEfGUXSJRJ1GcsmtJw25xrZMDK9gXSm1/YMkdX4/6NKYOdtk/NQ3/NnDASjTc3fPjIjW/5sVfVObX2oTDWkr1dF9f3kxBsD3/3aQO8hPfRz+e0uEiJqt1161griu7gz8hDDwtpy+F+BWtefnKHZPAxcZoWbnznhJpy0e842j36bcNzGnIEusgGX0a8ZxsnjcSsPDZ09yZ36fCQbriHeQ72JRMILNl6ePPf2HWoVwgWAm1fb3V2sAY0+B6rAXqSwPBgseVmoqsBTSrm91+XasMYYySI8eeRxH3ZvHkMz3BQ5aJ3iUVbYPNM3/7emRtjlsMgv/9VyTsyt/mK+8fgWeT6SoFaclXqn42dAIsvAarF5vNNWHzKSkKQ/8Hfk5ZWK7r9yliOsooyBjRhfkHP4Q2DkWXQi6FG/9r/IwbmkV5T7JSopHKn1pJwm9tb5Ot0oyN1Z2mPpKXHTxx2nlK08fKk1hEYA8WgVVWL5lgx0iTv+KdojJeU23ZDjmiubXOxVXJKKi2Wjuh2HLZOFLiSC7Tls5SMh4f+Pj6xUSrNjFqLGehRNB8lC0QSLNmkJJx/wSG3MnjE9T1CkPwJI0wH2lfzwETIiVqUxg0dfu5q39Gt+hwdcxkhhNvQ4TyrBceof3Mhs/IxFci1HmHr4FMZgXEEczPiGCx0HRwzAqDq2j9AVm1kwN0mRVLWLylgtoPNapF5cY4Y1wJh/e0BBwZj44YgZrDNqvD/9Hv7GFYdUQeDJuQ3EWI4HaKqavU1XjC/n41kT4L79kqGq0kLhdTZvgP3TA3fS0ozVz+5piZsoOtIvBUFoMKbNcmBL6YxxaUAusHB38XrS8dQMnQwJfUUkpRoGr5AUeWicvBTzyK9g77+yCkf5PAysL7r/JjcZgrbvRpMW9iyaxZvKO6ceZN2EwIxKwVFPuvFuiEPGCoagbMo+SpydLrXqBzNCDGFCrO/rkcwa2xhokQZ5CdZ0AsU3JfSqJ6n5I14YA+P/uAgfhPU84Tlw7cEFfp7AEE8ey4sP12PTt4Cods1GRgDOB5xvyiR5m+Bx8O5nBCNctU8BevfV5A08x6RHd5jcwPTMDSZJOedIZ1cGQ704lxbAzqZOP05ZxaOghzSdvFBHYqomATARyAADK4elP8Ly3IrUZKfWh23Xy20uBUmLS4Pfagu9+oyVa2iPgqRP3F2CTUsvJ7+RYnN8fFZbU/HVvxvcFFDKkiTqV5UBZ3Gz54JAKByi9hkKMZJvuGgcSYXFmw08UyoQyVdfTD1/dMkCHXcTGAKeROgArsvmRrQTLUOXioOHGK2QkjHuoYFgXciZoTJd6Fs5q1QX1G+p/e26hYsEf7QZD1nnIyl/SFkNtYYmmBhpBrxl9WbY0YpHWRuw2Ll/tj9mD8P4snVzJl4F9J+1arVeTb9E5r2ILH04qStjxQNwn3m4YNqxmaNbLAqW2TN6LidwuJRqS+NXbtqxoeDXpxeGWmxzSkWxjkyCkX4NQRme6q5SAcC+M7+9ETfA/EwrzQajKakCwYyeunP6ZFlxU2oMEn1Pz31zeStW74G406ZJFCl1wAXIoUKkWotYEpOuXB1uVNxJ63dpJEqfxBeptwIHNrPz8BllZoIcBoXwgfJ+8VAUnVPvRvexnw0Ma/WiGYuJO5y8QTvEYBigFmhUxY5RqzE8OcywN/8m4UYrlaniJO75XQ6KSo9+tWHlu+hMi0UVdiKQp7NelnoZUzNaIyBPVeOwK6GNp+FfHuPOoyhaWuNvTYFkvxscMQWDh+zeFCFkgwbXftiV23ywJ4+uwRqmg9k3KzwIQpzppt8DBBOMbrqwQM5Gb05sEwdKzMiAqOloaA/lr0KA+1pr0/+HiWoiIjHA/wir2nIuS3PeU/ji3O6ZwoxcR1SZ9FhtLC5S0FIzFhbBWcGVP/KpxOPSiUoAdWUpqKH++6Scz507iCcxYI6rdMBICPJZea7OcmeFw5mObJSiqpjg2UoWNIs+cFhyDSt6geV5qgi3FunmwwDoGSMgerFOZGX1m0dMCYo5XOruxO063dwENK9DbnVM9wYFREzh4vyU1WYYJ/LRRp6oxgjqP/X5a8/4Af6p6NWkQferzBmXme0zY/4nwMJm/wd1tIqSwGz+E3xPEAOoZlJit3XddD7/BT1pllzOx+8bmQtANQ/S6fZexc6qi3W+Q2xcmXTUhuS5mpHQRvcxZUN0S5+PL9lXWUAaRZhEH8hTdAcuNMMCuVNKTEGtSUKNi3O6KhSaTzck8csZ2vWRZ+d7mW8c4IKwXIYd25S/zIftPkwPzufjEvOHWVD1m+FjpDVUTV0DGDuHj6QnaEwLu/dEgdLQOg9E1Sro9XHJ8ykLAwtPu+pxqKDuFexqON1sKQm7rwbE1E68UCfA/erovrTCG+DBSNg0l4goDQvZN6uNlbyLpcZAwj2UclycvLpIZMgv4yRlpb3YuMftozorbcGVHt/VeDV3+Fdf1TP0iuaCsPi2G4XeGhsyF1ubVDxkoJhmniQ0/jSg/eYML9KLfnCFgISWkp91eauR3IQvED0nAPXK+6hPCYs+n3+hCZbiskmVMG2da+0EsZPonUeIY8EbfusQXjsK/eFDaosbPjEfQS0RKG7yj5GG69M7MeO1HmiUYocgygJHL6M1qzUDDwUSmr99V7Sdr2F3JjQAJY+F0yH33Iv3+C9M38eML7gTgmNu/r2bUMiPvpYbZ6v1/IaESirBHNa7mPKn4dEmYg7v/+HQgPN1G79jBQ1+soydfDC2r+h2Bl/KIc5KjMK7OH6nb1jLsNf0EHVe2KBiE51ox636uyG6Lho0t3J34L5QY/ilE3mikaF4HKXG1mG1rCevT1Vv6GavltxoQe/bMrpZvRggnBxSEPEeEzkEdOxTnPXHVjUYdw8JYvjB/o7Eegc3Ma+NUxLLnsK0kJlinPmUHzHGtrk5+CAbVzFOBqpyy3QVUnzTDfC/0XD94/okH+OB+i7g9lolhWIjSnfIb+Eq43ZXOWmwvjyV/qqD+t0e+7mTEM74qP/Ozt8nmC7mRpyu63OB4KnUzFc074SqoyPUAgM+/TJGFo6T44EHnQU4X4z6qannVqgw/U7zCpwcmXV1AubIrvOmkKHazJAR55ePjp5tLBsN8vAqs3NAHdcEHOR2xQ0lsNAFzSUuxFQCFYvXLZJdOj9p4fNq6p0HBGUik2YzaI4xySy91KzhQ0+q1hjxvImRwPRf76tChlRkhRCi74NXZ9qUNeIwP+s5p+3m5nwPdNOHgSLD79n7O9m1n1uDHiMntq4nkYwV5OZ1ENbXxFd4PgrlvavZsyUO4MqYlqqn1O8W/I1dEZq5dXhrbETLaZIbC2Kj/Aa/QM+fqUOHdf0tXAQ1huZ3cmWECWSXy/43j35+Mvq9xws7JKseriZ1pEWKc8qlzNrGPUGcVgOa9cPJYIJsGnJTAUsEcDOEVULO5x0rXBijc1lgXEzQQKhROf8zIV82w8eswc78YX11KYLWQRcgHNJElBxfXr72lS2RBSl07qTKorO2uUDZr3sFhYsvnhLZn0A94KRzJ/7DEGIAhW5ZWFpL8gEwu1aLA9MuWZzNwl8Oze9Y+bX+v9gywRVnoB5I/8kXTXU3141yRLYrIOOz6SOnyHNy4SieqzkBXharjfjqq1q6tklaEbA8Qfm2DaIPs7OTq/nvJBjKfO2H9bH2cCMh1+5gspfycu8f/cuuRmtDjyqZ7uCIMyjdV3a+p3fqmXsRx4C8lujezIFHnQiVTXLXuI1XrwN3+siYYj2HHTvESUx8DlOTXpak9qFRK+L3mgJ1WsD7F4cu1aJoFoYQnu+wGDMOjJM3kiBQWHCcvhJ/HRdxodOQp45YZaOTA22Nb4XKCVxqkbwMYFhzYQYIAnCW8FW14uf98jhUG2zrKhQQ0q0CEq0t5nXyvUyvR8DvD69LU+g3i+HFWQMQ8PqZuHD+sNKAV0+M6EJC0szq7rEr7B5bQ8BcNHzvDMc9eqB5ZCQdTf80Obn4uzjwpYU7SISdtV0QGa9D3Wrh2BDQtpBKxaNFV+/Cy2P/Sv+8s7Ud0Fd74X4+o/TNztWgETUapy+majNQ68Lq3ee0ZO48VEbTZYiH1Co4OlfWef82RWeyUXo7woM03PyapGfikTnQinoNq5z5veLpeMV3HCAMTaZmA1oGLAn7XS3XYsz+XK7VMQsc4XKrmDXOLU/pSXVNUq8dIqTba///3x6LiLS6xs1xuCAYSfcQ3+rQgmu7uvf3THKt5Ooo97TqcbRqxx7EASizaQCBQllG/rYxVapMLgtLbZS64w1MDBMXX+PQpBKNwqUKOf2DDRDUXQf9EhOS0Qj4nTmlA8dzSLz/G1d+Ud8MTy/6ghhdiLpeerGY/UlDOfiuqFsMUU5/UYlP+BAmgRLuNpvrUaLlVkrqDievNVEAwF+4CoM1MZTmjxjJMsKJq+u8Zd7tNCUFy6LiyYXRJQ4VyvEQFFaCGKsxIwQkk7EzZ6LTJq2hUuPhvAW+gQnSG6J+MszC+7QCRHcnqDdyNRJ6T9xyS87A6MDutbzKGvGktpbXqtzWtXb9HsfK2cBMomjN9a4y+TaJLnXxAeX/HWzmf4cR4vALt/P4w4qgKY04ml4ZdLOinFYS6cup3G/1ie4+t1eOnpBNlqGqs75ilzkT4+DsZQxNvaSKJ//6zIbbk/M7LOhFmRc/1R+kBtz7JFGdZm/COotIdvQoXpTqP/1uqEUmCb/QWoGLMwO5ANcHzxdY48IGP5+J+zKOTBFZ4Pid+GTM+Wq12MV/H86xEJptBa6T+p3kgpwLedManBHC2GgNrFpoN2xnrMz9WFWX/8/ygSBkavq2Uv7FdCsLEYLu9LLIvAU0bNRDtzYl+/vXmjpIvuJFYjmI0im6QEYqnIeMsNjXG4vIutIGHijeAG/9EDBozKV5cldkHbLxHh25vT+ZEzbhXlqvpzKJwcEgfNwLAKFeo0/pvEE10XDB+EXRTXtSzJozQKFFAJhMxYkVaCW+E9AL7tMeU8acxidHqzb6lX4691UsDpy/LLRmT+epgW56+5Cw8tB4kMUv6s9lh3eRKbyGs+H/4mQMaYzPTf2OOdokEn+zzgvoD3FqNKk8QqGAXVsqcGdXrT62fSPkR2vROFi68A6se86UxRUk4cajfPyCC4G5wDhD+zNq4jodQ4u4n/m37Lr36n4LIAAsVr02dFi9AiwA81MYs2rm4eDlDNmdMRvEKRHfBwW5DdMNp0jPFZMeARqF/wL4XBfd+EMLBfMzpH5GH6NaW+1vrvMdg+VxDzatk3MXgO3ro3P/DpcC6+Mo4MySJhKJhSR01SGGGp5hPWmrrUgrv3lDnP+HhcI3nt3YqBoVAVTBAQT5iuhTg8nvPtd8ZeYj6w1x6RqGUBrSku7+N1+BaasZvjTk64RoIDlL8brpEcJx3OmY7jLoZsswdtmhfC/G21llXhITOwmvRDDeTTPbyASOa16cF5/A1fZAidJpqju3wYAy9avPR1ya6eNp9K8XYrrtuxlqi+bDKwlfrYdR0RRiKRVTLOH85+ZY7XSmzRpfZBJjaTa81VDcJHpZnZnSQLASGYW9l51ZV/h7eVzTi3Hv6hUsgc/51AqJRTkpbFVLXXszoBL8nBX0u/0jBLT8nH+fJePbrwURT58OY+UieRjd1vs04w0VG5VN2U6MoGZkQzKN/ptz0Q366dxoTGmj7i1NQGHi9GgnquXFYdrCfZBmeb7s0T6yrdlZH5cZuwHFyIJ/kAtGsTg0xH5taAAq44BAk1CPk9KVVbqQzrCUiFdF/6gtlPQ8bHHc1G1W92MXGZ5HEHftyLYs8mbD/9xYRUWkHmlM0zC2ilJlnNgV4bfALpQghxOUoZL7VTqtCHIaQSXm+YUMnpkXybnV+A6xlm2CVy8fn0Xlm2XRa0+zzOa21JWWmixfiPMSCZ7qA4rS93VN3pkpF1s5TonQjisHf7iU9ZGvUPOAKZcR1pbeVf/Ul7OhepGCaId9wOtqo7pJ7yLcBZ0pFkOF28y4zEI/kcUNmutBHaQpBdNM8vjCS6HZRokkeo88TBAjGyG7SR+6vUgTcyK9Imalj0kuxz0wmK+byQU11AiJFk/ya5dNduRClcnU64yGu/ieWSeOos1t3ep+RPIWQ2pyTYVbZltTbsb7NiwSi3AV+8KLWk7LxCnfZUetEM8ThnsSoGH38/nyAwFguJp8FjvlHtcWZuU4hPva0rHfr0UhOOJ/F6vS62FW7KzkmRll2HEc7oUq4fyi5T70Vl7YVIfsPHUCdHesf9Lk7WNVWO75JDkYbMI8TOW8JKVtLY9d6UJRITO8oKo0xS+o99Yy04iniGHAaGj88kEWgwv0OrHdY/nr76DOGNS59hXCGXzTKUvDl9iKpLSWYN1lxIeyywdNpTkhay74w2jFT6NS8qkjo5CxA1yfSYwp6AJIZNKIeEK5PJAW7ORgWgwp0VgzYpqovMrWxbu+DGZ6Lhie1RAqpzm8VUzKJOH3mCzWuTOLsN3VT/dv2eeYe9UjbR8YTBsLz7q60VN1sU51k+um1f8JxD5pPhbhSC8rRaB454tmh6YUWrJI3+GWY0qeWioj/tbkYITOkJaeuGt4JrJvHA+l0Gu7kY7XOaa05alMnRWVCXqFgLIwSY4uF59Ue5SU4QKuc/HamDxbr0x6csCetXGoP7Qn1Bk/J9DsynO/UD6iZ1Hyrz+jit0hDCwi/E9OjgKTbB3ZQKQ/0ZOvevfNHG0NK4Aj3Cp7NpRk07RT1i/S0EL93Ag8GRgKI9CfpajKyK6+Jj/PI1KO5/85VAwz2AwzP8FTBb075IxCXv6T9RVvWT2tUaqxDS92zrGUbWzUYk9mSs82pECH+fkqsDt93VW++4YsR/dHCYcQSYTO/KaBMDj9LSD/J/+z20Kq8XvZUAIHtm9hRPP3ItbuAu2Hm5lkPs92pd7kCxgRs0xOVBnZ13ccdA0aunrwv9SdqElJRC3g+oCu+nXyCgmXUs9yMjTMAIHfxZV+aPKcZeUBWt057Xo85Ks1Ir5gzEHCWqZEhrLZMuF11ziGtFQUds/EESajhagzcKsxamcSZxGth4UII+adPhQkUnx2WyN+4YWR+r3f8MnkyGFuR4zjzxJS8WsQYR5PTyRaD9ixa6Mh741nBHbzfjXHskGDq179xaRNrCIB1z1xRfWfjqw2pHc1zk9xlPpL8sQWAIuETZZhbnmL54rceXVNRvUiKrrqIkeogsl0XXb17ylNb0f4GA9Wd44vffEG8FSZGHEL2fbaTGRcSiCeA8PmA/f6Hz8HCS76fXUHwgwkzSwlI71ekZ7Fapmlk/KC+Hs8hUcw3N2LN5LhkVYyizYFl/uPeVP5lsoJHhhfWvvSWruCUW1ZcJOeuTbrDgywJ/qG07gZJplnTvLcYdNaH0KMYOYMGX+rB4NGPFmQsNaIwlWrfCezxre8zXBrsMT+edVLbLqN1BqB76JH4BvZTqUIMfGwPGEn+EnmTV86fPBaYbFL3DFEhjB45CewkXEAtJxk4/Ms2pPXnaRqdky0HOYdcUcE2zcXq4vaIvW2/v0nHFJH2XXe22ueDmq/18XGtELSq85j9X8q0tcNSSKJIX8FTuJF/Pf8j5PhqG2u+osvsLxYrvvfeVJL+4tkcXcr9JV7v0ERmj/X6fM3NC4j6dS1+9Umr2oPavqiAydTZPLMNRGY23LO9zAVDly7jD+70G5TPPLdhRIl4WxcYjLnM+SNcJ26FOrkrISUtPObIz5Zb3AG612krnpy15RMW+1cQjlnWFI6538qky9axd2oJmHIHP08KyP0ubGO+TQNOYuv2uh17yCIvR8VcStw7o1g0NM60sk+8Tq7YfIBJrtp53GkvzXH7OA0p8/n/u1satf/VJhtR1l8Wa6Gmaug7haSpaCaYQax6ta0mkutlb+eAOSG1aobM81D9A4iS1RRlzBBoVX6tU1S6WE2N9ORY6DfeLRC4l9Rvr5h95XDWB2mR1d4WFudpsgVYwiTwT31ljskD8ZyDOlm5DkGh9N/UB/0AI5Xvb8ZBmai2hQ4BWMqFwYnzxwB26YHSOv9WgY3JXnvoN+2R4rqGVh/LLDMtpFP+SpMGJNWvbIl5SOodbCczW2RKleksPoUeGEzrjtKHVdtZA+kfqO+rVx/iclCqwoopepvJpSTDjT+b9GWylGRF8EDbGlw6eUzmJM95Ovoz+kwLX3c2fTjFeYEsE7vUZm3mqdGJuKh2w9/QGSaqRHs99aScGOdDqkFcACoqdbBoQqqjamhH6Q9ng39JCg3lrGJwd50Qk9ovnqBTr8MME7Ps2wiVfygUmPoUBJJfJWX5Nda0nuncbFkA=='));\n}\n//# sourceMappingURL=include.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\nimport { getData } from './include.js';\nconst r = getData();\nimport { read_member_array, read_mapped_map, read_emoji_trie } from './decoder.js';\n// @TODO: This should be lazily loaded\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\nfunction explode_cp(name) {\n return toUtf8CodePoints(name);\n}\nfunction filter_fe0f(cps) {\n return cps.filter(cp => cp != 0xFE0F);\n}\nexport function ens_normalize_post_check(name) {\n for (let label of name.split('.')) {\n let cps = explode_cp(label);\n try {\n for (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n if (cps[i] !== UNDERSCORE) {\n throw new Error(`underscore only allowed at start`);\n }\n }\n if (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n throw new Error(`invalid label extension`);\n }\n }\n catch (err) {\n throw new Error(`Invalid label \"${label}\": ${err.message}`);\n }\n }\n return name;\n}\nexport function ens_normalize(name) {\n return ens_normalize_post_check(normalize(name, filter_fe0f));\n}\nfunction normalize(name, emoji_filter) {\n let input = explode_cp(name).reverse(); // flip for pop\n let output = [];\n while (input.length) {\n let emoji = consume_emoji_reversed(input);\n if (emoji) {\n output.push(...emoji_filter(emoji));\n continue;\n }\n let cp = input.pop();\n if (VALID.has(cp)) {\n output.push(cp);\n continue;\n }\n if (IGNORED.has(cp)) {\n continue;\n }\n let cps = MAPPED[cp];\n if (cps) {\n output.push(...cps);\n continue;\n }\n throw new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n }\n return ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\nfunction nfc(s) {\n return s.normalize('NFC');\n}\nfunction consume_emoji_reversed(cps, eaten) {\n var _a;\n let node = EMOJI_ROOT;\n let emoji;\n let saved;\n let stack = [];\n let pos = cps.length;\n if (eaten)\n eaten.length = 0; // clear input buffer (if needed)\n while (pos) {\n let cp = cps[--pos];\n node = (_a = node.branches.find(x => x.set.has(cp))) === null || _a === void 0 ? void 0 : _a.node;\n if (!node)\n break;\n if (node.save) { // remember\n saved = cp;\n }\n else if (node.check) { // check exclusion\n if (cp === saved)\n break;\n }\n stack.push(cp);\n if (node.fe0f) {\n stack.push(0xFE0F);\n if (pos > 0 && cps[pos - 1] == 0xFE0F)\n pos--; // consume optional FE0F\n }\n if (node.valid) { // this is a valid emoji (so far)\n emoji = stack.slice(); // copy stack\n if (node.valid == 2)\n emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n if (eaten)\n eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n cps.length = pos; // truncate\n }\n }\n return emoji;\n}\n//# sourceMappingURL=lib.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { ens_normalize } from \"./ens-normalize/lib\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nfunction checkComponent(comp) {\n if (comp.length === 0) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n return comp;\n}\nfunction ensNameSplit(name) {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps = [];\n if (name.length === 0) {\n return comps;\n }\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n // There was a stray separator at the end of the name\n if (last >= bytes.length) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\nexport function ensNormalize(name) {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\nexport function isValidName(name) {\n try {\n return (ensNameSplit(name).length !== 0);\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n /* istanbul ignore if */\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let result = Zeros;\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n }))) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","export const version = \"rlp/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { arrayify, hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n const data = Array.prototype.slice.call(arrayify(object));\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n }\n else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nexport function encode(object) {\n return hexlify(_encode(object));\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result };\n }\n else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\nexport function decode(data) {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=index.js.map","export const version = \"address/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction getChecksumAddress(address) {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER = 0x1fffffffffffff;\nfunction log10(x) {\n if (Math.log10) {\n return Math.log10(x);\n }\n return Math.log(x) / Math.LN10;\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nexport function getAddress(address) {\n let result = null;\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n // Maybe ICAP? (we only support direct mode)\n }\n else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n result = _base36To16(address.substring(4));\n while (result.length < 40) {\n result = \"0\" + result;\n }\n result = getChecksumAddress(\"0x\" + result);\n }\n else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n return result;\n}\nexport function isAddress(address) {\n try {\n getAddress(address);\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function getIcapAddress(address) {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction) {\n let from = null;\n try {\n from = getAddress(transaction.from);\n }\n catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n return getAddress(hexDataSlice(keccak256(encode([from, nonce])), 12));\n}\nexport function getCreate2Address(from, salt, initCodeHash) {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([\"0xff\", getAddress(from), salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=index.js.map","export const version = \"properties/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor, key) {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) {\n return ctor[key];\n }\n if (!ctor.prototype || typeof (ctor.prototype) !== \"object\") {\n break;\n }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\nexport function resolveProperties(object) {\n return __awaiter(this, void 0, void 0, function* () {\n const promises = Object.keys(object).map((key) => {\n const value = object[key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n const results = yield Promise.all(promises);\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, {});\n });\n}\nexport function checkProperties(object, properties) {\n if (!object || typeof (object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\nexport function shallowCopy(object) {\n const result = {};\n for (const key in object) {\n result[key] = object[key];\n }\n return result;\n}\nconst opaque = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\nfunction _isFrozen(object) {\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof (object)]) {\n return true;\n }\n if (Array.isArray(object) || typeof (object) === \"object\") {\n if (!Object.isFrozen(object)) {\n return false;\n }\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value = null;\n try {\n value = object[keys[i]];\n }\n catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n if (!_isFrozen(value)) {\n return false;\n }\n }\n return true;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object) {\n if (_isFrozen(object)) {\n return object;\n }\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n if (typeof (object) === \"object\") {\n const result = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) {\n continue;\n }\n defineReadOnly(result, key, deepCopy(value));\n }\n return result;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\nexport function deepCopy(object) {\n return _deepCopy(object);\n}\nexport class Description {\n constructor(info) {\n for (const key in info) {\n this[key] = deepCopy(info[key]);\n }\n }\n}\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { id } from \"./id\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst NegativeOne = BigNumber.from(-1);\nconst Zero = BigNumber.from(0);\nconst One = BigNumber.from(1);\nconst MaxUint256 = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return hexConcat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n try {\n return BigNumber.from(value).toString();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) {\n throw new Error(\"bad length\");\n }\n return hexlify(bytes);\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n const boundsUpper = MaxUint256.mask(signed ? (width - 1) : width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne) : Zero;\n return function (value) {\n const v = BigNumber.from(value);\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n return function (value) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${type}`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n switch (type) {\n case \"address\": return function (value) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n defineReadOnly(this, \"_encoderCache\", {});\n defineReadOnly(this, \"_types\", {});\n // Link struct types to their direct child structs\n const links = {};\n // Link structs to structs which contain them as a child\n const parents = {};\n // Link all subtypes within a given struct\n const subtypes = {};\n Object.keys(types).forEach((type) => {\n links[type] = {};\n parents[type] = [];\n subtypes[type] = {};\n });\n for (const name in types) {\n const uniqueNames = {};\n types[name].forEach((field) => {\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n return;\n }\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\n else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${primaryTypes.map((t) => (JSON.stringify(t))).join(\", \")}`, \"types\", types);\n }\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n // Check for circular type references\n function checkCircular(type, found) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found[type] = true;\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) {\n return;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n delete found[type];\n }\n checkCircular(this.primaryType, {});\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n getEncoder(type) {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n _getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return encoder;\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n return keccak256(hexConcat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n encodeType(name) {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return callback(type, value);\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v) => this._visit(subtype, v, callback));\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, {});\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(name)}`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static resolveNames(domain, types, value, resolveName) {\n return __awaiter(this, void 0, void 0, function* () {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n // Look up all ENS names\n const ensCache = {};\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = yield resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n });\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n//# sourceMappingURL=typed-data.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","import BN from 'bn.js';\nimport hash from 'hash.js';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, basedir, module) {\n\treturn module = {\n\t\tpath: basedir,\n\t\texports: {},\n\t\trequire: function (path, base) {\n\t\t\treturn commonjsRequire(path, (base === undefined || base === null) ? module.path : base);\n\t\t}\n\t}, fn(module, module.exports), module.exports;\n}\n\nfunction getDefaultExportFromNamespaceIfPresent (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n;\n}\n\nfunction getDefaultExportFromNamespaceIfNotNamed (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n;\n}\n\nfunction getAugmentedNamespace(n) {\n\tif (n.__esModule) return n;\n\tvar a = Object.defineProperty({}, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n}\n\nvar minimalisticAssert = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\nvar utils_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n});\n\nvar utils_1$1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\n\n\n\nutils.assert = minimalisticAssert;\nutils.toArray = utils_1.toArray;\nutils.zero2 = utils_1.zero2;\nutils.toHex = utils_1.toHex;\nutils.encode = utils_1.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n});\n\n'use strict';\n\n\n\nvar getNAF = utils_1$1.getNAF;\nvar getJSF = utils_1$1.getJSF;\nvar assert$1 = utils_1$1.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nvar base = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert$1(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert$1(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils_1$1.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert$1(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert$1(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils_1$1.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\nvar inherits_browser = createCommonjsModule(function (module) {\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n});\n\n'use strict';\n\n\n\n\n\n\nvar assert$2 = utils_1$1.assert;\n\nfunction ShortCurve(conf) {\n base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits_browser(ShortCurve, base);\nvar short_1 = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert$2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits_browser(Point, base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits_browser(JPoint, base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nvar curve_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curve = exports;\n\ncurve.base = base;\ncurve.short = short_1;\ncurve.mont = /*RicMoo:ethers:require(./mont)*/(null);\ncurve.edwards = /*RicMoo:ethers:require(./edwards)*/(null);\n});\n\nvar curves_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curves = exports;\n\n\n\n\n\nvar assert = utils_1$1.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve_1.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve_1.edwards(options);\n else\n this.curve = new curve_1.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = /*RicMoo:ethers:require(./precomputed/secp256k1)*/(null).crash();\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n});\n\n'use strict';\n\n\n\n\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils_1.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils_1.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils_1.toArray(options.pers, options.persEnc || 'hex');\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nvar hmacDrbg = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils_1.toArray(entropy, entropyEnc);\n add = utils_1.toArray(add, addEnc);\n\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils_1.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils_1.encode(res, enc);\n};\n\n'use strict';\n\n\n\nvar assert$3 = utils_1$1.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nvar key = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert$3(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert$3(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert$3(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n'use strict';\n\n\n\n\nvar assert$4 = utils_1$1.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert$4(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nvar signature = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils_1$1.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils_1$1.encode(res, enc);\n};\n\n'use strict';\n\n\n\n\n\nvar rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nvar assert$5 = utils_1$1.assert;\n\n\n\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert$5(Object.prototype.hasOwnProperty.call(curves_1, options),\n 'Unknown curve ' + options);\n\n options = curves_1[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves_1.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nvar ec = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new key(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return key.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return key.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature$1, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature$1 = new signature(signature$1, 'hex');\n\n // Perform primitive values validation\n var r = signature$1.r;\n var s = signature$1.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature$1, j, enc) {\n assert$5((3 & j) === j, 'The recovery param is more than two bits');\n signature$1 = new signature(signature$1, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature$1.r;\n var s = signature$1.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature$1.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature$1, Q, enc) {\n signature$1 = new signature(signature$1, enc);\n if (signature$1.recoveryParam !== null)\n return signature$1.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature$1, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\nvar elliptic_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = /*RicMoo:ethers*/{ version: \"6.5.4\" }.version;\nelliptic.utils = utils_1$1;\nelliptic.rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nelliptic.curve = curve_1;\nelliptic.curves = curves_1;\n\n// Protocols\nelliptic.ec = ec;\nelliptic.eddsa = /*RicMoo:ethers:require(./elliptic/eddsa)*/(null);\n});\n\nvar EC$1 = elliptic_1.ec;\n\nexport { EC$1 as EC };\n//# sourceMappingURL=elliptic.js.map\n","export const version = \"signing-key/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { EC } from \"./elliptic\";\nimport { arrayify, hexDataLength, hexlify, hexZeroPad, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nlet _curve = null;\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\nexport class SigningKey {\n constructor(privateKey) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n _addPoint(other) {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n signDigest(digest) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n });\n }\n computeSharedSecret(otherKey) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n static isSigningKey(value) {\n return !!(value && value._isSigningKey);\n }\n}\nexport function recoverPublicKey(digest, signature) {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\nexport function computePublicKey(key, compressed) {\n const bytes = arrayify(key);\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n }\n else if (bytes.length === 33) {\n if (compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n }\n else if (bytes.length === 65) {\n if (!compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n//# sourceMappingURL=index.js.map","export const version = \"transactions/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport var TransactionTypes;\n(function (TransactionTypes) {\n TransactionTypes[TransactionTypes[\"legacy\"] = 0] = \"legacy\";\n TransactionTypes[TransactionTypes[\"eip2930\"] = 1] = \"eip2930\";\n TransactionTypes[TransactionTypes[\"eip1559\"] = 2] = \"eip1559\";\n})(TransactionTypes || (TransactionTypes = {}));\n;\n///////////////////////////////\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleNumber(value) {\n if (value === \"0x\") {\n return Zero;\n }\n return BigNumber.from(value);\n}\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\nconst allowedTransactionKeys = {\n chainId: true, data: true, gasLimit: true, gasPrice: true, nonce: true, to: true, type: true, value: true\n};\nexport function computeAddress(key) {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\nfunction formatNumber(value, name) {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${addr}:${index}]`, storageKey);\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${index}]`, set);\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, {});\n return accessSetify(addr, Object.keys(storageKeys).sort());\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _serializeEip1559(transaction, signature) {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x02\", RLP.encode(fields)]);\n}\nfunction _serializeEip2930(transaction, signature) {\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x01\", RLP.encode(fields)]);\n}\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction, signature) {\n checkProperties(transaction, allowedTransactionKeys);\n const raw = [];\n transactionFields.forEach(function (fieldInfo) {\n let value = transaction[fieldInfo.name] || ([]);\n const options = {};\n if (fieldInfo.numeric) {\n options.hexPad = \"left\";\n }\n value = arrayify(hexlify(value, options));\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n }\n raw.push(hexlify(value));\n });\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n if (typeof (chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n }\n else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam;\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n }\n else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n return RLP.encode(raw);\n}\nexport function serialize(transaction, signature) {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${transaction.type}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) {\n throw new Error(\"bad recid\");\n }\n tx.v = recid;\n }\n catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n }\n catch (error) { }\n}\nfunction _parseEip1559(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _parseEip2930(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n const tx = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n return tx;\n}\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction) {\n const transaction = RLP.decode(rawTransaction);\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n const tx = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n // Legacy unsigned transaction\n if (transaction.length === 6) {\n return tx;\n }\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n }\n catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n }\n else {\n // Signed Transaction\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) {\n tx.chainId = 0;\n }\n let recoveryParam = tx.v - 27;\n const raw = transaction.slice(0, 6);\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n }\n catch (error) { }\n tx.hash = keccak256(rawTransaction);\n }\n tx.type = null;\n return tx;\n}\nexport function parse(rawTransaction) {\n const payload = arrayify(rawTransaction);\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) {\n return _parse(payload);\n }\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${payload[0]}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n//# sourceMappingURL=index.js.map","import { hashMessage } from \"@ethersproject/hash\";\nimport { recoverAddress } from \"@ethersproject/transactions\";\nconst DEFAULT_RPC_URL = \"https://rpc.walletconnect.com/v1\";\nexport async function verifySignature(address, reconstructedMessage, cacaoSignature, chainId, projectId, baseRpcUrl) {\n switch (cacaoSignature.t) {\n case \"eip191\":\n return isValidEip191Signature(address, reconstructedMessage, cacaoSignature.s);\n case \"eip1271\":\n return await isValidEip1271Signature(address, reconstructedMessage, cacaoSignature.s, chainId, projectId, baseRpcUrl);\n break;\n default:\n throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${cacaoSignature.t}`);\n }\n}\nexport function isValidEip191Signature(address, message, signature) {\n const recoveredAddress = recoverAddress(hashMessage(message), signature);\n return recoveredAddress.toLowerCase() === address.toLowerCase();\n}\nexport async function isValidEip1271Signature(address, reconstructedMessage, signature, chainId, projectId, baseRpcUrl) {\n try {\n const eip1271MagicValue = \"0x1626ba7e\";\n const dynamicTypeOffset = \"0000000000000000000000000000000000000000000000000000000000000040\";\n const dynamicTypeLength = \"0000000000000000000000000000000000000000000000000000000000000041\";\n const nonPrefixedSignature = signature.substring(2);\n const nonPrefixedHashedMessage = hashMessage(reconstructedMessage).substring(2);\n const data = eip1271MagicValue +\n nonPrefixedHashedMessage +\n dynamicTypeOffset +\n dynamicTypeLength +\n nonPrefixedSignature;\n const response = await fetch(`${baseRpcUrl || DEFAULT_RPC_URL}/?chainId=${chainId}&projectId=${projectId}`, {\n method: \"POST\",\n body: JSON.stringify({\n id: generateJsonRpcId(),\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: address, data }, \"latest\"],\n }),\n });\n const { result } = await response.json();\n if (!result)\n return false;\n const recoveredValue = result.slice(0, eip1271MagicValue.length);\n return recoveredValue.toLowerCase() === eip1271MagicValue.toLowerCase();\n }\n catch (error) {\n console.error(\"isValidEip1271Signature: \", error);\n return false;\n }\n}\nfunction generateJsonRpcId() {\n return Date.now() + Math.floor(Math.random() * 1000);\n}\n//# sourceMappingURL=signatures.js.map","import { getCommonValuesInArrays } from \"./misc\";\nimport { verifySignature } from \"./signatures\";\nconst didPrefix = \"did:pkh:\";\nexport const getDidAddressSegments = (iss) => {\n return iss?.split(\":\");\n};\nexport const getDidChainId = (iss) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return iss.includes(didPrefix) ? segments[3] : segments[1];\n }\n return undefined;\n};\nexport const getNamespacedDidChainId = (iss) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments[2] + \":\" + segments[3];\n }\n return undefined;\n};\nexport const getDidAddress = (iss) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments.pop();\n }\n return undefined;\n};\nexport async function validateSignedCacao(params) {\n const { cacao, projectId } = params;\n const { s: signature, p: payload } = cacao;\n const reconstructed = formatMessage(payload, payload.iss);\n const walletAddress = getDidAddress(payload.iss);\n const isValid = await verifySignature(walletAddress, reconstructed, signature, getDidChainId(payload.iss), projectId);\n return isValid;\n}\nexport const formatMessage = (cacao, iss) => {\n const header = `${cacao.domain} wants you to sign in with your Ethereum account:`;\n const walletAddress = getDidAddress(iss);\n if (!cacao.aud && !cacao.uri) {\n throw new Error(\"Either `aud` or `uri` is required to construct the message\");\n }\n let statement = cacao.statement || undefined;\n const uri = `URI: ${cacao.aud || cacao.uri}`;\n const version = `Version: ${cacao.version}`;\n const chainId = `Chain ID: ${getDidChainId(iss)}`;\n const nonce = `Nonce: ${cacao.nonce}`;\n const issuedAt = `Issued At: ${cacao.iat}`;\n const resources = cacao.resources\n ? `Resources:${cacao.resources.map((resource) => `\\n- ${resource}`).join(\"\")}`\n : undefined;\n const recap = getRecapFromResources(cacao.resources);\n if (recap) {\n const decoded = decodeRecap(recap);\n statement = formatStatementFromRecap(statement, decoded);\n }\n const message = [\n header,\n walletAddress,\n ``,\n statement,\n ``,\n uri,\n version,\n chainId,\n nonce,\n issuedAt,\n resources,\n ]\n .filter((val) => val !== undefined && val !== null)\n .join(\"\\n\");\n return message;\n};\nexport function buildAuthObject(requestPayload, signature, iss) {\n if (!iss.includes(\"did:pkh:\")) {\n iss = `did:pkh:${iss}`;\n }\n const authObject = {\n h: {\n t: \"caip122\",\n },\n p: {\n iss,\n domain: requestPayload.domain,\n aud: requestPayload.aud,\n version: requestPayload.version,\n nonce: requestPayload.nonce,\n iat: requestPayload.iat,\n statement: requestPayload.statement,\n requestId: requestPayload.requestId,\n resources: requestPayload.resources,\n nbf: requestPayload.nbf,\n exp: requestPayload.exp,\n },\n s: signature,\n };\n return authObject;\n}\nexport function populateAuthPayload(params) {\n const { authPayload, chains, methods } = params;\n const statement = authPayload.statement || \"\";\n if (!chains?.length)\n return authPayload;\n const requested = authPayload.chains;\n const supported = chains;\n const supportedChains = getCommonValuesInArrays(requested, supported);\n if (!supportedChains?.length) {\n throw new Error(\"No supported chains\");\n }\n const requestedRecaps = getDecodedRecapFromResources(authPayload.resources);\n if (!requestedRecaps)\n return authPayload;\n isValidRecap(requestedRecaps);\n const resource = getRecapResource(requestedRecaps, \"eip155\");\n let updatedResources = authPayload?.resources || [];\n if (resource?.length) {\n const actions = getReCapActions(resource);\n const supportedActions = getCommonValuesInArrays(actions, methods);\n if (!supportedActions?.length) {\n throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(actions)}, supported: ${JSON.stringify(methods)}`);\n }\n const formattedActions = assignAbilityToActions(\"request\", supportedActions, {\n chains: supportedChains,\n });\n const updatedRecap = addResourceToRecap(requestedRecaps, \"eip155\", formattedActions);\n updatedResources = authPayload?.resources?.slice(0, -1) || [];\n updatedResources.push(encodeRecap(updatedRecap));\n }\n return {\n ...authPayload,\n statement: buildRecapStatement(statement, getRecapFromResources(updatedResources)),\n chains: supportedChains,\n resources: authPayload?.resources || updatedResources.length > 0 ? updatedResources : undefined,\n };\n}\nexport function getDecodedRecapFromResources(resources) {\n const resource = getRecapFromResources(resources);\n if (!resource)\n return;\n if (!isRecap(resource))\n return;\n return decodeRecap(resource);\n}\nexport function recapHasResource(recap, resource) {\n return recap?.att?.hasOwnProperty(resource);\n}\nexport function getRecapResource(recap, resource) {\n return recap?.att?.[resource] ? Object.keys(recap?.att?.[resource]) : [];\n}\nexport function getRecapAbilitiesFromResource(actions) {\n return actions?.map((action) => Object.keys(action)) || [];\n}\nexport function getReCapActions(abilities) {\n return abilities?.map((ability) => ability.split(\"/\")?.[1]) || [];\n}\nexport function base64Encode(input) {\n return Buffer.from(JSON.stringify(input)).toString(\"base64\");\n}\nexport function base64Decode(encodedString) {\n return JSON.parse(Buffer.from(encodedString, \"base64\").toString(\"utf-8\"));\n}\nexport function isValidRecap(recap) {\n if (!recap)\n throw new Error(\"No recap provided, value is undefined\");\n if (!recap.att)\n throw new Error(\"No `att` property found\");\n const resources = Object.keys(recap.att);\n if (!resources?.length)\n throw new Error(\"No resources found in `att` property\");\n resources.forEach((resource) => {\n const resourceAbilities = recap.att[resource];\n if (Array.isArray(resourceAbilities))\n throw new Error(`Resource must be an object: ${resource}`);\n if (typeof resourceAbilities !== \"object\")\n throw new Error(`Resource must be an object: ${resource}`);\n if (!Object.keys(resourceAbilities).length)\n throw new Error(`Resource object is empty: ${resource}`);\n Object.keys(resourceAbilities).forEach((ability) => {\n const limits = resourceAbilities[ability];\n if (!Array.isArray(limits))\n throw new Error(`Ability limits ${ability} must be an array of objects, found: ${limits}`);\n if (!limits.length)\n throw new Error(`Value of ${ability} is empty array, must be an array with objects`);\n limits.forEach((limit) => {\n if (typeof limit !== \"object\")\n throw new Error(`Ability limits (${ability}) must be an array of objects, found: ${limit}`);\n });\n });\n });\n}\nexport function createRecap(resource, ability, actions, limits = {}) {\n actions?.sort((a, b) => a.localeCompare(b));\n return {\n att: { [resource]: assignAbilityToActions(ability, actions, limits) },\n };\n}\nexport function addResourceToRecap(recap, resource, actions) {\n recap.att[resource] = {\n ...actions,\n };\n const keys = Object.keys(recap.att)?.sort((a, b) => a.localeCompare(b));\n const sorted = keys.reduce((obj, key) => {\n obj.att[key] = recap.att[key];\n return obj;\n }, { att: {} });\n return sorted;\n}\nexport function assignAbilityToActions(ability, actions, limits = {}) {\n actions = actions?.sort((a, b) => a.localeCompare(b));\n const abilities = actions.map((action) => {\n return {\n [`${ability}/${action}`]: [limits],\n };\n });\n return Object.assign({}, ...abilities);\n}\nexport function encodeRecap(recap) {\n isValidRecap(recap);\n return `urn:recap:${base64Encode(recap).replace(/=/g, \"\")}`;\n}\nexport function decodeRecap(recap) {\n const decoded = base64Decode(recap.replace(\"urn:recap:\", \"\"));\n isValidRecap(decoded);\n return decoded;\n}\nexport function createEncodedRecap(resource, ability, actions) {\n const recap = createRecap(resource, ability, actions);\n return encodeRecap(recap);\n}\nexport function isRecap(resource) {\n return resource && resource.includes(\"urn:recap:\");\n}\nexport function mergeEncodedRecaps(recap1, recap2) {\n const decoded1 = decodeRecap(recap1);\n const decoded2 = decodeRecap(recap2);\n const merged = mergeRecaps(decoded1, decoded2);\n return encodeRecap(merged);\n}\nexport function mergeRecaps(recap1, recap2) {\n isValidRecap(recap1);\n isValidRecap(recap2);\n const keys = Object.keys(recap1.att)\n .concat(Object.keys(recap2.att))\n .sort((a, b) => a.localeCompare(b));\n const mergedRecap = { att: {} };\n keys.forEach((key) => {\n const actions = Object.keys(recap1.att?.[key] || {})\n .concat(Object.keys(recap2.att?.[key] || {}))\n .sort((a, b) => a.localeCompare(b));\n actions.forEach((action) => {\n mergedRecap.att[key] = {\n ...mergedRecap.att[key],\n [action]: recap1.att[key]?.[action] || recap2.att[key]?.[action],\n };\n });\n });\n return mergedRecap;\n}\nexport function formatStatementFromRecap(statement = \"\", recap) {\n isValidRecap(recap);\n const base = \"I further authorize the stated URI to perform the following actions on my behalf: \";\n if (statement.includes(base))\n return statement;\n const statementForRecap = [];\n let currentCounter = 0;\n Object.keys(recap.att).forEach((resource) => {\n const actions = Object.keys(recap.att[resource]).map((ability) => {\n return {\n ability: ability.split(\"/\")[0],\n action: ability.split(\"/\")[1],\n };\n });\n actions.sort((a, b) => a.action.localeCompare(b.action));\n const uniqueAbilities = {};\n actions.forEach((action) => {\n if (!uniqueAbilities[action.ability]) {\n uniqueAbilities[action.ability] = [];\n }\n uniqueAbilities[action.ability].push(action.action);\n });\n const abilities = Object.keys(uniqueAbilities).map((ability) => {\n currentCounter++;\n return `(${currentCounter}) '${ability}': '${uniqueAbilities[ability].join(\"', '\")}' for '${resource}'.`;\n });\n statementForRecap.push(abilities.join(\", \").replace(\".,\", \".\"));\n });\n const recapStatemet = statementForRecap.join(\" \");\n const recapStatement = `${base}${recapStatemet}`;\n return `${statement ? statement + \" \" : \"\"}${recapStatement}`;\n}\nexport function getMethodsFromRecap(recap) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n const resource = decoded.att?.eip155;\n if (!resource)\n return [];\n return Object.keys(resource).map((ability) => ability.split(\"/\")[1]);\n}\nexport function getChainsFromRecap(recap) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n const chains = [];\n Object.values(decoded.att).forEach((resource) => {\n Object.values(resource).forEach((ability) => {\n if (ability?.[0]?.chains) {\n chains.push(ability[0].chains);\n }\n });\n });\n return [...new Set(chains.flat())];\n}\nexport function buildRecapStatement(statement, recap) {\n if (!recap)\n return statement;\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n return formatStatementFromRecap(statement, decoded);\n}\nexport function getRecapFromResources(resources) {\n if (!resources)\n return;\n const resource = resources?.[resources.length - 1];\n return isRecap(resource) ? resource : undefined;\n}\n//# sourceMappingURL=cacao.js.map","import { ChaCha20Poly1305 } from \"@stablelib/chacha20poly1305\";\nimport { HKDF } from \"@stablelib/hkdf\";\nimport { randomBytes } from \"@stablelib/random\";\nimport { hash, SHA256 } from \"@stablelib/sha256\";\nimport * as x25519 from \"@stablelib/x25519\";\nimport { concat, fromString, toString } from \"uint8arrays\";\nexport const BASE10 = \"base10\";\nexport const BASE16 = \"base16\";\nexport const BASE64 = \"base64pad\";\nexport const UTF8 = \"utf8\";\nexport const TYPE_0 = 0;\nexport const TYPE_1 = 1;\nconst ZERO_INDEX = 0;\nconst TYPE_LENGTH = 1;\nconst IV_LENGTH = 12;\nconst KEY_LENGTH = 32;\nexport function generateKeyPair() {\n const keyPair = x25519.generateKeyPair();\n return {\n privateKey: toString(keyPair.secretKey, BASE16),\n publicKey: toString(keyPair.publicKey, BASE16),\n };\n}\nexport function generateRandomBytes32() {\n const random = randomBytes(KEY_LENGTH);\n return toString(random, BASE16);\n}\nexport function deriveSymKey(privateKeyA, publicKeyB) {\n const sharedKey = x25519.sharedKey(fromString(privateKeyA, BASE16), fromString(publicKeyB, BASE16), true);\n const hkdf = new HKDF(SHA256, sharedKey);\n const symKey = hkdf.expand(KEY_LENGTH);\n return toString(symKey, BASE16);\n}\nexport function hashKey(key) {\n const result = hash(fromString(key, BASE16));\n return toString(result, BASE16);\n}\nexport function hashMessage(message) {\n const result = hash(fromString(message, UTF8));\n return toString(result, BASE16);\n}\nexport function encodeTypeByte(type) {\n return fromString(`${type}`, BASE10);\n}\nexport function decodeTypeByte(byte) {\n return Number(toString(byte, BASE10));\n}\nexport function encrypt(params) {\n const type = encodeTypeByte(typeof params.type !== \"undefined\" ? params.type : TYPE_0);\n if (decodeTypeByte(type) === TYPE_1 && typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n const senderPublicKey = typeof params.senderPublicKey !== \"undefined\"\n ? fromString(params.senderPublicKey, BASE16)\n : undefined;\n const iv = typeof params.iv !== \"undefined\" ? fromString(params.iv, BASE16) : randomBytes(IV_LENGTH);\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const sealed = box.seal(iv, fromString(params.message, UTF8));\n return serialize({ type, sealed, iv, senderPublicKey });\n}\nexport function decrypt(params) {\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const { sealed, iv } = deserialize(params.encoded);\n const message = box.open(iv, sealed);\n if (message === null)\n throw new Error(\"Failed to decrypt\");\n return toString(message, UTF8);\n}\nexport function serialize(params) {\n if (decodeTypeByte(params.type) === TYPE_1) {\n if (typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n return toString(concat([params.type, params.senderPublicKey, params.iv, params.sealed]), BASE64);\n }\n return toString(concat([params.type, params.iv, params.sealed]), BASE64);\n}\nexport function deserialize(encoded) {\n const bytes = fromString(encoded, BASE64);\n const type = bytes.slice(ZERO_INDEX, TYPE_LENGTH);\n const slice1 = TYPE_LENGTH;\n if (decodeTypeByte(type) === TYPE_1) {\n const slice2 = slice1 + KEY_LENGTH;\n const slice3 = slice2 + IV_LENGTH;\n const senderPublicKey = bytes.slice(slice1, slice2);\n const iv = bytes.slice(slice2, slice3);\n const sealed = bytes.slice(slice3);\n return { type, sealed, iv, senderPublicKey };\n }\n const slice2 = slice1 + IV_LENGTH;\n const iv = bytes.slice(slice1, slice2);\n const sealed = bytes.slice(slice2);\n return { type, sealed, iv };\n}\nexport function validateDecoding(encoded, opts) {\n const deserialized = deserialize(encoded);\n return validateEncoding({\n type: decodeTypeByte(deserialized.type),\n senderPublicKey: typeof deserialized.senderPublicKey !== \"undefined\"\n ? toString(deserialized.senderPublicKey, BASE16)\n : undefined,\n receiverPublicKey: opts?.receiverPublicKey,\n });\n}\nexport function validateEncoding(opts) {\n const type = opts?.type || TYPE_0;\n if (type === TYPE_1) {\n if (typeof opts?.senderPublicKey === \"undefined\") {\n throw new Error(\"missing sender public key\");\n }\n if (typeof opts?.receiverPublicKey === \"undefined\") {\n throw new Error(\"missing receiver public key\");\n }\n }\n return {\n type,\n senderPublicKey: opts?.senderPublicKey,\n receiverPublicKey: opts?.receiverPublicKey,\n };\n}\nexport function isTypeOneEnvelope(result) {\n return (result.type === TYPE_1 &&\n typeof result.senderPublicKey === \"string\" &&\n typeof result.receiverPublicKey === \"string\");\n}\n//# sourceMappingURL=crypto.js.map","import { RELAY_JSONRPC } from \"@walletconnect/relay-api\";\nexport const RELAYER_DEFAULT_PROTOCOL = \"irn\";\nexport function getRelayProtocolName(opts) {\n return opts?.relay || { protocol: RELAYER_DEFAULT_PROTOCOL };\n}\nexport function getRelayProtocolApi(protocol) {\n const jsonrpc = RELAY_JSONRPC[protocol];\n if (typeof jsonrpc === \"undefined\") {\n throw new Error(`Relay Protocol not supported: ${protocol}`);\n }\n return jsonrpc;\n}\n//# sourceMappingURL=relay.js.map","import * as qs from \"query-string\";\nexport function parseRelayParams(params, delimiter = \"-\") {\n const relay = {};\n const prefix = \"relay\" + delimiter;\n Object.keys(params).forEach((key) => {\n if (key.startsWith(prefix)) {\n const name = key.replace(prefix, \"\");\n const value = params[key];\n relay[name] = value;\n }\n });\n return relay;\n}\nexport function parseUri(str) {\n str = str.includes(\"wc://\") ? str.replace(\"wc://\", \"\") : str;\n str = str.includes(\"wc:\") ? str.replace(\"wc:\", \"\") : str;\n const pathStart = str.indexOf(\":\");\n const pathEnd = str.indexOf(\"?\") !== -1 ? str.indexOf(\"?\") : undefined;\n const protocol = str.substring(0, pathStart);\n const path = str.substring(pathStart + 1, pathEnd);\n const requiredValues = path.split(\"@\");\n const queryString = typeof pathEnd !== \"undefined\" ? str.substring(pathEnd) : \"\";\n const queryParams = qs.parse(queryString);\n const methods = typeof queryParams.methods === \"string\" ? queryParams.methods.split(\",\") : undefined;\n const result = {\n protocol,\n topic: parseTopic(requiredValues[0]),\n version: parseInt(requiredValues[1], 10),\n symKey: queryParams.symKey,\n relay: parseRelayParams(queryParams),\n methods,\n expiryTimestamp: queryParams.expiryTimestamp\n ? parseInt(queryParams.expiryTimestamp, 10)\n : undefined,\n };\n return result;\n}\nexport function parseTopic(topic) {\n return topic.startsWith(\"//\") ? topic.substring(2) : topic;\n}\nexport function formatRelayParams(relay, delimiter = \"-\") {\n const prefix = \"relay\";\n const params = {};\n Object.keys(relay).forEach((key) => {\n const k = prefix + delimiter + key;\n if (relay[key]) {\n params[k] = relay[key];\n }\n });\n return params;\n}\nexport function formatUri(params) {\n return (`${params.protocol}:${params.topic}@${params.version}?` +\n qs.stringify({\n symKey: params.symKey,\n ...formatRelayParams(params.relay),\n expiryTimestamp: params.expiryTimestamp,\n ...(params.methods ? { methods: params.methods.join(\",\") } : {}),\n }));\n}\n//# sourceMappingURL=uri.js.map","import { mergeArrays } from \"./misc\";\nimport { isConformingNamespaces, isValidNamespaces, isValidObject } from \"./validators\";\nexport function getAccountsChains(accounts) {\n const chains = [];\n accounts.forEach((account) => {\n const [chain, chainId] = account.split(\":\");\n chains.push(`${chain}:${chainId}`);\n });\n return chains;\n}\nexport function getNamespacesChains(namespaces) {\n const chains = [];\n Object.values(namespaces).forEach((namespace) => {\n chains.push(...getAccountsChains(namespace.accounts));\n });\n return chains;\n}\nexport function getNamespacesMethodsForChainId(namespaces, chainId) {\n const methods = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId))\n methods.push(...namespace.methods);\n });\n return methods;\n}\nexport function getNamespacesEventsForChainId(namespaces, chainId) {\n const events = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId))\n events.push(...namespace.events);\n });\n return events;\n}\nexport function getRequiredNamespacesFromNamespaces(namespaces, caller) {\n const validNamespacesError = isValidNamespaces(namespaces, caller);\n if (validNamespacesError)\n throw new Error(validNamespacesError.message);\n const required = {};\n for (const [namespace, values] of Object.entries(namespaces)) {\n required[namespace] = {\n methods: values.methods,\n events: values.events,\n chains: values.accounts.map((account) => `${account.split(\":\")[0]}:${account.split(\":\")[1]}`),\n };\n }\n return required;\n}\nexport function buildApprovedNamespaces(params) {\n const { proposal: { requiredNamespaces, optionalNamespaces = {} }, supportedNamespaces, } = params;\n const normalizedRequired = normalizeNamespaces(requiredNamespaces);\n const normalizedOptional = normalizeNamespaces(optionalNamespaces);\n const namespaces = {};\n Object.keys(supportedNamespaces).forEach((namespace) => {\n const supportedChains = supportedNamespaces[namespace].chains;\n const supportedMethods = supportedNamespaces[namespace].methods;\n const supportedEvents = supportedNamespaces[namespace].events;\n const supportedAccounts = supportedNamespaces[namespace].accounts;\n supportedChains.forEach((chain) => {\n if (!supportedAccounts.some((account) => account.includes(chain))) {\n throw new Error(`No accounts provided for chain ${chain} in namespace ${namespace}`);\n }\n });\n namespaces[namespace] = {\n chains: supportedChains,\n methods: supportedMethods,\n events: supportedEvents,\n accounts: supportedAccounts,\n };\n });\n const err = isConformingNamespaces(requiredNamespaces, namespaces, \"approve()\");\n if (err)\n throw new Error(err.message);\n const approvedNamespaces = {};\n if (!Object.keys(requiredNamespaces).length && !Object.keys(optionalNamespaces).length)\n return namespaces;\n Object.keys(normalizedRequired).forEach((requiredNamespace) => {\n const chains = supportedNamespaces[requiredNamespace].chains.filter((chain) => normalizedRequired[requiredNamespace]?.chains?.includes(chain));\n const methods = supportedNamespaces[requiredNamespace].methods.filter((method) => normalizedRequired[requiredNamespace]?.methods?.includes(method));\n const events = supportedNamespaces[requiredNamespace].events.filter((event) => normalizedRequired[requiredNamespace]?.events?.includes(event));\n const accounts = chains\n .map((chain) => supportedNamespaces[requiredNamespace].accounts.filter((account) => account.includes(`${chain}:`)))\n .flat();\n approvedNamespaces[requiredNamespace] = {\n chains,\n methods,\n events,\n accounts,\n };\n });\n Object.keys(normalizedOptional).forEach((optionalNamespace) => {\n if (!supportedNamespaces[optionalNamespace])\n return;\n const chainsToAdd = normalizedOptional[optionalNamespace]?.chains?.filter((chain) => supportedNamespaces[optionalNamespace].chains.includes(chain));\n const methodsToAdd = supportedNamespaces[optionalNamespace].methods.filter((method) => normalizedOptional[optionalNamespace]?.methods?.includes(method));\n const eventsToAdd = supportedNamespaces[optionalNamespace].events.filter((event) => normalizedOptional[optionalNamespace]?.events?.includes(event));\n const accountsToAdd = chainsToAdd\n ?.map((chain) => supportedNamespaces[optionalNamespace].accounts.filter((account) => account.includes(`${chain}:`)))\n .flat();\n approvedNamespaces[optionalNamespace] = {\n chains: mergeArrays(approvedNamespaces[optionalNamespace]?.chains, chainsToAdd),\n methods: mergeArrays(approvedNamespaces[optionalNamespace]?.methods, methodsToAdd),\n events: mergeArrays(approvedNamespaces[optionalNamespace]?.events, eventsToAdd),\n accounts: mergeArrays(approvedNamespaces[optionalNamespace]?.accounts, accountsToAdd),\n };\n });\n return approvedNamespaces;\n}\nexport function isCaipNamespace(namespace) {\n return namespace.includes(\":\");\n}\nexport function parseNamespaceKey(namespace) {\n return isCaipNamespace(namespace) ? namespace.split(\":\")[0] : namespace;\n}\nexport function normalizeNamespaces(namespaces) {\n const normalizedNamespaces = {};\n if (!isValidObject(namespaces))\n return normalizedNamespaces;\n for (const [key, values] of Object.entries(namespaces)) {\n const chains = isCaipNamespace(key) ? [key] : values.chains;\n const methods = values.methods || [];\n const events = values.events || [];\n const normalizedKey = parseNamespaceKey(key);\n normalizedNamespaces[normalizedKey] = {\n ...normalizedNamespaces[normalizedKey],\n chains: mergeArrays(chains, normalizedNamespaces[normalizedKey]?.chains),\n methods: mergeArrays(methods, normalizedNamespaces[normalizedKey]?.methods),\n events: mergeArrays(events, normalizedNamespaces[normalizedKey]?.events),\n };\n }\n return normalizedNamespaces;\n}\nexport function getNamespacesFromAccounts(accounts) {\n const namespaces = {};\n accounts?.forEach((account) => {\n const [namespace, chainId] = account.split(\":\");\n if (!namespaces[namespace]) {\n namespaces[namespace] = {\n accounts: [],\n chains: [],\n events: [],\n };\n }\n namespaces[namespace].accounts.push(account);\n namespaces[namespace].chains.push(`${namespace}:${chainId}`);\n });\n return namespaces;\n}\nexport function buildNamespacesFromAuth(methods, accounts) {\n accounts = accounts.map((account) => account.replace(\"did:pkh:\", \"\"));\n const namespaces = getNamespacesFromAccounts(accounts);\n for (const [_, values] of Object.entries(namespaces)) {\n if (!values.methods) {\n values.methods = methods;\n }\n else {\n values.methods = mergeArrays(values.methods, methods);\n }\n values.events = [\"chainChanged\", \"accountsChanged\"];\n }\n return namespaces;\n}\n//# sourceMappingURL=namespaces.js.map","export const SDK_ERRORS = {\n INVALID_METHOD: {\n message: \"Invalid method.\",\n code: 1001,\n },\n INVALID_EVENT: {\n message: \"Invalid event.\",\n code: 1002,\n },\n INVALID_UPDATE_REQUEST: {\n message: \"Invalid update request.\",\n code: 1003,\n },\n INVALID_EXTEND_REQUEST: {\n message: \"Invalid extend request.\",\n code: 1004,\n },\n INVALID_SESSION_SETTLE_REQUEST: {\n message: \"Invalid session settle request.\",\n code: 1005,\n },\n UNAUTHORIZED_METHOD: {\n message: \"Unauthorized method.\",\n code: 3001,\n },\n UNAUTHORIZED_EVENT: {\n message: \"Unauthorized event.\",\n code: 3002,\n },\n UNAUTHORIZED_UPDATE_REQUEST: {\n message: \"Unauthorized update request.\",\n code: 3003,\n },\n UNAUTHORIZED_EXTEND_REQUEST: {\n message: \"Unauthorized extend request.\",\n code: 3004,\n },\n USER_REJECTED: {\n message: \"User rejected.\",\n code: 5000,\n },\n USER_REJECTED_CHAINS: {\n message: \"User rejected chains.\",\n code: 5001,\n },\n USER_REJECTED_METHODS: {\n message: \"User rejected methods.\",\n code: 5002,\n },\n USER_REJECTED_EVENTS: {\n message: \"User rejected events.\",\n code: 5003,\n },\n UNSUPPORTED_CHAINS: {\n message: \"Unsupported chains.\",\n code: 5100,\n },\n UNSUPPORTED_METHODS: {\n message: \"Unsupported methods.\",\n code: 5101,\n },\n UNSUPPORTED_EVENTS: {\n message: \"Unsupported events.\",\n code: 5102,\n },\n UNSUPPORTED_ACCOUNTS: {\n message: \"Unsupported accounts.\",\n code: 5103,\n },\n UNSUPPORTED_NAMESPACE_KEY: {\n message: \"Unsupported namespace key.\",\n code: 5104,\n },\n USER_DISCONNECTED: {\n message: \"User disconnected.\",\n code: 6000,\n },\n SESSION_SETTLEMENT_FAILED: {\n message: \"Session settlement failed.\",\n code: 7000,\n },\n WC_METHOD_UNSUPPORTED: {\n message: \"Unsupported wc_ method.\",\n code: 10001,\n },\n};\nexport const INTERNAL_ERRORS = {\n NOT_INITIALIZED: {\n message: \"Not initialized.\",\n code: 1,\n },\n NO_MATCHING_KEY: {\n message: \"No matching key.\",\n code: 2,\n },\n RESTORE_WILL_OVERRIDE: {\n message: \"Restore will override.\",\n code: 3,\n },\n RESUBSCRIBED: {\n message: \"Resubscribed.\",\n code: 4,\n },\n MISSING_OR_INVALID: {\n message: \"Missing or invalid.\",\n code: 5,\n },\n EXPIRED: {\n message: \"Expired.\",\n code: 6,\n },\n UNKNOWN_TYPE: {\n message: \"Unknown type.\",\n code: 7,\n },\n MISMATCHED_TOPIC: {\n message: \"Mismatched topic.\",\n code: 8,\n },\n NON_CONFORMING_NAMESPACES: {\n message: \"Non conforming namespaces.\",\n code: 9,\n },\n};\nexport function getInternalError(key, context) {\n const { message, code } = INTERNAL_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\nexport function getSdkError(key, context) {\n const { message, code } = SDK_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n//# sourceMappingURL=errors.js.map","import { getNamespacesChains, getNamespacesMethodsForChainId, getNamespacesEventsForChainId, getAccountsChains, } from \"./namespaces\";\nimport { getSdkError, getInternalError } from \"./errors\";\nimport { hasOverlap } from \"./misc\";\nimport { getChainsFromNamespace } from \"./caip\";\nexport function isValidArray(arr, itemCondition) {\n if (Array.isArray(arr)) {\n if (typeof itemCondition !== \"undefined\" && arr.length) {\n return arr.every(itemCondition);\n }\n else {\n return true;\n }\n }\n return false;\n}\nexport function isValidObject(obj) {\n return Object.getPrototypeOf(obj) === Object.prototype && Object.keys(obj).length;\n}\nexport function isUndefined(input) {\n return typeof input === \"undefined\";\n}\nexport function isValidString(input, optional) {\n if (optional && isUndefined(input))\n return true;\n return typeof input === \"string\" && Boolean(input.trim().length);\n}\nexport function isValidNumber(input, optional) {\n if (optional && isUndefined(input))\n return true;\n return typeof input === \"number\" && !isNaN(input);\n}\nexport function isSessionCompatible(session, params) {\n const { requiredNamespaces } = params;\n const sessionKeys = Object.keys(session.namespaces);\n const paramsKeys = Object.keys(requiredNamespaces);\n let compatible = true;\n if (!hasOverlap(paramsKeys, sessionKeys))\n return false;\n sessionKeys.forEach((key) => {\n const { accounts, methods, events } = session.namespaces[key];\n const chains = getAccountsChains(accounts);\n const requiredNamespace = requiredNamespaces[key];\n if (!hasOverlap(getChainsFromNamespace(key, requiredNamespace), chains) ||\n !hasOverlap(requiredNamespace.methods, methods) ||\n !hasOverlap(requiredNamespace.events, events)) {\n compatible = false;\n }\n });\n return compatible;\n}\nexport function isValidChainId(value) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n return split.length === 2;\n }\n return false;\n}\nexport function isValidAccountId(value) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n if (split.length === 3) {\n const chainId = split[0] + \":\" + split[1];\n return !!split[2] && isValidChainId(chainId);\n }\n }\n return false;\n}\nexport function isValidUrl(value) {\n if (isValidString(value, false)) {\n try {\n const url = new URL(value);\n return typeof url !== \"undefined\";\n }\n catch (e) {\n return false;\n }\n }\n return false;\n}\nexport function isProposalStruct(input) {\n return input?.proposer?.publicKey;\n}\nexport function isSessionStruct(input) {\n return input?.topic;\n}\nexport function isValidController(input, method) {\n let error = null;\n if (!isValidString(input?.publicKey, false)) {\n error = getInternalError(\"MISSING_OR_INVALID\", `${method} controller public key should be a string`);\n }\n return error;\n}\nexport function isValidNamespaceMethodsOrEvents(input) {\n let valid = true;\n if (isValidArray(input)) {\n if (input.length) {\n valid = input.every((item) => isValidString(item, false));\n }\n }\n else {\n valid = false;\n }\n return valid;\n}\nexport function isValidChains(key, chains, context) {\n let error = null;\n if (isValidArray(chains) && chains.length) {\n chains.forEach((chain) => {\n if (error)\n return;\n if (!isValidChainId(chain)) {\n error = getSdkError(\"UNSUPPORTED_CHAINS\", `${context}, chain ${chain} should be a string and conform to \"namespace:chainId\" format`);\n }\n });\n }\n else if (!isValidChainId(key)) {\n error = getSdkError(\"UNSUPPORTED_CHAINS\", `${context}, chains must be defined as \"namespace:chainId\" e.g. \"eip155:1\": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: [\"eip155:1\", \"eip155:5\"] }`);\n }\n return error;\n}\nexport function isValidNamespaceChains(namespaces, method, type) {\n let error = null;\n Object.entries(namespaces).forEach(([key, namespace]) => {\n if (error)\n return;\n const validChainsError = isValidChains(key, getChainsFromNamespace(key, namespace), `${method} ${type}`);\n if (validChainsError) {\n error = validChainsError;\n }\n });\n return error;\n}\nexport function isValidAccounts(accounts, context) {\n let error = null;\n if (isValidArray(accounts)) {\n accounts.forEach((account) => {\n if (error)\n return;\n if (!isValidAccountId(account)) {\n error = getSdkError(\"UNSUPPORTED_ACCOUNTS\", `${context}, account ${account} should be a string and conform to \"namespace:chainId:address\" format`);\n }\n });\n }\n else {\n error = getSdkError(\"UNSUPPORTED_ACCOUNTS\", `${context}, accounts should be an array of strings conforming to \"namespace:chainId:address\" format`);\n }\n return error;\n}\nexport function isValidNamespaceAccounts(input, method) {\n let error = null;\n Object.values(input).forEach((namespace) => {\n if (error)\n return;\n const validAccountsError = isValidAccounts(namespace?.accounts, `${method} namespace`);\n if (validAccountsError) {\n error = validAccountsError;\n }\n });\n return error;\n}\nexport function isValidActions(namespace, context) {\n let error = null;\n if (!isValidNamespaceMethodsOrEvents(namespace?.methods)) {\n error = getSdkError(\"UNSUPPORTED_METHODS\", `${context}, methods should be an array of strings or empty array for no methods`);\n }\n else if (!isValidNamespaceMethodsOrEvents(namespace?.events)) {\n error = getSdkError(\"UNSUPPORTED_EVENTS\", `${context}, events should be an array of strings or empty array for no events`);\n }\n return error;\n}\nexport function isValidNamespaceActions(input, method) {\n let error = null;\n Object.values(input).forEach((namespace) => {\n if (error)\n return;\n const validActionsError = isValidActions(namespace, `${method}, namespace`);\n if (validActionsError) {\n error = validActionsError;\n }\n });\n return error;\n}\nexport function isValidRequiredNamespaces(input, method, type) {\n let error = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validChainsError = isValidNamespaceChains(input, method, type);\n if (validChainsError) {\n error = validChainsError;\n }\n }\n else {\n error = getInternalError(\"MISSING_OR_INVALID\", `${method}, ${type} should be an object with data`);\n }\n return error;\n}\nexport function isValidNamespaces(input, method) {\n let error = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validAccountsError = isValidNamespaceAccounts(input, method);\n if (validAccountsError) {\n error = validAccountsError;\n }\n }\n else {\n error = getInternalError(\"MISSING_OR_INVALID\", `${method}, namespaces should be an object with data`);\n }\n return error;\n}\nexport function isValidRelay(input) {\n return isValidString(input.protocol, true);\n}\nexport function isValidRelays(input, optional) {\n let valid = false;\n if (optional && !input)\n valid = true;\n else if (input && isValidArray(input) && input.length) {\n input.forEach((relay) => {\n valid = isValidRelay(relay);\n });\n }\n return valid;\n}\nexport function isValidId(input) {\n return typeof input === \"number\";\n}\nexport function isValidParams(input) {\n return typeof input !== \"undefined\" && typeof input !== null;\n}\nexport function isValidErrorReason(input) {\n if (!input)\n return false;\n if (typeof input !== \"object\")\n return false;\n if (!input.code || !isValidNumber(input.code, false))\n return false;\n if (!input.message || !isValidString(input.message, false))\n return false;\n return true;\n}\nexport function isValidRequest(request) {\n if (isUndefined(request))\n return false;\n if (!isValidString(request.method, false))\n return false;\n return true;\n}\nexport function isValidResponse(response) {\n if (isUndefined(response))\n return false;\n if (isUndefined(response.result) && isUndefined(response.error))\n return false;\n if (!isValidNumber(response.id, false))\n return false;\n if (!isValidString(response.jsonrpc, false))\n return false;\n return true;\n}\nexport function isValidEvent(event) {\n if (isUndefined(event))\n return false;\n if (!isValidString(event.name, false))\n return false;\n return true;\n}\nexport function isValidNamespacesChainId(namespaces, chainId) {\n if (!isValidChainId(chainId))\n return false;\n const chains = getNamespacesChains(namespaces);\n if (!chains.includes(chainId))\n return false;\n return true;\n}\nexport function isValidNamespacesRequest(namespaces, chainId, method) {\n if (!isValidString(method, false))\n return false;\n const methods = getNamespacesMethodsForChainId(namespaces, chainId);\n return methods.includes(method);\n}\nexport function isValidNamespacesEvent(namespaces, chainId, eventName) {\n if (!isValidString(eventName, false))\n return false;\n const events = getNamespacesEventsForChainId(namespaces, chainId);\n return events.includes(eventName);\n}\nexport function isConformingNamespaces(requiredNamespaces, namespaces, context) {\n let error = null;\n const parsedRequired = parseNamespaces(requiredNamespaces);\n const parsedApproved = parseApprovedNamespaces(namespaces);\n const requiredChains = Object.keys(parsedRequired);\n const approvedChains = Object.keys(parsedApproved);\n const uniqueRequired = filterDuplicateNamespaces(Object.keys(requiredNamespaces));\n const uniqueApproved = filterDuplicateNamespaces(Object.keys(namespaces));\n const missingRequiredNamespaces = uniqueRequired.filter((namespace) => !uniqueApproved.includes(namespace));\n if (missingRequiredNamespaces.length) {\n error = getInternalError(\"NON_CONFORMING_NAMESPACES\", `${context} namespaces keys don't satisfy requiredNamespaces.\n Required: ${missingRequiredNamespaces.toString()}\n Received: ${Object.keys(namespaces).toString()}`);\n }\n if (!hasOverlap(requiredChains, approvedChains)) {\n error = getInternalError(\"NON_CONFORMING_NAMESPACES\", `${context} namespaces chains don't satisfy required namespaces.\n Required: ${requiredChains.toString()}\n Approved: ${approvedChains.toString()}`);\n }\n Object.keys(namespaces).forEach((chain) => {\n if (!chain.includes(\":\"))\n return;\n if (error)\n return;\n const chains = getAccountsChains(namespaces[chain].accounts);\n if (!chains.includes(chain)) {\n error = getInternalError(\"NON_CONFORMING_NAMESPACES\", `${context} namespaces accounts don't satisfy namespace accounts for ${chain}\n Required: ${chain}\n Approved: ${chains.toString()}`);\n }\n });\n requiredChains.forEach((chain) => {\n if (error)\n return;\n if (!hasOverlap(parsedRequired[chain].methods, parsedApproved[chain].methods)) {\n error = getInternalError(\"NON_CONFORMING_NAMESPACES\", `${context} namespaces methods don't satisfy namespace methods for ${chain}`);\n }\n else if (!hasOverlap(parsedRequired[chain].events, parsedApproved[chain].events)) {\n error = getInternalError(\"NON_CONFORMING_NAMESPACES\", `${context} namespaces events don't satisfy namespace events for ${chain}`);\n }\n });\n return error;\n}\nfunction parseNamespaces(namespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n const isInlineChainDefinition = key.includes(\":\");\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n }\n else {\n namespaces[key].chains?.forEach((chain) => {\n parsed[chain] = {\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\nfunction filterDuplicateNamespaces(namespaces) {\n return [\n ...new Set(namespaces.map((namespace) => namespace.includes(\":\") ? namespace.split(\":\")[0] : namespace)),\n ];\n}\nfunction parseApprovedNamespaces(namespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n const isInlineChainDefinition = key.includes(\":\");\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n }\n else {\n const chains = getAccountsChains(namespaces[key].accounts);\n chains?.forEach((chain) => {\n parsed[chain] = {\n accounts: namespaces[key].accounts.filter((account) => account.includes(`${chain}:`)),\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\nexport function isValidRequestExpiry(expiry, boundaries) {\n return isValidNumber(expiry, false) && expiry <= boundaries.max && expiry >= boundaries.min;\n}\n//# sourceMappingURL=validators.js.map","import { getEnvironment, ENV_MAP, isBrowser, isReactNative } from \"./misc\";\nexport function isOnline() {\n const env = getEnvironment();\n return new Promise((resolve) => {\n switch (env) {\n case ENV_MAP.browser:\n resolve(getBrowserOnlineStatus());\n break;\n case ENV_MAP.reactNative:\n resolve(getReactNativeOnlineStatus());\n break;\n case ENV_MAP.node:\n resolve(getNodeOnlineStatus());\n break;\n default:\n resolve(true);\n }\n });\n}\nexport function getBrowserOnlineStatus() {\n return isBrowser() && navigator?.onLine;\n}\nexport async function getReactNativeOnlineStatus() {\n if (isReactNative() && typeof global !== \"undefined\" && global?.NetInfo) {\n const state = await global?.NetInfo.fetch();\n return state?.isConnected;\n }\n return true;\n}\nexport function getNodeOnlineStatus() {\n return true;\n}\nexport function subscribeToNetworkChange(callbackHandler) {\n const env = getEnvironment();\n switch (env) {\n case ENV_MAP.browser:\n subscribeToBrowserNetworkChange(callbackHandler);\n break;\n case ENV_MAP.reactNative:\n subscribeToReactNativeNetworkChange(callbackHandler);\n break;\n case ENV_MAP.node:\n break;\n default:\n break;\n }\n}\nexport function subscribeToBrowserNetworkChange(callbackHandler) {\n if (!isReactNative() && isBrowser()) {\n window.addEventListener(\"online\", () => callbackHandler(true));\n window.addEventListener(\"offline\", () => callbackHandler(false));\n }\n}\nexport function subscribeToReactNativeNetworkChange(callbackHandler) {\n if (isReactNative() && typeof global !== \"undefined\" && global?.NetInfo) {\n global?.NetInfo.addEventListener((state) => callbackHandler(state?.isConnected));\n }\n}\n//# sourceMappingURL=network.js.map","const memoryStore = {};\nexport class MemoryStore {\n static get(key) {\n return memoryStore[key];\n }\n static set(key, value) {\n memoryStore[key] = value;\n }\n static delete(key) {\n delete memoryStore[key];\n }\n}\n//# sourceMappingURL=memoryStore.js.map"],"names":["CAIP_DELIMITER","chain","namespace","reference","params","account","address","array","parser","unique","str","value","accounts","namespaces","keys","key","ns","chains","requiredNamespaces","namespaceProps","E","d","u","getDocument","getNavigator","_a","e","queryString","newQueryParams","queryParams","qs","__spreadValues","getWindowMetadata","protocol","version","env","metadata","getLocation","OS","Version","info","detect","os","sdkVersion","id","relayUrl","auth","projectId","useOnCloseEvent","bundleId","splitUrl","ua","url","domain","obj","type","context","depth","a","b","x","arr","map","cb","res","word","c","w","expiry","FIVE_MINUTES","expireErrorMessage","timeout","toMiliseconds","cacheResolve","cacheReject","cacheTimeout","promiseResolve","promiseReject","promise","resolve","reject","result","error","topic","target","parsed","ttl","now","fromMiliseconds","event","wcDeepLink","json","deeplink","link","err","store","deepLink","arr1","arr2","global","logger","this","_BN","_constructorGuard","throwFault","toHex","Zero","r","hashMessage","minimalisticAssert","assert","inherits_browserModule","require$$0","require$$1","utils","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","BlockHash","common","ft_1","ch32","maj32","s0_256","s1_256","g0_256","g1_256","shaCommon","require$$2","require$$3","SHA256","SHA512","require$$4","f","K","s","BN","EC","DEFAULT_RPC_URL","reconstructedMessage","cacaoSignature","chainId","baseRpcUrl","message","signature","recoverAddress","eip1271MagicValue","dynamicTypeOffset","dynamicTypeLength","nonPrefixedSignature","nonPrefixedHashedMessage","data","response","generateJsonRpcId","g","y","h","l","didPrefix","iss","segments","cacao","payload","reconstructed","walletAddress","verifySignature","header","statement","uri","nonce","issuedAt","resources","resource","recap","decoded","val","requestPayload","authPayload","methods","requested","supportedChains","getCommonValuesInArrays","requestedRecaps","updatedResources","actions","supportedActions","formattedActions","updatedRecap","__spreadProps","_b","action","abilities","ability","input","encodedString","resourceAbilities","limits","limit","recap1","recap2","decoded1","decoded2","merged","mergedRecap","base","statementForRecap","currentCounter","uniqueAbilities","recapStatemet","recapStatement","ZERO_INDEX","TYPE_LENGTH","IV_LENGTH","KEY_LENGTH","keyPair","x25519","toString","random","randomBytes","privateKeyA","publicKeyB","sharedKey","fromString","symKey","HKDF","hash","byte","senderPublicKey","iv","sealed","ChaCha20Poly1305","box","concat","encoded","bytes","slice1","slice2","slice3","opts","deserialized","jsonrpc","RELAY_JSONRPC","delimiter","relay","prefix","name","pathStart","pathEnd","requiredValues","k","events","caller","validNamespacesError","isValidNamespaces","required","values","optionalNamespaces","supportedNamespaces","normalizedRequired","normalizedOptional","supportedMethods","supportedEvents","supportedAccounts","isConformingNamespaces","approvedNamespaces","requiredNamespace","method","optionalNamespace","_c","_d","_e","_f","chainsToAdd","methodsToAdd","eventsToAdd","accountsToAdd","mergeArrays","normalizedNamespaces","isValidObject","normalizedKey","_","code","itemCondition","optional","session","sessionKeys","paramsKeys","compatible","hasOverlap","getAccountsChains","getChainsFromNamespace","split","getInternalError","valid","item","getSdkError","validChainsError","validAccountsError","validActionsError","request","getNamespacesChains","getNamespacesMethodsForChainId","eventName","getNamespacesEventsForChainId","parsedRequired","parseNamespaces","parsedApproved","parseApprovedNamespaces","requiredChains","approvedChains","uniqueRequired","filterDuplicateNamespaces","uniqueApproved","missingRequiredNamespaces","boundaries","getEnvironment","ENV_MAP","isBrowser","isReactNative","state","callbackHandler","memoryStore"],"mappings":"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CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB;AACA,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C;AACA,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC;OACM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;OACd,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;MACnB;AACL,IAAG,CAAC;AACJ;GACE,IAAI,SAAS,EAAE;KACb,MAAA,CAAA,OAAA,GAAiB,OAAO,CAAC;AAC7B,IAAG,MAAM;AACT,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC7C,OAAM,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;MAChD;IAMF;AACH,EAAC,GAAG,CAAA;;;;;AC/oBG,MAAMjE,SAAO,GAAG,cAAc;;ACCrC,IAAI,sBAAsB,GAAG,KAAK,CAAC;AACnC,IAAI,aAAa,GAAG,KAAK,CAAC;AAC1B,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AACpF,IAAI,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;AAErC,IAAI,aAAa,GAAG,IAAI,CAAC;AACzB,SAAS,eAAe,GAAG;AAC3B,IAAI,IAAI;AACR,QAAQ,MAAM,OAAO,GAAG,EAAE,CAAC;AAC3B;AACA,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACzD,YAAY,IAAI;AAChB,gBAAgB,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,MAAM,EAAE;AACvD,oBAAoB,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AACrD,iBAAiB;AACjB,gBAAgB,CAAC;AACjB,aAAa;AACb,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE;AAC5B,YAAY,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,SAAS;AACT,QAAQ,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;AAC9F,YAAY,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AACrD,SAAS;AACT,KAAK;AACL,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,OAAO,KAAK,CAAC,OAAO,CAAC;AAC7B,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD,MAAM,eAAe,GAAG,eAAe,EAAE,CAAC;AACnC,IAAI,QAAQ,CAAC;AACpB,CAAC,UAAU,QAAQ,EAAE;AACrB,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAChC,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAC9B,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;AACpC,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAChC,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC5B,CAAC,EAAE,QAAQ,KAAK,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC;AACzB,IAAI,SAAS,CAAC;AACrB,CAAC,UAAU,SAAS,EAAE;AACtB;AACA;AACA;AACA,IAAI,SAAS,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC;AACjD;AACA,IAAI,SAAS,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAAC;AACrD;AACA;AACA,IAAI,SAAS,CAAC,uBAAuB,CAAC,GAAG,uBAAuB,CAAC;AACjE;AACA;AACA,IAAI,SAAS,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC;AACjD;AACA,IAAI,SAAS,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC;AAC/C;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;AACrC;AACA;AACA;AACA,IAAI,SAAS,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;AACnD;AACA;AACA;AACA,IAAI,SAAS,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC;AACjD;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;AAC7C;AACA;AACA;AACA,IAAI,SAAS,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,CAAC;AACvD;AACA;AACA;AACA,IAAI,SAAS,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,CAAC;AACvD;AACA;AACA;AACA,IAAI,SAAS,CAAC,qBAAqB,CAAC,GAAG,qBAAqB,CAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;AACnD;AACA;AACA,IAAI,SAAS,CAAC,oBAAoB,CAAC,GAAG,oBAAoB,CAAC;AAC3D;AACA;AACA,IAAI,SAAS,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC;AACjD;AACA;AACA,IAAI,SAAS,CAAC,yBAAyB,CAAC,GAAG,yBAAyB,CAAC;AACrE;AACA;AACA,IAAI,SAAS,CAAC,yBAAyB,CAAC,GAAG,yBAAyB,CAAC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,sBAAsB,CAAC,GAAG,sBAAsB,CAAC;AAC/D;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAAC;AACrD,CAAC,EAAE,SAAS,KAAK,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC;AAElC,MAAM,GAAG,GAAG,kBAAkB,CAAC;AACxB,MAAM,MAAM,CAAC;AACpB,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;AAC/C,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,KAAK,EAAE,OAAO;AAC1B,YAAY,QAAQ,EAAE,KAAK;AAC3B,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;AACzB,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;AAC7C,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;AACtC,YAAY,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AACpF,SAAS;AACT,QAAQ,IAAI,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE;AAC1C,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE;AAClB,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE;AAClB,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;AACrC;AACA,QAAQ,IAAI,aAAa,EAAE;AAC3B,YAAY,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC9D,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;AAC/C,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,YAAY,MAAM,GAAG,EAAE,CAAC;AACxB,SAAS;AACT,QAAQ,MAAM,cAAc,GAAG,EAAE,CAAC;AAClC,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC7C,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACtC,YAAY,IAAI;AAChB,gBAAgB,IAAI,KAAK,YAAY,UAAU,EAAE;AACjD,oBAAoB,IAAI,GAAG,GAAG,EAAE,CAAC;AACjC,oBAAoB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3D,wBAAwB,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClD,wBAAwB,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACpD,qBAAqB;AACrB,oBAAoB,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,gBAAgB,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AAC5E,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3E,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACxF,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5C,QAAQ,cAAc,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACvD,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC;AAC/B,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC;AACrB,QAAQ,QAAQ,IAAI;AACpB,YAAY,KAAK,SAAS,CAAC,aAAa,EAAE;AAC1C,gBAAgB,GAAG,GAAG,eAAe,CAAC;AACtC,gBAAgB,MAAM,KAAK,GAAG,OAAO,CAAC;AACtC,gBAAgB,QAAQ,KAAK;AAC7B,oBAAoB,KAAK,UAAU,CAAC;AACpC,oBAAoB,KAAK,WAAW,CAAC;AACrC,oBAAoB,KAAK,kBAAkB;AAC3C,wBAAwB,GAAG,IAAI,GAAG,GAAG,KAAK,CAAC;AAC3C,wBAAwB,MAAM;AAC9B,oBAAoB,KAAK,gBAAgB,CAAC;AAC1C,oBAAoB,KAAK,gBAAgB;AACzC,wBAAwB,GAAG,IAAI,cAAc,CAAC;AAC9C,wBAAwB,MAAM;AAC9B,oBAAoB,KAAK,wBAAwB;AACjD,wBAAwB,GAAG,IAAI,iBAAiB,CAAC;AACjD,wBAAwB,MAAM;AAC9B,iBAAiB;AACjB,gBAAgB,MAAM;AACtB,aAAa;AACb,YAAY,KAAK,SAAS,CAAC,cAAc,CAAC;AAC1C,YAAY,KAAK,SAAS,CAAC,kBAAkB,CAAC;AAC9C,YAAY,KAAK,SAAS,CAAC,WAAW,CAAC;AACvC,YAAY,KAAK,SAAS,CAAC,aAAa,CAAC;AACzC,YAAY,KAAK,SAAS,CAAC,uBAAuB,CAAC;AACnD,YAAY,KAAK,SAAS,CAAC,oBAAoB,CAAC;AAChD,YAAY,KAAK,SAAS,CAAC,uBAAuB;AAClD,gBAAgB,GAAG,GAAG,IAAI,CAAC;AAC3B,gBAAgB,MAAM;AACtB,SAAS;AACT,QAAQ,IAAI,GAAG,EAAE;AACjB,YAAY,OAAO,IAAI,8CAA8C,GAAG,GAAG,GAAG,IAAI,CAAC;AACnF,SAAS;AACT,QAAQ,IAAI,cAAc,CAAC,MAAM,EAAE;AACnC,YAAY,OAAO,IAAI,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;AAC9D,SAAS;AACT;AACA,QAAQ,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AACzC,QAAQ,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC9B,QAAQ,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;AAC1B,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE;AACnD,YAAY,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACrC,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;AACtC,QAAQ,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;AAC7C,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACxE,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,KAAK,EAAE,KAAK;AACxB,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;AAC7C,QAAQ,IAAI,CAAC,CAAC,SAAS,EAAE;AACzB,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;AACpD,QAAQ,IAAI,CAAC,CAAC,SAAS,EAAE;AACzB,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACtD,KAAK;AACL,IAAI,cAAc,CAAC,OAAO,EAAE;AAI5B,QAAQ,IAAI,eAAe,EAAE;AAC7B,YAAY,IAAI,CAAC,UAAU,CAAC,6CAA6C,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAChH,gBAAgB,SAAS,EAAE,4BAA4B,EAAE,IAAI,EAAE,eAAe;AAC9E,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK;AACL,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE;AACpC,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACzC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,OAAO,IAAI,IAAI,EAAE;AAC7B,YAAY,OAAO,GAAG,gBAAgB,CAAC;AACvC,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,gBAAgB,EAAE;AACpD,YAAY,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE;AAClE,gBAAgB,SAAS,EAAE,kBAAkB;AAC7C,gBAAgB,KAAK,EAAE,mBAAmB;AAC1C,gBAAgB,KAAK,EAAE,KAAK;AAC5B,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE;AACvB,YAAY,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE;AAClE,gBAAgB,SAAS,EAAE,kBAAkB;AAC7C,gBAAgB,KAAK,EAAE,aAAa;AACpC,gBAAgB,KAAK,EAAE,KAAK;AAC5B,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK;AACL,IAAI,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE;AACtD,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC;AACrC,SAAS;AACT,aAAa;AACb,YAAY,OAAO,GAAG,EAAE,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,aAAa,EAAE;AACnC,YAAY,IAAI,CAAC,UAAU,CAAC,kBAAkB,GAAG,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;AAC1F,gBAAgB,KAAK,EAAE,KAAK;AAC5B,gBAAgB,aAAa,EAAE,aAAa;AAC5C,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,aAAa,EAAE;AACnC,YAAY,IAAI,CAAC,UAAU,CAAC,oBAAoB,GAAG,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE;AAC/F,gBAAgB,KAAK,EAAE,KAAK;AAC5B,gBAAgB,aAAa,EAAE,aAAa;AAC5C,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK;AACL,IAAI,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE;AAC3B,QAAQ,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,IAAI,IAAI,EAAE;AACjD,YAAY,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3F,SAAS;AACT,KAAK;AACL,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE;AAChC,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AAC7B,YAAY,IAAI,CAAC,UAAU,CAAC,oCAAoC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,4BAA4B,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3M,SAAS;AACT,aAAa,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,IAAI,IAAI,EAAE;AACtD,YAAY,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3F,SAAS;AACT,KAAK;AACL,IAAI,OAAO,YAAY,GAAG;AAC1B,QAAQ,IAAI,CAAC,aAAa,EAAE;AAC5B,YAAY,aAAa,GAAG,IAAI,MAAM,CAACA,SAAO,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,OAAO,aAAa,CAAC;AAC7B,KAAK;AACL,IAAI,OAAO,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE;AAChD,QAAQ,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;AACtC,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC,uCAAuC,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;AACzH,gBAAgB,SAAS,EAAE,eAAe;AAC1C,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,sBAAsB,EAAE;AACpC,YAAY,IAAI,CAAC,UAAU,EAAE;AAC7B,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC,4BAA4B,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAC9G,gBAAgB,SAAS,EAAE,eAAe;AAC1C,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,aAAa,GAAG,CAAC,CAAC,UAAU,CAAC;AACrC,QAAQ,sBAAsB,GAAG,CAAC,CAAC,SAAS,CAAC;AAC7C,KAAK;AACL,IAAI,OAAO,WAAW,CAAC,QAAQ,EAAE;AACjC,QAAQ,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;AACxD,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;AAC3B,YAAY,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,CAAC;AAC1E,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,SAAS,GAAG,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;AACzB,QAAQ,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;AACnC,KAAK;AACL,CAAC;AACD,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;AAC1B,MAAM,CAAC,MAAM,GAAG,QAAQ;;ACjWjB,MAAMA,SAAO,GAAG,aAAa;;ACGpC,MAAMkE,QAAM,GAAG,IAAI,MAAM,CAAClE,SAAO,CAAC,CAAC;AACnC;AACA,SAAS,SAAS,CAAC,KAAK,EAAE;AAC1B,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;AACjC,CAAC;AACD,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACrB,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,KAAK,CAAC,KAAK,GAAG,YAAY;AAC9B,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3D,QAAQ,OAAO,QAAQ,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAClF,KAAK,CAAC;AACN,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACM,SAAS,WAAW,CAAC,KAAK,EAAE;AACnC,IAAI,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,EAAE;AAC3E,CAAC;AACD,SAAS,SAAS,CAAC,KAAK,EAAE;AAC1B,IAAI,QAAQ,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE;AAChF,CAAC;AACM,SAAS,OAAO,CAAC,KAAK,EAAE;AAC/B,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;AACvB,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,WAAW,KAAK,UAAU,EAAE;AAC1C,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACrC,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACtD,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,QAAQ,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3B,QAAQ,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE;AAChD,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACM,SAAS,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE;AACzC,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,OAAO,GAAG,EAAE,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACrC,QAAQkE,QAAM,CAAC,eAAe,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;AAChE,QAAQ,MAAM,MAAM,GAAG,EAAE,CAAC;AAC1B,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AACzC,YAAY,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;AAClD,SAAS;AACT,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,SAAS;AACT,QAAQ,OAAO,QAAQ,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,kBAAkB,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;AACrG,QAAQ,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;AAC7B,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;AAC1B,QAAQ,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;AAC5B,QAAQ,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACrC,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,YAAY,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE;AAC3C,gBAAgB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAChC,aAAa;AACb,iBAAiB,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;AACjD,gBAAgB,GAAG,IAAI,GAAG,CAAC;AAC3B,aAAa;AACb,iBAAiB;AACjB,gBAAgBA,QAAM,CAAC,kBAAkB,CAAC,wBAAwB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACpF,aAAa;AACb,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,EAAE,CAAC;AAC1B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAChD,YAAY,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,SAAS;AACT,QAAQ,OAAO,QAAQ,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,QAAQ,OAAO,QAAQ,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,OAAOA,QAAM,CAAC,kBAAkB,CAAC,wBAAwB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC/E,CAAC;AACM,SAAS,MAAM,CAAC,KAAK,EAAE;AAC9B,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7E,IAAI,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;AAC1C,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK;AACvC,QAAQ,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACnC,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACtC,KAAK,EAAE,CAAC,CAAC,CAAC;AACV,IAAI,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAiBM,SAAS,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE;AACvC,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5B,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,EAAE;AAC/B,QAAQA,QAAM,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;AAC1C,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAC7C,IAAI,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AACM,SAAS,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE;AAC3C,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE;AACzE,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE;AACnD,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD,MAAM,aAAa,GAAG,kBAAkB,CAAC;AAClC,SAAS,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE;AACxC,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,OAAO,GAAG,EAAE,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACrC,QAAQA,QAAM,CAAC,eAAe,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;AAC/D,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC;AACrB,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,GAAG,GAAG,aAAa,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACnD,YAAY,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE;AACxB,YAAY,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,gBAAgB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAChC,aAAa;AACb,YAAY,OAAO,IAAI,GAAG,GAAG,CAAC;AAC9B,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACrC,QAAQ,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnC,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,YAAY,QAAQ,KAAK,GAAG,KAAK,EAAE;AACnC,SAAS;AACT,QAAQ,OAAO,IAAI,GAAG,KAAK,CAAC;AAC5B,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,kBAAkB,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;AACrG,QAAQ,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;AAC7B,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;AAC1B,QAAQ,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;AAC5B,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,YAAY,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE;AAC3C,gBAAgB,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACnD,aAAa;AACb,iBAAiB,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;AACjD,gBAAgB,KAAK,IAAI,GAAG,CAAC;AAC7B,aAAa;AACb,iBAAiB;AACjB,gBAAgBA,QAAM,CAAC,kBAAkB,CAAC,wBAAwB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACpF,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC;AAC1B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,YAAY,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC/E,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,OAAOA,QAAM,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC9E,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,aAAa,CAAC,IAAI,EAAE;AACpC,IAAI,IAAI,QAAQ,IAAI,CAAC,KAAK,QAAQ,EAAE;AACpC,QAAQ,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7B,KAAK;AACL,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACtD,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AACM,SAAS,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE;AACtD,IAAI,IAAI,QAAQ,IAAI,CAAC,KAAK,QAAQ,EAAE;AACpC,QAAQ,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7B,KAAK;AACL,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACtD,QAAQA,QAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACpE,KAAK;AACL,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;AAC5B,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE;AAC3B,QAAQ,OAAO,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;AAChE,KAAK;AACL,IAAI,OAAO,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACzC,CAAC;AA6BM,SAAS,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE;AAC1C,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACrC,QAAQ,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/B,KAAK;AACL,SAAS,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;AAClC,QAAQA,QAAM,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACxE,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE;AACvC,QAAQA,QAAM,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,KAAK;AACL,IAAI,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE;AAC1C,QAAQ,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACM,SAAS,cAAc,CAAC,SAAS,EAAE;AAC1C,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,CAAC,EAAE,IAAI;AACf,QAAQ,CAAC,EAAE,IAAI;AACf,QAAQ,GAAG,EAAE,IAAI;AACjB,QAAQ,aAAa,EAAE,CAAC;AACxB,QAAQ,CAAC,EAAE,CAAC;AACZ,QAAQ,WAAW,EAAE,IAAI;AACzB,QAAQ,OAAO,EAAE,IAAI;AACrB,KAAK,CAAC;AACN,IAAI,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE;AAChC,QAAQ,IAAI,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;AACxC;AACA,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;AACjC;AACA,YAAY,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,YAAY,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;AAC9B,YAAY,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACnD,YAAY,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACpD,SAAS;AACT,aAAa,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;AACtC,YAAY,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACnD,YAAY,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACpD,YAAY,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;AACjC,SAAS;AACT,aAAa;AACb,YAAYA,QAAM,CAAC,kBAAkB,CAAC,0BAA0B,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC1F,SAAS;AACT;AACA,QAAQ,IAAI,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;AAC3B,YAAY,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;AAClD,gBAAgB,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/B,aAAa;AACb,iBAAiB;AACjB,gBAAgBA,QAAM,CAAC,kBAAkB,CAAC,0BAA0B,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC9F,aAAa;AACb,SAAS;AACT;AACA,QAAQ,MAAM,CAAC,aAAa,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD;AACA,QAAQ,IAAI,MAAM,CAAC,aAAa,EAAE;AAClC,YAAY,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;AAC9B,SAAS;AACT,QAAQ,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAClD,KAAK;AACL,SAAS;AACT,QAAQ,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AAC/B,QAAQ,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AAC/B,QAAQ,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AAC/B,QAAQ,MAAM,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;AACvD,QAAQ,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;AACnC;AACA;AACA,QAAQ,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE;AAChC,YAAY,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACzD,YAAY,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;AACrC;AACA,YAAY,MAAM,aAAa,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,YAAY,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,EAAE;AAC9C,gBAAgB,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC;AACrD,aAAa;AACb,iBAAiB,IAAI,MAAM,CAAC,aAAa,KAAK,aAAa,EAAE;AAC7D,gBAAgBA,QAAM,CAAC,kBAAkB,CAAC,sCAAsC,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC1G,aAAa;AACb;AACA,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC1B,YAAY,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;AAClC,YAAY,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,EAAE;AAClC,gBAAgB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B,aAAa;AACb,iBAAiB,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;AACrC,gBAAgBA,QAAM,CAAC,kBAAkB,CAAC,0BAA0B,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC9F,aAAa;AACb,SAAS;AACT;AACA,QAAQ,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,EAAE;AAC1C,YAAY,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,EAAE;AAClC,gBAAgBA,QAAM,CAAC,kBAAkB,CAAC,uCAAuC,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC3G,aAAa;AACb,iBAAiB,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;AACvD,gBAAgB,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC;AAChD,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,aAAa,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,EAAE;AAClC,gBAAgB,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC;AACrD,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnG,gBAAgB,IAAI,MAAM,CAAC,aAAa,KAAK,KAAK,EAAE;AACpD,oBAAoBA,QAAM,CAAC,kBAAkB,CAAC,oCAAoC,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC5G,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACxD,YAAYA,QAAM,CAAC,kBAAkB,CAAC,gCAAgC,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAChG,SAAS;AACT,aAAa;AACb,YAAY,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACxD,YAAYA,QAAM,CAAC,kBAAkB,CAAC,gCAAgC,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAChG,SAAS;AACT,aAAa;AACb,YAAY,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;AAC1B,YAAYA,QAAM,CAAC,kBAAkB,CAAC,0BAA0B,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC1F,SAAS;AACT,QAAQ,IAAI,MAAM,CAAC,aAAa,EAAE;AAClC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC1B,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;AAChC,QAAQ,IAAI,MAAM,CAAC,GAAG,EAAE;AACxB,YAAY,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AAC1C,gBAAgBA,QAAM,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC3F,aAAa;AACb,YAAY,MAAM,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACpD,SAAS;AACT;AACA,QAAQ,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE;AAChC,YAAY,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;AAC7B,SAAS;AACT,aAAa,IAAI,MAAM,CAAC,GAAG,KAAK,GAAG,EAAE;AACrC,YAAYA,QAAM,CAAC,kBAAkB,CAAC,gCAAgC,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAChG,SAAS;AACT,KAAK;AACL,IAAI,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC;AACpC,IAAI,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAChE,IAAI,OAAO,MAAM,CAAC;AAClB;;AC5YO,SAAS,SAAS,CAAC,IAAI,EAAE;AAChC,IAAI,OAAO,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAClD;;;;;;;;;;;;;;ACLA,CAAA,CAAC,UAAU,MAAM,EAAE,OAAO,EAAE;AAE5B;AACA;AACA,GAAE,SAAS,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE;AAC7B,KAAI,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kBAAkB,CAAC,CAAC;IACtD;AACH;AACA;AACA;AACA,GAAE,SAAS,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;AACtC,KAAI,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAC5B,KAAI,IAAI,QAAQ,GAAG,YAAY,EAAE,CAAC;AAClC,KAAI,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;AAC7C,KAAI,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,EAAE,CAAC;AACpC,KAAI,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC;IACnC;AACH;AACA;AACA;GACE,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;AACrC,KAAI,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;OACnB,OAAO,MAAM,CAAC;MACf;AACL;AACA,KAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,KAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACpB;AACA;AACA,KAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AACpB;AACA,KAAI,IAAI,MAAM,KAAK,IAAI,EAAE;OACnB,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;SAClC,MAAM,GAAG,IAAI,CAAC;SACd,IAAI,GAAG,EAAE,CAAC;QACX;AACP;AACA,OAAM,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC;MACrD;IACF;AACH,GAAE,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAClC,KAAI,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;AACxB,IAAG,MAAM;AACT,KAAI,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB;AACH;AACA,GAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;AACb,GAAE,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB;GACE,IAAI,MAAM,CAAC;AACb,GAAE,IAAI;AACN,KAAI,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE;AAC/E,OAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B,MAAK,MAAM;AACX,OAAM,MAAM,GAAG,UAAiB,CAAC,MAAM,CAAC;MACnC;IACF,CAAC,OAAO,CAAC,EAAE;IACX;AACH;GACE,EAAE,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAChC,KAAI,IAAI,GAAG,YAAY,EAAE,EAAE;OACrB,OAAO,IAAI,CAAC;MACb;AACL;KACI,OAAO,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;AAClD,OAAM,GAAG,CAAC,WAAW,CAAC,QAAQ,KAAK,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC3E,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;AACtC,KAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC;KACrC,OAAO,KAAK,CAAC;AACjB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;AACtC,KAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC;KACrC,OAAO,KAAK,CAAC;AACjB,IAAG,CAAC;AACJ;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;AAC5D,KAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;OAC9B,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;MAC/C;AACL;AACA,KAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;OAC9B,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;MAC9C;AACL;AACA,KAAI,IAAI,IAAI,KAAK,KAAK,EAAE;OAClB,IAAI,GAAG,EAAE,CAAC;MACX;AACL,KAAI,MAAM,CAAC,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;AAC3D;AACA,KAAI,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACnD,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;OACrB,KAAK,EAAE,CAAC;AACd,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;MACnB;AACL;AACA,KAAI,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE;AAC/B,OAAM,IAAI,IAAI,KAAK,EAAE,EAAE;SACf,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC9C,QAAO,MAAM;SACL,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC7C,SAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AAC7B,WAAU,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;UAC/C;QACF;MACF;AACL,IAAG,CAAC;AACJ;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;AACzE,KAAI,IAAI,MAAM,GAAG,CAAC,EAAE;AACpB,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,OAAM,MAAM,GAAG,CAAC,MAAM,CAAC;MAClB;AACL,KAAI,IAAI,MAAM,GAAG,SAAS,EAAE;OACtB,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AACxC,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACtB,MAAK,MAAM,IAAI,MAAM,GAAG,gBAAgB,EAAE;OACpC,IAAI,CAAC,KAAK,GAAG;SACX,MAAM,GAAG,SAAS;AAC1B,SAAQ,CAAC,MAAM,GAAG,SAAS,IAAI,SAAS;AACxC,QAAO,CAAC;AACR,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACtB,MAAK,MAAM;AACX,OAAM,MAAM,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC;OAClC,IAAI,CAAC,KAAK,GAAG;SACX,MAAM,GAAG,SAAS;AAC1B,SAAQ,CAAC,MAAM,GAAG,SAAS,IAAI,SAAS;AACxC,SAAQ,CAAC;AACT,QAAO,CAAC;AACR,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;MACjB;AACL;AACA,KAAI,IAAI,MAAM,KAAK,IAAI,EAAE,OAAO;AAChC;AACA;AACA,KAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAClD,IAAG,CAAC;AACJ;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;AACvE;KACI,MAAM,CAAC,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;AAC9C,KAAI,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;AAC5B,OAAM,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;OAChB,OAAO,IAAI,CAAC;MACb;AACL;AACA,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAC3C,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxC,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OACpC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;MACnB;AACL;AACA,KAAI,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,KAAI,IAAI,MAAM,KAAK,IAAI,EAAE;OACnB,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;SACjD,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACrE,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC;AAChD,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,SAAS,CAAC;SACnD,GAAG,IAAI,EAAE,CAAC;AAClB,SAAQ,IAAI,GAAG,IAAI,EAAE,EAAE;WACb,GAAG,IAAI,EAAE,CAAC;WACV,CAAC,EAAE,CAAC;UACL;QACF;AACP,MAAK,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE;AAChC,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;SAC5C,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACrE,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC;AAChD,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,SAAS,CAAC;SACnD,GAAG,IAAI,EAAE,CAAC;AAClB,SAAQ,IAAI,GAAG,IAAI,EAAE,EAAE;WACb,GAAG,IAAI,EAAE,CAAC;WACV,CAAC,EAAE,CAAC;UACL;QACF;MACF;AACL,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;AACA,GAAE,SAAS,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE;KACrC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACrC;KACI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE;AAC5B,OAAM,OAAO,CAAC,GAAG,EAAE,CAAC;AACpB;MACK,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE;AACnC,OAAM,OAAO,CAAC,GAAG,EAAE,CAAC;AACpB;MACK,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE;AACpC,OAAM,OAAO,CAAC,GAAG,EAAE,CAAC;AACpB,MAAK,MAAM;OACL,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAAC,CAAC;MACjD;IACF;AACH;GACE,SAAS,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE;KAChD,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACzC,KAAI,IAAI,KAAK,GAAG,CAAC,IAAI,UAAU,EAAE;AACjC,OAAM,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;MAC5C;KACD,OAAO,CAAC,CAAC;IACV;AACH;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;AACtE;AACA,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC;KACrD,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxC,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OACpC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;MACnB;AACL;AACA;AACA,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd;KACI,IAAI,CAAC,CAAC;AACV,KAAI,IAAI,MAAM,KAAK,IAAI,EAAE;AACzB,OAAM,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE;AACtD,SAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC;SAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AACvC,SAAQ,IAAI,GAAG,IAAI,EAAE,EAAE;WACb,GAAG,IAAI,EAAE,CAAC;WACV,CAAC,IAAI,CAAC,CAAC;WACP,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACpC,UAAS,MAAM;WACL,GAAG,IAAI,CAAC,CAAC;UACV;QACF;AACP,MAAK,MAAM;OACL,IAAI,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;OACxC,KAAK,CAAC,GAAG,WAAW,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACrF,SAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC;SAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AACvC,SAAQ,IAAI,GAAG,IAAI,EAAE,EAAE;WACb,GAAG,IAAI,EAAE,CAAC;WACV,CAAC,IAAI,CAAC,CAAC;WACP,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACpC,UAAS,MAAM;WACL,GAAG,IAAI,CAAC,CAAC;UACV;QACF;MACF;AACL;AACA,KAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB,IAAG,CAAC;AACJ;GACE,SAAS,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;AAC5C,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,KAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACxC,KAAI,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;OAChC,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACrC;OACM,CAAC,IAAI,GAAG,CAAC;AACf;AACA;AACA,OAAM,IAAI,CAAC,IAAI,EAAE,EAAE;AACnB,SAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;AACzB;AACA;AACA,QAAO,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE;AAC1B,SAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;AACzB;AACA;AACA,QAAO,MAAM;SACL,CAAC,GAAG,CAAC,CAAC;QACP;AACP,OAAM,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,mBAAmB,CAAC,CAAC;OAC/C,CAAC,IAAI,CAAC,CAAC;MACR;KACD,OAAO,CAAC,CAAC;IACV;AACH;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AACtE;AACA,KAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,KAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACpB;AACA;AACA,KAAI,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,SAAS,EAAE,OAAO,IAAI,IAAI,EAAE;OACxE,OAAO,EAAE,CAAC;MACX;KACD,OAAO,EAAE,CAAC;KACV,OAAO,GAAG,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC;AACnC;KACI,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;AACtC,KAAI,IAAI,GAAG,GAAG,KAAK,GAAG,OAAO,CAAC;AAC9B,KAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;AACnD;AACA,KAAI,IAAI,IAAI,GAAG,CAAC,CAAC;AACjB,KAAI,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,OAAO,EAAE;AAC/C,OAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC;AACrD;AACA,OAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;OACpB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE;SACpC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC9B,QAAO,MAAM;AACb,SAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB;MACF;AACL;AACA,KAAI,IAAI,GAAG,KAAK,CAAC,EAAE;AACnB,OAAM,IAAI,GAAG,GAAG,CAAC,CAAC;AAClB,OAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACvD;OACM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;SACxB,GAAG,IAAI,IAAI,CAAC;QACb;AACP;AACA,OAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;OAChB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE;SACpC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC9B,QAAO,MAAM;AACb,SAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB;MACF;AACL;AACA,KAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;KACvC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxC,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;MAC/B;AACL,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC9B,KAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAClC,KAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACxB,IAAG,CAAC;AACJ;AACA,GAAE,SAAS,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;AAC5B,KAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AAC3B,KAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAC7B,KAAI,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AACjC,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACpB;AACH;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;AAC7C,KAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,IAAI;KACrC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AACzB,KAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACb,OAAO,CAAC,CAAC;AACb,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,IAAI,EAAE;AACjD,KAAI,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE;OACzB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;MAC/B;KACD,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,KAAK,IAAI;AAC1C,KAAI,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;AACjE,OAAM,IAAI,CAAC,MAAM,EAAE,CAAC;MACf;AACL,KAAI,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AAC5B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,IAAI;AACjD;AACA,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAClD,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;MACnB;KACD,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;AACA;AACA;AACA,GAAE,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,UAAU,EAAE;AACzE,KAAI,IAAI;AACR,OAAM,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,GAAG,OAAO,CAAC;MAClE,CAAC,OAAO,CAAC,EAAE;AAChB,OAAM,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;MAChC;AACL,IAAG,MAAM;AACT,KAAI,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;IAChC;AACH;GACE,SAAS,OAAO,IAAI;AACtB,KAAI,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,SAAS,GAAG,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IACnE;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,IAAI,KAAK,GAAG;AACd,KAAI,EAAE;AACN,KAAI,GAAG;AACP,KAAI,IAAI;AACR,KAAI,KAAK;AACT,KAAI,MAAM;AACV,KAAI,OAAO;AACX,KAAI,QAAQ;AACZ,KAAI,SAAS;AACb,KAAI,UAAU;AACd,KAAI,WAAW;AACf,KAAI,YAAY;AAChB,KAAI,aAAa;AACjB,KAAI,cAAc;AAClB,KAAI,eAAe;AACnB,KAAI,gBAAgB;AACpB,KAAI,iBAAiB;AACrB,KAAI,kBAAkB;AACtB,KAAI,mBAAmB;AACvB,KAAI,oBAAoB;AACxB,KAAI,qBAAqB;AACzB,KAAI,sBAAsB;AAC1B,KAAI,uBAAuB;AAC3B,KAAI,wBAAwB;AAC5B,KAAI,yBAAyB;AAC7B,KAAI,0BAA0B;AAC9B,KAAI,2BAA2B;AAC/B,IAAG,CAAC;AACJ;GACE,IAAI,UAAU,GAAG;KACf,CAAC,EAAE,CAAC;AACR,KAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AAC5B,KAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACvB,KAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACvB,KAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACvB,KAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACvB,IAAG,CAAC;AACJ;GACE,IAAI,UAAU,GAAG;KACf,CAAC,EAAE,CAAC;AACR,KAAI,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;AACxE,KAAI,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;AACvE,KAAI,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO;AACtE,KAAI,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;AACrE,KAAI,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;AACxE,IAAG,CAAC;AACJ;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;AAC5D,KAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AACtB,KAAI,OAAO,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B;KACI,IAAI,GAAG,CAAC;KACR,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE;OACjC,GAAG,GAAG,EAAE,CAAC;AACf,OAAM,IAAI,GAAG,GAAG,CAAC,CAAC;AAClB,OAAM,IAAI,KAAK,GAAG,CAAC,CAAC;AACpB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;SACpC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,SAAQ,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,IAAI,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;SAC1D,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,QAAQ,CAAC;SACtC,GAAG,IAAI,CAAC,CAAC;AACjB,SAAQ,IAAI,GAAG,IAAI,EAAE,EAAE;WACb,GAAG,IAAI,EAAE,CAAC;WACV,CAAC,EAAE,CAAC;UACL;AACT,SAAQ,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAClD,WAAU,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC;AACpD,UAAS,MAAM;AACf,WAAU,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;UAClB;QACF;AACP,OAAM,IAAI,KAAK,KAAK,CAAC,EAAE;SACf,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QAChC;OACD,OAAO,GAAG,CAAC,MAAM,GAAG,OAAO,KAAK,CAAC,EAAE;AACzC,SAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QACjB;AACP,OAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC/B,SAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QACjB;OACD,OAAO,GAAG,CAAC;MACZ;AACL;AACA,KAAI,IAAI,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,EAAE;AACxD;AACA,OAAM,IAAI,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AACvC;AACA,OAAM,IAAI,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;OACjC,GAAG,GAAG,EAAE,CAAC;AACf,OAAM,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAC3B,OAAM,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;AACrB,OAAM,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;AAC1B,SAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC1C,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC/B;AACA,SAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;AACzB,WAAU,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACtD,UAAS,MAAM;AACf,WAAU,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;UACf;QACF;AACP,OAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACzB,SAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QACjB;OACD,OAAO,GAAG,CAAC,MAAM,GAAG,OAAO,KAAK,CAAC,EAAE;AACzC,SAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QACjB;AACP,OAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC/B,SAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QACjB;OACD,OAAO,GAAG,CAAC;MACZ;AACL;AACA,KAAI,MAAM,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC;AACrD,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,IAAI;KAC3C,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;OACrB,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AACvC,MAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;AAC5D;AACA,OAAM,GAAG,IAAI,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;AAC5D,MAAK,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,OAAM,MAAM,CAAC,KAAK,EAAE,4CAA4C,CAAC,CAAC;MAC7D;AACL,KAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AAC9C,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;KACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAChC,IAAG,CAAC;AACJ;GACE,IAAI,MAAM,EAAE;AACd,KAAI,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;OACzD,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACtD,MAAK,CAAC;IACH;AACH;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;KACvD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACnD,IAAG,CAAC;AACJ;GACE,IAAI,QAAQ,GAAG,SAAS,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE;AACrD,KAAI,IAAI,SAAS,CAAC,WAAW,EAAE;AAC/B,OAAM,OAAO,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;MACpC;AACL,KAAI,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE;AAC9E,KAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB;AACA,KAAI,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACvC,KAAI,IAAI,SAAS,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;KAClD,MAAM,CAAC,UAAU,IAAI,SAAS,EAAE,uCAAuC,CAAC,CAAC;KACzE,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,6BAA6B,CAAC,CAAC;AACzD;KACI,IAAI,GAAG,GAAG,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;KACzC,IAAI,OAAO,GAAG,MAAM,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;KAC5C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;KAChD,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,cAAc,EAAE,GAAG,EAAE,UAAU,EAAE;AAC1E,KAAI,IAAI,QAAQ,GAAG,CAAC,CAAC;AACrB,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB;AACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrD,OAAM,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC;AAClD;OACM,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AACpC,OAAM,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;AACjC,SAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC;AACP,OAAM,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;AACjC,SAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC;QACvC;AACP;AACA,OAAM,IAAI,KAAK,KAAK,CAAC,EAAE;AACvB,SAAQ,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;AACnC,WAAU,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC;UACvC;SACD,KAAK,GAAG,CAAC,CAAC;SACV,KAAK,GAAG,CAAC,CAAC;AAClB,QAAO,MAAM;AACb,SAAQ,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;SACpB,KAAK,IAAI,CAAC,CAAC;QACZ;MACF;AACL;AACA,KAAI,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;AAC/B,OAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC;AAC9B;AACA,OAAM,OAAO,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;AACpC,SAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;QACrB;MACF;AACL,IAAG,CAAC;AACJ;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,cAAc,EAAE,GAAG,EAAE,UAAU,EAAE;KACtE,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AAClC,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB;AACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrD,OAAM,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC;AAClD;OACM,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AACpC,OAAM,IAAI,QAAQ,IAAI,CAAC,EAAE;AACzB,SAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;QACtC;AACP,OAAM,IAAI,QAAQ,IAAI,CAAC,EAAE;AACzB,SAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC;QACvC;AACP;AACA,OAAM,IAAI,KAAK,KAAK,CAAC,EAAE;AACvB,SAAQ,IAAI,QAAQ,IAAI,CAAC,EAAE;AAC3B,WAAU,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC;UACvC;SACD,KAAK,GAAG,CAAC,CAAC;SACV,KAAK,GAAG,CAAC,CAAC;AAClB,QAAO,MAAM;AACb,SAAQ,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;SACpB,KAAK,IAAI,CAAC,CAAC;QACZ;MACF;AACL;AACA,KAAI,IAAI,QAAQ,IAAI,CAAC,EAAE;AACvB,OAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC;AAC9B;AACA,OAAM,OAAO,QAAQ,IAAI,CAAC,EAAE;AAC5B,SAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;QACrB;MACF;AACL,IAAG,CAAC;AACJ;AACA,GAAE,IAAI,IAAI,CAAC,KAAK,EAAE;KACd,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,CAAC,EAAE;OAChD,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChC,MAAK,CAAC;AACN,IAAG,MAAM;KACL,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,CAAC,EAAE;AACtD,OAAM,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,OAAM,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,OAAM,IAAI,CAAC,IAAI,MAAM,EAAE;SACf,CAAC,IAAI,EAAE,CAAC;SACR,CAAC,MAAM,EAAE,CAAC;QACX;AACP,OAAM,IAAI,CAAC,IAAI,IAAI,EAAE;SACb,CAAC,IAAI,CAAC,CAAC;SACP,CAAC,MAAM,CAAC,CAAC;QACV;AACP,OAAM,IAAI,CAAC,IAAI,GAAG,EAAE;SACZ,CAAC,IAAI,CAAC,CAAC;SACP,CAAC,MAAM,CAAC,CAAC;QACV;AACP,OAAM,IAAI,CAAC,IAAI,IAAI,EAAE;SACb,CAAC,IAAI,CAAC,CAAC;SACP,CAAC,MAAM,CAAC,CAAC;QACV;AACP,OAAM,OAAO,CAAC,GAAG,CAAC,CAAC;AACnB,MAAK,CAAC;IACH;AACH;GACE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,CAAC,EAAE;AAClD;AACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;AAC3B;AACA,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,KAAI,IAAI,CAAC,CAAC,GAAG,MAAM,MAAM,CAAC,EAAE;OACtB,CAAC,IAAI,EAAE,CAAC;OACR,CAAC,MAAM,EAAE,CAAC;MACX;AACL,KAAI,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE;OACpB,CAAC,IAAI,CAAC,CAAC;OACP,CAAC,MAAM,CAAC,CAAC;MACV;AACL,KAAI,IAAI,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE;OACnB,CAAC,IAAI,CAAC,CAAC;OACP,CAAC,MAAM,CAAC,CAAC;MACV;AACL,KAAI,IAAI,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE;OACnB,CAAC,IAAI,CAAC,CAAC;OACP,CAAC,MAAM,CAAC,CAAC;MACV;AACL,KAAI,IAAI,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE;OACnB,CAAC,EAAE,CAAC;MACL;KACD,OAAO,CAAC,CAAC;AACb,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,IAAI;AACjD,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KAC5B,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;AACvC,IAAG,CAAC;AACJ;AACA,GAAE,SAAS,UAAU,EAAE,GAAG,EAAE;KACxB,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;AACvC;AACA,KAAI,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;OACvC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;AAC/B,OAAM,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;AAC1B;AACA,OAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC;MAC3C;AACL;KACI,OAAO,CAAC,CAAC;IACV;AACH;AACA;GACE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,IAAI;KAC3C,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;AAChC;AACA,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,OAAM,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;OACtC,CAAC,IAAI,CAAC,CAAC;AACb,OAAM,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM;MACrB;KACD,OAAO,CAAC,CAAC;AACb,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,IAAI;AACnD,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3C,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,KAAK,EAAE;AAChD,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC7B,OAAM,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;MACzC;AACL,KAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;AACxB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,KAAK,EAAE;KAChD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE;AAC/B,OAAM,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;MACzC;AACL,KAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;AACxB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,IAAI;AACzC,KAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;KACjC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;AAC/B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;AACvC,KAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AACxB,OAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;MACpB;AACL;KACI,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,OAAO,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;OAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;MAC/B;AACL;AACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OACnC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;MAC9C;AACL;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,KAAI,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC;AACjD,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;AACtC,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC3D,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACjC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC5D,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C;KACI,IAAI,CAAC,CAAC;KACN,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;OAC5B,CAAC,GAAG,GAAG,CAAC;AACd,MAAK,MAAM;OACL,CAAC,GAAG,IAAI,CAAC;MACV;AACL;AACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OACjC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;MAC9C;AACL;AACA,KAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC3B;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAI,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC;AACjD,KAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC5D,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KAC7D,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C;KACI,IAAI,CAAC,CAAC;KACN,IAAI,CAAC,CAAC;KACN,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;OAC5B,CAAC,GAAG,IAAI,CAAC;OACT,CAAC,GAAG,GAAG,CAAC;AACd,MAAK,MAAM;OACL,CAAC,GAAG,GAAG,CAAC;OACR,CAAC,GAAG,IAAI,CAAC;MACV;AACL;AACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OACjC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;MACzC;AACL;AACA,KAAI,IAAI,IAAI,KAAK,CAAC,EAAE;OACd,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChC,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B;MACF;AACL;AACA,KAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC3B;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAI,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC;AACjD,KAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC5D,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KAC7D,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE;KAC1C,MAAM,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;AACpD;AACA,KAAI,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AAChD,KAAI,IAAI,QAAQ,GAAG,KAAK,GAAG,EAAE,CAAC;AAC9B;AACA;AACA,KAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC9B;AACA,KAAI,IAAI,QAAQ,GAAG,CAAC,EAAE;OAChB,WAAW,EAAE,CAAC;MACf;AACL;AACA;AACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;AAC1C,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;MAC5C;AACL;AACA;AACA,KAAI,IAAI,QAAQ,GAAG,CAAC,EAAE;OAChB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;MACjE;AACL;AACA;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE;KACxC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrC,IAAG,CAAC;AACJ;AACA;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;KAC3C,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;AAChD;KACI,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;AAC7B,KAAI,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;AACxB;KACI,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAC1B;KACI,IAAI,GAAG,EAAE;AACb,OAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AACtD,MAAK,MAAM;AACX,OAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;MAClD;AACL;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,IAAI,CAAC,CAAC;AACV;AACA;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AACnD,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;OAClB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,OAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;AACzB,OAAM,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AAC9B;AACA;AACA,MAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC1D,OAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;OACjB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,OAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,OAAM,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;MACtB;AACL;AACA;AACA,KAAI,IAAI,CAAC,EAAE,CAAC,CAAC;KACT,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;OAC5B,CAAC,GAAG,IAAI,CAAC;OACT,CAAC,GAAG,GAAG,CAAC;AACd,MAAK,MAAM;OACL,CAAC,GAAG,GAAG,CAAC;OACR,CAAC,GAAG,IAAI,CAAC;MACV;AACL;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OACjC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;OAChD,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AACpC,OAAM,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;MAClB;AACL,KAAI,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,OAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;OAC7B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AACpC,OAAM,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;MAClB;AACL;AACA,KAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC3B,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;OACf,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;AACtC,OAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AACpB;AACA,MAAK,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;OACrB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChC,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B;MACF;AACL;KACI,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,IAAI,GAAG,CAAC;AACZ,KAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AACnD,OAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;OACjB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1B,OAAM,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;OAClB,OAAO,GAAG,CAAC;AACjB,MAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC1D,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;OAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1B,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;OAClB,OAAO,GAAG,CAAC;MACZ;AACL;AACA,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChE;KACI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C;AACA,KAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC5B,OAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;OACjB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,OAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,OAAM,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;AAC3B;AACA;AACA,MAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AACpC,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,OAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrB,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,OAAM,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;MACzB;AACL;AACA;KACI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B;AACA;AACA,KAAI,IAAI,GAAG,KAAK,CAAC,EAAE;AACnB,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;OAChB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;OAClB,OAAO,IAAI,CAAC;MACb;AACL;AACA;AACA,KAAI,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,KAAI,IAAI,GAAG,GAAG,CAAC,EAAE;OACX,CAAC,GAAG,IAAI,CAAC;OACT,CAAC,GAAG,GAAG,CAAC;AACd,MAAK,MAAM;OACL,CAAC,GAAG,GAAG,CAAC;OACR,CAAC,GAAG,IAAI,CAAC;MACV;AACL;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OACjC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AACtD,OAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;OAChB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;MAC/B;AACL,KAAI,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,OAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;AACnC,OAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;OAChB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;MAC/B;AACL;AACA;AACA,KAAI,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;OAC7C,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChC,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B;MACF;AACL;AACA,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC3C;AACA,KAAI,IAAI,CAAC,KAAK,IAAI,EAAE;AACpB,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;MACnB;AACL;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,IAAG,CAAC;AACJ;GACE,SAAS,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;KACnC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAChD,KAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AAC7C,KAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;KACjB,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AACxB;AACA;KACI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KAC1B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B,KAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAClB;AACA,KAAI,IAAI,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;KACvB,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;KAChC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACtB;AACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAClC;AACA;AACA,OAAM,IAAI,MAAM,GAAG,KAAK,KAAK,EAAE,CAAC;AAChC,OAAM,IAAI,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;AACpC,OAAM,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;OACvC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE;SAC7D,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SACtB,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B,SAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SAClB,MAAM,IAAI,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;AACtC,SAAQ,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC;QACvB;OACD,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AAC/B,OAAM,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;MACpB;AACL,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;OACf,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AAC/B,MAAK,MAAM;AACX,OAAM,GAAG,CAAC,MAAM,EAAE,CAAC;MACd;AACL;AACA,KAAI,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC;IACrB;AACH;AACA;AACA;AACA;GACE,IAAI,WAAW,GAAG,SAAS,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AAC1D,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AACvB,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;AACtB,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;AACtB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;KACV,IAAI,EAAE,CAAC;KACP,IAAI,GAAG,CAAC;KACR,IAAI,EAAE,CAAC;KACP,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;KACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,KAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB;KACI,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AAChD,KAAI,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,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EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE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AAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACtD,CAAC,CAAC;AACF;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/index.umd.js b/node_modules/@walletconnect/utils/dist/index.umd.js +index 68c2786..f52907d 100644 +--- a/node_modules/@walletconnect/utils/dist/index.umd.js ++++ b/node_modules/@walletconnect/utils/dist/index.umd.js +@@ -1,31 +1,31 @@ +-(function(B,Pe){typeof exports=="object"&&typeof module<"u"?Pe(exports):typeof define=="function"&&define.amd?define(["exports"],Pe):(B=typeof globalThis<"u"?globalThis:B||self,Pe(B["@walletconnect/utils"]={}))})(this,function(B){"use strict";const Pe=":";function ef(t){const[e,r]=t.split(Pe);return{namespace:e,reference:r}}function rf(t){const{namespace:e,reference:r}=t;return[e,r].join(Pe)}function Mn(t){const[e,r,n]=t.split(Pe);return{namespace:e,reference:r,address:n}}function nf(t){const{namespace:e,reference:r,address:n}=t;return[e,r,n].join(Pe)}function xn(t,e){const r=[];return t.forEach(n=>{const i=e(n);r.includes(i)||r.push(i)}),r}function ff(t){const{address:e}=Mn(t);return e}function af(t){const{namespace:e,reference:r}=Mn(t);return rf({namespace:e,reference:r})}function _s(t,e){const{namespace:r,reference:n}=ef(e);return nf({namespace:r,reference:n,address:t})}function Ds(t){return xn(t,ff)}function of(t){return xn(t,af)}function Ss(t,e=[]){const r=[];return Object.keys(t).forEach(n=>{if(e.length&&!e.includes(n))return;const i=t[n];r.push(...i.accounts)}),r}function Ms(t,e=[]){const r=[];return Object.keys(t).forEach(n=>{if(e.length&&!e.includes(n))return;const i=t[n];r.push(...of(i.accounts))}),r}function xs(t,e=[]){const r=[];return Object.keys(t).forEach(n=>{if(e.length&&!e.includes(n))return;const i=t[n];r.push(...Gr(n,i))}),r}function Gr(t,e){return t.includes(":")?[t]:e.chains||[]}var sf=function(t,e,r){if(r||arguments.length===2)for(var n=0,i=e.length,f;n"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"?new Bs:typeof navigator<"u"?cf(navigator.userAgent):Hs()}function Ps(t){return t!==""&&Us.reduce(function(e,r){var n=r[0],i=r[1];if(e)return e;var f=i.exec(t);return!!f&&[n,f]},!1)}function cf(t){var e=Ps(t);if(!e)return null;var r=e[0],n=e[1];if(r==="searchbot")return new Is;var i=n[1]&&n[1].split(".").join("_").split("_").slice(0,3);i?i.length{const i=t(n);r.includes(i)||r.push(i)}),r}function ff(e){const{address:t}=Mn(e);return t}function af(e){const{namespace:t,reference:r}=Mn(e);return rf({namespace:t,reference:r})}function Ds(e,t){const{namespace:r,reference:n}=tf(t);return nf({namespace:r,reference:n,address:e})}function Ss(e){return xn(e,ff)}function of(e){return xn(e,af)}function Ms(e,t=[]){const r=[];return Object.keys(e).forEach(n=>{if(t.length&&!t.includes(n))return;const i=e[n];r.push(...i.accounts)}),r}function xs(e,t=[]){const r=[];return Object.keys(e).forEach(n=>{if(t.length&&!t.includes(n))return;const i=e[n];r.push(...of(i.accounts))}),r}function Ns(e,t=[]){const r=[];return Object.keys(e).forEach(n=>{if(t.length&&!t.includes(n))return;const i=e[n];r.push(...Gr(n,i))}),r}function Gr(e,t){return e.includes(":")?[e]:t.chains||[]}var sf=function(e,t,r){if(r||arguments.length===2)for(var n=0,i=t.length,f;n"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"?new Rs:typeof navigator<"u"?cf(navigator.userAgent):ks()}function Ls(e){return e!==""&&Ts.reduce(function(t,r){var n=r[0],i=r[1];if(t)return t;var f=i.exec(e);return!!f&&[n,f]},!1)}function cf(e){var t=Ls(e);if(!t)return null;var r=t[0],n=t[1];if(r==="searchbot")return new Bs;var i=n[1]&&n[1].split(".").join("_").split("_").slice(0,3);i?i.length=0;c--)(h=t[c])&&(f=(i<3?h(f):i>3?h(e,r,f):h(e,r))||f);return i>3&&f&&Object.defineProperty(e,r,f),f}function zs(t,e){return function(r,n){e(r,n,t)}}function Vs(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)}function Ys(t,e,r,n){function i(f){return f instanceof r?f:new r(function(h){h(f)})}return new(r||(r=Promise))(function(f,h){function c(g){try{v(n.next(g))}catch(m){h(m)}}function d(g){try{v(n.throw(g))}catch(m){h(m)}}function v(g){g.done?f(g.value):i(g.value).then(c,d)}v((n=n.apply(t,e||[])).next())})}function Gs(t,e){var r={label:0,sent:function(){if(f[0]&1)throw f[1];return f[1]},trys:[],ops:[]},n,i,f,h;return h={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(h[Symbol.iterator]=function(){return this}),h;function c(v){return function(g){return d([v,g])}}function d(v){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(f=v[0]&2?i.return:v[0]?i.throw||((f=i.return)&&f.call(i),0):i.next)&&!(f=f.call(i,v[1])).done)return f;switch(i=0,f&&(v=[v[0]&2,f.value]),v[0]){case 0:case 1:f=v;break;case 4:return r.label++,{value:v[1],done:!1};case 5:r.label++,i=v[1],v=[0];continue;case 7:v=r.ops.pop(),r.trys.pop();continue;default:if(f=r.trys,!(f=f.length>0&&f[f.length-1])&&(v[0]===6||v[0]===2)){r=0;continue}if(v[0]===3&&(!f||v[1]>f[0]&&v[1]=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function vf(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),i,f=[],h;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)f.push(i.value)}catch(c){h={error:c}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(h)throw h.error}}return f}function Js(){for(var t=[],e=0;e1||c(D,S)})})}function c(D,S){try{d(n[D](S))}catch(O){m(f[0][3],O)}}function d(D){D.value instanceof Cr?Promise.resolve(D.value.v).then(v,g):m(f[0][2],D)}function v(D){c("next",D)}function g(D){c("throw",D)}function m(D,S){D(S),f.shift(),f.length&&c(f[0][0],f[0][1])}}function Zs(t){var e,r;return e={},n("next"),n("throw",function(i){throw i}),n("return"),e[Symbol.iterator]=function(){return this},e;function n(i,f){e[i]=t[i]?function(h){return(r=!r)?{value:Cr(t[i](h)),done:i==="return"}:f?f(h):h}:f}}function t0(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof On=="function"?On(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(f){r[f]=t[f]&&function(h){return new Promise(function(c,d){h=t[f](h),i(c,d,h.done,h.value)})}}function i(f,h,c,d){Promise.resolve(d).then(function(v){f({value:v,done:c})},h)}}function e0(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function r0(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}function n0(t){return t&&t.__esModule?t:{default:t}}function i0(t,e){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return e.get(t)}function f0(t,e,r){if(!e.has(t))throw new TypeError("attempted to set private field on non-instance");return e.set(t,r),r}var a0=Object.freeze({__proto__:null,__extends:js,get __assign(){return Cn},__rest:qs,__decorate:Ks,__param:zs,__metadata:Vs,__awaiter:Ys,__generator:Gs,__createBinding:Ws,__exportStar:Qs,__values:On,__read:vf,__spread:Js,__spreadArrays:$s,__await:Cr,__asyncGenerator:Xs,__asyncDelegator:Zs,__asyncValues:t0,__makeTemplateObject:e0,__importStar:r0,__importDefault:n0,__classPrivateFieldGet:i0,__classPrivateFieldSet:f0}),Wr=df(a0),In={},Or={},pf;function o0(){if(pf)return Or;pf=1,Object.defineProperty(Or,"__esModule",{value:!0}),Or.delay=void 0;function t(e){return new Promise(r=>{setTimeout(()=>{r(!0)},e)})}return Or.delay=t,Or}var $e={},Bn={},Xe={},gf;function s0(){return gf||(gf=1,Object.defineProperty(Xe,"__esModule",{value:!0}),Xe.ONE_THOUSAND=Xe.ONE_HUNDRED=void 0,Xe.ONE_HUNDRED=100,Xe.ONE_THOUSAND=1e3),Xe}var Rn={},bf;function u0(){return bf||(bf=1,function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.ONE_YEAR=t.FOUR_WEEKS=t.THREE_WEEKS=t.TWO_WEEKS=t.ONE_WEEK=t.THIRTY_DAYS=t.SEVEN_DAYS=t.FIVE_DAYS=t.THREE_DAYS=t.ONE_DAY=t.TWENTY_FOUR_HOURS=t.TWELVE_HOURS=t.SIX_HOURS=t.THREE_HOURS=t.ONE_HOUR=t.SIXTY_MINUTES=t.THIRTY_MINUTES=t.TEN_MINUTES=t.FIVE_MINUTES=t.ONE_MINUTE=t.SIXTY_SECONDS=t.THIRTY_SECONDS=t.TEN_SECONDS=t.FIVE_SECONDS=t.ONE_SECOND=void 0,t.ONE_SECOND=1,t.FIVE_SECONDS=5,t.TEN_SECONDS=10,t.THIRTY_SECONDS=30,t.SIXTY_SECONDS=60,t.ONE_MINUTE=t.SIXTY_SECONDS,t.FIVE_MINUTES=t.ONE_MINUTE*5,t.TEN_MINUTES=t.ONE_MINUTE*10,t.THIRTY_MINUTES=t.ONE_MINUTE*30,t.SIXTY_MINUTES=t.ONE_MINUTE*60,t.ONE_HOUR=t.SIXTY_MINUTES,t.THREE_HOURS=t.ONE_HOUR*3,t.SIX_HOURS=t.ONE_HOUR*6,t.TWELVE_HOURS=t.ONE_HOUR*12,t.TWENTY_FOUR_HOURS=t.ONE_HOUR*24,t.ONE_DAY=t.TWENTY_FOUR_HOURS,t.THREE_DAYS=t.ONE_DAY*3,t.FIVE_DAYS=t.ONE_DAY*5,t.SEVEN_DAYS=t.ONE_DAY*7,t.THIRTY_DAYS=t.ONE_DAY*30,t.ONE_WEEK=t.SEVEN_DAYS,t.TWO_WEEKS=t.ONE_WEEK*2,t.THREE_WEEKS=t.ONE_WEEK*3,t.FOUR_WEEKS=t.ONE_WEEK*4,t.ONE_YEAR=t.ONE_DAY*365}(Rn)),Rn}var mf;function wf(){return mf||(mf=1,function(t){Object.defineProperty(t,"__esModule",{value:!0});const e=Wr;e.__exportStar(s0(),t),e.__exportStar(u0(),t)}(Bn)),Bn}var Af;function h0(){if(Af)return $e;Af=1,Object.defineProperty($e,"__esModule",{value:!0}),$e.fromMiliseconds=$e.toMiliseconds=void 0;const t=wf();function e(n){return n*t.ONE_THOUSAND}$e.toMiliseconds=e;function r(n){return Math.floor(n/t.ONE_THOUSAND)}return $e.fromMiliseconds=r,$e}var yf;function c0(){return yf||(yf=1,function(t){Object.defineProperty(t,"__esModule",{value:!0});const e=Wr;e.__exportStar(o0(),t),e.__exportStar(h0(),t)}(In)),In}var vr={},Ef;function l0(){if(Ef)return vr;Ef=1,Object.defineProperty(vr,"__esModule",{value:!0}),vr.Watch=void 0;class t{constructor(){this.timestamps=new Map}start(r){if(this.timestamps.has(r))throw new Error(`Watch already started for label: ${r}`);this.timestamps.set(r,{started:Date.now()})}stop(r){const n=this.get(r);if(typeof n.elapsed<"u")throw new Error(`Watch already stopped for label: ${r}`);const i=Date.now()-n.started;this.timestamps.set(r,{started:n.started,elapsed:i})}get(r){const n=this.timestamps.get(r);if(typeof n>"u")throw new Error(`No timestamp found for label: ${r}`);return n}elapsed(r){const n=this.get(r);return n.elapsed||Date.now()-n.started}}return vr.Watch=t,vr.default=t,vr}var Fn={},Ir={},_f;function d0(){if(_f)return Ir;_f=1,Object.defineProperty(Ir,"__esModule",{value:!0}),Ir.IWatch=void 0;class t{}return Ir.IWatch=t,Ir}var Df;function v0(){return Df||(Df=1,function(t){Object.defineProperty(t,"__esModule",{value:!0}),Wr.__exportStar(d0(),t)}(Fn)),Fn}(function(t){Object.defineProperty(t,"__esModule",{value:!0});const e=Wr;e.__exportStar(c0(),t),e.__exportStar(l0(),t),e.__exportStar(v0(),t),e.__exportStar(wf(),t)})(Je);var bt={};Object.defineProperty(bt,"__esModule",{value:!0}),bt.getLocalStorage=bt.getLocalStorageOrThrow=bt.getCrypto=bt.getCryptoOrThrow=Pn=bt.getLocation=bt.getLocationOrThrow=Tn=bt.getNavigator=bt.getNavigatorOrThrow=Un=bt.getDocument=bt.getDocumentOrThrow=bt.getFromWindowOrThrow=bt.getFromWindow=void 0;function Ze(t){let e;return typeof window<"u"&&typeof window[t]<"u"&&(e=window[t]),e}bt.getFromWindow=Ze;function pr(t){const e=Ze(t);if(!e)throw new Error(`${t} is not defined in Window`);return e}bt.getFromWindowOrThrow=pr;function p0(){return pr("document")}bt.getDocumentOrThrow=p0;function g0(){return Ze("document")}var Un=bt.getDocument=g0;function b0(){return pr("navigator")}bt.getNavigatorOrThrow=b0;function m0(){return Ze("navigator")}var Tn=bt.getNavigator=m0;function w0(){return pr("location")}bt.getLocationOrThrow=w0;function A0(){return Ze("location")}var Pn=bt.getLocation=A0;function y0(){return pr("crypto")}bt.getCryptoOrThrow=y0;function E0(){return Ze("crypto")}bt.getCrypto=E0;function _0(){return pr("localStorage")}bt.getLocalStorageOrThrow=_0;function D0(){return Ze("localStorage")}bt.getLocalStorage=D0;var Ln={};Object.defineProperty(Ln,"__esModule",{value:!0});var Sf=Ln.getWindowMetadata=void 0;const Mf=bt;function S0(){let t,e;try{t=Mf.getDocumentOrThrow(),e=Mf.getLocationOrThrow()}catch{return null}function r(){const m=t.getElementsByTagName("link"),D=[];for(let S=0;S-1){const P=O.getAttribute("href");if(P)if(P.toLowerCase().indexOf("https:")===-1&&P.toLowerCase().indexOf("http:")===-1&&P.indexOf("//")!==0){let j=e.protocol+"//"+e.host;if(P.indexOf("/")===0)j+=P;else{const I=e.pathname.split("/");I.pop();const U=I.join("/");j+=U+"/"+P}D.push(j)}else if(P.indexOf("//")===0){const j=e.protocol+P;D.push(j)}else D.push(P)}}return D}function n(...m){const D=t.getElementsByTagName("meta");for(let S=0;SO.getAttribute(P)).filter(P=>P?m.includes(P):!1);if(T.length&&T){const P=O.getAttribute("content");if(P)return P}}return""}function i(){let m=n("name","og:site_name","og:title","twitter:title");return m||(m=t.title),m}function f(){return n("description","og:description","twitter:description","keywords")}const h=i(),c=f(),d=e.origin,v=r();return{description:c,url:d,icons:v,name:h}}Sf=Ln.getWindowMetadata=S0;var Br={},M0=t=>encodeURIComponent(t).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`),xf="%[a-f0-9]{2}",Nf=new RegExp("("+xf+")|([^%]+?)","gi"),Cf=new RegExp("("+xf+")+","gi");function Hn(t,e){try{return[decodeURIComponent(t.join(""))]}catch{}if(t.length===1)return t;e=e||1;var r=t.slice(0,e),n=t.slice(e);return Array.prototype.concat.call([],Hn(r),Hn(n))}function x0(t){try{return decodeURIComponent(t)}catch{for(var e=t.match(Nf)||[],r=1;r{if(!(typeof t=="string"&&typeof e=="string"))throw new TypeError("Expected the arguments to be of type `string`");if(e==="")return[t];const r=t.indexOf(e);return r===-1?[t]:[t.slice(0,r),t.slice(r+e.length)]},I0=function(t,e){for(var r={},n=Object.keys(t),i=Array.isArray(e),f=0;fI==null,h=Symbol("encodeFragmentIdentifier");function c(I){switch(I.arrayFormat){case"index":return U=>(M,x)=>{const N=M.length;return x===void 0||I.skipNull&&x===null||I.skipEmptyString&&x===""?M:x===null?[...M,[g(U,I),"[",N,"]"].join("")]:[...M,[g(U,I),"[",g(N,I),"]=",g(x,I)].join("")]};case"bracket":return U=>(M,x)=>x===void 0||I.skipNull&&x===null||I.skipEmptyString&&x===""?M:x===null?[...M,[g(U,I),"[]"].join("")]:[...M,[g(U,I),"[]=",g(x,I)].join("")];case"colon-list-separator":return U=>(M,x)=>x===void 0||I.skipNull&&x===null||I.skipEmptyString&&x===""?M:x===null?[...M,[g(U,I),":list="].join("")]:[...M,[g(U,I),":list=",g(x,I)].join("")];case"comma":case"separator":case"bracket-separator":{const U=I.arrayFormat==="bracket-separator"?"[]=":"=";return M=>(x,N)=>N===void 0||I.skipNull&&N===null||I.skipEmptyString&&N===""?x:(N=N===null?"":N,x.length===0?[[g(M,I),U,g(N,I)].join("")]:[[x,g(N,I)].join(I.arrayFormatSeparator)])}default:return U=>(M,x)=>x===void 0||I.skipNull&&x===null||I.skipEmptyString&&x===""?M:x===null?[...M,g(U,I)]:[...M,[g(U,I),"=",g(x,I)].join("")]}}function d(I){let U;switch(I.arrayFormat){case"index":return(M,x,N)=>{if(U=/\[(\d*)\]$/.exec(M),M=M.replace(/\[\d*\]$/,""),!U){N[M]=x;return}N[M]===void 0&&(N[M]={}),N[M][U[1]]=x};case"bracket":return(M,x,N)=>{if(U=/(\[\])$/.exec(M),M=M.replace(/\[\]$/,""),!U){N[M]=x;return}if(N[M]===void 0){N[M]=[x];return}N[M]=[].concat(N[M],x)};case"colon-list-separator":return(M,x,N)=>{if(U=/(:list)$/.exec(M),M=M.replace(/:list$/,""),!U){N[M]=x;return}if(N[M]===void 0){N[M]=[x];return}N[M]=[].concat(N[M],x)};case"comma":case"separator":return(M,x,N)=>{const s=typeof x=="string"&&x.includes(I.arrayFormatSeparator),_=typeof x=="string"&&!s&&m(x,I).includes(I.arrayFormatSeparator);x=_?m(x,I):x;const q=s||_?x.split(I.arrayFormatSeparator).map(G=>m(G,I)):x===null?x:m(x,I);N[M]=q};case"bracket-separator":return(M,x,N)=>{const s=/(\[\])$/.test(M);if(M=M.replace(/\[\]$/,""),!s){N[M]=x&&m(x,I);return}const _=x===null?[]:x.split(I.arrayFormatSeparator).map(q=>m(q,I));if(N[M]===void 0){N[M]=_;return}N[M]=[].concat(N[M],_)};default:return(M,x,N)=>{if(N[M]===void 0){N[M]=x;return}N[M]=[].concat(N[M],x)}}}function v(I){if(typeof I!="string"||I.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function g(I,U){return U.encode?U.strict?e(I):encodeURIComponent(I):I}function m(I,U){return U.decode?r(I):I}function D(I){return Array.isArray(I)?I.sort():typeof I=="object"?D(Object.keys(I)).sort((U,M)=>Number(U)-Number(M)).map(U=>I[U]):I}function S(I){const U=I.indexOf("#");return U!==-1&&(I=I.slice(0,U)),I}function O(I){let U="";const M=I.indexOf("#");return M!==-1&&(U=I.slice(M)),U}function T(I){I=S(I);const U=I.indexOf("?");return U===-1?"":I.slice(U+1)}function P(I,U){return U.parseNumbers&&!Number.isNaN(Number(I))&&typeof I=="string"&&I.trim()!==""?I=Number(I):U.parseBooleans&&I!==null&&(I.toLowerCase()==="true"||I.toLowerCase()==="false")&&(I=I.toLowerCase()==="true"),I}function j(I,U){U=Object.assign({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},U),v(U.arrayFormatSeparator);const M=d(U),x=Object.create(null);if(typeof I!="string"||(I=I.trim().replace(/^[?#&]/,""),!I))return x;for(const N of I.split("&")){if(N==="")continue;let[s,_]=n(U.decode?N.replace(/\+/g," "):N,"=");_=_===void 0?null:["comma","separator","bracket-separator"].includes(U.arrayFormat)?_:m(_,U),M(m(s,U),_,x)}for(const N of Object.keys(x)){const s=x[N];if(typeof s=="object"&&s!==null)for(const _ of Object.keys(s))s[_]=P(s[_],U);else x[N]=P(s,U)}return U.sort===!1?x:(U.sort===!0?Object.keys(x).sort():Object.keys(x).sort(U.sort)).reduce((N,s)=>{const _=x[s];return _&&typeof _=="object"&&!Array.isArray(_)?N[s]=D(_):N[s]=_,N},Object.create(null))}t.extract=T,t.parse=j,t.stringify=(I,U)=>{if(!I)return"";U=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},U),v(U.arrayFormatSeparator);const M=_=>U.skipNull&&f(I[_])||U.skipEmptyString&&I[_]==="",x=c(U),N={};for(const _ of Object.keys(I))M(_)||(N[_]=I[_]);const s=Object.keys(N);return U.sort!==!1&&s.sort(U.sort),s.map(_=>{const q=I[_];return q===void 0?"":q===null?g(_,U):Array.isArray(q)?q.length===0&&U.arrayFormat==="bracket-separator"?g(_,U)+"[]":q.reduce(x(_),[]).join("&"):g(_,U)+"="+g(q,U)}).filter(_=>_.length>0).join("&")},t.parseUrl=(I,U)=>{U=Object.assign({decode:!0},U);const[M,x]=n(I,"#");return Object.assign({url:M.split("?")[0]||"",query:j(T(I),U)},U&&U.parseFragmentIdentifier&&x?{fragmentIdentifier:m(x,U)}:{})},t.stringifyUrl=(I,U)=>{U=Object.assign({encode:!0,strict:!0,[h]:!0},U);const M=S(I.url).split("?")[0]||"",x=t.extract(I.url),N=t.parse(x,{sort:!1}),s=Object.assign(N,I.query);let _=t.stringify(s,U);_&&(_=`?${_}`);let q=O(I.url);return I.fragmentIdentifier&&(q=`#${U[h]?g(I.fragmentIdentifier,U):I.fragmentIdentifier}`),`${M}${_}${q}`},t.pick=(I,U,M)=>{M=Object.assign({parseFragmentIdentifier:!0,[h]:!1},M);const{url:x,query:N,fragmentIdentifier:s}=t.parseUrl(I,M);return t.stringifyUrl({url:x,query:i(N,U),fragmentIdentifier:s},M)},t.exclude=(I,U,M)=>{const x=Array.isArray(U)?N=>!U.includes(N):(N,s)=>!U(N,s);return t.pick(I,x,M)}})(Br);var B0=Object.defineProperty,Of=Object.getOwnPropertySymbols,R0=Object.prototype.hasOwnProperty,F0=Object.prototype.propertyIsEnumerable,If=(t,e,r)=>e in t?B0(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Bf=(t,e)=>{for(var r in e||(e={}))R0.call(e,r)&&If(t,r,e[r]);if(Of)for(var r of Of(e))F0.call(e,r)&&If(t,r,e[r]);return t};const Rf="ReactNative",$t={reactNative:"react-native",node:"node",browser:"browser",unknown:"unknown"},Qr=" ",U0=":",Ff="/",kn=2,T0=1e3,Uf="js";function jn(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}function gr(){return!Un()&&!!Tn()&&navigator.product===Rf}function Rr(){return!jn()&&!!Tn()&&!!Un()}function tr(){return gr()?$t.reactNative:jn()?$t.node:Rr()?$t.browser:$t.unknown}function P0(){var t;try{return gr()&&typeof global<"u"&&typeof(global==null?void 0:global.Application)<"u"?(t=global.Application)==null?void 0:t.applicationId:void 0}catch{return}}function Tf(t,e){let r=Br.parse(t);return r=Bf(Bf({},r),e),t=Br.stringify(r),t}function L0(){return Sf()||{name:"",description:"",url:"",icons:[""]}}function H0(t,e){var r;const n=tr(),i={protocol:t,version:e,env:n};return n==="browser"&&(i.host=((r=Pn())==null?void 0:r.host)||"unknown"),i}function Pf(){if(tr()===$t.reactNative&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"){const{OS:r,Version:n}=global.Platform;return[r,n].join("-")}const t=Ts();if(t===null)return"unknown";const e=t.os?t.os.replace(" ","").toLowerCase():"unknown";return t.type==="browser"?[e,t.name,t.version].join("-"):[e,t.version].join("-")}function Lf(){var t;const e=tr();return e===$t.browser?[e,((t=Pn())==null?void 0:t.host)||"unknown"].join(":"):e}function Hf(t,e,r){const n=Pf(),i=Lf();return[[t,e].join("-"),[Uf,r].join("-"),n,i].join("/")}function k0({protocol:t,version:e,relayUrl:r,sdkVersion:n,auth:i,projectId:f,useOnCloseEvent:h,bundleId:c}){const d=r.split("?"),v=Hf(t,e,n),g={auth:i,ua:v,projectId:f,useOnCloseEvent:h||void 0,origin:c||void 0},m=Tf(d[1]||"",g);return d[0]+"?"+m}function j0(t){let e=(t.match(/^[^:]+(?=:\/\/)/gi)||[])[0];const r=typeof e<"u"?t.split("://")[1]:t;return e=e==="wss"?"https":"http",[e,r].join("://")}function q0(t,e,r){if(!t[e]||typeof t[e]!==r)throw new Error(`Missing or invalid "${e}" param`)}function kf(t,e=kn){return jf(t.split(Ff),e)}function K0(t){return kf(t).join(Qr)}function Le(t,e){return t.filter(r=>e.includes(r)).length===t.length}function jf(t,e=kn){return t.slice(Math.max(t.length-e,0))}function z0(t){return Object.fromEntries(t.entries())}function V0(t){return new Map(Object.entries(t))}function Y0(t,e){const r={};return Object.keys(t).forEach(n=>{r[n]=e(t[n])}),r}const G0=t=>t;function qf(t){return t.trim().replace(/^\w/,e=>e.toUpperCase())}function W0(t){return t.split(Qr).map(e=>qf(e)).join(Qr)}function Q0(t=Je.FIVE_MINUTES,e){const r=Je.toMiliseconds(t||Je.FIVE_MINUTES);let n,i,f;return{resolve:h=>{f&&n&&(clearTimeout(f),n(h))},reject:h=>{f&&i&&(clearTimeout(f),i(h))},done:()=>new Promise((h,c)=>{f=setTimeout(()=>{c(new Error(e))},r),n=h,i=c})}}function J0(t,e,r){return new Promise(async(n,i)=>{const f=setTimeout(()=>i(new Error(r)),e);try{const h=await t;n(h)}catch(h){i(h)}clearTimeout(f)})}function qn(t,e){if(typeof e=="string"&&e.startsWith(`${t}:`))return e;if(t.toLowerCase()==="topic"){if(typeof e!="string")throw new Error('Value must be "string" for expirer target type: topic');return`topic:${e}`}else if(t.toLowerCase()==="id"){if(typeof e!="number")throw new Error('Value must be "number" for expirer target type: id');return`id:${e}`}throw new Error(`Unknown expirer target type: ${t}`)}function $0(t){return qn("topic",t)}function X0(t){return qn("id",t)}function Z0(t){const[e,r]=t.split(":"),n={id:void 0,topic:void 0};if(e==="topic"&&typeof r=="string")n.topic=r;else if(e==="id"&&Number.isInteger(Number(r)))n.id=Number(r);else throw new Error(`Invalid target, expected id:number or topic:string, got ${e}:${r}`);return n}function tu(t,e){return Je.fromMiliseconds((e||Date.now())+Je.toMiliseconds(t))}function eu(t){return Date.now()>=Je.toMiliseconds(t)}function ru(t,e){return`${t}${e?`:${e}`:""}`}function Ie(t=[],e=[]){return[...new Set([...t,...e])]}async function nu({id:t,topic:e,wcDeepLink:r}){try{if(!r)return;const n=typeof r=="string"?JSON.parse(r):r;let i=n?.href;if(typeof i!="string")return;i.endsWith("/")&&(i=i.slice(0,-1));const f=`${i}/wc?requestId=${t}&sessionTopic=${e}`,h=tr();h===$t.browser?f.startsWith("https://")||f.startsWith("http://")?window.open(f,"_blank","noreferrer noopener"):window.open(f,"_self","noreferrer noopener"):h===$t.reactNative&&typeof(global==null?void 0:global.Linking)<"u"&&await global.Linking.openURL(f)}catch(n){console.error(n)}}async function iu(t,e){try{return await t.getItem(e)||(Rr()?localStorage.getItem(e):void 0)}catch(r){console.error(r)}}function Kn(t,e){return t.filter(r=>e.includes(r))}var Kf={exports:{}};/** ++ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH ++ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY ++ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, ++ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM ++ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR ++ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR ++ PERFORMANCE OF THIS SOFTWARE. ++ ***************************************************************************** */var Nn=function(e,t){return Nn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,n){r.__proto__=n}||function(r,n){for(var i in n)n.hasOwnProperty(i)&&(r[i]=n[i])},Nn(e,t)};function qs(e,t){Nn(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}var Cn=function(){return Cn=Object.assign||function(t){for(var r,n=1,i=arguments.length;n=0;c--)(h=e[c])&&(f=(i<3?h(f):i>3?h(t,r,f):h(t,r))||f);return i>3&&f&&Object.defineProperty(t,r,f),f}function Vs(e,t){return function(r,n){t(r,n,e)}}function Ys(e,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(e,t)}function Gs(e,t,r,n){function i(f){return f instanceof r?f:new r(function(h){h(f)})}return new(r||(r=Promise))(function(f,h){function c(g){try{v(n.next(g))}catch(m){h(m)}}function d(g){try{v(n.throw(g))}catch(m){h(m)}}function v(g){g.done?f(g.value):i(g.value).then(c,d)}v((n=n.apply(e,t||[])).next())})}function Ws(e,t){var r={label:0,sent:function(){if(f[0]&1)throw f[1];return f[1]},trys:[],ops:[]},n,i,f,h;return h={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(h[Symbol.iterator]=function(){return this}),h;function c(v){return function(g){return d([v,g])}}function d(v){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(f=v[0]&2?i.return:v[0]?i.throw||((f=i.return)&&f.call(i),0):i.next)&&!(f=f.call(i,v[1])).done)return f;switch(i=0,f&&(v=[v[0]&2,f.value]),v[0]){case 0:case 1:f=v;break;case 4:return r.label++,{value:v[1],done:!1};case 5:r.label++,i=v[1],v=[0];continue;case 7:v=r.ops.pop(),r.trys.pop();continue;default:if(f=r.trys,!(f=f.length>0&&f[f.length-1])&&(v[0]===6||v[0]===2)){r=0;continue}if(v[0]===3&&(!f||v[1]>f[0]&&v[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function vf(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),i,f=[],h;try{for(;(t===void 0||t-- >0)&&!(i=n.next()).done;)f.push(i.value)}catch(c){h={error:c}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(h)throw h.error}}return f}function $s(){for(var e=[],t=0;t1||c(D,S)})})}function c(D,S){try{d(n[D](S))}catch(O){m(f[0][3],O)}}function d(D){D.value instanceof Cr?Promise.resolve(D.value.v).then(v,g):m(f[0][2],D)}function v(D){c("next",D)}function g(D){c("throw",D)}function m(D,S){D(S),f.shift(),f.length&&c(f[0][0],f[0][1])}}function e0(e){var t,r;return t={},n("next"),n("throw",function(i){throw i}),n("return"),t[Symbol.iterator]=function(){return this},t;function n(i,f){t[i]=e[i]?function(h){return(r=!r)?{value:Cr(e[i](h)),done:i==="return"}:f?f(h):h}:f}}function t0(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof On=="function"?On(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(f){r[f]=e[f]&&function(h){return new Promise(function(c,d){h=e[f](h),i(c,d,h.done,h.value)})}}function i(f,h,c,d){Promise.resolve(d).then(function(v){f({value:v,done:c})},h)}}function r0(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}function n0(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function i0(e){return e&&e.__esModule?e:{default:e}}function f0(e,t){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return t.get(e)}function a0(e,t,r){if(!t.has(e))throw new TypeError("attempted to set private field on non-instance");return t.set(e,r),r}var o0=Object.freeze({__proto__:null,__extends:qs,get __assign(){return Cn},__rest:Ks,__decorate:zs,__param:Vs,__metadata:Ys,__awaiter:Gs,__generator:Ws,__createBinding:Qs,__exportStar:Js,__values:On,__read:vf,__spread:$s,__spreadArrays:Xs,__await:Cr,__asyncGenerator:Zs,__asyncDelegator:e0,__asyncValues:t0,__makeTemplateObject:r0,__importStar:n0,__importDefault:i0,__classPrivateFieldGet:f0,__classPrivateFieldSet:a0}),Wr=df(o0),In={},Or={},pf;function s0(){if(pf)return Or;pf=1,Object.defineProperty(Or,"__esModule",{value:!0}),Or.delay=void 0;function e(t){return new Promise(r=>{setTimeout(()=>{r(!0)},t)})}return Or.delay=e,Or}var $t={},Bn={},Xt={},gf;function u0(){return gf||(gf=1,Object.defineProperty(Xt,"__esModule",{value:!0}),Xt.ONE_THOUSAND=Xt.ONE_HUNDRED=void 0,Xt.ONE_HUNDRED=100,Xt.ONE_THOUSAND=1e3),Xt}var Rn={},bf;function h0(){return bf||(bf=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ONE_YEAR=e.FOUR_WEEKS=e.THREE_WEEKS=e.TWO_WEEKS=e.ONE_WEEK=e.THIRTY_DAYS=e.SEVEN_DAYS=e.FIVE_DAYS=e.THREE_DAYS=e.ONE_DAY=e.TWENTY_FOUR_HOURS=e.TWELVE_HOURS=e.SIX_HOURS=e.THREE_HOURS=e.ONE_HOUR=e.SIXTY_MINUTES=e.THIRTY_MINUTES=e.TEN_MINUTES=e.FIVE_MINUTES=e.ONE_MINUTE=e.SIXTY_SECONDS=e.THIRTY_SECONDS=e.TEN_SECONDS=e.FIVE_SECONDS=e.ONE_SECOND=void 0,e.ONE_SECOND=1,e.FIVE_SECONDS=5,e.TEN_SECONDS=10,e.THIRTY_SECONDS=30,e.SIXTY_SECONDS=60,e.ONE_MINUTE=e.SIXTY_SECONDS,e.FIVE_MINUTES=e.ONE_MINUTE*5,e.TEN_MINUTES=e.ONE_MINUTE*10,e.THIRTY_MINUTES=e.ONE_MINUTE*30,e.SIXTY_MINUTES=e.ONE_MINUTE*60,e.ONE_HOUR=e.SIXTY_MINUTES,e.THREE_HOURS=e.ONE_HOUR*3,e.SIX_HOURS=e.ONE_HOUR*6,e.TWELVE_HOURS=e.ONE_HOUR*12,e.TWENTY_FOUR_HOURS=e.ONE_HOUR*24,e.ONE_DAY=e.TWENTY_FOUR_HOURS,e.THREE_DAYS=e.ONE_DAY*3,e.FIVE_DAYS=e.ONE_DAY*5,e.SEVEN_DAYS=e.ONE_DAY*7,e.THIRTY_DAYS=e.ONE_DAY*30,e.ONE_WEEK=e.SEVEN_DAYS,e.TWO_WEEKS=e.ONE_WEEK*2,e.THREE_WEEKS=e.ONE_WEEK*3,e.FOUR_WEEKS=e.ONE_WEEK*4,e.ONE_YEAR=e.ONE_DAY*365}(Rn)),Rn}var mf;function wf(){return mf||(mf=1,function(e){Object.defineProperty(e,"__esModule",{value:!0});const t=Wr;t.__exportStar(u0(),e),t.__exportStar(h0(),e)}(Bn)),Bn}var Af;function c0(){if(Af)return $t;Af=1,Object.defineProperty($t,"__esModule",{value:!0}),$t.fromMiliseconds=$t.toMiliseconds=void 0;const e=wf();function t(n){return n*e.ONE_THOUSAND}$t.toMiliseconds=t;function r(n){return Math.floor(n/e.ONE_THOUSAND)}return $t.fromMiliseconds=r,$t}var yf;function l0(){return yf||(yf=1,function(e){Object.defineProperty(e,"__esModule",{value:!0});const t=Wr;t.__exportStar(s0(),e),t.__exportStar(c0(),e)}(In)),In}var vr={},Ef;function d0(){if(Ef)return vr;Ef=1,Object.defineProperty(vr,"__esModule",{value:!0}),vr.Watch=void 0;class e{constructor(){this.timestamps=new Map}start(r){if(this.timestamps.has(r))throw new Error(`Watch already started for label: ${r}`);this.timestamps.set(r,{started:Date.now()})}stop(r){const n=this.get(r);if(typeof n.elapsed<"u")throw new Error(`Watch already stopped for label: ${r}`);const i=Date.now()-n.started;this.timestamps.set(r,{started:n.started,elapsed:i})}get(r){const n=this.timestamps.get(r);if(typeof n>"u")throw new Error(`No timestamp found for label: ${r}`);return n}elapsed(r){const n=this.get(r);return n.elapsed||Date.now()-n.started}}return vr.Watch=e,vr.default=e,vr}var Fn={},Ir={},_f;function v0(){if(_f)return Ir;_f=1,Object.defineProperty(Ir,"__esModule",{value:!0}),Ir.IWatch=void 0;class e{}return Ir.IWatch=e,Ir}var Df;function p0(){return Df||(Df=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Wr.__exportStar(v0(),e)}(Fn)),Fn}(function(e){Object.defineProperty(e,"__esModule",{value:!0});const t=Wr;t.__exportStar(l0(),e),t.__exportStar(d0(),e),t.__exportStar(p0(),e),t.__exportStar(wf(),e)})(Jt);var be={};Object.defineProperty(be,"__esModule",{value:!0}),be.getLocalStorage=be.getLocalStorageOrThrow=be.getCrypto=be.getCryptoOrThrow=Pn=be.getLocation=be.getLocationOrThrow=Tn=be.getNavigator=be.getNavigatorOrThrow=Un=be.getDocument=be.getDocumentOrThrow=be.getFromWindowOrThrow=be.getFromWindow=void 0;function Zt(e){let t;return typeof window<"u"&&typeof window[e]<"u"&&(t=window[e]),t}be.getFromWindow=Zt;function pr(e){const t=Zt(e);if(!t)throw new Error(`${e} is not defined in Window`);return t}be.getFromWindowOrThrow=pr;function g0(){return pr("document")}be.getDocumentOrThrow=g0;function b0(){return Zt("document")}var Un=be.getDocument=b0;function m0(){return pr("navigator")}be.getNavigatorOrThrow=m0;function w0(){return Zt("navigator")}var Tn=be.getNavigator=w0;function A0(){return pr("location")}be.getLocationOrThrow=A0;function y0(){return Zt("location")}var Pn=be.getLocation=y0;function E0(){return pr("crypto")}be.getCryptoOrThrow=E0;function _0(){return Zt("crypto")}be.getCrypto=_0;function D0(){return pr("localStorage")}be.getLocalStorageOrThrow=D0;function S0(){return Zt("localStorage")}be.getLocalStorage=S0;var Ln={};Object.defineProperty(Ln,"__esModule",{value:!0});var Sf=Ln.getWindowMetadata=void 0;const Mf=be;function M0(){let e,t;try{e=Mf.getDocumentOrThrow(),t=Mf.getLocationOrThrow()}catch{return null}function r(){const m=e.getElementsByTagName("link"),D=[];for(let S=0;S-1){const P=O.getAttribute("href");if(P)if(P.toLowerCase().indexOf("https:")===-1&&P.toLowerCase().indexOf("http:")===-1&&P.indexOf("//")!==0){let j=t.protocol+"//"+t.host;if(P.indexOf("/")===0)j+=P;else{const B=t.pathname.split("/");B.pop();const U=B.join("/");j+=U+"/"+P}D.push(j)}else if(P.indexOf("//")===0){const j=t.protocol+P;D.push(j)}else D.push(P)}}return D}function n(...m){const D=e.getElementsByTagName("meta");for(let S=0;SO.getAttribute(P)).filter(P=>P?m.includes(P):!1);if(T.length&&T){const P=O.getAttribute("content");if(P)return P}}return""}function i(){let m=n("name","og:site_name","og:title","twitter:title");return m||(m=e.title),m}function f(){return n("description","og:description","twitter:description","keywords")}const h=i(),c=f(),d=t.origin,v=r();return{description:c,url:d,icons:v,name:h}}Sf=Ln.getWindowMetadata=M0;var Br={},x0=e=>encodeURIComponent(e).replace(/[!'()*]/g,t=>`%${t.charCodeAt(0).toString(16).toUpperCase()}`),xf="%[a-f0-9]{2}",Nf=new RegExp("("+xf+")|([^%]+?)","gi"),Cf=new RegExp("("+xf+")+","gi");function Hn(e,t){try{return[decodeURIComponent(e.join(""))]}catch{}if(e.length===1)return e;t=t||1;var r=e.slice(0,t),n=e.slice(t);return Array.prototype.concat.call([],Hn(r),Hn(n))}function N0(e){try{return decodeURIComponent(e)}catch{for(var t=e.match(Nf)||[],r=1;r{if(!(typeof e=="string"&&typeof t=="string"))throw new TypeError("Expected the arguments to be of type `string`");if(t==="")return[e];const r=e.indexOf(t);return r===-1?[e]:[e.slice(0,r),e.slice(r+t.length)]},B0=function(e,t){for(var r={},n=Object.keys(e),i=Array.isArray(t),f=0;fB==null,h=Symbol("encodeFragmentIdentifier");function c(B){switch(B.arrayFormat){case"index":return U=>(M,x)=>{const N=M.length;return x===void 0||B.skipNull&&x===null||B.skipEmptyString&&x===""?M:x===null?[...M,[g(U,B),"[",N,"]"].join("")]:[...M,[g(U,B),"[",g(N,B),"]=",g(x,B)].join("")]};case"bracket":return U=>(M,x)=>x===void 0||B.skipNull&&x===null||B.skipEmptyString&&x===""?M:x===null?[...M,[g(U,B),"[]"].join("")]:[...M,[g(U,B),"[]=",g(x,B)].join("")];case"colon-list-separator":return U=>(M,x)=>x===void 0||B.skipNull&&x===null||B.skipEmptyString&&x===""?M:x===null?[...M,[g(U,B),":list="].join("")]:[...M,[g(U,B),":list=",g(x,B)].join("")];case"comma":case"separator":case"bracket-separator":{const U=B.arrayFormat==="bracket-separator"?"[]=":"=";return M=>(x,N)=>N===void 0||B.skipNull&&N===null||B.skipEmptyString&&N===""?x:(N=N===null?"":N,x.length===0?[[g(M,B),U,g(N,B)].join("")]:[[x,g(N,B)].join(B.arrayFormatSeparator)])}default:return U=>(M,x)=>x===void 0||B.skipNull&&x===null||B.skipEmptyString&&x===""?M:x===null?[...M,g(U,B)]:[...M,[g(U,B),"=",g(x,B)].join("")]}}function d(B){let U;switch(B.arrayFormat){case"index":return(M,x,N)=>{if(U=/\[(\d*)\]$/.exec(M),M=M.replace(/\[\d*\]$/,""),!U){N[M]=x;return}N[M]===void 0&&(N[M]={}),N[M][U[1]]=x};case"bracket":return(M,x,N)=>{if(U=/(\[\])$/.exec(M),M=M.replace(/\[\]$/,""),!U){N[M]=x;return}if(N[M]===void 0){N[M]=[x];return}N[M]=[].concat(N[M],x)};case"colon-list-separator":return(M,x,N)=>{if(U=/(:list)$/.exec(M),M=M.replace(/:list$/,""),!U){N[M]=x;return}if(N[M]===void 0){N[M]=[x];return}N[M]=[].concat(N[M],x)};case"comma":case"separator":return(M,x,N)=>{const s=typeof x=="string"&&x.includes(B.arrayFormatSeparator),_=typeof x=="string"&&!s&&m(x,B).includes(B.arrayFormatSeparator);x=_?m(x,B):x;const q=s||_?x.split(B.arrayFormatSeparator).map(G=>m(G,B)):x===null?x:m(x,B);N[M]=q};case"bracket-separator":return(M,x,N)=>{const s=/(\[\])$/.test(M);if(M=M.replace(/\[\]$/,""),!s){N[M]=x&&m(x,B);return}const _=x===null?[]:x.split(B.arrayFormatSeparator).map(q=>m(q,B));if(N[M]===void 0){N[M]=_;return}N[M]=[].concat(N[M],_)};default:return(M,x,N)=>{if(N[M]===void 0){N[M]=x;return}N[M]=[].concat(N[M],x)}}}function v(B){if(typeof B!="string"||B.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function g(B,U){return U.encode?U.strict?t(B):encodeURIComponent(B):B}function m(B,U){return U.decode?r(B):B}function D(B){return Array.isArray(B)?B.sort():typeof B=="object"?D(Object.keys(B)).sort((U,M)=>Number(U)-Number(M)).map(U=>B[U]):B}function S(B){const U=B.indexOf("#");return U!==-1&&(B=B.slice(0,U)),B}function O(B){let U="";const M=B.indexOf("#");return M!==-1&&(U=B.slice(M)),U}function T(B){B=S(B);const U=B.indexOf("?");return U===-1?"":B.slice(U+1)}function P(B,U){return U.parseNumbers&&!Number.isNaN(Number(B))&&typeof B=="string"&&B.trim()!==""?B=Number(B):U.parseBooleans&&B!==null&&(B.toLowerCase()==="true"||B.toLowerCase()==="false")&&(B=B.toLowerCase()==="true"),B}function j(B,U){U=Object.assign({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},U),v(U.arrayFormatSeparator);const M=d(U),x=Object.create(null);if(typeof B!="string"||(B=B.trim().replace(/^[?#&]/,""),!B))return x;for(const N of B.split("&")){if(N==="")continue;let[s,_]=n(U.decode?N.replace(/\+/g," "):N,"=");_=_===void 0?null:["comma","separator","bracket-separator"].includes(U.arrayFormat)?_:m(_,U),M(m(s,U),_,x)}for(const N of Object.keys(x)){const s=x[N];if(typeof s=="object"&&s!==null)for(const _ of Object.keys(s))s[_]=P(s[_],U);else x[N]=P(s,U)}return U.sort===!1?x:(U.sort===!0?Object.keys(x).sort():Object.keys(x).sort(U.sort)).reduce((N,s)=>{const _=x[s];return _&&typeof _=="object"&&!Array.isArray(_)?N[s]=D(_):N[s]=_,N},Object.create(null))}e.extract=T,e.parse=j,e.stringify=(B,U)=>{if(!B)return"";U=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},U),v(U.arrayFormatSeparator);const M=_=>U.skipNull&&f(B[_])||U.skipEmptyString&&B[_]==="",x=c(U),N={};for(const _ of Object.keys(B))M(_)||(N[_]=B[_]);const s=Object.keys(N);return U.sort!==!1&&s.sort(U.sort),s.map(_=>{const q=B[_];return q===void 0?"":q===null?g(_,U):Array.isArray(q)?q.length===0&&U.arrayFormat==="bracket-separator"?g(_,U)+"[]":q.reduce(x(_),[]).join("&"):g(_,U)+"="+g(q,U)}).filter(_=>_.length>0).join("&")},e.parseUrl=(B,U)=>{U=Object.assign({decode:!0},U);const[M,x]=n(B,"#");return Object.assign({url:M.split("?")[0]||"",query:j(T(B),U)},U&&U.parseFragmentIdentifier&&x?{fragmentIdentifier:m(x,U)}:{})},e.stringifyUrl=(B,U)=>{U=Object.assign({encode:!0,strict:!0,[h]:!0},U);const M=S(B.url).split("?")[0]||"",x=e.extract(B.url),N=e.parse(x,{sort:!1}),s=Object.assign(N,B.query);let _=e.stringify(s,U);_&&(_=`?${_}`);let q=O(B.url);return B.fragmentIdentifier&&(q=`#${U[h]?g(B.fragmentIdentifier,U):B.fragmentIdentifier}`),`${M}${_}${q}`},e.pick=(B,U,M)=>{M=Object.assign({parseFragmentIdentifier:!0,[h]:!1},M);const{url:x,query:N,fragmentIdentifier:s}=e.parseUrl(B,M);return e.stringifyUrl({url:x,query:i(N,U),fragmentIdentifier:s},M)},e.exclude=(B,U,M)=>{const x=Array.isArray(U)?N=>!U.includes(N):(N,s)=>!U(N,s);return e.pick(B,x,M)}})(Br);var R0=Object.defineProperty,Of=Object.getOwnPropertySymbols,F0=Object.prototype.hasOwnProperty,U0=Object.prototype.propertyIsEnumerable,If=(e,t,r)=>t in e?R0(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Bf=(e,t)=>{for(var r in t||(t={}))F0.call(t,r)&&If(e,r,t[r]);if(Of)for(var r of Of(t))U0.call(t,r)&&If(e,r,t[r]);return e};const Rf="ReactNative",$e={reactNative:"react-native",node:"node",browser:"browser",unknown:"unknown"},Qr=" ",T0=":",Ff="/",kn=2,P0=1e3,Uf="js";function jn(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}function gr(){return!Un()&&!!Tn()&&navigator.product===Rf}function Rr(){return!jn()&&!!Tn()&&!!Un()}function er(){return gr()?$e.reactNative:jn()?$e.node:Rr()?$e.browser:$e.unknown}function L0(){var e;try{return gr()&&typeof global<"u"&&typeof(global==null?void 0:global.Application)<"u"?(e=global.Application)==null?void 0:e.applicationId:void 0}catch{return}}function Tf(e,t){let r=Br.parse(e);return r=Bf(Bf({},r),t),e=Br.stringify(r),e}function H0(){return Sf()||{name:"",description:"",url:"",icons:[""]}}function k0(e,t){var r;const n=er(),i={protocol:e,version:t,env:n};return n==="browser"&&(i.host=((r=Pn())==null?void 0:r.host)||"unknown"),i}function Pf(){if(er()===$e.reactNative&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"){const{OS:r,Version:n}=global.Platform;return[r,n].join("-")}const e=Ps();if(e===null)return"unknown";const t=e.os?e.os.replace(" ","").toLowerCase():"unknown";return e.type==="browser"?[t,e.name,e.version].join("-"):[t,e.version].join("-")}function Lf(){var e;const t=er();return t===$e.browser?[t,((e=Pn())==null?void 0:e.host)||"unknown"].join(":"):t}function Hf(e,t,r){const n=Pf(),i=Lf();return[[e,t].join("-"),[Uf,r].join("-"),n,i].join("/")}function j0({protocol:e,version:t,relayUrl:r,sdkVersion:n,auth:i,projectId:f,useOnCloseEvent:h,bundleId:c}){const d=r.split("?"),v=Hf(e,t,n),g={auth:i,ua:v,projectId:f,useOnCloseEvent:h||void 0,origin:c||void 0},m=Tf(d[1]||"",g);return d[0]+"?"+m}function q0(e){let t=(e.match(/^[^:]+(?=:\/\/)/gi)||[])[0];const r=typeof t<"u"?e.split("://")[1]:e;return t=t==="wss"?"https":"http",[t,r].join("://")}function K0(e,t,r){if(!e[t]||typeof e[t]!==r)throw new Error(`Missing or invalid "${t}" param`)}function kf(e,t=kn){return jf(e.split(Ff),t)}function z0(e){return kf(e).join(Qr)}function Lt(e,t){return e.filter(r=>t.includes(r)).length===e.length}function jf(e,t=kn){return e.slice(Math.max(e.length-t,0))}function V0(e){return Object.fromEntries(e.entries())}function Y0(e){return new Map(Object.entries(e))}function G0(e,t){const r={};return Object.keys(e).forEach(n=>{r[n]=t(e[n])}),r}const W0=e=>e;function qf(e){return e.trim().replace(/^\w/,t=>t.toUpperCase())}function Q0(e){return e.split(Qr).map(t=>qf(t)).join(Qr)}function J0(e=Jt.FIVE_MINUTES,t){const r=Jt.toMiliseconds(e||Jt.FIVE_MINUTES);let n,i,f;return{resolve:h=>{f&&n&&(clearTimeout(f),n(h))},reject:h=>{f&&i&&(clearTimeout(f),i(h))},done:()=>new Promise((h,c)=>{f=setTimeout(()=>{c(new Error(t))},r),n=h,i=c})}}function $0(e,t,r){return new Promise(async(n,i)=>{const f=setTimeout(()=>i(new Error(r)),t);try{const h=await e;n(h)}catch(h){i(h)}clearTimeout(f)})}function qn(e,t){if(typeof t=="string"&&t.startsWith(`${e}:`))return t;if(e.toLowerCase()==="topic"){if(typeof t!="string")throw new Error('Value must be "string" for expirer target type: topic');return`topic:${t}`}else if(e.toLowerCase()==="id"){if(typeof t!="number")throw new Error('Value must be "number" for expirer target type: id');return`id:${t}`}throw new Error(`Unknown expirer target type: ${e}`)}function X0(e){return qn("topic",e)}function Z0(e){return qn("id",e)}function eu(e){const[t,r]=e.split(":"),n={id:void 0,topic:void 0};if(t==="topic"&&typeof r=="string")n.topic=r;else if(t==="id"&&Number.isInteger(Number(r)))n.id=Number(r);else throw new Error(`Invalid target, expected id:number or topic:string, got ${t}:${r}`);return n}function tu(e,t){return Jt.fromMiliseconds((t||Date.now())+Jt.toMiliseconds(e))}function ru(e){return Date.now()>=Jt.toMiliseconds(e)}function nu(e,t){return`${e}${t?`:${t}`:""}`}function It(e=[],t=[]){return[...new Set([...e,...t])]}function Kf(){return typeof window<"u"&&(!!window.TelegramWebviewProxy||!!window.Telegram||!!window.TelegramWebviewProxyProto)}async function iu({id:e,topic:t,wcDeepLink:r}){try{if(!r)return;const n=typeof r=="string"?JSON.parse(r):r;let i=n?.href;if(typeof i!="string")return;i.endsWith("/")&&(i=i.slice(0,-1));const f=`${i}/wc?requestId=${e}&sessionTopic=${t}`,h=er();h===$e.browser?f.startsWith("https://")||f.startsWith("http://")||Kf()?window.open(f,"_blank","noreferrer noopener"):window.open(f,"_self","noreferrer noopener"):h===$e.reactNative&&typeof(global==null?void 0:global.Linking)<"u"&&await global.Linking.openURL(f)}catch(n){console.error(n)}}async function fu(e,t){try{return await e.getItem(t)||(Rr()?localStorage.getItem(t):void 0)}catch(r){console.error(r)}}function Kn(e,t){return e.filter(r=>t.includes(r))}var zf={exports:{}};/** + * [js-sha3]{@link https://github.com/emn178/js-sha3} + * + * @version 0.8.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2015-2018 + * @license MIT +- */(function(t){(function(){var e="input is invalid type",r="finalize already called",n=typeof window=="object",i=n?window:{};i.JS_SHA3_NO_WINDOW&&(n=!1);var f=!n&&typeof self=="object",h=!i.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;h?i=lf:f&&(i=self);var c=!i.JS_SHA3_NO_COMMON_JS&&!0&&t.exports,d=!i.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",v="0123456789abcdef".split(""),g=[31,7936,2031616,520093696],m=[4,1024,262144,67108864],D=[1,256,65536,16777216],S=[6,1536,393216,100663296],O=[0,8,16,24],T=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],P=[224,256,384,512],j=[128,256],I=["hex","buffer","arrayBuffer","array","digest"],U={128:168,256:136};(i.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(l){return Object.prototype.toString.call(l)==="[object Array]"}),d&&(i.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(l){return typeof l=="object"&&l.buffer&&l.buffer.constructor===ArrayBuffer});for(var M=function(l,F,L){return function(H){return new o(l,F,l).update(H)[L]()}},x=function(l,F,L){return function(H,k){return new o(l,F,k).update(H)[L]()}},N=function(l,F,L){return function(H,k,Y,z){return a["cshake"+l].update(H,k,Y,z)[L]()}},s=function(l,F,L){return function(H,k,Y,z){return a["kmac"+l].update(H,k,Y,z)[L]()}},_=function(l,F,L,H){for(var k=0;k>5,this.byteCount=this.blockCount<<2,this.outputBlocks=L>>5,this.extraBytes=(L&31)>>3;for(var H=0;H<50;++H)this.s[H]=0}o.prototype.update=function(l){if(this.finalized)throw new Error(r);var F,L=typeof l;if(L!=="string"){if(L==="object"){if(l===null)throw new Error(e);if(d&&l.constructor===ArrayBuffer)l=new Uint8Array(l);else if(!Array.isArray(l)&&(!d||!ArrayBuffer.isView(l)))throw new Error(e)}else throw new Error(e);F=!0}for(var H=this.blocks,k=this.byteCount,Y=l.length,z=this.blockCount,K=0,X=this.s,Q,$;K>2]|=l[K]<>2]|=$<>2]|=(192|$>>6)<>2]|=(128|$&63)<=57344?(H[Q>>2]|=(224|$>>12)<>2]|=(128|$>>6&63)<>2]|=(128|$&63)<>2]|=(240|$>>18)<>2]|=(128|$>>12&63)<>2]|=(128|$>>6&63)<>2]|=(128|$&63)<=k){for(this.start=Q-k,this.block=H[z],Q=0;Q>8,L=l&255;L>0;)k.unshift(L),l=l>>8,L=l&255,++H;return F?k.push(H):k.unshift(H),this.update(k),k.length},o.prototype.encodeString=function(l){var F,L=typeof l;if(L!=="string"){if(L==="object"){if(l===null)throw new Error(e);if(d&&l.constructor===ArrayBuffer)l=new Uint8Array(l);else if(!Array.isArray(l)&&(!d||!ArrayBuffer.isView(l)))throw new Error(e)}else throw new Error(e);F=!0}var H=0,k=l.length;if(F)H=k;else for(var Y=0;Y=57344?H+=3:(z=65536+((z&1023)<<10|l.charCodeAt(++Y)&1023),H+=4)}return H+=this.encode(H*8),this.update(l),H},o.prototype.bytepad=function(l,F){for(var L=this.encode(F),H=0;H>2]|=this.padding[F&3],this.lastByteIndex===this.byteCount)for(l[0]=l[L],F=1;F>4&15]+v[K&15]+v[K>>12&15]+v[K>>8&15]+v[K>>20&15]+v[K>>16&15]+v[K>>28&15]+v[K>>24&15];Y%l===0&&(V(F),k=0)}return H&&(K=F[k],z+=v[K>>4&15]+v[K&15],H>1&&(z+=v[K>>12&15]+v[K>>8&15]),H>2&&(z+=v[K>>20&15]+v[K>>16&15])),z},o.prototype.arrayBuffer=function(){this.finalize();var l=this.blockCount,F=this.s,L=this.outputBlocks,H=this.extraBytes,k=0,Y=0,z=this.outputBits>>3,K;H?K=new ArrayBuffer(L+1<<2):K=new ArrayBuffer(z);for(var X=new Uint32Array(K);Y>8&255,z[K+2]=X>>16&255,z[K+3]=X>>24&255;Y%l===0&&V(F)}return H&&(K=Y<<2,X=F[k],z[K]=X&255,H>1&&(z[K+1]=X>>8&255),H>2&&(z[K+2]=X>>16&255)),z};function w(l,F,L){o.call(this,l,F,L)}w.prototype=new o,w.prototype.finalize=function(){return this.encode(this.outputBits,!0),o.prototype.finalize.call(this)};var V=function(l){var F,L,H,k,Y,z,K,X,Q,$,ae,pt,gt,Oe,tt,et,Lt,rt,nt,Ht,it,ft,kt,at,ot,jt,st,ut,qt,ht,wt,fr,At,yt,ar,Et,_t,or,Dt,St,sr,Mt,xt,ur,Nt,Ct,hr,Ot,It,cr,Bt,Rt,lr,Ft,Ut,dr,Tt,Pt,Ve,Ye,Ge,We,Qe;for(H=0;H<48;H+=2)k=l[0]^l[10]^l[20]^l[30]^l[40],Y=l[1]^l[11]^l[21]^l[31]^l[41],z=l[2]^l[12]^l[22]^l[32]^l[42],K=l[3]^l[13]^l[23]^l[33]^l[43],X=l[4]^l[14]^l[24]^l[34]^l[44],Q=l[5]^l[15]^l[25]^l[35]^l[45],$=l[6]^l[16]^l[26]^l[36]^l[46],ae=l[7]^l[17]^l[27]^l[37]^l[47],pt=l[8]^l[18]^l[28]^l[38]^l[48],gt=l[9]^l[19]^l[29]^l[39]^l[49],F=pt^(z<<1|K>>>31),L=gt^(K<<1|z>>>31),l[0]^=F,l[1]^=L,l[10]^=F,l[11]^=L,l[20]^=F,l[21]^=L,l[30]^=F,l[31]^=L,l[40]^=F,l[41]^=L,F=k^(X<<1|Q>>>31),L=Y^(Q<<1|X>>>31),l[2]^=F,l[3]^=L,l[12]^=F,l[13]^=L,l[22]^=F,l[23]^=L,l[32]^=F,l[33]^=L,l[42]^=F,l[43]^=L,F=z^($<<1|ae>>>31),L=K^(ae<<1|$>>>31),l[4]^=F,l[5]^=L,l[14]^=F,l[15]^=L,l[24]^=F,l[25]^=L,l[34]^=F,l[35]^=L,l[44]^=F,l[45]^=L,F=X^(pt<<1|gt>>>31),L=Q^(gt<<1|pt>>>31),l[6]^=F,l[7]^=L,l[16]^=F,l[17]^=L,l[26]^=F,l[27]^=L,l[36]^=F,l[37]^=L,l[46]^=F,l[47]^=L,F=$^(k<<1|Y>>>31),L=ae^(Y<<1|k>>>31),l[8]^=F,l[9]^=L,l[18]^=F,l[19]^=L,l[28]^=F,l[29]^=L,l[38]^=F,l[39]^=L,l[48]^=F,l[49]^=L,Oe=l[0],tt=l[1],Ct=l[11]<<4|l[10]>>>28,hr=l[10]<<4|l[11]>>>28,ut=l[20]<<3|l[21]>>>29,qt=l[21]<<3|l[20]>>>29,Ye=l[31]<<9|l[30]>>>23,Ge=l[30]<<9|l[31]>>>23,Mt=l[40]<<18|l[41]>>>14,xt=l[41]<<18|l[40]>>>14,yt=l[2]<<1|l[3]>>>31,ar=l[3]<<1|l[2]>>>31,et=l[13]<<12|l[12]>>>20,Lt=l[12]<<12|l[13]>>>20,Ot=l[22]<<10|l[23]>>>22,It=l[23]<<10|l[22]>>>22,ht=l[33]<<13|l[32]>>>19,wt=l[32]<<13|l[33]>>>19,We=l[42]<<2|l[43]>>>30,Qe=l[43]<<2|l[42]>>>30,Ft=l[5]<<30|l[4]>>>2,Ut=l[4]<<30|l[5]>>>2,Et=l[14]<<6|l[15]>>>26,_t=l[15]<<6|l[14]>>>26,rt=l[25]<<11|l[24]>>>21,nt=l[24]<<11|l[25]>>>21,cr=l[34]<<15|l[35]>>>17,Bt=l[35]<<15|l[34]>>>17,fr=l[45]<<29|l[44]>>>3,At=l[44]<<29|l[45]>>>3,at=l[6]<<28|l[7]>>>4,ot=l[7]<<28|l[6]>>>4,dr=l[17]<<23|l[16]>>>9,Tt=l[16]<<23|l[17]>>>9,or=l[26]<<25|l[27]>>>7,Dt=l[27]<<25|l[26]>>>7,Ht=l[36]<<21|l[37]>>>11,it=l[37]<<21|l[36]>>>11,Rt=l[47]<<24|l[46]>>>8,lr=l[46]<<24|l[47]>>>8,ur=l[8]<<27|l[9]>>>5,Nt=l[9]<<27|l[8]>>>5,jt=l[18]<<20|l[19]>>>12,st=l[19]<<20|l[18]>>>12,Pt=l[29]<<7|l[28]>>>25,Ve=l[28]<<7|l[29]>>>25,St=l[38]<<8|l[39]>>>24,sr=l[39]<<8|l[38]>>>24,ft=l[48]<<14|l[49]>>>18,kt=l[49]<<14|l[48]>>>18,l[0]=Oe^~et&rt,l[1]=tt^~Lt&nt,l[10]=at^~jt&ut,l[11]=ot^~st&qt,l[20]=yt^~Et&or,l[21]=ar^~_t&Dt,l[30]=ur^~Ct&Ot,l[31]=Nt^~hr&It,l[40]=Ft^~dr&Pt,l[41]=Ut^~Tt&Ve,l[2]=et^~rt&Ht,l[3]=Lt^~nt&it,l[12]=jt^~ut&ht,l[13]=st^~qt&wt,l[22]=Et^~or&St,l[23]=_t^~Dt&sr,l[32]=Ct^~Ot&cr,l[33]=hr^~It&Bt,l[42]=dr^~Pt&Ye,l[43]=Tt^~Ve&Ge,l[4]=rt^~Ht&ft,l[5]=nt^~it&kt,l[14]=ut^~ht&fr,l[15]=qt^~wt&At,l[24]=or^~St&Mt,l[25]=Dt^~sr&xt,l[34]=Ot^~cr&Rt,l[35]=It^~Bt&lr,l[44]=Pt^~Ye&We,l[45]=Ve^~Ge&Qe,l[6]=Ht^~ft&Oe,l[7]=it^~kt&tt,l[16]=ht^~fr&at,l[17]=wt^~At&ot,l[26]=St^~Mt&yt,l[27]=sr^~xt&ar,l[36]=cr^~Rt&ur,l[37]=Bt^~lr&Nt,l[46]=Ye^~We&Ft,l[47]=Ge^~Qe&Ut,l[8]=ft^~Oe&et,l[9]=kt^~tt&Lt,l[18]=fr^~at&jt,l[19]=At^~ot&st,l[28]=Mt^~yt&Et,l[29]=xt^~ar&_t,l[38]=Rt^~ur&Ct,l[39]=lr^~Nt&hr,l[48]=We^~Ft&dr,l[49]=Qe^~Ut&Tt,l[0]^=T[H],l[1]^=T[H+1]};if(c)t.exports=a;else for(p=0;p{try{if("test".normalize(e)!=="test")throw new Error("bad normalize")}catch{t.push(e)}}),t.length)throw new Error("missing "+t.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(t){return t.message}return null}const Gf=ou();var Vn;(function(t){t.DEBUG="DEBUG",t.INFO="INFO",t.WARNING="WARNING",t.ERROR="ERROR",t.OFF="OFF"})(Vn||(Vn={}));var ce;(function(t){t.UNKNOWN_ERROR="UNKNOWN_ERROR",t.NOT_IMPLEMENTED="NOT_IMPLEMENTED",t.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",t.NETWORK_ERROR="NETWORK_ERROR",t.SERVER_ERROR="SERVER_ERROR",t.TIMEOUT="TIMEOUT",t.BUFFER_OVERRUN="BUFFER_OVERRUN",t.NUMERIC_FAULT="NUMERIC_FAULT",t.MISSING_NEW="MISSING_NEW",t.INVALID_ARGUMENT="INVALID_ARGUMENT",t.MISSING_ARGUMENT="MISSING_ARGUMENT",t.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",t.CALL_EXCEPTION="CALL_EXCEPTION",t.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",t.NONCE_EXPIRED="NONCE_EXPIRED",t.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",t.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",t.TRANSACTION_REPLACED="TRANSACTION_REPLACED",t.ACTION_REJECTED="ACTION_REJECTED"})(ce||(ce={}));const Wf="0123456789abcdef";class ct{constructor(e){Object.defineProperty(this,"version",{enumerable:!0,value:e,writable:!1})}_log(e,r){const n=e.toLowerCase();Jr[n]==null&&this.throwArgumentError("invalid log level name","logLevel",e),!(Yf>Jr[n])&&console.log.apply(console,r)}debug(...e){this._log(ct.levels.DEBUG,e)}info(...e){this._log(ct.levels.INFO,e)}warn(...e){this._log(ct.levels.WARNING,e)}makeError(e,r,n){if(Vf)return this.makeError("censored error",r,{});r||(r=ct.errors.UNKNOWN_ERROR),n||(n={});const i=[];Object.keys(n).forEach(d=>{const v=n[d];try{if(v instanceof Uint8Array){let g="";for(let m=0;m>4],g+=Wf[v[m]&15];i.push(d+"=Uint8Array(0x"+g+")")}else i.push(d+"="+JSON.stringify(v))}catch{i.push(d+"="+JSON.stringify(n[d].toString()))}}),i.push(`code=${r}`),i.push(`version=${this.version}`);const f=e;let h="";switch(r){case ce.NUMERIC_FAULT:{h="NUMERIC_FAULT";const d=e;switch(d){case"overflow":case"underflow":case"division-by-zero":h+="-"+d;break;case"negative-power":case"negative-width":h+="-unsupported";break;case"unbound-bitwise-result":h+="-unbound-result";break}break}case ce.CALL_EXCEPTION:case ce.INSUFFICIENT_FUNDS:case ce.MISSING_NEW:case ce.NONCE_EXPIRED:case ce.REPLACEMENT_UNDERPRICED:case ce.TRANSACTION_REPLACED:case ce.UNPREDICTABLE_GAS_LIMIT:h=r;break}h&&(e+=" [ See: https://links.ethers.org/v5-errors-"+h+" ]"),i.length&&(e+=" ("+i.join(", ")+")");const c=new Error(e);return c.reason=f,c.code=r,Object.keys(n).forEach(function(d){c[d]=n[d]}),c}throwError(e,r,n){throw this.makeError(e,r,n)}throwArgumentError(e,r,n){return this.throwError(e,ct.errors.INVALID_ARGUMENT,{argument:r,value:n})}assert(e,r,n,i){e||this.throwError(r,n,i)}assertArgument(e,r,n,i){e||this.throwArgumentError(r,n,i)}checkNormalize(e){Gf&&this.throwError("platform missing String.prototype.normalize",ct.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:Gf})}checkSafeUint53(e,r){typeof e=="number"&&(r==null&&(r="value not safe"),(e<0||e>=9007199254740991)&&this.throwError(r,ct.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:e}),e%1&&this.throwError(r,ct.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:e}))}checkArgumentCount(e,r,n){n?n=": "+n:n="",er&&this.throwError("too many arguments"+n,ct.errors.UNEXPECTED_ARGUMENT,{count:e,expectedCount:r})}checkNew(e,r){(e===Object||e==null)&&this.throwError("missing new",ct.errors.MISSING_NEW,{name:r.name})}checkAbstract(e,r){e===r?this.throwError("cannot instantiate abstract class "+JSON.stringify(r.name)+" directly; use a sub-class",ct.errors.UNSUPPORTED_OPERATION,{name:e.name,operation:"new"}):(e===Object||e==null)&&this.throwError("missing new",ct.errors.MISSING_NEW,{name:r.name})}static globalLogger(){return zn||(zn=new ct(au)),zn}static setCensorship(e,r){if(!e&&r&&this.globalLogger().throwError("cannot permanently disable censorship",ct.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),zf){if(!e)return;this.globalLogger().throwError("error censorship permanent",ct.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}Vf=!!e,zf=!!r}static setLogLevel(e){const r=Jr[e.toLowerCase()];if(r==null){ct.globalLogger().warn("invalid log level - "+e);return}Yf=r}static from(e){return new ct(e)}}ct.errors=ce,ct.levels=Vn;const su="bytes/5.7.0",zt=new ct(su);function Qf(t){return!!t.toHexString}function br(t){return t.slice||(t.slice=function(){const e=Array.prototype.slice.call(arguments);return br(new Uint8Array(Array.prototype.slice.apply(t,e)))}),t}function uu(t){return ne(t)&&!(t.length%2)||mr(t)}function Jf(t){return typeof t=="number"&&t==t&&t%1===0}function mr(t){if(t==null)return!1;if(t.constructor===Uint8Array)return!0;if(typeof t=="string"||!Jf(t.length)||t.length<0)return!1;for(let e=0;e=256)return!1}return!0}function Kt(t,e){if(e||(e={}),typeof t=="number"){zt.checkSafeUint53(t,"invalid arrayify value");const r=[];for(;t;)r.unshift(t&255),t=parseInt(String(t/256));return r.length===0&&r.push(0),br(new Uint8Array(r))}if(e.allowMissingPrefix&&typeof t=="string"&&t.substring(0,2)!=="0x"&&(t="0x"+t),Qf(t)&&(t=t.toHexString()),ne(t)){let r=t.substring(2);r.length%2&&(e.hexPad==="left"?r="0"+r:e.hexPad==="right"?r+="0":zt.throwArgumentError("hex data is odd-length","value",t));const n=[];for(let i=0;iKt(i)),r=e.reduce((i,f)=>i+f.length,0),n=new Uint8Array(r);return e.reduce((i,f)=>(n.set(f,i),i+f.length),0),br(n)}function cu(t,e){t=Kt(t),t.length>e&&zt.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(e);return r.set(t,e-t.length),br(r)}function ne(t,e){return!(typeof t!="string"||!t.match(/^0x[0-9A-Fa-f]*$/)||e&&t.length!==2+2*e)}const Yn="0123456789abcdef";function Xt(t,e){if(e||(e={}),typeof t=="number"){zt.checkSafeUint53(t,"invalid hexlify value");let r="";for(;t;)r=Yn[t&15]+r,t=Math.floor(t/16);return r.length?(r.length%2&&(r="0"+r),"0x"+r):"0x00"}if(typeof t=="bigint")return t=t.toString(16),t.length%2?"0x0"+t:"0x"+t;if(e.allowMissingPrefix&&typeof t=="string"&&t.substring(0,2)!=="0x"&&(t="0x"+t),Qf(t))return t.toHexString();if(ne(t))return t.length%2&&(e.hexPad==="left"?t="0x0"+t.substring(2):e.hexPad==="right"?t+="0":zt.throwArgumentError("hex data is odd-length","value",t)),t.toLowerCase();if(mr(t)){let r="0x";for(let n=0;n>4]+Yn[i&15]}return r}return zt.throwArgumentError("invalid hexlify value","value",t)}function lu(t){if(typeof t!="string")t=Xt(t);else if(!ne(t)||t.length%2)return null;return(t.length-2)/2}function $f(t,e,r){return typeof t!="string"?t=Xt(t):(!ne(t)||t.length%2)&&zt.throwArgumentError("invalid hexData","value",t),e=2+2*e,r!=null?"0x"+t.substring(e,2+2*r):"0x"+t.substring(e)}function me(t,e){for(typeof t!="string"?t=Xt(t):ne(t)||zt.throwArgumentError("invalid hex string","value",t),t.length>2*e+2&&zt.throwArgumentError("value out of range","value",arguments[1]);t.length<2*e+2;)t="0x0"+t.substring(2);return t}function Xf(t){const e={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(uu(t)){let r=Kt(t);r.length===64?(e.v=27+(r[32]>>7),r[32]&=127,e.r=Xt(r.slice(0,32)),e.s=Xt(r.slice(32,64))):r.length===65?(e.r=Xt(r.slice(0,32)),e.s=Xt(r.slice(32,64)),e.v=r[64]):zt.throwArgumentError("invalid signature string","signature",t),e.v<27&&(e.v===0||e.v===1?e.v+=27:zt.throwArgumentError("signature invalid v byte","signature",t)),e.recoveryParam=1-e.v%2,e.recoveryParam&&(r[32]|=128),e._vs=Xt(r.slice(32,64))}else{if(e.r=t.r,e.s=t.s,e.v=t.v,e.recoveryParam=t.recoveryParam,e._vs=t._vs,e._vs!=null){const i=cu(Kt(e._vs),32);e._vs=Xt(i);const f=i[0]>=128?1:0;e.recoveryParam==null?e.recoveryParam=f:e.recoveryParam!==f&&zt.throwArgumentError("signature recoveryParam mismatch _vs","signature",t),i[0]&=127;const h=Xt(i);e.s==null?e.s=h:e.s!==h&&zt.throwArgumentError("signature v mismatch _vs","signature",t)}if(e.recoveryParam==null)e.v==null?zt.throwArgumentError("signature missing v and recoveryParam","signature",t):e.v===0||e.v===1?e.recoveryParam=e.v:e.recoveryParam=1-e.v%2;else if(e.v==null)e.v=27+e.recoveryParam;else{const i=e.v===0||e.v===1?e.v:1-e.v%2;e.recoveryParam!==i&&zt.throwArgumentError("signature recoveryParam mismatch v","signature",t)}e.r==null||!ne(e.r)?zt.throwArgumentError("signature missing or invalid r","signature",t):e.r=me(e.r,32),e.s==null||!ne(e.s)?zt.throwArgumentError("signature missing or invalid s","signature",t):e.s=me(e.s,32);const r=Kt(e.s);r[0]>=128&&zt.throwArgumentError("signature s out of range","signature",t),e.recoveryParam&&(r[0]|=128);const n=Xt(r);e._vs&&(ne(e._vs)||zt.throwArgumentError("signature invalid _vs","signature",t),e._vs=me(e._vs,32)),e._vs==null?e._vs=n:e._vs!==n&&zt.throwArgumentError("signature _vs mismatch v and s","signature",t)}return e.yParityAndS=e._vs,e.compact=e.r+e.yParityAndS.substring(2),e}function Gn(t){return"0x"+fu.keccak_256(Kt(t))}var Zf={exports:{}},du={},vu=Object.freeze({__proto__:null,default:du}),ta=df(vu);(function(t){(function(e,r){function n(E,a){if(!E)throw new Error(a||"Assertion failed")}function i(E,a){E.super_=a;var u=function(){};u.prototype=a.prototype,E.prototype=new u,E.prototype.constructor=E}function f(E,a,u){if(f.isBN(E))return E;this.negative=0,this.words=null,this.length=0,this.red=null,E!==null&&((a==="le"||a==="be")&&(u=a,a=10),this._init(E||0,a||10,u||"be"))}typeof e=="object"?e.exports=f:r.BN=f,f.BN=f,f.wordSize=26;var h;try{typeof window<"u"&&typeof window.Buffer<"u"?h=window.Buffer:h=ta.Buffer}catch{}f.isBN=function(a){return a instanceof f?!0:a!==null&&typeof a=="object"&&a.constructor.wordSize===f.wordSize&&Array.isArray(a.words)},f.max=function(a,u){return a.cmp(u)>0?a:u},f.min=function(a,u){return a.cmp(u)<0?a:u},f.prototype._init=function(a,u,p){if(typeof a=="number")return this._initNumber(a,u,p);if(typeof a=="object")return this._initArray(a,u,p);u==="hex"&&(u=16),n(u===(u|0)&&u>=2&&u<=36),a=a.toString().replace(/\s+/g,"");var b=0;a[0]==="-"&&(b++,this.negative=1),b=0;b-=3)C=a[b]|a[b-1]<<8|a[b-2]<<16,this.words[A]|=C<>>26-R&67108863,R+=24,R>=26&&(R-=26,A++);else if(p==="le")for(b=0,A=0;b>>26-R&67108863,R+=24,R>=26&&(R-=26,A++);return this._strip()};function c(E,a){var u=E.charCodeAt(a);if(u>=48&&u<=57)return u-48;if(u>=65&&u<=70)return u-55;if(u>=97&&u<=102)return u-87;n(!1,"Invalid character in "+E)}function d(E,a,u){var p=c(E,u);return u-1>=a&&(p|=c(E,u-1)<<4),p}f.prototype._parseHex=function(a,u,p){this.length=Math.ceil((a.length-u)/6),this.words=new Array(this.length);for(var b=0;b=u;b-=2)R=d(a,u,b)<=18?(A-=18,C+=1,this.words[C]|=R>>>26):A+=8;else{var y=a.length-u;for(b=y%2===0?u+1:u;b=18?(A-=18,C+=1,this.words[C]|=R>>>26):A+=8}this._strip()};function v(E,a,u,p){for(var b=0,A=0,C=Math.min(E.length,u),R=a;R=49?A=y-49+10:y>=17?A=y-17+10:A=y,n(y>=0&&A1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},f.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{f.prototype[Symbol.for("nodejs.util.inspect.custom")]=m}catch{f.prototype.inspect=m}else f.prototype.inspect=m;function m(){return(this.red?""}var D=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],S=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],O=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];f.prototype.toString=function(a,u){a=a||10,u=u|0||1;var p;if(a===16||a==="hex"){p="";for(var b=0,A=0,C=0;C>>24-b&16777215,b+=2,b>=26&&(b-=26,C--),A!==0||C!==this.length-1?p=D[6-y.length]+y+p:p=y+p}for(A!==0&&(p=A.toString(16)+p);p.length%u!==0;)p="0"+p;return this.negative!==0&&(p="-"+p),p}if(a===(a|0)&&a>=2&&a<=36){var o=S[a],w=O[a];p="";var V=this.clone();for(V.negative=0;!V.isZero();){var l=V.modrn(w).toString(a);V=V.idivn(w),V.isZero()?p=l+p:p=D[o-l.length]+l+p}for(this.isZero()&&(p="0"+p);p.length%u!==0;)p="0"+p;return this.negative!==0&&(p="-"+p),p}n(!1,"Base should be between 2 and 36")},f.prototype.toNumber=function(){var a=this.words[0];return this.length===2?a+=this.words[1]*67108864:this.length===3&&this.words[2]===1?a+=4503599627370496+this.words[1]*67108864:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-a:a},f.prototype.toJSON=function(){return this.toString(16,2)},h&&(f.prototype.toBuffer=function(a,u){return this.toArrayLike(h,a,u)}),f.prototype.toArray=function(a,u){return this.toArrayLike(Array,a,u)};var T=function(a,u){return a.allocUnsafe?a.allocUnsafe(u):new a(u)};f.prototype.toArrayLike=function(a,u,p){this._strip();var b=this.byteLength(),A=p||Math.max(1,b);n(b<=A,"byte array longer than desired length"),n(A>0,"Requested array length <= 0");var C=T(a,A),R=u==="le"?"LE":"BE";return this["_toArrayLike"+R](C,b),C},f.prototype._toArrayLikeLE=function(a,u){for(var p=0,b=0,A=0,C=0;A>8&255),p>16&255),C===6?(p>24&255),b=0,C=0):(b=R>>>24,C+=2)}if(p=0&&(a[p--]=R>>8&255),p>=0&&(a[p--]=R>>16&255),C===6?(p>=0&&(a[p--]=R>>24&255),b=0,C=0):(b=R>>>24,C+=2)}if(p>=0)for(a[p--]=b;p>=0;)a[p--]=0},Math.clz32?f.prototype._countBits=function(a){return 32-Math.clz32(a)}:f.prototype._countBits=function(a){var u=a,p=0;return u>=4096&&(p+=13,u>>>=13),u>=64&&(p+=7,u>>>=7),u>=8&&(p+=4,u>>>=4),u>=2&&(p+=2,u>>>=2),p+u},f.prototype._zeroBits=function(a){if(a===0)return 26;var u=a,p=0;return u&8191||(p+=13,u>>>=13),u&127||(p+=7,u>>>=7),u&15||(p+=4,u>>>=4),u&3||(p+=2,u>>>=2),u&1||p++,p},f.prototype.bitLength=function(){var a=this.words[this.length-1],u=this._countBits(a);return(this.length-1)*26+u};function P(E){for(var a=new Array(E.bitLength()),u=0;u>>b&1}return a}f.prototype.zeroBits=function(){if(this.isZero())return 0;for(var a=0,u=0;ua.length?this.clone().ior(a):a.clone().ior(this)},f.prototype.uor=function(a){return this.length>a.length?this.clone().iuor(a):a.clone().iuor(this)},f.prototype.iuand=function(a){var u;this.length>a.length?u=a:u=this;for(var p=0;pa.length?this.clone().iand(a):a.clone().iand(this)},f.prototype.uand=function(a){return this.length>a.length?this.clone().iuand(a):a.clone().iuand(this)},f.prototype.iuxor=function(a){var u,p;this.length>a.length?(u=this,p=a):(u=a,p=this);for(var b=0;ba.length?this.clone().ixor(a):a.clone().ixor(this)},f.prototype.uxor=function(a){return this.length>a.length?this.clone().iuxor(a):a.clone().iuxor(this)},f.prototype.inotn=function(a){n(typeof a=="number"&&a>=0);var u=Math.ceil(a/26)|0,p=a%26;this._expand(u),p>0&&u--;for(var b=0;b0&&(this.words[b]=~this.words[b]&67108863>>26-p),this._strip()},f.prototype.notn=function(a){return this.clone().inotn(a)},f.prototype.setn=function(a,u){n(typeof a=="number"&&a>=0);var p=a/26|0,b=a%26;return this._expand(p+1),u?this.words[p]=this.words[p]|1<a.length?(p=this,b=a):(p=a,b=this);for(var A=0,C=0;C>>26;for(;A!==0&&C>>26;if(this.length=p.length,A!==0)this.words[this.length]=A,this.length++;else if(p!==this)for(;Ca.length?this.clone().iadd(a):a.clone().iadd(this)},f.prototype.isub=function(a){if(a.negative!==0){a.negative=0;var u=this.iadd(a);return a.negative=1,u._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(a),this.negative=1,this._normSign();var p=this.cmp(a);if(p===0)return this.negative=0,this.length=1,this.words[0]=0,this;var b,A;p>0?(b=this,A=a):(b=a,A=this);for(var C=0,R=0;R>26,this.words[R]=u&67108863;for(;C!==0&&R>26,this.words[R]=u&67108863;if(C===0&&R>>26,V=y&67108863,l=Math.min(o,a.length-1),F=Math.max(0,o-E.length+1);F<=l;F++){var L=o-F|0;b=E.words[L]|0,A=a.words[F]|0,C=b*A+V,w+=C/67108864|0,V=C&67108863}u.words[o]=V|0,y=w|0}return y!==0?u.words[o]=y|0:u.length--,u._strip()}var I=function(a,u,p){var b=a.words,A=u.words,C=p.words,R=0,y,o,w,V=b[0]|0,l=V&8191,F=V>>>13,L=b[1]|0,H=L&8191,k=L>>>13,Y=b[2]|0,z=Y&8191,K=Y>>>13,X=b[3]|0,Q=X&8191,$=X>>>13,ae=b[4]|0,pt=ae&8191,gt=ae>>>13,Oe=b[5]|0,tt=Oe&8191,et=Oe>>>13,Lt=b[6]|0,rt=Lt&8191,nt=Lt>>>13,Ht=b[7]|0,it=Ht&8191,ft=Ht>>>13,kt=b[8]|0,at=kt&8191,ot=kt>>>13,jt=b[9]|0,st=jt&8191,ut=jt>>>13,qt=A[0]|0,ht=qt&8191,wt=qt>>>13,fr=A[1]|0,At=fr&8191,yt=fr>>>13,ar=A[2]|0,Et=ar&8191,_t=ar>>>13,or=A[3]|0,Dt=or&8191,St=or>>>13,sr=A[4]|0,Mt=sr&8191,xt=sr>>>13,ur=A[5]|0,Nt=ur&8191,Ct=ur>>>13,hr=A[6]|0,Ot=hr&8191,It=hr>>>13,cr=A[7]|0,Bt=cr&8191,Rt=cr>>>13,lr=A[8]|0,Ft=lr&8191,Ut=lr>>>13,dr=A[9]|0,Tt=dr&8191,Pt=dr>>>13;p.negative=a.negative^u.negative,p.length=19,y=Math.imul(l,ht),o=Math.imul(l,wt),o=o+Math.imul(F,ht)|0,w=Math.imul(F,wt);var Ve=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Ve>>>26)|0,Ve&=67108863,y=Math.imul(H,ht),o=Math.imul(H,wt),o=o+Math.imul(k,ht)|0,w=Math.imul(k,wt),y=y+Math.imul(l,At)|0,o=o+Math.imul(l,yt)|0,o=o+Math.imul(F,At)|0,w=w+Math.imul(F,yt)|0;var Ye=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Ye>>>26)|0,Ye&=67108863,y=Math.imul(z,ht),o=Math.imul(z,wt),o=o+Math.imul(K,ht)|0,w=Math.imul(K,wt),y=y+Math.imul(H,At)|0,o=o+Math.imul(H,yt)|0,o=o+Math.imul(k,At)|0,w=w+Math.imul(k,yt)|0,y=y+Math.imul(l,Et)|0,o=o+Math.imul(l,_t)|0,o=o+Math.imul(F,Et)|0,w=w+Math.imul(F,_t)|0;var Ge=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Ge>>>26)|0,Ge&=67108863,y=Math.imul(Q,ht),o=Math.imul(Q,wt),o=o+Math.imul($,ht)|0,w=Math.imul($,wt),y=y+Math.imul(z,At)|0,o=o+Math.imul(z,yt)|0,o=o+Math.imul(K,At)|0,w=w+Math.imul(K,yt)|0,y=y+Math.imul(H,Et)|0,o=o+Math.imul(H,_t)|0,o=o+Math.imul(k,Et)|0,w=w+Math.imul(k,_t)|0,y=y+Math.imul(l,Dt)|0,o=o+Math.imul(l,St)|0,o=o+Math.imul(F,Dt)|0,w=w+Math.imul(F,St)|0;var We=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(We>>>26)|0,We&=67108863,y=Math.imul(pt,ht),o=Math.imul(pt,wt),o=o+Math.imul(gt,ht)|0,w=Math.imul(gt,wt),y=y+Math.imul(Q,At)|0,o=o+Math.imul(Q,yt)|0,o=o+Math.imul($,At)|0,w=w+Math.imul($,yt)|0,y=y+Math.imul(z,Et)|0,o=o+Math.imul(z,_t)|0,o=o+Math.imul(K,Et)|0,w=w+Math.imul(K,_t)|0,y=y+Math.imul(H,Dt)|0,o=o+Math.imul(H,St)|0,o=o+Math.imul(k,Dt)|0,w=w+Math.imul(k,St)|0,y=y+Math.imul(l,Mt)|0,o=o+Math.imul(l,xt)|0,o=o+Math.imul(F,Mt)|0,w=w+Math.imul(F,xt)|0;var Qe=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Qe>>>26)|0,Qe&=67108863,y=Math.imul(tt,ht),o=Math.imul(tt,wt),o=o+Math.imul(et,ht)|0,w=Math.imul(et,wt),y=y+Math.imul(pt,At)|0,o=o+Math.imul(pt,yt)|0,o=o+Math.imul(gt,At)|0,w=w+Math.imul(gt,yt)|0,y=y+Math.imul(Q,Et)|0,o=o+Math.imul(Q,_t)|0,o=o+Math.imul($,Et)|0,w=w+Math.imul($,_t)|0,y=y+Math.imul(z,Dt)|0,o=o+Math.imul(z,St)|0,o=o+Math.imul(K,Dt)|0,w=w+Math.imul(K,St)|0,y=y+Math.imul(H,Mt)|0,o=o+Math.imul(H,xt)|0,o=o+Math.imul(k,Mt)|0,w=w+Math.imul(k,xt)|0,y=y+Math.imul(l,Nt)|0,o=o+Math.imul(l,Ct)|0,o=o+Math.imul(F,Nt)|0,w=w+Math.imul(F,Ct)|0;var ji=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(ji>>>26)|0,ji&=67108863,y=Math.imul(rt,ht),o=Math.imul(rt,wt),o=o+Math.imul(nt,ht)|0,w=Math.imul(nt,wt),y=y+Math.imul(tt,At)|0,o=o+Math.imul(tt,yt)|0,o=o+Math.imul(et,At)|0,w=w+Math.imul(et,yt)|0,y=y+Math.imul(pt,Et)|0,o=o+Math.imul(pt,_t)|0,o=o+Math.imul(gt,Et)|0,w=w+Math.imul(gt,_t)|0,y=y+Math.imul(Q,Dt)|0,o=o+Math.imul(Q,St)|0,o=o+Math.imul($,Dt)|0,w=w+Math.imul($,St)|0,y=y+Math.imul(z,Mt)|0,o=o+Math.imul(z,xt)|0,o=o+Math.imul(K,Mt)|0,w=w+Math.imul(K,xt)|0,y=y+Math.imul(H,Nt)|0,o=o+Math.imul(H,Ct)|0,o=o+Math.imul(k,Nt)|0,w=w+Math.imul(k,Ct)|0,y=y+Math.imul(l,Ot)|0,o=o+Math.imul(l,It)|0,o=o+Math.imul(F,Ot)|0,w=w+Math.imul(F,It)|0;var qi=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(qi>>>26)|0,qi&=67108863,y=Math.imul(it,ht),o=Math.imul(it,wt),o=o+Math.imul(ft,ht)|0,w=Math.imul(ft,wt),y=y+Math.imul(rt,At)|0,o=o+Math.imul(rt,yt)|0,o=o+Math.imul(nt,At)|0,w=w+Math.imul(nt,yt)|0,y=y+Math.imul(tt,Et)|0,o=o+Math.imul(tt,_t)|0,o=o+Math.imul(et,Et)|0,w=w+Math.imul(et,_t)|0,y=y+Math.imul(pt,Dt)|0,o=o+Math.imul(pt,St)|0,o=o+Math.imul(gt,Dt)|0,w=w+Math.imul(gt,St)|0,y=y+Math.imul(Q,Mt)|0,o=o+Math.imul(Q,xt)|0,o=o+Math.imul($,Mt)|0,w=w+Math.imul($,xt)|0,y=y+Math.imul(z,Nt)|0,o=o+Math.imul(z,Ct)|0,o=o+Math.imul(K,Nt)|0,w=w+Math.imul(K,Ct)|0,y=y+Math.imul(H,Ot)|0,o=o+Math.imul(H,It)|0,o=o+Math.imul(k,Ot)|0,w=w+Math.imul(k,It)|0,y=y+Math.imul(l,Bt)|0,o=o+Math.imul(l,Rt)|0,o=o+Math.imul(F,Bt)|0,w=w+Math.imul(F,Rt)|0;var Ki=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Ki>>>26)|0,Ki&=67108863,y=Math.imul(at,ht),o=Math.imul(at,wt),o=o+Math.imul(ot,ht)|0,w=Math.imul(ot,wt),y=y+Math.imul(it,At)|0,o=o+Math.imul(it,yt)|0,o=o+Math.imul(ft,At)|0,w=w+Math.imul(ft,yt)|0,y=y+Math.imul(rt,Et)|0,o=o+Math.imul(rt,_t)|0,o=o+Math.imul(nt,Et)|0,w=w+Math.imul(nt,_t)|0,y=y+Math.imul(tt,Dt)|0,o=o+Math.imul(tt,St)|0,o=o+Math.imul(et,Dt)|0,w=w+Math.imul(et,St)|0,y=y+Math.imul(pt,Mt)|0,o=o+Math.imul(pt,xt)|0,o=o+Math.imul(gt,Mt)|0,w=w+Math.imul(gt,xt)|0,y=y+Math.imul(Q,Nt)|0,o=o+Math.imul(Q,Ct)|0,o=o+Math.imul($,Nt)|0,w=w+Math.imul($,Ct)|0,y=y+Math.imul(z,Ot)|0,o=o+Math.imul(z,It)|0,o=o+Math.imul(K,Ot)|0,w=w+Math.imul(K,It)|0,y=y+Math.imul(H,Bt)|0,o=o+Math.imul(H,Rt)|0,o=o+Math.imul(k,Bt)|0,w=w+Math.imul(k,Rt)|0,y=y+Math.imul(l,Ft)|0,o=o+Math.imul(l,Ut)|0,o=o+Math.imul(F,Ft)|0,w=w+Math.imul(F,Ut)|0;var zi=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(zi>>>26)|0,zi&=67108863,y=Math.imul(st,ht),o=Math.imul(st,wt),o=o+Math.imul(ut,ht)|0,w=Math.imul(ut,wt),y=y+Math.imul(at,At)|0,o=o+Math.imul(at,yt)|0,o=o+Math.imul(ot,At)|0,w=w+Math.imul(ot,yt)|0,y=y+Math.imul(it,Et)|0,o=o+Math.imul(it,_t)|0,o=o+Math.imul(ft,Et)|0,w=w+Math.imul(ft,_t)|0,y=y+Math.imul(rt,Dt)|0,o=o+Math.imul(rt,St)|0,o=o+Math.imul(nt,Dt)|0,w=w+Math.imul(nt,St)|0,y=y+Math.imul(tt,Mt)|0,o=o+Math.imul(tt,xt)|0,o=o+Math.imul(et,Mt)|0,w=w+Math.imul(et,xt)|0,y=y+Math.imul(pt,Nt)|0,o=o+Math.imul(pt,Ct)|0,o=o+Math.imul(gt,Nt)|0,w=w+Math.imul(gt,Ct)|0,y=y+Math.imul(Q,Ot)|0,o=o+Math.imul(Q,It)|0,o=o+Math.imul($,Ot)|0,w=w+Math.imul($,It)|0,y=y+Math.imul(z,Bt)|0,o=o+Math.imul(z,Rt)|0,o=o+Math.imul(K,Bt)|0,w=w+Math.imul(K,Rt)|0,y=y+Math.imul(H,Ft)|0,o=o+Math.imul(H,Ut)|0,o=o+Math.imul(k,Ft)|0,w=w+Math.imul(k,Ut)|0,y=y+Math.imul(l,Tt)|0,o=o+Math.imul(l,Pt)|0,o=o+Math.imul(F,Tt)|0,w=w+Math.imul(F,Pt)|0;var Vi=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Vi>>>26)|0,Vi&=67108863,y=Math.imul(st,At),o=Math.imul(st,yt),o=o+Math.imul(ut,At)|0,w=Math.imul(ut,yt),y=y+Math.imul(at,Et)|0,o=o+Math.imul(at,_t)|0,o=o+Math.imul(ot,Et)|0,w=w+Math.imul(ot,_t)|0,y=y+Math.imul(it,Dt)|0,o=o+Math.imul(it,St)|0,o=o+Math.imul(ft,Dt)|0,w=w+Math.imul(ft,St)|0,y=y+Math.imul(rt,Mt)|0,o=o+Math.imul(rt,xt)|0,o=o+Math.imul(nt,Mt)|0,w=w+Math.imul(nt,xt)|0,y=y+Math.imul(tt,Nt)|0,o=o+Math.imul(tt,Ct)|0,o=o+Math.imul(et,Nt)|0,w=w+Math.imul(et,Ct)|0,y=y+Math.imul(pt,Ot)|0,o=o+Math.imul(pt,It)|0,o=o+Math.imul(gt,Ot)|0,w=w+Math.imul(gt,It)|0,y=y+Math.imul(Q,Bt)|0,o=o+Math.imul(Q,Rt)|0,o=o+Math.imul($,Bt)|0,w=w+Math.imul($,Rt)|0,y=y+Math.imul(z,Ft)|0,o=o+Math.imul(z,Ut)|0,o=o+Math.imul(K,Ft)|0,w=w+Math.imul(K,Ut)|0,y=y+Math.imul(H,Tt)|0,o=o+Math.imul(H,Pt)|0,o=o+Math.imul(k,Tt)|0,w=w+Math.imul(k,Pt)|0;var Yi=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Yi>>>26)|0,Yi&=67108863,y=Math.imul(st,Et),o=Math.imul(st,_t),o=o+Math.imul(ut,Et)|0,w=Math.imul(ut,_t),y=y+Math.imul(at,Dt)|0,o=o+Math.imul(at,St)|0,o=o+Math.imul(ot,Dt)|0,w=w+Math.imul(ot,St)|0,y=y+Math.imul(it,Mt)|0,o=o+Math.imul(it,xt)|0,o=o+Math.imul(ft,Mt)|0,w=w+Math.imul(ft,xt)|0,y=y+Math.imul(rt,Nt)|0,o=o+Math.imul(rt,Ct)|0,o=o+Math.imul(nt,Nt)|0,w=w+Math.imul(nt,Ct)|0,y=y+Math.imul(tt,Ot)|0,o=o+Math.imul(tt,It)|0,o=o+Math.imul(et,Ot)|0,w=w+Math.imul(et,It)|0,y=y+Math.imul(pt,Bt)|0,o=o+Math.imul(pt,Rt)|0,o=o+Math.imul(gt,Bt)|0,w=w+Math.imul(gt,Rt)|0,y=y+Math.imul(Q,Ft)|0,o=o+Math.imul(Q,Ut)|0,o=o+Math.imul($,Ft)|0,w=w+Math.imul($,Ut)|0,y=y+Math.imul(z,Tt)|0,o=o+Math.imul(z,Pt)|0,o=o+Math.imul(K,Tt)|0,w=w+Math.imul(K,Pt)|0;var Gi=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Gi>>>26)|0,Gi&=67108863,y=Math.imul(st,Dt),o=Math.imul(st,St),o=o+Math.imul(ut,Dt)|0,w=Math.imul(ut,St),y=y+Math.imul(at,Mt)|0,o=o+Math.imul(at,xt)|0,o=o+Math.imul(ot,Mt)|0,w=w+Math.imul(ot,xt)|0,y=y+Math.imul(it,Nt)|0,o=o+Math.imul(it,Ct)|0,o=o+Math.imul(ft,Nt)|0,w=w+Math.imul(ft,Ct)|0,y=y+Math.imul(rt,Ot)|0,o=o+Math.imul(rt,It)|0,o=o+Math.imul(nt,Ot)|0,w=w+Math.imul(nt,It)|0,y=y+Math.imul(tt,Bt)|0,o=o+Math.imul(tt,Rt)|0,o=o+Math.imul(et,Bt)|0,w=w+Math.imul(et,Rt)|0,y=y+Math.imul(pt,Ft)|0,o=o+Math.imul(pt,Ut)|0,o=o+Math.imul(gt,Ft)|0,w=w+Math.imul(gt,Ut)|0,y=y+Math.imul(Q,Tt)|0,o=o+Math.imul(Q,Pt)|0,o=o+Math.imul($,Tt)|0,w=w+Math.imul($,Pt)|0;var Wi=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Wi>>>26)|0,Wi&=67108863,y=Math.imul(st,Mt),o=Math.imul(st,xt),o=o+Math.imul(ut,Mt)|0,w=Math.imul(ut,xt),y=y+Math.imul(at,Nt)|0,o=o+Math.imul(at,Ct)|0,o=o+Math.imul(ot,Nt)|0,w=w+Math.imul(ot,Ct)|0,y=y+Math.imul(it,Ot)|0,o=o+Math.imul(it,It)|0,o=o+Math.imul(ft,Ot)|0,w=w+Math.imul(ft,It)|0,y=y+Math.imul(rt,Bt)|0,o=o+Math.imul(rt,Rt)|0,o=o+Math.imul(nt,Bt)|0,w=w+Math.imul(nt,Rt)|0,y=y+Math.imul(tt,Ft)|0,o=o+Math.imul(tt,Ut)|0,o=o+Math.imul(et,Ft)|0,w=w+Math.imul(et,Ut)|0,y=y+Math.imul(pt,Tt)|0,o=o+Math.imul(pt,Pt)|0,o=o+Math.imul(gt,Tt)|0,w=w+Math.imul(gt,Pt)|0;var Qi=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Qi>>>26)|0,Qi&=67108863,y=Math.imul(st,Nt),o=Math.imul(st,Ct),o=o+Math.imul(ut,Nt)|0,w=Math.imul(ut,Ct),y=y+Math.imul(at,Ot)|0,o=o+Math.imul(at,It)|0,o=o+Math.imul(ot,Ot)|0,w=w+Math.imul(ot,It)|0,y=y+Math.imul(it,Bt)|0,o=o+Math.imul(it,Rt)|0,o=o+Math.imul(ft,Bt)|0,w=w+Math.imul(ft,Rt)|0,y=y+Math.imul(rt,Ft)|0,o=o+Math.imul(rt,Ut)|0,o=o+Math.imul(nt,Ft)|0,w=w+Math.imul(nt,Ut)|0,y=y+Math.imul(tt,Tt)|0,o=o+Math.imul(tt,Pt)|0,o=o+Math.imul(et,Tt)|0,w=w+Math.imul(et,Pt)|0;var Ji=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Ji>>>26)|0,Ji&=67108863,y=Math.imul(st,Ot),o=Math.imul(st,It),o=o+Math.imul(ut,Ot)|0,w=Math.imul(ut,It),y=y+Math.imul(at,Bt)|0,o=o+Math.imul(at,Rt)|0,o=o+Math.imul(ot,Bt)|0,w=w+Math.imul(ot,Rt)|0,y=y+Math.imul(it,Ft)|0,o=o+Math.imul(it,Ut)|0,o=o+Math.imul(ft,Ft)|0,w=w+Math.imul(ft,Ut)|0,y=y+Math.imul(rt,Tt)|0,o=o+Math.imul(rt,Pt)|0,o=o+Math.imul(nt,Tt)|0,w=w+Math.imul(nt,Pt)|0;var $i=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+($i>>>26)|0,$i&=67108863,y=Math.imul(st,Bt),o=Math.imul(st,Rt),o=o+Math.imul(ut,Bt)|0,w=Math.imul(ut,Rt),y=y+Math.imul(at,Ft)|0,o=o+Math.imul(at,Ut)|0,o=o+Math.imul(ot,Ft)|0,w=w+Math.imul(ot,Ut)|0,y=y+Math.imul(it,Tt)|0,o=o+Math.imul(it,Pt)|0,o=o+Math.imul(ft,Tt)|0,w=w+Math.imul(ft,Pt)|0;var Xi=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Xi>>>26)|0,Xi&=67108863,y=Math.imul(st,Ft),o=Math.imul(st,Ut),o=o+Math.imul(ut,Ft)|0,w=Math.imul(ut,Ut),y=y+Math.imul(at,Tt)|0,o=o+Math.imul(at,Pt)|0,o=o+Math.imul(ot,Tt)|0,w=w+Math.imul(ot,Pt)|0;var Zi=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Zi>>>26)|0,Zi&=67108863,y=Math.imul(st,Tt),o=Math.imul(st,Pt),o=o+Math.imul(ut,Tt)|0,w=Math.imul(ut,Pt);var tf=(R+y|0)+((o&8191)<<13)|0;return R=(w+(o>>>13)|0)+(tf>>>26)|0,tf&=67108863,C[0]=Ve,C[1]=Ye,C[2]=Ge,C[3]=We,C[4]=Qe,C[5]=ji,C[6]=qi,C[7]=Ki,C[8]=zi,C[9]=Vi,C[10]=Yi,C[11]=Gi,C[12]=Wi,C[13]=Qi,C[14]=Ji,C[15]=$i,C[16]=Xi,C[17]=Zi,C[18]=tf,R!==0&&(C[19]=R,p.length++),p};Math.imul||(I=j);function U(E,a,u){u.negative=a.negative^E.negative,u.length=E.length+a.length;for(var p=0,b=0,A=0;A>>26)|0,b+=C>>>26,C&=67108863}u.words[A]=R,p=C,C=b}return p!==0?u.words[A]=p:u.length--,u._strip()}function M(E,a,u){return U(E,a,u)}f.prototype.mulTo=function(a,u){var p,b=this.length+a.length;return this.length===10&&a.length===10?p=I(this,a,u):b<63?p=j(this,a,u):b<1024?p=U(this,a,u):p=M(this,a,u),p},f.prototype.mul=function(a){var u=new f(null);return u.words=new Array(this.length+a.length),this.mulTo(a,u)},f.prototype.mulf=function(a){var u=new f(null);return u.words=new Array(this.length+a.length),M(this,a,u)},f.prototype.imul=function(a){return this.clone().mulTo(a,this)},f.prototype.imuln=function(a){var u=a<0;u&&(a=-a),n(typeof a=="number"),n(a<67108864);for(var p=0,b=0;b>=26,p+=A/67108864|0,p+=C>>>26,this.words[b]=C&67108863}return p!==0&&(this.words[b]=p,this.length++),u?this.ineg():this},f.prototype.muln=function(a){return this.clone().imuln(a)},f.prototype.sqr=function(){return this.mul(this)},f.prototype.isqr=function(){return this.imul(this.clone())},f.prototype.pow=function(a){var u=P(a);if(u.length===0)return new f(1);for(var p=this,b=0;b=0);var u=a%26,p=(a-u)/26,b=67108863>>>26-u<<26-u,A;if(u!==0){var C=0;for(A=0;A>>26-u}C&&(this.words[A]=C,this.length++)}if(p!==0){for(A=this.length-1;A>=0;A--)this.words[A+p]=this.words[A];for(A=0;A=0);var b;u?b=(u-u%26)/26:b=0;var A=a%26,C=Math.min((a-A)/26,this.length),R=67108863^67108863>>>A<C)for(this.length-=C,o=0;o=0&&(w!==0||o>=b);o--){var V=this.words[o]|0;this.words[o]=w<<26-A|V>>>A,w=V&R}return y&&w!==0&&(y.words[y.length++]=w),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},f.prototype.ishrn=function(a,u,p){return n(this.negative===0),this.iushrn(a,u,p)},f.prototype.shln=function(a){return this.clone().ishln(a)},f.prototype.ushln=function(a){return this.clone().iushln(a)},f.prototype.shrn=function(a){return this.clone().ishrn(a)},f.prototype.ushrn=function(a){return this.clone().iushrn(a)},f.prototype.testn=function(a){n(typeof a=="number"&&a>=0);var u=a%26,p=(a-u)/26,b=1<=0);var u=a%26,p=(a-u)/26;if(n(this.negative===0,"imaskn works only with positive numbers"),this.length<=p)return this;if(u!==0&&p++,this.length=Math.min(p,this.length),u!==0){var b=67108863^67108863>>>u<=67108864;u++)this.words[u]-=67108864,u===this.length-1?this.words[u+1]=1:this.words[u+1]++;return this.length=Math.max(this.length,u+1),this},f.prototype.isubn=function(a){if(n(typeof a=="number"),n(a<67108864),a<0)return this.iaddn(-a);if(this.negative!==0)return this.negative=0,this.iaddn(a),this.negative=1,this;if(this.words[0]-=a,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var u=0;u>26)-(y/67108864|0),this.words[A+p]=C&67108863}for(;A>26,this.words[A+p]=C&67108863;if(R===0)return this._strip();for(n(R===-1),R=0,A=0;A>26,this.words[A]=C&67108863;return this.negative=1,this._strip()},f.prototype._wordDiv=function(a,u){var p=this.length-a.length,b=this.clone(),A=a,C=A.words[A.length-1]|0,R=this._countBits(C);p=26-R,p!==0&&(A=A.ushln(p),b.iushln(p),C=A.words[A.length-1]|0);var y=b.length-A.length,o;if(u!=="mod"){o=new f(null),o.length=y+1,o.words=new Array(o.length);for(var w=0;w=0;l--){var F=(b.words[A.length+l]|0)*67108864+(b.words[A.length+l-1]|0);for(F=Math.min(F/C|0,67108863),b._ishlnsubmul(A,F,l);b.negative!==0;)F--,b.negative=0,b._ishlnsubmul(A,1,l),b.isZero()||(b.negative^=1);o&&(o.words[l]=F)}return o&&o._strip(),b._strip(),u!=="div"&&p!==0&&b.iushrn(p),{div:o||null,mod:b}},f.prototype.divmod=function(a,u,p){if(n(!a.isZero()),this.isZero())return{div:new f(0),mod:new f(0)};var b,A,C;return this.negative!==0&&a.negative===0?(C=this.neg().divmod(a,u),u!=="mod"&&(b=C.div.neg()),u!=="div"&&(A=C.mod.neg(),p&&A.negative!==0&&A.iadd(a)),{div:b,mod:A}):this.negative===0&&a.negative!==0?(C=this.divmod(a.neg(),u),u!=="mod"&&(b=C.div.neg()),{div:b,mod:C.mod}):this.negative&a.negative?(C=this.neg().divmod(a.neg(),u),u!=="div"&&(A=C.mod.neg(),p&&A.negative!==0&&A.isub(a)),{div:C.div,mod:A}):a.length>this.length||this.cmp(a)<0?{div:new f(0),mod:this}:a.length===1?u==="div"?{div:this.divn(a.words[0]),mod:null}:u==="mod"?{div:null,mod:new f(this.modrn(a.words[0]))}:{div:this.divn(a.words[0]),mod:new f(this.modrn(a.words[0]))}:this._wordDiv(a,u)},f.prototype.div=function(a){return this.divmod(a,"div",!1).div},f.prototype.mod=function(a){return this.divmod(a,"mod",!1).mod},f.prototype.umod=function(a){return this.divmod(a,"mod",!0).mod},f.prototype.divRound=function(a){var u=this.divmod(a);if(u.mod.isZero())return u.div;var p=u.div.negative!==0?u.mod.isub(a):u.mod,b=a.ushrn(1),A=a.andln(1),C=p.cmp(b);return C<0||A===1&&C===0?u.div:u.div.negative!==0?u.div.isubn(1):u.div.iaddn(1)},f.prototype.modrn=function(a){var u=a<0;u&&(a=-a),n(a<=67108863);for(var p=(1<<26)%a,b=0,A=this.length-1;A>=0;A--)b=(p*b+(this.words[A]|0))%a;return u?-b:b},f.prototype.modn=function(a){return this.modrn(a)},f.prototype.idivn=function(a){var u=a<0;u&&(a=-a),n(a<=67108863);for(var p=0,b=this.length-1;b>=0;b--){var A=(this.words[b]|0)+p*67108864;this.words[b]=A/a|0,p=A%a}return this._strip(),u?this.ineg():this},f.prototype.divn=function(a){return this.clone().idivn(a)},f.prototype.egcd=function(a){n(a.negative===0),n(!a.isZero());var u=this,p=a.clone();u.negative!==0?u=u.umod(a):u=u.clone();for(var b=new f(1),A=new f(0),C=new f(0),R=new f(1),y=0;u.isEven()&&p.isEven();)u.iushrn(1),p.iushrn(1),++y;for(var o=p.clone(),w=u.clone();!u.isZero();){for(var V=0,l=1;!(u.words[0]&l)&&V<26;++V,l<<=1);if(V>0)for(u.iushrn(V);V-- >0;)(b.isOdd()||A.isOdd())&&(b.iadd(o),A.isub(w)),b.iushrn(1),A.iushrn(1);for(var F=0,L=1;!(p.words[0]&L)&&F<26;++F,L<<=1);if(F>0)for(p.iushrn(F);F-- >0;)(C.isOdd()||R.isOdd())&&(C.iadd(o),R.isub(w)),C.iushrn(1),R.iushrn(1);u.cmp(p)>=0?(u.isub(p),b.isub(C),A.isub(R)):(p.isub(u),C.isub(b),R.isub(A))}return{a:C,b:R,gcd:p.iushln(y)}},f.prototype._invmp=function(a){n(a.negative===0),n(!a.isZero());var u=this,p=a.clone();u.negative!==0?u=u.umod(a):u=u.clone();for(var b=new f(1),A=new f(0),C=p.clone();u.cmpn(1)>0&&p.cmpn(1)>0;){for(var R=0,y=1;!(u.words[0]&y)&&R<26;++R,y<<=1);if(R>0)for(u.iushrn(R);R-- >0;)b.isOdd()&&b.iadd(C),b.iushrn(1);for(var o=0,w=1;!(p.words[0]&w)&&o<26;++o,w<<=1);if(o>0)for(p.iushrn(o);o-- >0;)A.isOdd()&&A.iadd(C),A.iushrn(1);u.cmp(p)>=0?(u.isub(p),b.isub(A)):(p.isub(u),A.isub(b))}var V;return u.cmpn(1)===0?V=b:V=A,V.cmpn(0)<0&&V.iadd(a),V},f.prototype.gcd=function(a){if(this.isZero())return a.abs();if(a.isZero())return this.abs();var u=this.clone(),p=a.clone();u.negative=0,p.negative=0;for(var b=0;u.isEven()&&p.isEven();b++)u.iushrn(1),p.iushrn(1);do{for(;u.isEven();)u.iushrn(1);for(;p.isEven();)p.iushrn(1);var A=u.cmp(p);if(A<0){var C=u;u=p,p=C}else if(A===0||p.cmpn(1)===0)break;u.isub(p)}while(!0);return p.iushln(b)},f.prototype.invm=function(a){return this.egcd(a).a.umod(a)},f.prototype.isEven=function(){return(this.words[0]&1)===0},f.prototype.isOdd=function(){return(this.words[0]&1)===1},f.prototype.andln=function(a){return this.words[0]&a},f.prototype.bincn=function(a){n(typeof a=="number");var u=a%26,p=(a-u)/26,b=1<>>26,R&=67108863,this.words[C]=R}return A!==0&&(this.words[C]=A,this.length++),this},f.prototype.isZero=function(){return this.length===1&&this.words[0]===0},f.prototype.cmpn=function(a){var u=a<0;if(this.negative!==0&&!u)return-1;if(this.negative===0&&u)return 1;this._strip();var p;if(this.length>1)p=1;else{u&&(a=-a),n(a<=67108863,"Number is too big");var b=this.words[0]|0;p=b===a?0:ba.length)return 1;if(this.length=0;p--){var b=this.words[p]|0,A=a.words[p]|0;if(b!==A){bA&&(u=1);break}}return u},f.prototype.gtn=function(a){return this.cmpn(a)===1},f.prototype.gt=function(a){return this.cmp(a)===1},f.prototype.gten=function(a){return this.cmpn(a)>=0},f.prototype.gte=function(a){return this.cmp(a)>=0},f.prototype.ltn=function(a){return this.cmpn(a)===-1},f.prototype.lt=function(a){return this.cmp(a)===-1},f.prototype.lten=function(a){return this.cmpn(a)<=0},f.prototype.lte=function(a){return this.cmp(a)<=0},f.prototype.eqn=function(a){return this.cmpn(a)===0},f.prototype.eq=function(a){return this.cmp(a)===0},f.red=function(a){return new W(a)},f.prototype.toRed=function(a){return n(!this.red,"Already a number in reduction context"),n(this.negative===0,"red works only with positives"),a.convertTo(this)._forceRed(a)},f.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},f.prototype._forceRed=function(a){return this.red=a,this},f.prototype.forceRed=function(a){return n(!this.red,"Already a number in reduction context"),this._forceRed(a)},f.prototype.redAdd=function(a){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,a)},f.prototype.redIAdd=function(a){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,a)},f.prototype.redSub=function(a){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,a)},f.prototype.redISub=function(a){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,a)},f.prototype.redShl=function(a){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,a)},f.prototype.redMul=function(a){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,a),this.red.mul(this,a)},f.prototype.redIMul=function(a){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,a),this.red.imul(this,a)},f.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},f.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},f.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},f.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},f.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},f.prototype.redPow=function(a){return n(this.red&&!a.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,a)};var x={k256:null,p224:null,p192:null,p25519:null};function N(E,a){this.name=E,this.p=new f(a,16),this.n=this.p.bitLength(),this.k=new f(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}N.prototype._tmp=function(){var a=new f(null);return a.words=new Array(Math.ceil(this.n/13)),a},N.prototype.ireduce=function(a){var u=a,p;do this.split(u,this.tmp),u=this.imulK(u),u=u.iadd(this.tmp),p=u.bitLength();while(p>this.n);var b=p0?u.isub(this.p):u.strip!==void 0?u.strip():u._strip(),u},N.prototype.split=function(a,u){a.iushrn(this.n,0,u)},N.prototype.imulK=function(a){return a.imul(this.k)};function s(){N.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}i(s,N),s.prototype.split=function(a,u){for(var p=4194303,b=Math.min(a.length,9),A=0;A>>22,C=R}C>>>=22,a.words[A-10]=C,C===0&&a.length>10?a.length-=10:a.length-=9},s.prototype.imulK=function(a){a.words[a.length]=0,a.words[a.length+1]=0,a.length+=2;for(var u=0,p=0;p>>=26,a.words[p]=A,u=b}return u!==0&&(a.words[a.length++]=u),a},f._prime=function(a){if(x[a])return x[a];var u;if(a==="k256")u=new s;else if(a==="p224")u=new _;else if(a==="p192")u=new q;else if(a==="p25519")u=new G;else throw new Error("Unknown prime "+a);return x[a]=u,u};function W(E){if(typeof E=="string"){var a=f._prime(E);this.m=a.p,this.prime=a}else n(E.gtn(1),"modulus must be greater than 1"),this.m=E,this.prime=null}W.prototype._verify1=function(a){n(a.negative===0,"red works only with positives"),n(a.red,"red works only with red numbers")},W.prototype._verify2=function(a,u){n((a.negative|u.negative)===0,"red works only with positives"),n(a.red&&a.red===u.red,"red works only with red numbers")},W.prototype.imod=function(a){return this.prime?this.prime.ireduce(a)._forceRed(this):(g(a,a.umod(this.m)._forceRed(this)),a)},W.prototype.neg=function(a){return a.isZero()?a.clone():this.m.sub(a)._forceRed(this)},W.prototype.add=function(a,u){this._verify2(a,u);var p=a.add(u);return p.cmp(this.m)>=0&&p.isub(this.m),p._forceRed(this)},W.prototype.iadd=function(a,u){this._verify2(a,u);var p=a.iadd(u);return p.cmp(this.m)>=0&&p.isub(this.m),p},W.prototype.sub=function(a,u){this._verify2(a,u);var p=a.sub(u);return p.cmpn(0)<0&&p.iadd(this.m),p._forceRed(this)},W.prototype.isub=function(a,u){this._verify2(a,u);var p=a.isub(u);return p.cmpn(0)<0&&p.iadd(this.m),p},W.prototype.shl=function(a,u){return this._verify1(a),this.imod(a.ushln(u))},W.prototype.imul=function(a,u){return this._verify2(a,u),this.imod(a.imul(u))},W.prototype.mul=function(a,u){return this._verify2(a,u),this.imod(a.mul(u))},W.prototype.isqr=function(a){return this.imul(a,a.clone())},W.prototype.sqr=function(a){return this.mul(a,a)},W.prototype.sqrt=function(a){if(a.isZero())return a.clone();var u=this.m.andln(3);if(n(u%2===1),u===3){var p=this.m.add(new f(1)).iushrn(2);return this.pow(a,p)}for(var b=this.m.subn(1),A=0;!b.isZero()&&b.andln(1)===0;)A++,b.iushrn(1);n(!b.isZero());var C=new f(1).toRed(this),R=C.redNeg(),y=this.m.subn(1).iushrn(1),o=this.m.bitLength();for(o=new f(2*o*o).toRed(this);this.pow(o,y).cmp(R)!==0;)o.redIAdd(R);for(var w=this.pow(o,b),V=this.pow(a,b.addn(1).iushrn(1)),l=this.pow(a,b),F=A;l.cmp(C)!==0;){for(var L=l,H=0;L.cmp(C)!==0;H++)L=L.redSqr();n(H=0;A--){for(var w=u.words[A],V=o-1;V>=0;V--){var l=w>>V&1;if(C!==b[0]&&(C=this.sqr(C)),l===0&&R===0){y=0;continue}R<<=1,R|=l,y++,!(y!==p&&(A!==0||V!==0))&&(C=this.mul(C,b[R]),y=0,R=0)}o=26}return C},W.prototype.convertTo=function(a){var u=a.umod(this.m);return u===a?u.clone():u},W.prototype.convertFrom=function(a){var u=a.clone();return u.red=null,u},f.mont=function(a){return new J(a)};function J(E){W.call(this,E),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new f(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}i(J,W),J.prototype.convertTo=function(a){return this.imod(a.ushln(this.shift))},J.prototype.convertFrom=function(a){var u=this.imod(a.mul(this.rinv));return u.red=null,u},J.prototype.imul=function(a,u){if(a.isZero()||u.isZero())return a.words[0]=0,a.length=1,a;var p=a.imul(u),b=p.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),A=p.isub(b).iushrn(this.shift),C=A;return A.cmp(this.m)>=0?C=A.isub(this.m):A.cmpn(0)<0&&(C=A.iadd(this.m)),C._forceRed(this)},J.prototype.mul=function(a,u){if(a.isZero()||u.isZero())return new f(0)._forceRed(this);var p=a.mul(u),b=p.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),A=p.isub(b).iushrn(this.shift),C=A;return A.cmp(this.m)>=0?C=A.isub(this.m):A.cmpn(0)<0&&(C=A.iadd(this.m)),C._forceRed(this)},J.prototype.invm=function(a){var u=this.imod(a._invmp(this.m).mul(this.r2));return u._forceRed(this)}})(t,lf)})(Zf);var Z=Zf.exports;const ea="bignumber/5.7.0";var $r=Z.BN;const Be=new ct(ea),Wn={},ra=9007199254740991;function pu(t){return t!=null&&(mt.isBigNumber(t)||typeof t=="number"&&t%1===0||typeof t=="string"&&!!t.match(/^-?[0-9]+$/)||ne(t)||typeof t=="bigint"||mr(t))}let na=!1;class mt{constructor(e,r){e!==Wn&&Be.throwError("cannot call constructor directly; use BigNumber.from",ct.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=r,this._isBigNumber=!0,Object.freeze(this)}fromTwos(e){return ee(dt(this).fromTwos(e))}toTwos(e){return ee(dt(this).toTwos(e))}abs(){return this._hex[0]==="-"?mt.from(this._hex.substring(1)):this}add(e){return ee(dt(this).add(dt(e)))}sub(e){return ee(dt(this).sub(dt(e)))}div(e){return mt.from(e).isZero()&&oe("division-by-zero","div"),ee(dt(this).div(dt(e)))}mul(e){return ee(dt(this).mul(dt(e)))}mod(e){const r=dt(e);return r.isNeg()&&oe("division-by-zero","mod"),ee(dt(this).umod(r))}pow(e){const r=dt(e);return r.isNeg()&&oe("negative-power","pow"),ee(dt(this).pow(r))}and(e){const r=dt(e);return(this.isNegative()||r.isNeg())&&oe("unbound-bitwise-result","and"),ee(dt(this).and(r))}or(e){const r=dt(e);return(this.isNegative()||r.isNeg())&&oe("unbound-bitwise-result","or"),ee(dt(this).or(r))}xor(e){const r=dt(e);return(this.isNegative()||r.isNeg())&&oe("unbound-bitwise-result","xor"),ee(dt(this).xor(r))}mask(e){return(this.isNegative()||e<0)&&oe("negative-width","mask"),ee(dt(this).maskn(e))}shl(e){return(this.isNegative()||e<0)&&oe("negative-width","shl"),ee(dt(this).shln(e))}shr(e){return(this.isNegative()||e<0)&&oe("negative-width","shr"),ee(dt(this).shrn(e))}eq(e){return dt(this).eq(dt(e))}lt(e){return dt(this).lt(dt(e))}lte(e){return dt(this).lte(dt(e))}gt(e){return dt(this).gt(dt(e))}gte(e){return dt(this).gte(dt(e))}isNegative(){return this._hex[0]==="-"}isZero(){return dt(this).isZero()}toNumber(){try{return dt(this).toNumber()}catch{oe("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch{}return Be.throwError("this platform does not support BigInt",ct.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(arguments[0]===10?na||(na=!0,Be.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?Be.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",ct.errors.UNEXPECTED_ARGUMENT,{}):Be.throwError("BigNumber.toString does not accept parameters",ct.errors.UNEXPECTED_ARGUMENT,{})),dt(this).toString(10)}toHexString(){return this._hex}toJSON(e){return{type:"BigNumber",hex:this.toHexString()}}static from(e){if(e instanceof mt)return e;if(typeof e=="string")return e.match(/^-?0x[0-9a-f]+$/i)?new mt(Wn,Fr(e)):e.match(/^-?[0-9]+$/)?new mt(Wn,Fr(new $r(e))):Be.throwArgumentError("invalid BigNumber string","value",e);if(typeof e=="number")return e%1&&oe("underflow","BigNumber.from",e),(e>=ra||e<=-ra)&&oe("overflow","BigNumber.from",e),mt.from(String(e));const r=e;if(typeof r=="bigint")return mt.from(r.toString());if(mr(r))return mt.from(Xt(r));if(r)if(r.toHexString){const n=r.toHexString();if(typeof n=="string")return mt.from(n)}else{let n=r._hex;if(n==null&&r.type==="BigNumber"&&(n=r.hex),typeof n=="string"&&(ne(n)||n[0]==="-"&&ne(n.substring(1))))return mt.from(n)}return Be.throwArgumentError("invalid BigNumber value","value",e)}static isBigNumber(e){return!!(e&&e._isBigNumber)}}function Fr(t){if(typeof t!="string")return Fr(t.toString(16));if(t[0]==="-")return t=t.substring(1),t[0]==="-"&&Be.throwArgumentError("invalid hex","value",t),t=Fr(t),t==="0x00"?t:"-"+t;if(t.substring(0,2)!=="0x"&&(t="0x"+t),t==="0x")return"0x00";for(t.length%2&&(t="0x0"+t.substring(2));t.length>4&&t.substring(0,4)==="0x00";)t="0x"+t.substring(4);return t}function ee(t){return mt.from(Fr(t))}function dt(t){const e=mt.from(t).toHexString();return e[0]==="-"?new $r("-"+e.substring(3),16):new $r(e.substring(2),16)}function oe(t,e,r){const n={fault:t,operation:e};return r!=null&&(n.value=r),Be.throwError(t,ct.errors.NUMERIC_FAULT,n)}function gu(t){return new $r(t,36).toString(16)}const Zt=new ct(ea),Ur={},ia=mt.from(0),fa=mt.from(-1);function aa(t,e,r,n){const i={fault:e,operation:r};return n!==void 0&&(i.value=n),Zt.throwError(t,ct.errors.NUMERIC_FAULT,i)}let Tr="0";for(;Tr.length<256;)Tr+=Tr;function Qn(t){if(typeof t!="number")try{t=mt.from(t).toNumber()}catch{}return typeof t=="number"&&t>=0&&t<=256&&!(t%1)?"1"+Tr.substring(0,t):Zt.throwArgumentError("invalid decimal size","decimals",t)}function Jn(t,e){e==null&&(e=0);const r=Qn(e);t=mt.from(t);const n=t.lt(ia);n&&(t=t.mul(fa));let i=t.mod(r).toString();for(;i.length2&&Zt.throwArgumentError("too many decimal points","value",t);let f=i[0],h=i[1];for(f||(f="0"),h||(h="0");h[h.length-1]==="0";)h=h.substring(0,h.length-1);for(h.length>r.length-1&&aa("fractional component exceeds decimals","underflow","parseFixed"),h===""&&(h="0");h.lengthe[h]==null?d:(typeof e[h]!==c&&Zt.throwArgumentError("invalid fixed format ("+h+" not "+c+")","format."+h,e[h]),e[h]);r=f("signed","boolean",r),n=f("width","number",n),i=f("decimals","number",i)}return n%8&&Zt.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",n),i>80&&Zt.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",i),new wr(Ur,r,n,i)}}class Yt{constructor(e,r,n,i){e!==Ur&&Zt.throwError("cannot use FixedNumber constructor; use FixedNumber.from",ct.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=i,this._hex=r,this._value=n,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(e){this.format.name!==e.format.name&&Zt.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",e)}addUnsafe(e){this._checkFormat(e);const r=Re(this._value,this.format.decimals),n=Re(e._value,e.format.decimals);return Yt.fromValue(r.add(n),this.format.decimals,this.format)}subUnsafe(e){this._checkFormat(e);const r=Re(this._value,this.format.decimals),n=Re(e._value,e.format.decimals);return Yt.fromValue(r.sub(n),this.format.decimals,this.format)}mulUnsafe(e){this._checkFormat(e);const r=Re(this._value,this.format.decimals),n=Re(e._value,e.format.decimals);return Yt.fromValue(r.mul(n).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(e){this._checkFormat(e);const r=Re(this._value,this.format.decimals),n=Re(e._value,e.format.decimals);return Yt.fromValue(r.mul(this.format._multiplier).div(n),this.format.decimals,this.format)}floor(){const e=this.toString().split(".");e.length===1&&e.push("0");let r=Yt.from(e[0],this.format);const n=!e[1].match(/^(0*)$/);return this.isNegative()&&n&&(r=r.subUnsafe(oa.toFormat(r.format))),r}ceiling(){const e=this.toString().split(".");e.length===1&&e.push("0");let r=Yt.from(e[0],this.format);const n=!e[1].match(/^(0*)$/);return!this.isNegative()&&n&&(r=r.addUnsafe(oa.toFormat(r.format))),r}round(e){e==null&&(e=0);const r=this.toString().split(".");if(r.length===1&&r.push("0"),(e<0||e>80||e%1)&&Zt.throwArgumentError("invalid decimal count","decimals",e),r[1].length<=e)return this;const n=Yt.from("1"+Tr.substring(0,e),this.format),i=bu.toFormat(this.format);return this.mulUnsafe(n).addUnsafe(i).floor().divUnsafe(n)}isZero(){return this._value==="0.0"||this._value==="0"}isNegative(){return this._value[0]==="-"}toString(){return this._value}toHexString(e){if(e==null)return this._hex;e%8&&Zt.throwArgumentError("invalid byte width","width",e);const r=mt.from(this._hex).fromTwos(this.format.width).toTwos(e).toHexString();return me(r,e/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(e){return Yt.fromString(this._value,e)}static fromValue(e,r,n){return n==null&&r!=null&&!pu(r)&&(n=r,r=null),r==null&&(r=0),n==null&&(n="fixed"),Yt.fromString(Jn(e,r),wr.from(n))}static fromString(e,r){r==null&&(r="fixed");const n=wr.from(r),i=Re(e,n.decimals);!n.signed&&i.lt(ia)&&aa("unsigned value cannot be negative","overflow","value",e);let f=null;n.signed?f=i.toTwos(n.width).toHexString():(f=i.toHexString(),f=me(f,n.width/8));const h=Jn(i,n.decimals);return new Yt(Ur,f,h,n)}static fromBytes(e,r){r==null&&(r="fixed");const n=wr.from(r);if(Kt(e).length>n.width/8)throw new Error("overflow");let i=mt.from(e);n.signed&&(i=i.fromTwos(n.width));const f=i.toTwos((n.signed?0:1)+n.width).toHexString(),h=Jn(i,n.decimals);return new Yt(Ur,f,h,n)}static from(e,r){if(typeof e=="string")return Yt.fromString(e,r);if(mr(e))return Yt.fromBytes(e,r);try{return Yt.fromValue(e,0,r)}catch(n){if(n.code!==ct.errors.INVALID_ARGUMENT)throw n}return Zt.throwArgumentError("invalid FixedNumber value","value",e)}static isFixedNumber(e){return!!(e&&e._isFixedNumber)}}const oa=Yt.from(1),bu=Yt.from("0.5"),mu="strings/5.7.0",sa=new ct(mu);var Xr;(function(t){t.current="",t.NFC="NFC",t.NFD="NFD",t.NFKC="NFKC",t.NFKD="NFKD"})(Xr||(Xr={}));var Ar;(function(t){t.UNEXPECTED_CONTINUE="unexpected continuation byte",t.BAD_PREFIX="bad codepoint prefix",t.OVERRUN="string overrun",t.MISSING_CONTINUE="missing continuation byte",t.OUT_OF_RANGE="out of UTF-8 range",t.UTF16_SURROGATE="UTF-16 surrogate",t.OVERLONG="overlong representation"})(Ar||(Ar={}));function wu(t,e,r,n,i){return sa.throwArgumentError(`invalid codepoint at offset ${e}; ${t}`,"bytes",r)}function ua(t,e,r,n,i){if(t===Ar.BAD_PREFIX||t===Ar.UNEXPECTED_CONTINUE){let f=0;for(let h=e+1;h>6===2;h++)f++;return f}return t===Ar.OVERRUN?r.length-e-1:0}function Au(t,e,r,n,i){return t===Ar.OVERLONG?(n.push(i),0):(n.push(65533),ua(t,e,r))}Object.freeze({error:wu,ignore:ua,replace:Au});function $n(t,e=Xr.current){e!=Xr.current&&(sa.checkNormalize(),t=t.normalize(e));let r=[];for(let n=0;n>6|192),r.push(i&63|128);else if((i&64512)==55296){n++;const f=t.charCodeAt(n);if(n>=t.length||(f&64512)!==56320)throw new Error("invalid utf-8 string");const h=65536+((i&1023)<<10)+(f&1023);r.push(h>>18|240),r.push(h>>12&63|128),r.push(h>>6&63|128),r.push(h&63|128)}else r.push(i>>12|224),r.push(i>>6&63|128),r.push(i&63|128)}return Kt(r)}function yu(t){if(t.length%4!==0)throw new Error("bad data");let e=[];for(let r=0;r{let f=i.split(":");r+=parseInt(f[0],16),n[r]=e(f[1])}),n}function ha(t){let e=0;return t.split(",").map(r=>{let n=r.split("-");n.length===1?n[1]="0":n[1]===""&&(n[1]="1");let i=e+parseInt(n[0],16);return e=parseInt(n[1],16),{l:i,h:e}})}ha("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(t=>parseInt(t,16)),Xn("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),Xn("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),Xn("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",yu),ha("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");const ca="hash/5.7.0";function Eu(t){t=atob(t);const e=[];for(let r=0;r0&&Array.isArray(c)?i(c,h-1):r.push(c)})};return i(t,e),r}function _u(t){const e={};for(let r=0;r>--d&1}const m=31,D=Math.pow(2,m),S=D>>>1,O=S>>1,T=D-1;let P=0;for(let x=0;x1;){let G=N+s>>>1;x>>1|g(),_=_<<1^S,q=(q^S)<<1|S|1;I=_,U=1+q-_}let M=n-4;return j.map(x=>{switch(x-M){case 3:return M+65792+(t[c++]<<16|t[c++]<<8|t[c++]);case 2:return M+256+(t[c++]<<8|t[c++]);case 1:return M+t[c++];default:return x-1}})}function Su(t){let e=0;return()=>t[e++]}function Mu(t){return Su(Du(t))}function xu(t){return t&1?~t>>1:t>>1}function Nu(t,e){let r=Array(t);for(let n=0;ne[h]):r}function Ou(t){let e=[];for(;;){let r=t();if(r==0)break;e.push(Bu(r,t))}for(;;){let r=t()-1;if(r<0)break;e.push(Ru(r,t))}return _u(la(e))}function Iu(t){let e=[];for(;;){let r=t();if(r==0)break;e.push(r)}return e}function va(t,e,r){let n=Array(t).fill(void 0).map(()=>[]);for(let i=0;in[h].push(f));return n}function Bu(t,e){let r=1+e(),n=e(),i=Iu(e),f=va(i.length,1+t,e);return la(f.map((h,c)=>{const d=h[0],v=h.slice(1);return Array(i[c]).fill(void 0).map((g,m)=>{let D=m*n;return[d+m*r,v.map(S=>S+D)]})}))}function Ru(t,e){let r=1+e();return va(r,1+t,e).map(i=>[i[0],i.slice(1)])}function Fu(t){let e=Zr(t).sort((n,i)=>n-i);return r();function r(){let n=[];for(;;){let v=Zr(t,e);if(v.length==0)break;n.push({set:new Set(v),node:r()})}n.sort((v,g)=>g.set.size-v.set.size);let i=t(),f=i%3;i=i/3|0;let h=!!(i&1);i>>=1;let c=i==1,d=i==2;return{branches:n,valid:f,fe0f:h,save:c,check:d}}}function Uu(){return Mu(Eu("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"))}const tn=Uu();new Set(Zr(tn)),new Set(Zr(tn)),Ou(tn),Fu(tn),new ct(ca),new Uint8Array(32).fill(0);const Tu=`Ethereum Signed Message: +-`;function pa(t){return typeof t=="string"&&(t=$n(t)),Gn(hu([$n(Tu),$n(String(t.length)),t]))}const Pu="rlp/5.7.0";new ct(Pu);const Lu="address/5.7.0",Pr=new ct(Lu);function ga(t){ne(t,20)||Pr.throwArgumentError("invalid address","address",t),t=t.toLowerCase();const e=t.substring(2).split(""),r=new Uint8Array(40);for(let i=0;i<40;i++)r[i]=e[i].charCodeAt(0);const n=Kt(Gn(r));for(let i=0;i<40;i+=2)n[i>>1]>>4>=8&&(e[i]=e[i].toUpperCase()),(n[i>>1]&15)>=8&&(e[i+1]=e[i+1].toUpperCase());return"0x"+e.join("")}const Hu=9007199254740991;function ku(t){return Math.log10?Math.log10(t):Math.log(t)/Math.LN10}const Zn={};for(let t=0;t<10;t++)Zn[String(t)]=String(t);for(let t=0;t<26;t++)Zn[String.fromCharCode(65+t)]=String(10+t);const ba=Math.floor(ku(Hu));function ju(t){t=t.toUpperCase(),t=t.substring(4)+t.substring(0,2)+"00";let e=t.split("").map(n=>Zn[n]).join("");for(;e.length>=ba;){let n=e.substring(0,ba);e=parseInt(n,10)%97+e.substring(n.length)}let r=String(98-parseInt(e,10)%97);for(;r.length<2;)r="0"+r;return r}function qu(t){let e=null;if(typeof t!="string"&&Pr.throwArgumentError("invalid address","address",t),t.match(/^(0x)?[0-9a-fA-F]{40}$/))t.substring(0,2)!=="0x"&&(t="0x"+t),e=ga(t),t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&e!==t&&Pr.throwArgumentError("bad address checksum","address",t);else if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(t.substring(2,4)!==ju(t)&&Pr.throwArgumentError("bad icap checksum","address",t),e=gu(t.substring(4));e.length<40;)e="0"+e;e=ga("0x"+e)}else Pr.throwArgumentError("invalid address","address",t);return e}const Ku="properties/5.7.0";new ct(Ku);function Lr(t,e,r){Object.defineProperty(t,e,{enumerable:!0,value:r,writable:!1})}new ct(ca),new Uint8Array(32).fill(0),mt.from(-1);const zu=mt.from(0),Vu=mt.from(1);mt.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),me(Vu.toHexString(),32),me(zu.toHexString(),32);var we={},vt={},Hr=ma;function ma(t,e){if(!t)throw new Error(e||"Assertion failed")}ma.equal=function(e,r,n){if(e!=r)throw new Error(n||"Assertion failed: "+e+" != "+r)};var ti={exports:{}};typeof Object.create=="function"?ti.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:ti.exports=function(e,r){if(r){e.super_=r;var n=function(){};n.prototype=r.prototype,e.prototype=new n,e.prototype.constructor=e}};var Yu=Hr,Gu=ti.exports;vt.inherits=Gu;function Wu(t,e){return(t.charCodeAt(e)&64512)!==55296||e<0||e+1>=t.length?!1:(t.charCodeAt(e+1)&64512)===56320}function Qu(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if(typeof t=="string")if(e){if(e==="hex")for(t=t.replace(/[^a-z0-9]+/ig,""),t.length%2!==0&&(t="0"+t),i=0;i>6|192,r[n++]=f&63|128):Wu(t,i)?(f=65536+((f&1023)<<10)+(t.charCodeAt(++i)&1023),r[n++]=f>>18|240,r[n++]=f>>12&63|128,r[n++]=f>>6&63|128,r[n++]=f&63|128):(r[n++]=f>>12|224,r[n++]=f>>6&63|128,r[n++]=f&63|128)}else for(i=0;i>>24|t>>>8&65280|t<<8&16711680|(t&255)<<24;return e>>>0}vt.htonl=wa;function $u(t,e){for(var r="",n=0;n>>0}return f}vt.join32=Xu;function Zu(t,e){for(var r=new Array(t.length*4),n=0,i=0;n>>24,r[i+1]=f>>>16&255,r[i+2]=f>>>8&255,r[i+3]=f&255):(r[i+3]=f>>>24,r[i+2]=f>>>16&255,r[i+1]=f>>>8&255,r[i]=f&255)}return r}vt.split32=Zu;function th(t,e){return t>>>e|t<<32-e}vt.rotr32=th;function eh(t,e){return t<>>32-e}vt.rotl32=eh;function rh(t,e){return t+e>>>0}vt.sum32=rh;function nh(t,e,r){return t+e+r>>>0}vt.sum32_3=nh;function ih(t,e,r,n){return t+e+r+n>>>0}vt.sum32_4=ih;function fh(t,e,r,n,i){return t+e+r+n+i>>>0}vt.sum32_5=fh;function ah(t,e,r,n){var i=t[e],f=t[e+1],h=n+f>>>0,c=(h>>0,t[e+1]=h}vt.sum64=ah;function oh(t,e,r,n){var i=e+n>>>0,f=(i>>0}vt.sum64_hi=oh;function sh(t,e,r,n){var i=e+n;return i>>>0}vt.sum64_lo=sh;function uh(t,e,r,n,i,f,h,c){var d=0,v=e;v=v+n>>>0,d+=v>>0,d+=v>>0,d+=v>>0}vt.sum64_4_hi=uh;function hh(t,e,r,n,i,f,h,c){var d=e+n+f+c;return d>>>0}vt.sum64_4_lo=hh;function ch(t,e,r,n,i,f,h,c,d,v){var g=0,m=e;m=m+n>>>0,g+=m>>0,g+=m>>0,g+=m>>0,g+=m>>0}vt.sum64_5_hi=ch;function lh(t,e,r,n,i,f,h,c,d,v){var g=e+n+f+c+v;return g>>>0}vt.sum64_5_lo=lh;function dh(t,e,r){var n=e<<32-r|t>>>r;return n>>>0}vt.rotr64_hi=dh;function vh(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}vt.rotr64_lo=vh;function ph(t,e,r){return t>>>r}vt.shr64_hi=ph;function gh(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}vt.shr64_lo=gh;var yr={},Ea=vt,bh=Hr;function en(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}yr.BlockHash=en,en.prototype.update=function(e,r){if(e=Ea.toArray(e,r),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){e=this.pending;var n=e.length%this._delta8;this.pending=e.slice(e.length-n,e.length),this.pending.length===0&&(this.pending=null),e=Ea.join32(e,0,e.length-n,this.endian);for(var i=0;i>>24&255,i[f++]=e>>>16&255,i[f++]=e>>>8&255,i[f++]=e&255}else for(i[f++]=e&255,i[f++]=e>>>8&255,i[f++]=e>>>16&255,i[f++]=e>>>24&255,i[f++]=0,i[f++]=0,i[f++]=0,i[f++]=0,h=8;h>>3}Ae.g0_256=Eh;function _h(t){return ye(t,17)^ye(t,19)^t>>>10}Ae.g1_256=_h;var _r=vt,Dh=yr,Sh=Ae,ei=_r.rotl32,kr=_r.sum32,Mh=_r.sum32_5,xh=Sh.ft_1,Ma=Dh.BlockHash,Nh=[1518500249,1859775393,2400959708,3395469782];function Ee(){if(!(this instanceof Ee))return new Ee;Ma.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}_r.inherits(Ee,Ma);var Ch=Ee;Ee.blockSize=512,Ee.outSize=160,Ee.hmacStrength=80,Ee.padLength=64,Ee.prototype._update=function(e,r){for(var n=this.W,i=0;i<16;i++)n[i]=e[r+i];for(;ithis.blockSize&&(e=new this.Hash().update(e).digest()),gc(e.length<=this.blockSize);for(var r=e.length;r>8,D=g&255;m?d.push(m,D):d.push(D)}return d}r.toArray=n;function i(h){return h.length===1?"0"+h:h}r.zero2=i;function f(h){for(var c="",d=0;d(D>>1)-1?T=(D>>1)-P:T=P,S.isubn(T)):T=0,m[O]=T,S.iushrn(1)}return m}r.getNAF=n;function i(d,v){var g=[[],[]];d=d.clone(),v=v.clone();for(var m=0,D=0,S;d.cmpn(-m)>0||v.cmpn(-D)>0;){var O=d.andln(3)+m&3,T=v.andln(3)+D&3;O===3&&(O=-1),T===3&&(T=-1);var P;O&1?(S=d.andln(7)+m&7,(S===3||S===5)&&T===2?P=-O:P=O):P=0,g[0].push(P);var j;T&1?(S=v.andln(7)+D&7,(S===3||S===5)&&O===2?j=-T:j=T):j=0,g[1].push(j),2*m===P+1&&(m=1-m),2*D===j+1&&(D=1-D),d.iushrn(1),v.iushrn(1)}return g}r.getJSF=i;function f(d,v,g){var m="_"+v;d.prototype[v]=function(){return this[m]!==void 0?this[m]:this[m]=g.call(this)}}r.cachedProperty=f;function h(d){return typeof d=="string"?r.toArray(d,"hex"):d}r.parseBytes=h;function c(d){return new Z(d,"hex","le")}r.intFromLE=c}),nn=ie.getNAF,wc=ie.getJSF,fn=ie.assert;function ke(t,e){this.type=t,this.p=new Z(e.p,16),this.red=e.prime?Z.red(e.prime):Z.mont(this.p),this.zero=new Z(0).toRed(this.red),this.one=new Z(1).toRed(this.red),this.two=new Z(2).toRed(this.red),this.n=e.n&&new Z(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var rr=ke;ke.prototype.point=function(){throw new Error("Not implemented")},ke.prototype.validate=function(){throw new Error("Not implemented")},ke.prototype._fixedNafMul=function(e,r){fn(e.precomputed);var n=e._getDoubles(),i=nn(r,1,this._bitLength),f=(1<=c;v--)d=(d<<1)+i[v];h.push(d)}for(var g=this.jpoint(null,null,null),m=this.jpoint(null,null,null),D=f;D>0;D--){for(c=0;c=0;d--){for(var v=0;d>=0&&h[d]===0;d--)v++;if(d>=0&&v++,c=c.dblp(v),d<0)break;var g=h[d];fn(g!==0),e.type==="affine"?g>0?c=c.mixedAdd(f[g-1>>1]):c=c.mixedAdd(f[-g-1>>1].neg()):g>0?c=c.add(f[g-1>>1]):c=c.add(f[-g-1>>1].neg())}return e.type==="affine"?c.toP():c},ke.prototype._wnafMulAdd=function(e,r,n,i,f){var h=this._wnafT1,c=this._wnafT2,d=this._wnafT3,v=0,g,m,D;for(g=0;g=1;g-=2){var O=g-1,T=g;if(h[O]!==1||h[T]!==1){d[O]=nn(n[O],h[O],this._bitLength),d[T]=nn(n[T],h[T],this._bitLength),v=Math.max(d[O].length,v),v=Math.max(d[T].length,v);continue}var P=[r[O],null,null,r[T]];r[O].y.cmp(r[T].y)===0?(P[1]=r[O].add(r[T]),P[2]=r[O].toJ().mixedAdd(r[T].neg())):r[O].y.cmp(r[T].y.redNeg())===0?(P[1]=r[O].toJ().mixedAdd(r[T]),P[2]=r[O].add(r[T].neg())):(P[1]=r[O].toJ().mixedAdd(r[T]),P[2]=r[O].toJ().mixedAdd(r[T].neg()));var j=[-3,-1,-5,-7,0,7,5,1,3],I=wc(n[O],n[T]);for(v=Math.max(I[0].length,v),d[O]=new Array(v),d[T]=new Array(v),m=0;m=0;g--){for(var s=0;g>=0;){var _=!0;for(m=0;m=0&&s++,x=x.dblp(s),g<0)break;for(m=0;m0?D=c[m][q-1>>1]:q<0&&(D=c[m][-q-1>>1].neg()),D.type==="affine"?x=x.mixedAdd(D):x=x.add(D))}}for(g=0;g=Math.ceil((e.bitLength()+1)/r.step):!1},se.prototype._getDoubles=function(e,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var n=[this],i=this,f=0;f=0&&(S=v,O=g),m.negative&&(m=m.neg(),D=D.neg()),S.negative&&(S=S.neg(),O=O.neg()),[{a:m,b:D},{a:S,b:O}]},ue.prototype._endoSplit=function(e){var r=this.endo.basis,n=r[0],i=r[1],f=i.b.mul(e).divRound(this.n),h=n.b.neg().mul(e).divRound(this.n),c=f.mul(n.a),d=h.mul(i.a),v=f.mul(n.b),g=h.mul(i.b),m=e.sub(c).sub(d),D=v.add(g).neg();return{k1:m,k2:D}},ue.prototype.pointFromX=function(e,r){e=new Z(e,16),e.red||(e=e.toRed(this.red));var n=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),i=n.redSqrt();if(i.redSqr().redSub(n).cmp(this.zero)!==0)throw new Error("invalid point");var f=i.fromRed().isOdd();return(r&&!f||!r&&f)&&(i=i.redNeg()),this.point(e,i)},ue.prototype.validate=function(e){if(e.inf)return!0;var r=e.x,n=e.y,i=this.a.redMul(r),f=r.redSqr().redMul(r).redIAdd(i).redIAdd(this.b);return n.redSqr().redISub(f).cmpn(0)===0},ue.prototype._endoWnafMulAdd=function(e,r,n){for(var i=this._endoWnafT1,f=this._endoWnafT2,h=0;h":""},Vt.prototype.isInfinity=function(){return this.inf},Vt.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(this.x.cmp(e.x)===0)return this.curve.point(null,null);var r=this.y.redSub(e.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(e.x).redInvm()));var n=r.redSqr().redISub(this.x).redISub(e.x),i=r.redMul(this.x.redSub(n)).redISub(this.y);return this.curve.point(n,i)},Vt.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(e.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,n=this.x.redSqr(),i=e.redInvm(),f=n.redAdd(n).redIAdd(n).redIAdd(r).redMul(i),h=f.redSqr().redISub(this.x.redAdd(this.x)),c=f.redMul(this.x.redSub(h)).redISub(this.y);return this.curve.point(h,c)},Vt.prototype.getX=function(){return this.x.fromRed()},Vt.prototype.getY=function(){return this.y.fromRed()},Vt.prototype.mul=function(e){return e=new Z(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},Vt.prototype.mulAdd=function(e,r,n){var i=[this,r],f=[e,n];return this.curve.endo?this.curve._endoWnafMulAdd(i,f):this.curve._wnafMulAdd(1,i,f,2)},Vt.prototype.jmulAdd=function(e,r,n){var i=[this,r],f=[e,n];return this.curve.endo?this.curve._endoWnafMulAdd(i,f,!0):this.curve._wnafMulAdd(1,i,f,2,!0)},Vt.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||this.x.cmp(e.x)===0&&this.y.cmp(e.y)===0)},Vt.prototype.neg=function(e){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var n=this.precomputed,i=function(f){return f.neg()};r.precomputed={naf:n.naf&&{wnd:n.naf.wnd,points:n.naf.points.map(i)},doubles:n.doubles&&{step:n.doubles.step,points:n.doubles.points.map(i)}}}return r},Vt.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var e=this.curve.jpoint(this.x,this.y,this.curve.one);return e};function Gt(t,e,r,n){rr.BasePoint.call(this,t,"jacobian"),e===null&&r===null&&n===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new Z(0)):(this.x=new Z(e,16),this.y=new Z(r,16),this.z=new Z(n,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}oi(Gt,rr.BasePoint),ue.prototype.jpoint=function(e,r,n){return new Gt(this,e,r,n)},Gt.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),r=e.redSqr(),n=this.x.redMul(r),i=this.y.redMul(r).redMul(e);return this.curve.point(n,i)},Gt.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},Gt.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var r=e.z.redSqr(),n=this.z.redSqr(),i=this.x.redMul(r),f=e.x.redMul(n),h=this.y.redMul(r.redMul(e.z)),c=e.y.redMul(n.redMul(this.z)),d=i.redSub(f),v=h.redSub(c);if(d.cmpn(0)===0)return v.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var g=d.redSqr(),m=g.redMul(d),D=i.redMul(g),S=v.redSqr().redIAdd(m).redISub(D).redISub(D),O=v.redMul(D.redISub(S)).redISub(h.redMul(m)),T=this.z.redMul(e.z).redMul(d);return this.curve.jpoint(S,O,T)},Gt.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var r=this.z.redSqr(),n=this.x,i=e.x.redMul(r),f=this.y,h=e.y.redMul(r).redMul(this.z),c=n.redSub(i),d=f.redSub(h);if(c.cmpn(0)===0)return d.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var v=c.redSqr(),g=v.redMul(c),m=n.redMul(v),D=d.redSqr().redIAdd(g).redISub(m).redISub(m),S=d.redMul(m.redISub(D)).redISub(f.redMul(g)),O=this.z.redMul(c);return this.curve.jpoint(D,S,O)},Gt.prototype.dblp=function(e){if(e===0)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var n=this;for(r=0;r=0)return!1;if(n.redIAdd(f),this.x.cmp(n)===0)return!0}},Gt.prototype.inspect=function(){return this.isInfinity()?"":""},Gt.prototype.isInfinity=function(){return this.z.cmpn(0)===0};var an=xr(function(t,e){var r=e;r.base=rr,r.short=yc,r.mont=null,r.edwards=null}),on=xr(function(t,e){var r=e,n=ie.assert;function i(c){c.type==="short"?this.curve=new an.short(c):c.type==="edwards"?this.curve=new an.edwards(c):this.curve=new an.mont(c),this.g=this.curve.g,this.n=this.curve.n,this.hash=c.hash,n(this.g.validate(),"Invalid curve"),n(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}r.PresetCurve=i;function f(c,d){Object.defineProperty(r,c,{configurable:!0,enumerable:!0,get:function(){var v=new i(d);return Object.defineProperty(r,c,{configurable:!0,enumerable:!0,value:v}),v}})}f("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:we.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),f("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:we.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),f("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:we.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),f("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:we.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),f("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:we.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),f("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:we.sha256,gRed:!1,g:["9"]}),f("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:we.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var h;try{h=null.crash()}catch{h=void 0}f("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:we.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",h]})});function je(t){if(!(this instanceof je))return new je(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=ve.toArray(t.entropy,t.entropyEnc||"hex"),r=ve.toArray(t.nonce,t.nonceEnc||"hex"),n=ve.toArray(t.pers,t.persEnc||"hex");ai(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,n)}var ja=je;je.prototype._init=function(e,r,n){var i=e.concat(r).concat(n);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var f=0;f=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(n||[])),this._reseed=1},je.prototype.generate=function(e,r,n,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(i=n,n=r,r=null),n&&(n=ve.toArray(n,i||"hex"),this._update(n));for(var f=[];f.length"};var Ec=ie.assert;function sn(t,e){if(t instanceof sn)return t;this._importDER(t,e)||(Ec(t.r&&t.s,"Signature without r or s"),this.r=new Z(t.r,16),this.s=new Z(t.s,16),t.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}var un=sn;function _c(){this.place=0}function hi(t,e){var r=t[e.place++];if(!(r&128))return r;var n=r&15;if(n===0||n>4)return!1;for(var i=0,f=0,h=e.place;f>>=0;return i<=127?!1:(e.place=h,i)}function qa(t){for(var e=0,r=t.length-1;!t[e]&&!(t[e+1]&128)&&e>>3);for(t.push(r|128);--r;)t.push(e>>>(r<<3)&255);t.push(e)}sn.prototype.toDER=function(e){var r=this.r.toArray(),n=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),n[0]&128&&(n=[0].concat(n)),r=qa(r),n=qa(n);!n[0]&&!(n[1]&128);)n=n.slice(1);var i=[2];ci(i,r.length),i=i.concat(r),i.push(2),ci(i,n.length);var f=i.concat(n),h=[48];return ci(h,f.length),h=h.concat(f),ie.encode(h,e)};var Dc=function(){throw new Error("unsupported")},Ka=ie.assert;function he(t){if(!(this instanceof he))return new he(t);typeof t=="string"&&(Ka(Object.prototype.hasOwnProperty.call(on,t),"Unknown curve "+t),t=on[t]),t instanceof on.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}var Sc=he;he.prototype.keyPair=function(e){return new ui(this,e)},he.prototype.keyFromPrivate=function(e,r){return ui.fromPrivate(this,e,r)},he.prototype.keyFromPublic=function(e,r){return ui.fromPublic(this,e,r)},he.prototype.genKeyPair=function(e){e||(e={});for(var r=new ja({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||Dc(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),n=this.n.byteLength(),i=this.n.sub(new Z(2));;){var f=new Z(r.generate(n));if(!(f.cmp(i)>0))return f.iaddn(1),this.keyFromPrivate(f)}},he.prototype._truncateToN=function(e,r){var n=e.byteLength()*8-this.n.bitLength();return n>0&&(e=e.ushrn(n)),!r&&e.cmp(this.n)>=0?e.sub(this.n):e},he.prototype.sign=function(e,r,n,i){typeof n=="object"&&(i=n,n=null),i||(i={}),r=this.keyFromPrivate(r,n),e=this._truncateToN(new Z(e,16));for(var f=this.n.byteLength(),h=r.getPrivate().toArray("be",f),c=e.toArray("be",f),d=new ja({hash:this.hash,entropy:h,nonce:c,pers:i.pers,persEnc:i.persEnc||"utf8"}),v=this.n.sub(new Z(1)),g=0;;g++){var m=i.k?i.k(g):new Z(d.generate(this.n.byteLength()));if(m=this._truncateToN(m,!0),!(m.cmpn(1)<=0||m.cmp(v)>=0)){var D=this.g.mul(m);if(!D.isInfinity()){var S=D.getX(),O=S.umod(this.n);if(O.cmpn(0)!==0){var T=m.invm(this.n).mul(O.mul(r.getPrivate()).iadd(e));if(T=T.umod(this.n),T.cmpn(0)!==0){var P=(D.getY().isOdd()?1:0)|(S.cmp(O)!==0?2:0);return i.canonical&&T.cmp(this.nh)>0&&(T=this.n.sub(T),P^=1),new un({r:O,s:T,recoveryParam:P})}}}}}},he.prototype.verify=function(e,r,n,i){e=this._truncateToN(new Z(e,16)),n=this.keyFromPublic(n,i),r=new un(r,"hex");var f=r.r,h=r.s;if(f.cmpn(1)<0||f.cmp(this.n)>=0||h.cmpn(1)<0||h.cmp(this.n)>=0)return!1;var c=h.invm(this.n),d=c.mul(e).umod(this.n),v=c.mul(f).umod(this.n),g;return this.curve._maxwellTrick?(g=this.g.jmulAdd(d,n.getPublic(),v),g.isInfinity()?!1:g.eqXToP(f)):(g=this.g.mulAdd(d,n.getPublic(),v),g.isInfinity()?!1:g.getX().umod(this.n).cmp(f)===0)},he.prototype.recoverPubKey=function(t,e,r,n){Ka((3&r)===r,"The recovery param is more than two bits"),e=new un(e,n);var i=this.n,f=new Z(t),h=e.r,c=e.s,d=r&1,v=r>>1;if(h.cmp(this.curve.p.umod(this.curve.n))>=0&&v)throw new Error("Unable to find sencond key candinate");v?h=this.curve.pointFromX(h.add(this.curve.n),d):h=this.curve.pointFromX(h,d);var g=e.r.invm(i),m=i.sub(f).mul(g).umod(i),D=c.mul(g).umod(i);return this.g.mulAdd(m,h,D)},he.prototype.getKeyRecoveryParam=function(t,e,r,n){if(e=new un(e,n),e.recoveryParam!==null)return e.recoveryParam;for(var i=0;i<4;i++){var f;try{f=this.recoverPubKey(t,e,i)}catch{continue}if(f.eq(r))return i}throw new Error("Unable to find valid recovery factor")};var Mc=xr(function(t,e){var r=e;r.version="6.5.4",r.utils=ie,r.rand=function(){throw new Error("unsupported")},r.curve=an,r.curves=on,r.ec=Sc,r.eddsa=null}),xc=Mc.ec;const Nc="signing-key/5.7.0",li=new ct(Nc);let di=null;function xe(){return di||(di=new xc("secp256k1")),di}class Cc{constructor(e){Lr(this,"curve","secp256k1"),Lr(this,"privateKey",Xt(e)),lu(this.privateKey)!==32&&li.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const r=xe().keyFromPrivate(Kt(this.privateKey));Lr(this,"publicKey","0x"+r.getPublic(!1,"hex")),Lr(this,"compressedPublicKey","0x"+r.getPublic(!0,"hex")),Lr(this,"_isSigningKey",!0)}_addPoint(e){const r=xe().keyFromPublic(Kt(this.publicKey)),n=xe().keyFromPublic(Kt(e));return"0x"+r.pub.add(n.pub).encodeCompressed("hex")}signDigest(e){const r=xe().keyFromPrivate(Kt(this.privateKey)),n=Kt(e);n.length!==32&&li.throwArgumentError("bad digest length","digest",e);const i=r.sign(n,{canonical:!0});return Xf({recoveryParam:i.recoveryParam,r:me("0x"+i.r.toString(16),32),s:me("0x"+i.s.toString(16),32)})}computeSharedSecret(e){const r=xe().keyFromPrivate(Kt(this.privateKey)),n=xe().keyFromPublic(Kt(za(e)));return me("0x"+r.derive(n.getPublic()).toString(16),32)}static isSigningKey(e){return!!(e&&e._isSigningKey)}}function Oc(t,e){const r=Xf(e),n={r:Kt(r.r),s:Kt(r.s)};return"0x"+xe().recoverPubKey(Kt(t),n,r.recoveryParam).encode("hex",!1)}function za(t,e){const r=Kt(t);if(r.length===32){const n=new Cc(r);return e?"0x"+xe().keyFromPrivate(r).getPublic(!0,"hex"):n.publicKey}else{if(r.length===33)return e?Xt(r):"0x"+xe().keyFromPublic(r).getPublic(!1,"hex");if(r.length===65)return e?"0x"+xe().keyFromPublic(r).getPublic(!0,"hex"):Xt(r)}return li.throwArgumentError("invalid public or private key","key","[REDACTED]")}const Ic="transactions/5.7.0";new ct(Ic);var Va;(function(t){t[t.legacy=0]="legacy",t[t.eip2930=1]="eip2930",t[t.eip1559=2]="eip1559"})(Va||(Va={}));function Bc(t){const e=za(t);return qu($f(Gn($f(e,1)),12))}function Rc(t,e){return Bc(Oc(Kt(t),e))}const Fc="https://rpc.walletconnect.com/v1";async function Ya(t,e,r,n,i,f){switch(r.t){case"eip191":return Ga(t,e,r.s);case"eip1271":return await Wa(t,e,r.s,n,i,f);default:throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${r.t}`)}}function Ga(t,e,r){return Rc(pa(e),r).toLowerCase()===t.toLowerCase()}async function Wa(t,e,r,n,i,f){try{const h="0x1626ba7e",c="0000000000000000000000000000000000000000000000000000000000000040",d="0000000000000000000000000000000000000000000000000000000000000041",v=r.substring(2),g=pa(e).substring(2),m=h+g+c+d+v,D=await fetch(`${f||Fc}/?chainId=${n}&projectId=${i}`,{method:"POST",body:JSON.stringify({id:Uc(),jsonrpc:"2.0",method:"eth_call",params:[{to:t,data:m},"latest"]})}),{result:S}=await D.json();return S?S.slice(0,h.length).toLowerCase()===h.toLowerCase():!1}catch(h){return console.error("isValidEip1271Signature: ",h),!1}}function Uc(){return Date.now()+Math.floor(Math.random()*1e3)}var Tc=Object.defineProperty,Pc=Object.defineProperties,Lc=Object.getOwnPropertyDescriptors,Qa=Object.getOwnPropertySymbols,Hc=Object.prototype.hasOwnProperty,kc=Object.prototype.propertyIsEnumerable,Ja=(t,e,r)=>e in t?Tc(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,vi=(t,e)=>{for(var r in e||(e={}))Hc.call(e,r)&&Ja(t,r,e[r]);if(Qa)for(var r of Qa(e))kc.call(e,r)&&Ja(t,r,e[r]);return t},$a=(t,e)=>Pc(t,Lc(e));const jc="did:pkh:",hn=t=>t?.split(":"),pi=t=>{const e=t&&hn(t);if(e)return t.includes(jc)?e[3]:e[1]},qc=t=>{const e=t&&hn(t);if(e)return e[2]+":"+e[3]},gi=t=>{const e=t&&hn(t);if(e)return e.pop()};async function Kc(t){const{cacao:e,projectId:r}=t,{s:n,p:i}=e,f=Xa(i,i.iss),h=gi(i.iss);return await Ya(h,f,n,pi(i.iss),r)}const Xa=(t,e)=>{const r=`${t.domain} wants you to sign in with your Ethereum account:`,n=gi(e);if(!t.aud&&!t.uri)throw new Error("Either `aud` or `uri` is required to construct the message");let i=t.statement||void 0;const f=`URI: ${t.aud||t.uri}`,h=`Version: ${t.version}`,c=`Chain ID: ${pi(e)}`,d=`Nonce: ${t.nonce}`,v=`Issued At: ${t.iat}`,g=t.resources?`Resources:${t.resources.map(D=>` +-- ${D}`).join("")}`:void 0,m=ln(t.resources);if(m){const D=qe(m);i=wi(i,D)}return[r,n,"",i,"",f,h,c,d,v,g].filter(D=>D!=null).join(` +-`)};function zc(t,e,r){return r.includes("did:pkh:")||(r=`did:pkh:${r}`),{h:{t:"caip122"},p:{iss:r,domain:t.domain,aud:t.aud,version:t.version,nonce:t.nonce,iat:t.iat,statement:t.statement,requestId:t.requestId,resources:t.resources,nbf:t.nbf,exp:t.exp},s:e}}function Vc(t){var e;const{authPayload:r,chains:n,methods:i}=t,f=r.statement||"";if(!(n!=null&&n.length))return r;const h=r.chains,c=Kn(h,n);if(!(c!=null&&c.length))throw new Error("No supported chains");const d=Za(r.resources);if(!d)return r;Ne(d);const v=to(d,"eip155");let g=r?.resources||[];if(v!=null&&v.length){const m=eo(v),D=Kn(m,i);if(!(D!=null&&D.length))throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(m)}, supported: ${JSON.stringify(i)}`);const S=bi("request",D,{chains:c}),O=fo(d,"eip155",S);g=((e=r?.resources)==null?void 0:e.slice(0,-1))||[],g.push(cn(O))}return $a(vi({},r),{statement:oo(f,ln(g)),chains:c,resources:r!=null&&r.resources||g.length>0?g:void 0})}function Za(t){const e=ln(t);if(e&&mi(e))return qe(e)}function Yc(t,e){var r;return(r=t?.att)==null?void 0:r.hasOwnProperty(e)}function to(t,e){var r,n;return(r=t?.att)!=null&&r[e]?Object.keys((n=t?.att)==null?void 0:n[e]):[]}function Gc(t){return t?.map(e=>Object.keys(e))||[]}function eo(t){return t?.map(e=>{var r;return(r=e.split("/"))==null?void 0:r[1]})||[]}function ro(t){return Buffer.from(JSON.stringify(t)).toString("base64")}function no(t){return JSON.parse(Buffer.from(t,"base64").toString("utf-8"))}function Ne(t){if(!t)throw new Error("No recap provided, value is undefined");if(!t.att)throw new Error("No `att` property found");const e=Object.keys(t.att);if(!(e!=null&&e.length))throw new Error("No resources found in `att` property");e.forEach(r=>{const n=t.att[r];if(Array.isArray(n))throw new Error(`Resource must be an object: ${r}`);if(typeof n!="object")throw new Error(`Resource must be an object: ${r}`);if(!Object.keys(n).length)throw new Error(`Resource object is empty: ${r}`);Object.keys(n).forEach(i=>{const f=n[i];if(!Array.isArray(f))throw new Error(`Ability limits ${i} must be an array of objects, found: ${f}`);if(!f.length)throw new Error(`Value of ${i} is empty array, must be an array with objects`);f.forEach(h=>{if(typeof h!="object")throw new Error(`Ability limits (${i}) must be an array of objects, found: ${h}`)})})})}function io(t,e,r,n={}){return r?.sort((i,f)=>i.localeCompare(f)),{att:{[t]:bi(e,r,n)}}}function fo(t,e,r){var n;return t.att[e]=vi({},r),((n=Object.keys(t.att))==null?void 0:n.sort((i,f)=>i.localeCompare(f))).reduce((i,f)=>(i.att[f]=t.att[f],i),{att:{}})}function bi(t,e,r={}){e=e?.sort((i,f)=>i.localeCompare(f));const n=e.map(i=>({[`${t}/${i}`]:[r]}));return Object.assign({},...n)}function cn(t){return Ne(t),`urn:recap:${ro(t).replace(/=/g,"")}`}function qe(t){const e=no(t.replace("urn:recap:",""));return Ne(e),e}function Wc(t,e,r){const n=io(t,e,r);return cn(n)}function mi(t){return t&&t.includes("urn:recap:")}function Qc(t,e){const r=qe(t),n=qe(e),i=ao(r,n);return cn(i)}function ao(t,e){Ne(t),Ne(e);const r=Object.keys(t.att).concat(Object.keys(e.att)).sort((i,f)=>i.localeCompare(f)),n={att:{}};return r.forEach(i=>{var f,h;Object.keys(((f=t.att)==null?void 0:f[i])||{}).concat(Object.keys(((h=e.att)==null?void 0:h[i])||{})).sort((c,d)=>c.localeCompare(d)).forEach(c=>{var d,v;n.att[i]=$a(vi({},n.att[i]),{[c]:((d=t.att[i])==null?void 0:d[c])||((v=e.att[i])==null?void 0:v[c])})})}),n}function wi(t="",e){Ne(e);const r="I further authorize the stated URI to perform the following actions on my behalf: ";if(t.includes(r))return t;const n=[];let i=0;Object.keys(e.att).forEach(c=>{const d=Object.keys(e.att[c]).map(m=>({ability:m.split("/")[0],action:m.split("/")[1]}));d.sort((m,D)=>m.action.localeCompare(D.action));const v={};d.forEach(m=>{v[m.ability]||(v[m.ability]=[]),v[m.ability].push(m.action)});const g=Object.keys(v).map(m=>(i++,`(${i}) '${m}': '${v[m].join("', '")}' for '${c}'.`));n.push(g.join(", ").replace(".,","."))});const f=n.join(" "),h=`${r}${f}`;return`${t?t+" ":""}${h}`}function Jc(t){var e;const r=qe(t);Ne(r);const n=(e=r.att)==null?void 0:e.eip155;return n?Object.keys(n).map(i=>i.split("/")[1]):[]}function $c(t){const e=qe(t);Ne(e);const r=[];return Object.values(e.att).forEach(n=>{Object.values(n).forEach(i=>{var f;(f=i?.[0])!=null&&f.chains&&r.push(i[0].chains)})}),[...new Set(r.flat())]}function oo(t,e){if(!e)return t;const r=qe(e);return Ne(r),wi(t,r)}function ln(t){if(!t)return;const e=t?.[t.length-1];return mi(e)?e:void 0}var Ai={},dn={},lt={},so={};(function(t){Object.defineProperty(t,"__esModule",{value:!0});function e(c,d){var v=c>>>16&65535,g=c&65535,m=d>>>16&65535,D=d&65535;return g*D+(v*D+g*m<<16>>>0)|0}t.mul=Math.imul||e;function r(c,d){return c+d|0}t.add=r;function n(c,d){return c-d|0}t.sub=n;function i(c,d){return c<>>32-d}t.rotl=i;function f(c,d){return c<<32-d|c>>>d}t.rotr=f;function h(c){return typeof c=="number"&&isFinite(c)&&Math.floor(c)===c}t.isInteger=Number.isInteger||h,t.MAX_SAFE_INTEGER=9007199254740991,t.isSafeInteger=function(c){return t.isInteger(c)&&c>=-t.MAX_SAFE_INTEGER&&c<=t.MAX_SAFE_INTEGER}})(so),Object.defineProperty(lt,"__esModule",{value:!0});var uo=so;function Xc(t,e){return e===void 0&&(e=0),(t[e+0]<<8|t[e+1])<<16>>16}lt.readInt16BE=Xc;function Zc(t,e){return e===void 0&&(e=0),(t[e+0]<<8|t[e+1])>>>0}lt.readUint16BE=Zc;function tl(t,e){return e===void 0&&(e=0),(t[e+1]<<8|t[e])<<16>>16}lt.readInt16LE=tl;function el(t,e){return e===void 0&&(e=0),(t[e+1]<<8|t[e])>>>0}lt.readUint16LE=el;function ho(t,e,r){return e===void 0&&(e=new Uint8Array(2)),r===void 0&&(r=0),e[r+0]=t>>>8,e[r+1]=t>>>0,e}lt.writeUint16BE=ho,lt.writeInt16BE=ho;function co(t,e,r){return e===void 0&&(e=new Uint8Array(2)),r===void 0&&(r=0),e[r+0]=t>>>0,e[r+1]=t>>>8,e}lt.writeUint16LE=co,lt.writeInt16LE=co;function yi(t,e){return e===void 0&&(e=0),t[e]<<24|t[e+1]<<16|t[e+2]<<8|t[e+3]}lt.readInt32BE=yi;function Ei(t,e){return e===void 0&&(e=0),(t[e]<<24|t[e+1]<<16|t[e+2]<<8|t[e+3])>>>0}lt.readUint32BE=Ei;function _i(t,e){return e===void 0&&(e=0),t[e+3]<<24|t[e+2]<<16|t[e+1]<<8|t[e]}lt.readInt32LE=_i;function Di(t,e){return e===void 0&&(e=0),(t[e+3]<<24|t[e+2]<<16|t[e+1]<<8|t[e])>>>0}lt.readUint32LE=Di;function vn(t,e,r){return e===void 0&&(e=new Uint8Array(4)),r===void 0&&(r=0),e[r+0]=t>>>24,e[r+1]=t>>>16,e[r+2]=t>>>8,e[r+3]=t>>>0,e}lt.writeUint32BE=vn,lt.writeInt32BE=vn;function pn(t,e,r){return e===void 0&&(e=new Uint8Array(4)),r===void 0&&(r=0),e[r+0]=t>>>0,e[r+1]=t>>>8,e[r+2]=t>>>16,e[r+3]=t>>>24,e}lt.writeUint32LE=pn,lt.writeInt32LE=pn;function rl(t,e){e===void 0&&(e=0);var r=yi(t,e),n=yi(t,e+4);return r*4294967296+n-(n>>31)*4294967296}lt.readInt64BE=rl;function nl(t,e){e===void 0&&(e=0);var r=Ei(t,e),n=Ei(t,e+4);return r*4294967296+n}lt.readUint64BE=nl;function il(t,e){e===void 0&&(e=0);var r=_i(t,e),n=_i(t,e+4);return n*4294967296+r-(r>>31)*4294967296}lt.readInt64LE=il;function fl(t,e){e===void 0&&(e=0);var r=Di(t,e),n=Di(t,e+4);return n*4294967296+r}lt.readUint64LE=fl;function lo(t,e,r){return e===void 0&&(e=new Uint8Array(8)),r===void 0&&(r=0),vn(t/4294967296>>>0,e,r),vn(t>>>0,e,r+4),e}lt.writeUint64BE=lo,lt.writeInt64BE=lo;function vo(t,e,r){return e===void 0&&(e=new Uint8Array(8)),r===void 0&&(r=0),pn(t>>>0,e,r),pn(t/4294967296>>>0,e,r+4),e}lt.writeUint64LE=vo,lt.writeInt64LE=vo;function al(t,e,r){if(r===void 0&&(r=0),t%8!==0)throw new Error("readUintBE supports only bitLengths divisible by 8");if(t/8>e.length-r)throw new Error("readUintBE: array is too short for the given bitLength");for(var n=0,i=1,f=t/8+r-1;f>=r;f--)n+=e[f]*i,i*=256;return n}lt.readUintBE=al;function ol(t,e,r){if(r===void 0&&(r=0),t%8!==0)throw new Error("readUintLE supports only bitLengths divisible by 8");if(t/8>e.length-r)throw new Error("readUintLE: array is too short for the given bitLength");for(var n=0,i=1,f=r;f=n;f--)r[f]=e/i&255,i*=256;return r}lt.writeUintBE=sl;function ul(t,e,r,n){if(r===void 0&&(r=new Uint8Array(t/8)),n===void 0&&(n=0),t%8!==0)throw new Error("writeUintLE supports only bitLengths divisible by 8");if(!uo.isSafeInteger(e))throw new Error("writeUintLE value must be an integer");for(var i=1,f=n;f>>32-16|u<<16,W=W+u|0,s^=W,s=s>>>32-12|s<<12,M=M+_|0,p^=M,p=p>>>32-16|p<<16,J=J+p|0,_^=J,_=_>>>32-12|_<<12,x=x+q|0,b^=x,b=b>>>32-16|b<<16,E=E+b|0,q^=E,q=q>>>32-12|q<<12,N=N+G|0,A^=N,A=A>>>32-16|A<<16,a=a+A|0,G^=a,G=G>>>32-12|G<<12,x=x+q|0,b^=x,b=b>>>32-8|b<<8,E=E+b|0,q^=E,q=q>>>32-7|q<<7,N=N+G|0,A^=N,A=A>>>32-8|A<<8,a=a+A|0,G^=a,G=G>>>32-7|G<<7,M=M+_|0,p^=M,p=p>>>32-8|p<<8,J=J+p|0,_^=J,_=_>>>32-7|_<<7,U=U+s|0,u^=U,u=u>>>32-8|u<<8,W=W+u|0,s^=W,s=s>>>32-7|s<<7,U=U+_|0,A^=U,A=A>>>32-16|A<<16,E=E+A|0,_^=E,_=_>>>32-12|_<<12,M=M+q|0,u^=M,u=u>>>32-16|u<<16,a=a+u|0,q^=a,q=q>>>32-12|q<<12,x=x+G|0,p^=x,p=p>>>32-16|p<<16,W=W+p|0,G^=W,G=G>>>32-12|G<<12,N=N+s|0,b^=N,b=b>>>32-16|b<<16,J=J+b|0,s^=J,s=s>>>32-12|s<<12,x=x+G|0,p^=x,p=p>>>32-8|p<<8,W=W+p|0,G^=W,G=G>>>32-7|G<<7,N=N+s|0,b^=N,b=b>>>32-8|b<<8,J=J+b|0,s^=J,s=s>>>32-7|s<<7,M=M+q|0,u^=M,u=u>>>32-8|u<<8,a=a+u|0,q^=a,q=q>>>32-7|q<<7,U=U+_|0,A^=U,A=A>>>32-8|A<<8,E=E+A|0,_^=E,_=_>>>32-7|_<<7;Jt.writeUint32LE(U+n|0,t,0),Jt.writeUint32LE(M+i|0,t,4),Jt.writeUint32LE(x+f|0,t,8),Jt.writeUint32LE(N+h|0,t,12),Jt.writeUint32LE(s+c|0,t,16),Jt.writeUint32LE(_+d|0,t,20),Jt.writeUint32LE(q+v|0,t,24),Jt.writeUint32LE(G+g|0,t,28),Jt.writeUint32LE(W+m|0,t,32),Jt.writeUint32LE(J+D|0,t,36),Jt.writeUint32LE(E+S|0,t,40),Jt.writeUint32LE(a+O|0,t,44),Jt.writeUint32LE(u+T|0,t,48),Jt.writeUint32LE(p+P|0,t,52),Jt.writeUint32LE(b+j|0,t,56),Jt.writeUint32LE(A+I|0,t,60)}function po(t,e,r,n,i){if(i===void 0&&(i=0),t.length!==32)throw new Error("ChaCha: key size must be 32 bytes");if(n.length>>=8,e++;if(n>0)throw new Error("ChaCha: counter overflow")}var go={},Ke={};Object.defineProperty(Ke,"__esModule",{value:!0});function _l(t,e,r){return~(t-1)&e|t-1&r}Ke.select=_l;function Dl(t,e){return(t|0)-(e|0)-1>>>31&1}Ke.lessOrEqual=Dl;function bo(t,e){if(t.length!==e.length)return 0;for(var r=0,n=0;n>>8}Ke.compare=bo;function Sl(t,e){return t.length===0||e.length===0?!1:bo(t,e)!==0}Ke.equal=Sl,function(t){Object.defineProperty(t,"__esModule",{value:!0});var e=Ke,r=pe;t.DIGEST_LENGTH=16;var n=function(){function h(c){this.digestLength=t.DIGEST_LENGTH,this._buffer=new Uint8Array(16),this._r=new Uint16Array(10),this._h=new Uint16Array(10),this._pad=new Uint16Array(8),this._leftover=0,this._fin=0,this._finished=!1;var d=c[0]|c[1]<<8;this._r[0]=d&8191;var v=c[2]|c[3]<<8;this._r[1]=(d>>>13|v<<3)&8191;var g=c[4]|c[5]<<8;this._r[2]=(v>>>10|g<<6)&7939;var m=c[6]|c[7]<<8;this._r[3]=(g>>>7|m<<9)&8191;var D=c[8]|c[9]<<8;this._r[4]=(m>>>4|D<<12)&255,this._r[5]=D>>>1&8190;var S=c[10]|c[11]<<8;this._r[6]=(D>>>14|S<<2)&8191;var O=c[12]|c[13]<<8;this._r[7]=(S>>>11|O<<5)&8065;var T=c[14]|c[15]<<8;this._r[8]=(O>>>8|T<<8)&8191,this._r[9]=T>>>5&127,this._pad[0]=c[16]|c[17]<<8,this._pad[1]=c[18]|c[19]<<8,this._pad[2]=c[20]|c[21]<<8,this._pad[3]=c[22]|c[23]<<8,this._pad[4]=c[24]|c[25]<<8,this._pad[5]=c[26]|c[27]<<8,this._pad[6]=c[28]|c[29]<<8,this._pad[7]=c[30]|c[31]<<8}return h.prototype._blocks=function(c,d,v){for(var g=this._fin?0:2048,m=this._h[0],D=this._h[1],S=this._h[2],O=this._h[3],T=this._h[4],P=this._h[5],j=this._h[6],I=this._h[7],U=this._h[8],M=this._h[9],x=this._r[0],N=this._r[1],s=this._r[2],_=this._r[3],q=this._r[4],G=this._r[5],W=this._r[6],J=this._r[7],E=this._r[8],a=this._r[9];v>=16;){var u=c[d+0]|c[d+1]<<8;m+=u&8191;var p=c[d+2]|c[d+3]<<8;D+=(u>>>13|p<<3)&8191;var b=c[d+4]|c[d+5]<<8;S+=(p>>>10|b<<6)&8191;var A=c[d+6]|c[d+7]<<8;O+=(b>>>7|A<<9)&8191;var C=c[d+8]|c[d+9]<<8;T+=(A>>>4|C<<12)&8191,P+=C>>>1&8191;var R=c[d+10]|c[d+11]<<8;j+=(C>>>14|R<<2)&8191;var y=c[d+12]|c[d+13]<<8;I+=(R>>>11|y<<5)&8191;var o=c[d+14]|c[d+15]<<8;U+=(y>>>8|o<<8)&8191,M+=o>>>5|g;var w=0,V=w;V+=m*x,V+=D*(5*a),V+=S*(5*E),V+=O*(5*J),V+=T*(5*W),w=V>>>13,V&=8191,V+=P*(5*G),V+=j*(5*q),V+=I*(5*_),V+=U*(5*s),V+=M*(5*N),w+=V>>>13,V&=8191;var l=w;l+=m*N,l+=D*x,l+=S*(5*a),l+=O*(5*E),l+=T*(5*J),w=l>>>13,l&=8191,l+=P*(5*W),l+=j*(5*G),l+=I*(5*q),l+=U*(5*_),l+=M*(5*s),w+=l>>>13,l&=8191;var F=w;F+=m*s,F+=D*N,F+=S*x,F+=O*(5*a),F+=T*(5*E),w=F>>>13,F&=8191,F+=P*(5*J),F+=j*(5*W),F+=I*(5*G),F+=U*(5*q),F+=M*(5*_),w+=F>>>13,F&=8191;var L=w;L+=m*_,L+=D*s,L+=S*N,L+=O*x,L+=T*(5*a),w=L>>>13,L&=8191,L+=P*(5*E),L+=j*(5*J),L+=I*(5*W),L+=U*(5*G),L+=M*(5*q),w+=L>>>13,L&=8191;var H=w;H+=m*q,H+=D*_,H+=S*s,H+=O*N,H+=T*x,w=H>>>13,H&=8191,H+=P*(5*a),H+=j*(5*E),H+=I*(5*J),H+=U*(5*W),H+=M*(5*G),w+=H>>>13,H&=8191;var k=w;k+=m*G,k+=D*q,k+=S*_,k+=O*s,k+=T*N,w=k>>>13,k&=8191,k+=P*x,k+=j*(5*a),k+=I*(5*E),k+=U*(5*J),k+=M*(5*W),w+=k>>>13,k&=8191;var Y=w;Y+=m*W,Y+=D*G,Y+=S*q,Y+=O*_,Y+=T*s,w=Y>>>13,Y&=8191,Y+=P*N,Y+=j*x,Y+=I*(5*a),Y+=U*(5*E),Y+=M*(5*J),w+=Y>>>13,Y&=8191;var z=w;z+=m*J,z+=D*W,z+=S*G,z+=O*q,z+=T*_,w=z>>>13,z&=8191,z+=P*s,z+=j*N,z+=I*x,z+=U*(5*a),z+=M*(5*E),w+=z>>>13,z&=8191;var K=w;K+=m*E,K+=D*J,K+=S*W,K+=O*G,K+=T*q,w=K>>>13,K&=8191,K+=P*_,K+=j*s,K+=I*N,K+=U*x,K+=M*(5*a),w+=K>>>13,K&=8191;var X=w;X+=m*a,X+=D*E,X+=S*J,X+=O*W,X+=T*G,w=X>>>13,X&=8191,X+=P*q,X+=j*_,X+=I*s,X+=U*N,X+=M*x,w+=X>>>13,X&=8191,w=(w<<2)+w|0,w=w+V|0,V=w&8191,w=w>>>13,l+=w,m=V,D=l,S=F,O=L,T=H,P=k,j=Y,I=z,U=K,M=X,d+=16,v-=16}this._h[0]=m,this._h[1]=D,this._h[2]=S,this._h[3]=O,this._h[4]=T,this._h[5]=P,this._h[6]=j,this._h[7]=I,this._h[8]=U,this._h[9]=M},h.prototype.finish=function(c,d){d===void 0&&(d=0);var v=new Uint16Array(10),g,m,D,S;if(this._leftover){for(S=this._leftover,this._buffer[S++]=1;S<16;S++)this._buffer[S]=0;this._fin=1,this._blocks(this._buffer,0,16)}for(g=this._h[1]>>>13,this._h[1]&=8191,S=2;S<10;S++)this._h[S]+=g,g=this._h[S]>>>13,this._h[S]&=8191;for(this._h[0]+=g*5,g=this._h[0]>>>13,this._h[0]&=8191,this._h[1]+=g,g=this._h[1]>>>13,this._h[1]&=8191,this._h[2]+=g,v[0]=this._h[0]+5,g=v[0]>>>13,v[0]&=8191,S=1;S<10;S++)v[S]=this._h[S]+g,g=v[S]>>>13,v[S]&=8191;for(v[9]-=8192,m=(g^1)-1,S=0;S<10;S++)v[S]&=m;for(m=~m,S=0;S<10;S++)this._h[S]=this._h[S]&m|v[S];for(this._h[0]=(this._h[0]|this._h[1]<<13)&65535,this._h[1]=(this._h[1]>>>3|this._h[2]<<10)&65535,this._h[2]=(this._h[2]>>>6|this._h[3]<<7)&65535,this._h[3]=(this._h[3]>>>9|this._h[4]<<4)&65535,this._h[4]=(this._h[4]>>>12|this._h[5]<<1|this._h[6]<<14)&65535,this._h[5]=(this._h[6]>>>2|this._h[7]<<11)&65535,this._h[6]=(this._h[7]>>>5|this._h[8]<<8)&65535,this._h[7]=(this._h[8]>>>8|this._h[9]<<5)&65535,D=this._h[0]+this._pad[0],this._h[0]=D&65535,S=1;S<8;S++)D=(this._h[S]+this._pad[S]|0)+(D>>>16)|0,this._h[S]=D&65535;return c[d+0]=this._h[0]>>>0,c[d+1]=this._h[0]>>>8,c[d+2]=this._h[1]>>>0,c[d+3]=this._h[1]>>>8,c[d+4]=this._h[2]>>>0,c[d+5]=this._h[2]>>>8,c[d+6]=this._h[3]>>>0,c[d+7]=this._h[3]>>>8,c[d+8]=this._h[4]>>>0,c[d+9]=this._h[4]>>>8,c[d+10]=this._h[5]>>>0,c[d+11]=this._h[5]>>>8,c[d+12]=this._h[6]>>>0,c[d+13]=this._h[6]>>>8,c[d+14]=this._h[7]>>>0,c[d+15]=this._h[7]>>>8,this._finished=!0,this},h.prototype.update=function(c){var d=0,v=c.length,g;if(this._leftover){g=16-this._leftover,g>v&&(g=v);for(var m=0;m=16&&(g=v-v%16,this._blocks(c,d,g),d+=g,v-=g),v){for(var m=0;m16)throw new Error("ChaCha20Poly1305: incorrect nonce length");var S=new Uint8Array(16);S.set(v,S.length-v.length);var O=new Uint8Array(32);e.stream(this._key,S,O,4);var T=g.length+this.tagLength,P;if(D){if(D.length!==T)throw new Error("ChaCha20Poly1305: incorrect destination length");P=D}else P=new Uint8Array(T);return e.streamXOR(this._key,S,g,P,4),this._authenticate(P.subarray(P.length-this.tagLength,P.length),O,P.subarray(0,P.length-this.tagLength),m),n.wipe(S),P},d.prototype.open=function(v,g,m,D){if(v.length>16)throw new Error("ChaCha20Poly1305: incorrect nonce length");if(g.length0&&S.update(h.subarray(D.length%16))),S.update(m),m.length%16>0&&S.update(h.subarray(m.length%16));var O=new Uint8Array(8);D&&i.writeUint64LE(D.length,O),S.update(O),i.writeUint64LE(m.length,O),S.update(O);for(var T=S.digest(),P=0;Pthis.blockSize?this._inner.update(r).finish(n).clean():n.set(r);for(var i=0;i1&&this._hmac.update(this._buffer),this._info&&this._hmac.update(this._info),this._hmac.update(this._counter),this._hmac.finish(this._buffer),this._bufpos=0},t.prototype.expand=function(e){for(var r=new Uint8Array(e),n=0;n256)throw new Error("randomString charset is too long");let D="";const S=g.length,O=256-256%S;for(;v>0;){const T=i(Math.ceil(v*256/O),m);for(let P=0;P0;P++){const j=T[P];j0){for(;this._bufferLength0;)this._buffer[this._bufferLength++]=d[g++],v--;this._bufferLength===this.blockSize&&(f(this._temp,this._state,this._buffer,0,this.blockSize),this._bufferLength=0)}for(v>=this.blockSize&&(g=f(this._temp,this._state,d,g,v),v%=this.blockSize);v>0;)this._buffer[this._bufferLength++]=d[g++],v--;return this},c.prototype.finish=function(d){if(!this._finished){var v=this._bytesHashed,g=this._bufferLength,m=v/536870912|0,D=v<<3,S=v%64<56?64:128;this._buffer[g]=128;for(var O=g+1;O0?new Uint8Array(this._buffer):void 0,bufferLength:this._bufferLength,bytesHashed:this._bytesHashed}},c.prototype.restoreState=function(d){return this._state.set(d.state),this._bufferLength=d.bufferLength,d.buffer&&this._buffer.set(d.buffer),this._bytesHashed=d.bytesHashed,this._finished=!1,this},c.prototype.cleanSavedState=function(d){r.wipe(d.state),d.buffer&&r.wipe(d.buffer),d.bufferLength=0,d.bytesHashed=0},c}();t.SHA256=n;var i=new Int32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function f(c,d,v,g,m){for(;m>=64;){for(var D=d[0],S=d[1],O=d[2],T=d[3],P=d[4],j=d[5],I=d[6],U=d[7],M=0;M<16;M++){var x=g+M*4;c[M]=e.readUint32BE(v,x)}for(var M=16;M<64;M++){var N=c[M-2],s=(N>>>17|N<<32-17)^(N>>>19|N<<32-19)^N>>>10;N=c[M-15];var _=(N>>>7|N<<32-7)^(N>>>18|N<<32-18)^N>>>3;c[M]=(s+c[M-7]|0)+(_+c[M-16]|0)}for(var M=0;M<64;M++){var s=(((P>>>6|P<<26)^(P>>>11|P<<21)^(P>>>25|P<<7))+(P&j^~P&I)|0)+(U+(i[M]+c[M]|0)|0)|0,_=((D>>>2|D<<32-2)^(D>>>13|D<<32-13)^(D>>>22|D<<32-22))+(D&S^D&O^S&O)|0;U=I,I=j,j=P,P=T+s|0,T=O,O=S,S=D,D=s+_|0}d[0]+=D,d[1]+=S,d[2]+=O,d[3]+=T,d[4]+=P,d[5]+=j,d[6]+=I,d[7]+=U,g+=64,m-=64}return g}function h(c){var d=new n;d.update(c);var v=d.digest();return d.clean(),v}t.hash=h})(An);var xi={};(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.sharedKey=t.generateKeyPair=t.generateKeyPairFromSeed=t.scalarMultBase=t.scalarMult=t.SHARED_KEY_LENGTH=t.SECRET_KEY_LENGTH=t.PUBLIC_KEY_LENGTH=void 0;const e=gn,r=pe;t.PUBLIC_KEY_LENGTH=32,t.SECRET_KEY_LENGTH=32,t.SHARED_KEY_LENGTH=32;function n(M){const x=new Float64Array(16);if(M)for(let N=0;N>16&1),N[G-1]&=65535;N[15]=s[15]-32767-(N[14]>>16&1);const q=N[15]>>16&1;N[14]&=65535,c(s,N,1-q)}for(let _=0;_<16;_++)M[2*_]=s[_]&255,M[2*_+1]=s[_]>>8}function v(M,x){for(let N=0;N<16;N++)M[N]=x[2*N]+(x[2*N+1]<<8);M[15]&=32767}function g(M,x,N){for(let s=0;s<16;s++)M[s]=x[s]+N[s]}function m(M,x,N){for(let s=0;s<16;s++)M[s]=x[s]-N[s]}function D(M,x,N){let s,_,q=0,G=0,W=0,J=0,E=0,a=0,u=0,p=0,b=0,A=0,C=0,R=0,y=0,o=0,w=0,V=0,l=0,F=0,L=0,H=0,k=0,Y=0,z=0,K=0,X=0,Q=0,$=0,ae=0,pt=0,gt=0,Oe=0,tt=N[0],et=N[1],Lt=N[2],rt=N[3],nt=N[4],Ht=N[5],it=N[6],ft=N[7],kt=N[8],at=N[9],ot=N[10],jt=N[11],st=N[12],ut=N[13],qt=N[14],ht=N[15];s=x[0],q+=s*tt,G+=s*et,W+=s*Lt,J+=s*rt,E+=s*nt,a+=s*Ht,u+=s*it,p+=s*ft,b+=s*kt,A+=s*at,C+=s*ot,R+=s*jt,y+=s*st,o+=s*ut,w+=s*qt,V+=s*ht,s=x[1],G+=s*tt,W+=s*et,J+=s*Lt,E+=s*rt,a+=s*nt,u+=s*Ht,p+=s*it,b+=s*ft,A+=s*kt,C+=s*at,R+=s*ot,y+=s*jt,o+=s*st,w+=s*ut,V+=s*qt,l+=s*ht,s=x[2],W+=s*tt,J+=s*et,E+=s*Lt,a+=s*rt,u+=s*nt,p+=s*Ht,b+=s*it,A+=s*ft,C+=s*kt,R+=s*at,y+=s*ot,o+=s*jt,w+=s*st,V+=s*ut,l+=s*qt,F+=s*ht,s=x[3],J+=s*tt,E+=s*et,a+=s*Lt,u+=s*rt,p+=s*nt,b+=s*Ht,A+=s*it,C+=s*ft,R+=s*kt,y+=s*at,o+=s*ot,w+=s*jt,V+=s*st,l+=s*ut,F+=s*qt,L+=s*ht,s=x[4],E+=s*tt,a+=s*et,u+=s*Lt,p+=s*rt,b+=s*nt,A+=s*Ht,C+=s*it,R+=s*ft,y+=s*kt,o+=s*at,w+=s*ot,V+=s*jt,l+=s*st,F+=s*ut,L+=s*qt,H+=s*ht,s=x[5],a+=s*tt,u+=s*et,p+=s*Lt,b+=s*rt,A+=s*nt,C+=s*Ht,R+=s*it,y+=s*ft,o+=s*kt,w+=s*at,V+=s*ot,l+=s*jt,F+=s*st,L+=s*ut,H+=s*qt,k+=s*ht,s=x[6],u+=s*tt,p+=s*et,b+=s*Lt,A+=s*rt,C+=s*nt,R+=s*Ht,y+=s*it,o+=s*ft,w+=s*kt,V+=s*at,l+=s*ot,F+=s*jt,L+=s*st,H+=s*ut,k+=s*qt,Y+=s*ht,s=x[7],p+=s*tt,b+=s*et,A+=s*Lt,C+=s*rt,R+=s*nt,y+=s*Ht,o+=s*it,w+=s*ft,V+=s*kt,l+=s*at,F+=s*ot,L+=s*jt,H+=s*st,k+=s*ut,Y+=s*qt,z+=s*ht,s=x[8],b+=s*tt,A+=s*et,C+=s*Lt,R+=s*rt,y+=s*nt,o+=s*Ht,w+=s*it,V+=s*ft,l+=s*kt,F+=s*at,L+=s*ot,H+=s*jt,k+=s*st,Y+=s*ut,z+=s*qt,K+=s*ht,s=x[9],A+=s*tt,C+=s*et,R+=s*Lt,y+=s*rt,o+=s*nt,w+=s*Ht,V+=s*it,l+=s*ft,F+=s*kt,L+=s*at,H+=s*ot,k+=s*jt,Y+=s*st,z+=s*ut,K+=s*qt,X+=s*ht,s=x[10],C+=s*tt,R+=s*et,y+=s*Lt,o+=s*rt,w+=s*nt,V+=s*Ht,l+=s*it,F+=s*ft,L+=s*kt,H+=s*at,k+=s*ot,Y+=s*jt,z+=s*st,K+=s*ut,X+=s*qt,Q+=s*ht,s=x[11],R+=s*tt,y+=s*et,o+=s*Lt,w+=s*rt,V+=s*nt,l+=s*Ht,F+=s*it,L+=s*ft,H+=s*kt,k+=s*at,Y+=s*ot,z+=s*jt,K+=s*st,X+=s*ut,Q+=s*qt,$+=s*ht,s=x[12],y+=s*tt,o+=s*et,w+=s*Lt,V+=s*rt,l+=s*nt,F+=s*Ht,L+=s*it,H+=s*ft,k+=s*kt,Y+=s*at,z+=s*ot,K+=s*jt,X+=s*st,Q+=s*ut,$+=s*qt,ae+=s*ht,s=x[13],o+=s*tt,w+=s*et,V+=s*Lt,l+=s*rt,F+=s*nt,L+=s*Ht,H+=s*it,k+=s*ft,Y+=s*kt,z+=s*at,K+=s*ot,X+=s*jt,Q+=s*st,$+=s*ut,ae+=s*qt,pt+=s*ht,s=x[14],w+=s*tt,V+=s*et,l+=s*Lt,F+=s*rt,L+=s*nt,H+=s*Ht,k+=s*it,Y+=s*ft,z+=s*kt,K+=s*at,X+=s*ot,Q+=s*jt,$+=s*st,ae+=s*ut,pt+=s*qt,gt+=s*ht,s=x[15],V+=s*tt,l+=s*et,F+=s*Lt,L+=s*rt,H+=s*nt,k+=s*Ht,Y+=s*it,z+=s*ft,K+=s*kt,X+=s*at,Q+=s*ot,$+=s*jt,ae+=s*st,pt+=s*ut,gt+=s*qt,Oe+=s*ht,q+=38*l,G+=38*F,W+=38*L,J+=38*H,E+=38*k,a+=38*Y,u+=38*z,p+=38*K,b+=38*X,A+=38*Q,C+=38*$,R+=38*ae,y+=38*pt,o+=38*gt,w+=38*Oe,_=1,s=q+_+65535,_=Math.floor(s/65536),q=s-_*65536,s=G+_+65535,_=Math.floor(s/65536),G=s-_*65536,s=W+_+65535,_=Math.floor(s/65536),W=s-_*65536,s=J+_+65535,_=Math.floor(s/65536),J=s-_*65536,s=E+_+65535,_=Math.floor(s/65536),E=s-_*65536,s=a+_+65535,_=Math.floor(s/65536),a=s-_*65536,s=u+_+65535,_=Math.floor(s/65536),u=s-_*65536,s=p+_+65535,_=Math.floor(s/65536),p=s-_*65536,s=b+_+65535,_=Math.floor(s/65536),b=s-_*65536,s=A+_+65535,_=Math.floor(s/65536),A=s-_*65536,s=C+_+65535,_=Math.floor(s/65536),C=s-_*65536,s=R+_+65535,_=Math.floor(s/65536),R=s-_*65536,s=y+_+65535,_=Math.floor(s/65536),y=s-_*65536,s=o+_+65535,_=Math.floor(s/65536),o=s-_*65536,s=w+_+65535,_=Math.floor(s/65536),w=s-_*65536,s=V+_+65535,_=Math.floor(s/65536),V=s-_*65536,q+=_-1+37*(_-1),_=1,s=q+_+65535,_=Math.floor(s/65536),q=s-_*65536,s=G+_+65535,_=Math.floor(s/65536),G=s-_*65536,s=W+_+65535,_=Math.floor(s/65536),W=s-_*65536,s=J+_+65535,_=Math.floor(s/65536),J=s-_*65536,s=E+_+65535,_=Math.floor(s/65536),E=s-_*65536,s=a+_+65535,_=Math.floor(s/65536),a=s-_*65536,s=u+_+65535,_=Math.floor(s/65536),u=s-_*65536,s=p+_+65535,_=Math.floor(s/65536),p=s-_*65536,s=b+_+65535,_=Math.floor(s/65536),b=s-_*65536,s=A+_+65535,_=Math.floor(s/65536),A=s-_*65536,s=C+_+65535,_=Math.floor(s/65536),C=s-_*65536,s=R+_+65535,_=Math.floor(s/65536),R=s-_*65536,s=y+_+65535,_=Math.floor(s/65536),y=s-_*65536,s=o+_+65535,_=Math.floor(s/65536),o=s-_*65536,s=w+_+65535,_=Math.floor(s/65536),w=s-_*65536,s=V+_+65535,_=Math.floor(s/65536),V=s-_*65536,q+=_-1+37*(_-1),M[0]=q,M[1]=G,M[2]=W,M[3]=J,M[4]=E,M[5]=a,M[6]=u,M[7]=p,M[8]=b,M[9]=A,M[10]=C,M[11]=R,M[12]=y,M[13]=o,M[14]=w,M[15]=V}function S(M,x){D(M,x,x)}function O(M,x){const N=n();for(let s=0;s<16;s++)N[s]=x[s];for(let s=253;s>=0;s--)S(N,N),s!==2&&s!==4&&D(N,N,x);for(let s=0;s<16;s++)M[s]=N[s]}function T(M,x){const N=new Uint8Array(32),s=new Float64Array(80),_=n(),q=n(),G=n(),W=n(),J=n(),E=n();for(let b=0;b<31;b++)N[b]=M[b];N[31]=M[31]&127|64,N[0]&=248,v(s,x);for(let b=0;b<16;b++)q[b]=s[b];_[0]=W[0]=1;for(let b=254;b>=0;--b){const A=N[b>>>3]>>>(b&7)&1;c(_,q,A),c(G,W,A),g(J,_,G),m(_,_,G),g(G,q,W),m(q,q,W),S(W,J),S(E,_),D(_,G,_),D(G,q,J),g(J,_,G),m(_,_,G),S(q,_),m(G,W,E),D(_,G,f),g(_,_,W),D(G,G,_),D(_,W,E),D(W,q,s),S(q,J),c(_,q,A),c(G,W,A)}for(let b=0;b<16;b++)s[b+16]=_[b],s[b+32]=G[b],s[b+48]=q[b],s[b+64]=W[b];const a=s.subarray(32),u=s.subarray(16);O(a,a),D(u,u,a);const p=new Uint8Array(32);return d(p,u),p}t.scalarMult=T;function P(M){return T(M,i)}t.scalarMultBase=P;function j(M){if(M.length!==t.SECRET_KEY_LENGTH)throw new Error(`x25519: seed must be ${t.SECRET_KEY_LENGTH} bytes`);const x=new Uint8Array(M);return{publicKey:P(x),secretKey:x}}t.generateKeyPairFromSeed=j;function I(M){const x=(0,e.randomBytes)(32,M),N=j(x);return(0,r.wipe)(x),N}t.generateKeyPair=I;function U(M,x,N=!1){if(M.length!==t.PUBLIC_KEY_LENGTH)throw new Error("X25519: incorrect secret key length");if(x.length!==t.PUBLIC_KEY_LENGTH)throw new Error("X25519: incorrect public key length");const s=T(M,x);if(N){let _=0;for(let q=0;qi+f.length,0));const r=_o(e);let n=0;for(const i of t)r.set(i,n),n+=i.length;return r}function Hl(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var r=new Uint8Array(256),n=0;n>>0,M=new Uint8Array(U);j!==I;){for(var x=O[j],N=0,s=U-1;(x!==0||N>>0,M[s]=x%c>>>0,x=x/c>>>0;if(x!==0)throw new Error("Non-zero carry");P=N,j++}for(var _=U-P;_!==U&&M[_]===0;)_++;for(var q=d.repeat(T);_>>0,U=new Uint8Array(I);O[T];){var M=r[O.charCodeAt(T)];if(M===255)return;for(var x=0,N=I-1;(M!==0||x>>0,U[N]=M%256>>>0,M=M/256>>>0;if(M!==0)throw new Error("Non-zero carry");j=x,T++}if(O[T]!==" "){for(var s=I-j;s!==I&&U[s]===0;)s++;for(var _=new Uint8Array(P+(I-s)),q=P;s!==I;)_[q++]=U[s++];return _}}}function S(O){var T=D(O);if(T)return T;throw new Error(`Non-${e} character`)}return{encode:m,decodeUnsafe:D,decode:S}}var kl=Hl,jl=kl;const So=t=>{if(t instanceof Uint8Array&&t.constructor.name==="Uint8Array")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error("Unknown type, must be binary type")},ql=t=>new TextEncoder().encode(t),Kl=t=>new TextDecoder().decode(t);class zl{constructor(e,r,n){this.name=e,this.prefix=r,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class Vl{constructor(e,r,n){if(this.name=e,this.prefix=r,r.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=r.codePointAt(0),this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Mo(this,e)}}class Yl{constructor(e){this.decoders=e}or(e){return Mo(this,e)}decode(e){const r=e[0],n=this.decoders[r];if(n)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const Mo=(t,e)=>new Yl({...t.decoders||{[t.prefix]:t},...e.decoders||{[e.prefix]:e}});class Gl{constructor(e,r,n,i){this.name=e,this.prefix=r,this.baseEncode=n,this.baseDecode=i,this.encoder=new zl(e,r,n),this.decoder=new Vl(e,r,i)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const yn=({name:t,prefix:e,encode:r,decode:n})=>new Gl(t,e,r,n),Kr=({prefix:t,name:e,alphabet:r})=>{const{encode:n,decode:i}=jl(r,e);return yn({prefix:t,name:e,encode:n,decode:f=>So(i(f))})},Wl=(t,e,r,n)=>{const i={};for(let g=0;g=8&&(c-=8,h[v++]=255&d>>c)}if(c>=r||255&d<<8-c)throw new SyntaxError("Unexpected end of data");return h},Ql=(t,e,r)=>{const n=e[e.length-1]==="=",i=(1<r;)h-=r,f+=e[i&c>>h];if(h&&(f+=e[i&c<yn({prefix:e,name:t,encode(i){return Ql(i,n,r)},decode(i){return Wl(i,n,r,t)}}),Jl=yn({prefix:"\0",name:"identity",encode:t=>Kl(t),decode:t=>ql(t)});var $l=Object.freeze({__proto__:null,identity:Jl});const Xl=Wt({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Zl=Object.freeze({__proto__:null,base2:Xl});const td=Wt({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var ed=Object.freeze({__proto__:null,base8:td});const rd=Kr({prefix:"9",name:"base10",alphabet:"0123456789"});var nd=Object.freeze({__proto__:null,base10:rd});const id=Wt({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),fd=Wt({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var ad=Object.freeze({__proto__:null,base16:id,base16upper:fd});const od=Wt({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),sd=Wt({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),ud=Wt({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),hd=Wt({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),cd=Wt({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),ld=Wt({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),dd=Wt({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),vd=Wt({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),pd=Wt({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var gd=Object.freeze({__proto__:null,base32:od,base32upper:sd,base32pad:ud,base32padupper:hd,base32hex:cd,base32hexupper:ld,base32hexpad:dd,base32hexpadupper:vd,base32z:pd});const bd=Kr({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),md=Kr({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var wd=Object.freeze({__proto__:null,base36:bd,base36upper:md});const Ad=Kr({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),yd=Kr({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Ed=Object.freeze({__proto__:null,base58btc:Ad,base58flickr:yd});const _d=Wt({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Dd=Wt({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Sd=Wt({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Md=Wt({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var xd=Object.freeze({__proto__:null,base64:_d,base64pad:Dd,base64url:Sd,base64urlpad:Md});const xo=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),Nd=xo.reduce((t,e,r)=>(t[r]=e,t),[]),Cd=xo.reduce((t,e,r)=>(t[e.codePointAt(0)]=r,t),[]);function Od(t){return t.reduce((e,r)=>(e+=Nd[r],e),"")}function Id(t){const e=[];for(const r of t){const n=Cd[r.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${r}`);e.push(n)}return new Uint8Array(e)}const Bd=yn({prefix:"\u{1F680}",name:"base256emoji",encode:Od,decode:Id});var Rd=Object.freeze({__proto__:null,base256emoji:Bd}),Fd=Co,No=128,Ud=127,Td=~Ud,Pd=Math.pow(2,31);function Co(t,e,r){e=e||[],r=r||0;for(var n=r;t>=Pd;)e[r++]=t&255|No,t/=128;for(;t&Td;)e[r++]=t&255|No,t>>>=7;return e[r]=t|0,Co.bytes=r-n+1,e}var Ld=Ni,Hd=128,Oo=127;function Ni(t,n){var r=0,n=n||0,i=0,f=n,h,c=t.length;do{if(f>=c)throw Ni.bytes=0,new RangeError("Could not decode varint");h=t[f++],r+=i<28?(h&Oo)<=Hd);return Ni.bytes=f-n,r}var kd=Math.pow(2,7),jd=Math.pow(2,14),qd=Math.pow(2,21),Kd=Math.pow(2,28),zd=Math.pow(2,35),Vd=Math.pow(2,42),Yd=Math.pow(2,49),Gd=Math.pow(2,56),Wd=Math.pow(2,63),Qd=function(t){return t(Io.encode(t,e,r),e),Ro=t=>Io.encodingLength(t),Ci=(t,e)=>{const r=e.byteLength,n=Ro(t),i=n+Ro(r),f=new Uint8Array(i+r);return Bo(t,f,0),Bo(r,f,n),f.set(e,i),new $d(t,r,e,f)};class $d{constructor(e,r,n,i){this.code=e,this.size=r,this.digest=n,this.bytes=i}}const Fo=({name:t,code:e,encode:r})=>new Xd(t,e,r);class Xd{constructor(e,r,n){this.name=e,this.code=r,this.encode=n}digest(e){if(e instanceof Uint8Array){const r=this.encode(e);return r instanceof Uint8Array?Ci(this.code,r):r.then(n=>Ci(this.code,n))}else throw Error("Unknown type, must be binary type")}}const Uo=t=>async e=>new Uint8Array(await crypto.subtle.digest(t,e)),Zd=Fo({name:"sha2-256",code:18,encode:Uo("SHA-256")}),t1=Fo({name:"sha2-512",code:19,encode:Uo("SHA-512")});var e1=Object.freeze({__proto__:null,sha256:Zd,sha512:t1});const To=0,r1="identity",Po=So;var n1=Object.freeze({__proto__:null,identity:{code:To,name:r1,encode:Po,digest:t=>Ci(To,Po(t))}});new TextEncoder,new TextDecoder;const Lo={...$l,...Zl,...ed,...nd,...ad,...gd,...wd,...Ed,...xd,...Rd};({...e1,...n1});function Ho(t,e,r,n){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:r},decoder:{decode:n}}}const ko=Ho("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),Oi=Ho("ascii","a",t=>{let e="a";for(let r=0;r{t=t.substring(1);const e=_o(t.length);for(let r=0;r"u")throw new Error("Missing sender public key for type 1 envelope");const r=typeof t.senderPublicKey<"u"?ge(t.senderPublicKey,te):void 0,n=typeof t.iv<"u"?ge(t.iv,te):gn.randomBytes(Ri),i=new Ai.ChaCha20Poly1305(ge(t.symKey,te)).seal(n,ge(t.message,_n));return zo({type:e,sealed:i,iv:n,senderPublicKey:r})}function c1(t){const e=new Ai.ChaCha20Poly1305(ge(t.symKey,te)),{sealed:r,iv:n}=Ui(t.encoded),i=e.open(n,r);if(i===null)throw new Error("Failed to decrypt");return be(i,_n)}function zo(t){if(zr(t.type)===Nr){if(typeof t.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");return be(Do([t.type,t.senderPublicKey,t.iv,t.sealed]),En)}return be(Do([t.type,t.iv,t.sealed]),En)}function Ui(t){const e=ge(t,En),r=e.slice(i1,qo),n=qo;if(zr(r)===Nr){const c=n+Fi,d=c+Ri,v=e.slice(n,c),g=e.slice(c,d),m=e.slice(d);return{type:r,sealed:m,iv:g,senderPublicKey:v}}const i=n+Ri,f=e.slice(n,i),h=e.slice(i);return{type:r,sealed:h,iv:f}}function l1(t,e){const r=Ui(t);return Vo({type:zr(r.type),senderPublicKey:typeof r.senderPublicKey<"u"?be(r.senderPublicKey,te):void 0,receiverPublicKey:e?.receiverPublicKey})}function Vo(t){const e=t?.type||Bi;if(e===Nr){if(typeof t?.senderPublicKey>"u")throw new Error("missing sender public key");if(typeof t?.receiverPublicKey>"u")throw new Error("missing receiver public key")}return{type:e,senderPublicKey:t?.senderPublicKey,receiverPublicKey:t?.receiverPublicKey}}function d1(t){return t.type===Nr&&typeof t.senderPublicKey=="string"&&typeof t.receiverPublicKey=="string"}const v1={waku:{publish:"waku_publish",batchPublish:"waku_batchPublish",subscribe:"waku_subscribe",batchSubscribe:"waku_batchSubscribe",subscription:"waku_subscription",unsubscribe:"waku_unsubscribe",batchUnsubscribe:"waku_batchUnsubscribe",batchFetchMessages:"waku_batchFetchMessages"},irn:{publish:"irn_publish",batchPublish:"irn_batchPublish",subscribe:"irn_subscribe",batchSubscribe:"irn_batchSubscribe",subscription:"irn_subscription",unsubscribe:"irn_unsubscribe",batchUnsubscribe:"irn_batchUnsubscribe",batchFetchMessages:"irn_batchFetchMessages"},iridium:{publish:"iridium_publish",batchPublish:"iridium_batchPublish",subscribe:"iridium_subscribe",batchSubscribe:"iridium_batchSubscribe",subscription:"iridium_subscription",unsubscribe:"iridium_unsubscribe",batchUnsubscribe:"iridium_batchUnsubscribe",batchFetchMessages:"iridium_batchFetchMessages"}},Yo="irn";function p1(t){return t?.relay||{protocol:Yo}}function g1(t){const e=v1[t];if(typeof e>"u")throw new Error(`Relay Protocol not supported: ${t}`);return e}var b1=Object.defineProperty,m1=Object.defineProperties,w1=Object.getOwnPropertyDescriptors,Go=Object.getOwnPropertySymbols,A1=Object.prototype.hasOwnProperty,y1=Object.prototype.propertyIsEnumerable,Wo=(t,e,r)=>e in t?b1(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Qo=(t,e)=>{for(var r in e||(e={}))A1.call(e,r)&&Wo(t,r,e[r]);if(Go)for(var r of Go(e))y1.call(e,r)&&Wo(t,r,e[r]);return t},E1=(t,e)=>m1(t,w1(e));function Jo(t,e="-"){const r={},n="relay"+e;return Object.keys(t).forEach(i=>{if(i.startsWith(n)){const f=i.replace(n,""),h=t[i];r[f]=h}}),r}function _1(t){t=t.includes("wc://")?t.replace("wc://",""):t,t=t.includes("wc:")?t.replace("wc:",""):t;const e=t.indexOf(":"),r=t.indexOf("?")!==-1?t.indexOf("?"):void 0,n=t.substring(0,e),i=t.substring(e+1,r).split("@"),f=typeof r<"u"?t.substring(r):"",h=Br.parse(f),c=typeof h.methods=="string"?h.methods.split(","):void 0;return{protocol:n,topic:$o(i[0]),version:parseInt(i[1],10),symKey:h.symKey,relay:Jo(h),methods:c,expiryTimestamp:h.expiryTimestamp?parseInt(h.expiryTimestamp,10):void 0}}function $o(t){return t.startsWith("//")?t.substring(2):t}function Xo(t,e="-"){const r="relay",n={};return Object.keys(t).forEach(i=>{const f=r+e+i;t[i]&&(n[f]=t[i])}),n}function D1(t){return`${t.protocol}:${t.topic}@${t.version}?`+Br.stringify(Qo(E1(Qo({symKey:t.symKey},Xo(t.relay)),{expiryTimestamp:t.expiryTimestamp}),t.methods?{methods:t.methods.join(",")}:{}))}var S1=Object.defineProperty,M1=Object.defineProperties,x1=Object.getOwnPropertyDescriptors,Zo=Object.getOwnPropertySymbols,N1=Object.prototype.hasOwnProperty,C1=Object.prototype.propertyIsEnumerable,ts=(t,e,r)=>e in t?S1(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,O1=(t,e)=>{for(var r in e||(e={}))N1.call(e,r)&&ts(t,r,e[r]);if(Zo)for(var r of Zo(e))C1.call(e,r)&&ts(t,r,e[r]);return t},I1=(t,e)=>M1(t,x1(e));function nr(t){const e=[];return t.forEach(r=>{const[n,i]=r.split(":");e.push(`${n}:${i}`)}),e}function es(t){const e=[];return Object.values(t).forEach(r=>{e.push(...nr(r.accounts))}),e}function rs(t,e){const r=[];return Object.values(t).forEach(n=>{nr(n.accounts).includes(e)&&r.push(...n.methods)}),r}function ns(t,e){const r=[];return Object.values(t).forEach(n=>{nr(n.accounts).includes(e)&&r.push(...n.events)}),r}function B1(t,e){const r=vs(t,e);if(r)throw new Error(r.message);const n={};for(const[i,f]of Object.entries(t))n[i]={methods:f.methods,events:f.events,chains:f.accounts.map(h=>`${h.split(":")[0]}:${h.split(":")[1]}`)};return n}function R1(t){const{proposal:{requiredNamespaces:e,optionalNamespaces:r={}},supportedNamespaces:n}=t,i=Pi(e),f=Pi(r),h={};Object.keys(n).forEach(v=>{const g=n[v].chains,m=n[v].methods,D=n[v].events,S=n[v].accounts;g.forEach(O=>{if(!S.some(T=>T.includes(O)))throw new Error(`No accounts provided for chain ${O} in namespace ${v}`)}),h[v]={chains:g,methods:m,events:D,accounts:S}});const c=gs(e,h,"approve()");if(c)throw new Error(c.message);const d={};return!Object.keys(e).length&&!Object.keys(r).length?h:(Object.keys(i).forEach(v=>{const g=n[v].chains.filter(O=>{var T,P;return(P=(T=i[v])==null?void 0:T.chains)==null?void 0:P.includes(O)}),m=n[v].methods.filter(O=>{var T,P;return(P=(T=i[v])==null?void 0:T.methods)==null?void 0:P.includes(O)}),D=n[v].events.filter(O=>{var T,P;return(P=(T=i[v])==null?void 0:T.events)==null?void 0:P.includes(O)}),S=g.map(O=>n[v].accounts.filter(T=>T.includes(`${O}:`))).flat();d[v]={chains:g,methods:m,events:D,accounts:S}}),Object.keys(f).forEach(v=>{var g,m,D,S,O,T;if(!n[v])return;const P=(m=(g=f[v])==null?void 0:g.chains)==null?void 0:m.filter(M=>n[v].chains.includes(M)),j=n[v].methods.filter(M=>{var x,N;return(N=(x=f[v])==null?void 0:x.methods)==null?void 0:N.includes(M)}),I=n[v].events.filter(M=>{var x,N;return(N=(x=f[v])==null?void 0:x.events)==null?void 0:N.includes(M)}),U=P?.map(M=>n[v].accounts.filter(x=>x.includes(`${M}:`))).flat();d[v]={chains:Ie((D=d[v])==null?void 0:D.chains,P),methods:Ie((S=d[v])==null?void 0:S.methods,j),events:Ie((O=d[v])==null?void 0:O.events,I),accounts:Ie((T=d[v])==null?void 0:T.accounts,U)}}),d)}function Ti(t){return t.includes(":")}function is(t){return Ti(t)?t.split(":")[0]:t}function Pi(t){var e,r,n;const i={};if(!Dn(t))return i;for(const[f,h]of Object.entries(t)){const c=Ti(f)?[f]:h.chains,d=h.methods||[],v=h.events||[],g=is(f);i[g]=I1(O1({},i[g]),{chains:Ie(c,(e=i[g])==null?void 0:e.chains),methods:Ie(d,(r=i[g])==null?void 0:r.methods),events:Ie(v,(n=i[g])==null?void 0:n.events)})}return i}function fs(t){const e={};return t?.forEach(r=>{const[n,i]=r.split(":");e[n]||(e[n]={accounts:[],chains:[],events:[]}),e[n].accounts.push(r),e[n].chains.push(`${n}:${i}`)}),e}function F1(t,e){e=e.map(n=>n.replace("did:pkh:",""));const r=fs(e);for(const[n,i]of Object.entries(r))i.methods?i.methods=Ie(i.methods,t):i.methods=t,i.events=["chainChanged","accountsChanged"];return r}const as={INVALID_METHOD:{message:"Invalid method.",code:1001},INVALID_EVENT:{message:"Invalid event.",code:1002},INVALID_UPDATE_REQUEST:{message:"Invalid update request.",code:1003},INVALID_EXTEND_REQUEST:{message:"Invalid extend request.",code:1004},INVALID_SESSION_SETTLE_REQUEST:{message:"Invalid session settle request.",code:1005},UNAUTHORIZED_METHOD:{message:"Unauthorized method.",code:3001},UNAUTHORIZED_EVENT:{message:"Unauthorized event.",code:3002},UNAUTHORIZED_UPDATE_REQUEST:{message:"Unauthorized update request.",code:3003},UNAUTHORIZED_EXTEND_REQUEST:{message:"Unauthorized extend request.",code:3004},USER_REJECTED:{message:"User rejected.",code:5e3},USER_REJECTED_CHAINS:{message:"User rejected chains.",code:5001},USER_REJECTED_METHODS:{message:"User rejected methods.",code:5002},USER_REJECTED_EVENTS:{message:"User rejected events.",code:5003},UNSUPPORTED_CHAINS:{message:"Unsupported chains.",code:5100},UNSUPPORTED_METHODS:{message:"Unsupported methods.",code:5101},UNSUPPORTED_EVENTS:{message:"Unsupported events.",code:5102},UNSUPPORTED_ACCOUNTS:{message:"Unsupported accounts.",code:5103},UNSUPPORTED_NAMESPACE_KEY:{message:"Unsupported namespace key.",code:5104},USER_DISCONNECTED:{message:"User disconnected.",code:6e3},SESSION_SETTLEMENT_FAILED:{message:"Session settlement failed.",code:7e3},WC_METHOD_UNSUPPORTED:{message:"Unsupported wc_ method.",code:10001}},os={NOT_INITIALIZED:{message:"Not initialized.",code:1},NO_MATCHING_KEY:{message:"No matching key.",code:2},RESTORE_WILL_OVERRIDE:{message:"Restore will override.",code:3},RESUBSCRIBED:{message:"Resubscribed.",code:4},MISSING_OR_INVALID:{message:"Missing or invalid.",code:5},EXPIRED:{message:"Expired.",code:6},UNKNOWN_TYPE:{message:"Unknown type.",code:7},MISMATCHED_TOPIC:{message:"Mismatched topic.",code:8},NON_CONFORMING_NAMESPACES:{message:"Non conforming namespaces.",code:9}};function Te(t,e){const{message:r,code:n}=os[t];return{message:e?`${r} ${e}`:r,code:n}}function ir(t,e){const{message:r,code:n}=as[t];return{message:e?`${r} ${e}`:r,code:n}}function Vr(t,e){return Array.isArray(t)?typeof e<"u"&&t.length?t.every(e):!0:!1}function Dn(t){return Object.getPrototypeOf(t)===Object.prototype&&Object.keys(t).length}function ze(t){return typeof t>"u"}function fe(t,e){return e&&ze(t)?!0:typeof t=="string"&&!!t.trim().length}function Sn(t,e){return e&&ze(t)?!0:typeof t=="number"&&!isNaN(t)}function U1(t,e){const{requiredNamespaces:r}=e,n=Object.keys(t.namespaces),i=Object.keys(r);let f=!0;return Le(i,n)?(n.forEach(h=>{const{accounts:c,methods:d,events:v}=t.namespaces[h],g=nr(c),m=r[h];(!Le(Gr(h,m),g)||!Le(m.methods,d)||!Le(m.events,v))&&(f=!1)}),f):!1}function Yr(t){return fe(t,!1)&&t.includes(":")?t.split(":").length===2:!1}function ss(t){if(fe(t,!1)&&t.includes(":")){const e=t.split(":");if(e.length===3){const r=e[0]+":"+e[1];return!!e[2]&&Yr(r)}}return!1}function T1(t){if(fe(t,!1))try{return typeof new URL(t)<"u"}catch{return!1}return!1}function P1(t){var e;return(e=t?.proposer)==null?void 0:e.publicKey}function L1(t){return t?.topic}function H1(t,e){let r=null;return fe(t?.publicKey,!1)||(r=Te("MISSING_OR_INVALID",`${e} controller public key should be a string`)),r}function Li(t){let e=!0;return Vr(t)?t.length&&(e=t.every(r=>fe(r,!1))):e=!1,e}function us(t,e,r){let n=null;return Vr(e)&&e.length?e.forEach(i=>{n||Yr(i)||(n=ir("UNSUPPORTED_CHAINS",`${r}, chain ${i} should be a string and conform to "namespace:chainId" format`))}):Yr(t)||(n=ir("UNSUPPORTED_CHAINS",`${r}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)),n}function hs(t,e,r){let n=null;return Object.entries(t).forEach(([i,f])=>{if(n)return;const h=us(i,Gr(i,f),`${e} ${r}`);h&&(n=h)}),n}function cs(t,e){let r=null;return Vr(t)?t.forEach(n=>{r||ss(n)||(r=ir("UNSUPPORTED_ACCOUNTS",`${e}, account ${n} should be a string and conform to "namespace:chainId:address" format`))}):r=ir("UNSUPPORTED_ACCOUNTS",`${e}, accounts should be an array of strings conforming to "namespace:chainId:address" format`),r}function ls(t,e){let r=null;return Object.values(t).forEach(n=>{if(r)return;const i=cs(n?.accounts,`${e} namespace`);i&&(r=i)}),r}function ds(t,e){let r=null;return Li(t?.methods)?Li(t?.events)||(r=ir("UNSUPPORTED_EVENTS",`${e}, events should be an array of strings or empty array for no events`)):r=ir("UNSUPPORTED_METHODS",`${e}, methods should be an array of strings or empty array for no methods`),r}function Hi(t,e){let r=null;return Object.values(t).forEach(n=>{if(r)return;const i=ds(n,`${e}, namespace`);i&&(r=i)}),r}function k1(t,e,r){let n=null;if(t&&Dn(t)){const i=Hi(t,e);i&&(n=i);const f=hs(t,e,r);f&&(n=f)}else n=Te("MISSING_OR_INVALID",`${e}, ${r} should be an object with data`);return n}function vs(t,e){let r=null;if(t&&Dn(t)){const n=Hi(t,e);n&&(r=n);const i=ls(t,e);i&&(r=i)}else r=Te("MISSING_OR_INVALID",`${e}, namespaces should be an object with data`);return r}function ps(t){return fe(t.protocol,!0)}function j1(t,e){let r=!1;return e&&!t?r=!0:t&&Vr(t)&&t.length&&t.forEach(n=>{r=ps(n)}),r}function q1(t){return typeof t=="number"}function K1(t){return typeof t<"u"&&typeof t!==null}function z1(t){return!(!t||typeof t!="object"||!t.code||!Sn(t.code,!1)||!t.message||!fe(t.message,!1))}function V1(t){return!(ze(t)||!fe(t.method,!1))}function Y1(t){return!(ze(t)||ze(t.result)&&ze(t.error)||!Sn(t.id,!1)||!fe(t.jsonrpc,!1))}function G1(t){return!(ze(t)||!fe(t.name,!1))}function W1(t,e){return!(!Yr(e)||!es(t).includes(e))}function Q1(t,e,r){return fe(r,!1)?rs(t,e).includes(r):!1}function J1(t,e,r){return fe(r,!1)?ns(t,e).includes(r):!1}function gs(t,e,r){let n=null;const i=$1(t),f=X1(e),h=Object.keys(i),c=Object.keys(f),d=bs(Object.keys(t)),v=bs(Object.keys(e)),g=d.filter(m=>!v.includes(m));return g.length&&(n=Te("NON_CONFORMING_NAMESPACES",`${r} namespaces keys don't satisfy requiredNamespaces. ++ */(function(e){(function(){var t="input is invalid type",r="finalize already called",n=typeof window=="object",i=n?window:{};i.JS_SHA3_NO_WINDOW&&(n=!1);var f=!n&&typeof self=="object",h=!i.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;h?i=lf:f&&(i=self);var c=!i.JS_SHA3_NO_COMMON_JS&&!0&&e.exports,d=!i.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",v="0123456789abcdef".split(""),g=[31,7936,2031616,520093696],m=[4,1024,262144,67108864],D=[1,256,65536,16777216],S=[6,1536,393216,100663296],O=[0,8,16,24],T=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],P=[224,256,384,512],j=[128,256],B=["hex","buffer","arrayBuffer","array","digest"],U={128:168,256:136};(i.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(l){return Object.prototype.toString.call(l)==="[object Array]"}),d&&(i.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(l){return typeof l=="object"&&l.buffer&&l.buffer.constructor===ArrayBuffer});for(var M=function(l,F,L){return function(H){return new o(l,F,l).update(H)[L]()}},x=function(l,F,L){return function(H,k){return new o(l,F,k).update(H)[L]()}},N=function(l,F,L){return function(H,k,Y,z){return a["cshake"+l].update(H,k,Y,z)[L]()}},s=function(l,F,L){return function(H,k,Y,z){return a["kmac"+l].update(H,k,Y,z)[L]()}},_=function(l,F,L,H){for(var k=0;k>5,this.byteCount=this.blockCount<<2,this.outputBlocks=L>>5,this.extraBytes=(L&31)>>3;for(var H=0;H<50;++H)this.s[H]=0}o.prototype.update=function(l){if(this.finalized)throw new Error(r);var F,L=typeof l;if(L!=="string"){if(L==="object"){if(l===null)throw new Error(t);if(d&&l.constructor===ArrayBuffer)l=new Uint8Array(l);else if(!Array.isArray(l)&&(!d||!ArrayBuffer.isView(l)))throw new Error(t)}else throw new Error(t);F=!0}for(var H=this.blocks,k=this.byteCount,Y=l.length,z=this.blockCount,K=0,X=this.s,Q,$;K>2]|=l[K]<>2]|=$<>2]|=(192|$>>6)<>2]|=(128|$&63)<=57344?(H[Q>>2]|=(224|$>>12)<>2]|=(128|$>>6&63)<>2]|=(128|$&63)<>2]|=(240|$>>18)<>2]|=(128|$>>12&63)<>2]|=(128|$>>6&63)<>2]|=(128|$&63)<=k){for(this.start=Q-k,this.block=H[z],Q=0;Q>8,L=l&255;L>0;)k.unshift(L),l=l>>8,L=l&255,++H;return F?k.push(H):k.unshift(H),this.update(k),k.length},o.prototype.encodeString=function(l){var F,L=typeof l;if(L!=="string"){if(L==="object"){if(l===null)throw new Error(t);if(d&&l.constructor===ArrayBuffer)l=new Uint8Array(l);else if(!Array.isArray(l)&&(!d||!ArrayBuffer.isView(l)))throw new Error(t)}else throw new Error(t);F=!0}var H=0,k=l.length;if(F)H=k;else for(var Y=0;Y=57344?H+=3:(z=65536+((z&1023)<<10|l.charCodeAt(++Y)&1023),H+=4)}return H+=this.encode(H*8),this.update(l),H},o.prototype.bytepad=function(l,F){for(var L=this.encode(F),H=0;H>2]|=this.padding[F&3],this.lastByteIndex===this.byteCount)for(l[0]=l[L],F=1;F>4&15]+v[K&15]+v[K>>12&15]+v[K>>8&15]+v[K>>20&15]+v[K>>16&15]+v[K>>28&15]+v[K>>24&15];Y%l===0&&(V(F),k=0)}return H&&(K=F[k],z+=v[K>>4&15]+v[K&15],H>1&&(z+=v[K>>12&15]+v[K>>8&15]),H>2&&(z+=v[K>>20&15]+v[K>>16&15])),z},o.prototype.arrayBuffer=function(){this.finalize();var l=this.blockCount,F=this.s,L=this.outputBlocks,H=this.extraBytes,k=0,Y=0,z=this.outputBits>>3,K;H?K=new ArrayBuffer(L+1<<2):K=new ArrayBuffer(z);for(var X=new Uint32Array(K);Y>8&255,z[K+2]=X>>16&255,z[K+3]=X>>24&255;Y%l===0&&V(F)}return H&&(K=Y<<2,X=F[k],z[K]=X&255,H>1&&(z[K+1]=X>>8&255),H>2&&(z[K+2]=X>>16&255)),z};function w(l,F,L){o.call(this,l,F,L)}w.prototype=new o,w.prototype.finalize=function(){return this.encode(this.outputBits,!0),o.prototype.finalize.call(this)};var V=function(l){var F,L,H,k,Y,z,K,X,Q,$,at,pe,ge,Ot,ee,te,Le,re,ne,He,ie,fe,ke,ae,oe,je,se,ue,qe,he,we,fr,Ae,ye,ar,Ee,_e,or,De,Se,sr,Me,xe,ur,Ne,Ce,hr,Oe,Ie,cr,Be,Re,lr,Fe,Ue,dr,Te,Pe,Vt,Yt,Gt,Wt,Qt;for(H=0;H<48;H+=2)k=l[0]^l[10]^l[20]^l[30]^l[40],Y=l[1]^l[11]^l[21]^l[31]^l[41],z=l[2]^l[12]^l[22]^l[32]^l[42],K=l[3]^l[13]^l[23]^l[33]^l[43],X=l[4]^l[14]^l[24]^l[34]^l[44],Q=l[5]^l[15]^l[25]^l[35]^l[45],$=l[6]^l[16]^l[26]^l[36]^l[46],at=l[7]^l[17]^l[27]^l[37]^l[47],pe=l[8]^l[18]^l[28]^l[38]^l[48],ge=l[9]^l[19]^l[29]^l[39]^l[49],F=pe^(z<<1|K>>>31),L=ge^(K<<1|z>>>31),l[0]^=F,l[1]^=L,l[10]^=F,l[11]^=L,l[20]^=F,l[21]^=L,l[30]^=F,l[31]^=L,l[40]^=F,l[41]^=L,F=k^(X<<1|Q>>>31),L=Y^(Q<<1|X>>>31),l[2]^=F,l[3]^=L,l[12]^=F,l[13]^=L,l[22]^=F,l[23]^=L,l[32]^=F,l[33]^=L,l[42]^=F,l[43]^=L,F=z^($<<1|at>>>31),L=K^(at<<1|$>>>31),l[4]^=F,l[5]^=L,l[14]^=F,l[15]^=L,l[24]^=F,l[25]^=L,l[34]^=F,l[35]^=L,l[44]^=F,l[45]^=L,F=X^(pe<<1|ge>>>31),L=Q^(ge<<1|pe>>>31),l[6]^=F,l[7]^=L,l[16]^=F,l[17]^=L,l[26]^=F,l[27]^=L,l[36]^=F,l[37]^=L,l[46]^=F,l[47]^=L,F=$^(k<<1|Y>>>31),L=at^(Y<<1|k>>>31),l[8]^=F,l[9]^=L,l[18]^=F,l[19]^=L,l[28]^=F,l[29]^=L,l[38]^=F,l[39]^=L,l[48]^=F,l[49]^=L,Ot=l[0],ee=l[1],Ce=l[11]<<4|l[10]>>>28,hr=l[10]<<4|l[11]>>>28,ue=l[20]<<3|l[21]>>>29,qe=l[21]<<3|l[20]>>>29,Yt=l[31]<<9|l[30]>>>23,Gt=l[30]<<9|l[31]>>>23,Me=l[40]<<18|l[41]>>>14,xe=l[41]<<18|l[40]>>>14,ye=l[2]<<1|l[3]>>>31,ar=l[3]<<1|l[2]>>>31,te=l[13]<<12|l[12]>>>20,Le=l[12]<<12|l[13]>>>20,Oe=l[22]<<10|l[23]>>>22,Ie=l[23]<<10|l[22]>>>22,he=l[33]<<13|l[32]>>>19,we=l[32]<<13|l[33]>>>19,Wt=l[42]<<2|l[43]>>>30,Qt=l[43]<<2|l[42]>>>30,Fe=l[5]<<30|l[4]>>>2,Ue=l[4]<<30|l[5]>>>2,Ee=l[14]<<6|l[15]>>>26,_e=l[15]<<6|l[14]>>>26,re=l[25]<<11|l[24]>>>21,ne=l[24]<<11|l[25]>>>21,cr=l[34]<<15|l[35]>>>17,Be=l[35]<<15|l[34]>>>17,fr=l[45]<<29|l[44]>>>3,Ae=l[44]<<29|l[45]>>>3,ae=l[6]<<28|l[7]>>>4,oe=l[7]<<28|l[6]>>>4,dr=l[17]<<23|l[16]>>>9,Te=l[16]<<23|l[17]>>>9,or=l[26]<<25|l[27]>>>7,De=l[27]<<25|l[26]>>>7,He=l[36]<<21|l[37]>>>11,ie=l[37]<<21|l[36]>>>11,Re=l[47]<<24|l[46]>>>8,lr=l[46]<<24|l[47]>>>8,ur=l[8]<<27|l[9]>>>5,Ne=l[9]<<27|l[8]>>>5,je=l[18]<<20|l[19]>>>12,se=l[19]<<20|l[18]>>>12,Pe=l[29]<<7|l[28]>>>25,Vt=l[28]<<7|l[29]>>>25,Se=l[38]<<8|l[39]>>>24,sr=l[39]<<8|l[38]>>>24,fe=l[48]<<14|l[49]>>>18,ke=l[49]<<14|l[48]>>>18,l[0]=Ot^~te&re,l[1]=ee^~Le&ne,l[10]=ae^~je&ue,l[11]=oe^~se&qe,l[20]=ye^~Ee&or,l[21]=ar^~_e&De,l[30]=ur^~Ce&Oe,l[31]=Ne^~hr&Ie,l[40]=Fe^~dr&Pe,l[41]=Ue^~Te&Vt,l[2]=te^~re&He,l[3]=Le^~ne&ie,l[12]=je^~ue&he,l[13]=se^~qe&we,l[22]=Ee^~or&Se,l[23]=_e^~De&sr,l[32]=Ce^~Oe&cr,l[33]=hr^~Ie&Be,l[42]=dr^~Pe&Yt,l[43]=Te^~Vt&Gt,l[4]=re^~He&fe,l[5]=ne^~ie&ke,l[14]=ue^~he&fr,l[15]=qe^~we&Ae,l[24]=or^~Se&Me,l[25]=De^~sr&xe,l[34]=Oe^~cr&Re,l[35]=Ie^~Be&lr,l[44]=Pe^~Yt&Wt,l[45]=Vt^~Gt&Qt,l[6]=He^~fe&Ot,l[7]=ie^~ke&ee,l[16]=he^~fr&ae,l[17]=we^~Ae&oe,l[26]=Se^~Me&ye,l[27]=sr^~xe&ar,l[36]=cr^~Re&ur,l[37]=Be^~lr&Ne,l[46]=Yt^~Wt&Fe,l[47]=Gt^~Qt&Ue,l[8]=fe^~Ot&te,l[9]=ke^~ee&Le,l[18]=fr^~ae&je,l[19]=Ae^~oe&se,l[28]=Me^~ye&Ee,l[29]=xe^~ar&_e,l[38]=Re^~ur&Ce,l[39]=lr^~Ne&hr,l[48]=Wt^~Fe&dr,l[49]=Qt^~Ue&Te,l[0]^=T[H],l[1]^=T[H+1]};if(c)e.exports=a;else for(p=0;p{try{if("test".normalize(t)!=="test")throw new Error("bad normalize")}catch{e.push(t)}}),e.length)throw new Error("missing "+e.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(e){return e.message}return null}const Wf=su();var Vn;(function(e){e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.OFF="OFF"})(Vn||(Vn={}));var ct;(function(e){e.UNKNOWN_ERROR="UNKNOWN_ERROR",e.NOT_IMPLEMENTED="NOT_IMPLEMENTED",e.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",e.NETWORK_ERROR="NETWORK_ERROR",e.SERVER_ERROR="SERVER_ERROR",e.TIMEOUT="TIMEOUT",e.BUFFER_OVERRUN="BUFFER_OVERRUN",e.NUMERIC_FAULT="NUMERIC_FAULT",e.MISSING_NEW="MISSING_NEW",e.INVALID_ARGUMENT="INVALID_ARGUMENT",e.MISSING_ARGUMENT="MISSING_ARGUMENT",e.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",e.CALL_EXCEPTION="CALL_EXCEPTION",e.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",e.NONCE_EXPIRED="NONCE_EXPIRED",e.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",e.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",e.TRANSACTION_REPLACED="TRANSACTION_REPLACED",e.ACTION_REJECTED="ACTION_REJECTED"})(ct||(ct={}));const Qf="0123456789abcdef";class ce{constructor(t){Object.defineProperty(this,"version",{enumerable:!0,value:t,writable:!1})}_log(t,r){const n=t.toLowerCase();Jr[n]==null&&this.throwArgumentError("invalid log level name","logLevel",t),!(Gf>Jr[n])&&console.log.apply(console,r)}debug(...t){this._log(ce.levels.DEBUG,t)}info(...t){this._log(ce.levels.INFO,t)}warn(...t){this._log(ce.levels.WARNING,t)}makeError(t,r,n){if(Yf)return this.makeError("censored error",r,{});r||(r=ce.errors.UNKNOWN_ERROR),n||(n={});const i=[];Object.keys(n).forEach(d=>{const v=n[d];try{if(v instanceof Uint8Array){let g="";for(let m=0;m>4],g+=Qf[v[m]&15];i.push(d+"=Uint8Array(0x"+g+")")}else i.push(d+"="+JSON.stringify(v))}catch{i.push(d+"="+JSON.stringify(n[d].toString()))}}),i.push(`code=${r}`),i.push(`version=${this.version}`);const f=t;let h="";switch(r){case ct.NUMERIC_FAULT:{h="NUMERIC_FAULT";const d=t;switch(d){case"overflow":case"underflow":case"division-by-zero":h+="-"+d;break;case"negative-power":case"negative-width":h+="-unsupported";break;case"unbound-bitwise-result":h+="-unbound-result";break}break}case ct.CALL_EXCEPTION:case ct.INSUFFICIENT_FUNDS:case ct.MISSING_NEW:case ct.NONCE_EXPIRED:case ct.REPLACEMENT_UNDERPRICED:case ct.TRANSACTION_REPLACED:case ct.UNPREDICTABLE_GAS_LIMIT:h=r;break}h&&(t+=" [ See: https://links.ethers.org/v5-errors-"+h+" ]"),i.length&&(t+=" ("+i.join(", ")+")");const c=new Error(t);return c.reason=f,c.code=r,Object.keys(n).forEach(function(d){c[d]=n[d]}),c}throwError(t,r,n){throw this.makeError(t,r,n)}throwArgumentError(t,r,n){return this.throwError(t,ce.errors.INVALID_ARGUMENT,{argument:r,value:n})}assert(t,r,n,i){t||this.throwError(r,n,i)}assertArgument(t,r,n,i){t||this.throwArgumentError(r,n,i)}checkNormalize(t){Wf&&this.throwError("platform missing String.prototype.normalize",ce.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:Wf})}checkSafeUint53(t,r){typeof t=="number"&&(r==null&&(r="value not safe"),(t<0||t>=9007199254740991)&&this.throwError(r,ce.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:t}),t%1&&this.throwError(r,ce.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:t}))}checkArgumentCount(t,r,n){n?n=": "+n:n="",tr&&this.throwError("too many arguments"+n,ce.errors.UNEXPECTED_ARGUMENT,{count:t,expectedCount:r})}checkNew(t,r){(t===Object||t==null)&&this.throwError("missing new",ce.errors.MISSING_NEW,{name:r.name})}checkAbstract(t,r){t===r?this.throwError("cannot instantiate abstract class "+JSON.stringify(r.name)+" directly; use a sub-class",ce.errors.UNSUPPORTED_OPERATION,{name:t.name,operation:"new"}):(t===Object||t==null)&&this.throwError("missing new",ce.errors.MISSING_NEW,{name:r.name})}static globalLogger(){return zn||(zn=new ce(ou)),zn}static setCensorship(t,r){if(!t&&r&&this.globalLogger().throwError("cannot permanently disable censorship",ce.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),Vf){if(!t)return;this.globalLogger().throwError("error censorship permanent",ce.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}Yf=!!t,Vf=!!r}static setLogLevel(t){const r=Jr[t.toLowerCase()];if(r==null){ce.globalLogger().warn("invalid log level - "+t);return}Gf=r}static from(t){return new ce(t)}}ce.errors=ct,ce.levels=Vn;const uu="bytes/5.7.0",ze=new ce(uu);function Jf(e){return!!e.toHexString}function br(e){return e.slice||(e.slice=function(){const t=Array.prototype.slice.call(arguments);return br(new Uint8Array(Array.prototype.slice.apply(e,t)))}),e}function hu(e){return nt(e)&&!(e.length%2)||mr(e)}function $f(e){return typeof e=="number"&&e==e&&e%1===0}function mr(e){if(e==null)return!1;if(e.constructor===Uint8Array)return!0;if(typeof e=="string"||!$f(e.length)||e.length<0)return!1;for(let t=0;t=256)return!1}return!0}function Ke(e,t){if(t||(t={}),typeof e=="number"){ze.checkSafeUint53(e,"invalid arrayify value");const r=[];for(;e;)r.unshift(e&255),e=parseInt(String(e/256));return r.length===0&&r.push(0),br(new Uint8Array(r))}if(t.allowMissingPrefix&&typeof e=="string"&&e.substring(0,2)!=="0x"&&(e="0x"+e),Jf(e)&&(e=e.toHexString()),nt(e)){let r=e.substring(2);r.length%2&&(t.hexPad==="left"?r="0"+r:t.hexPad==="right"?r+="0":ze.throwArgumentError("hex data is odd-length","value",e));const n=[];for(let i=0;iKe(i)),r=t.reduce((i,f)=>i+f.length,0),n=new Uint8Array(r);return t.reduce((i,f)=>(n.set(f,i),i+f.length),0),br(n)}function lu(e,t){e=Ke(e),e.length>t&&ze.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(t);return r.set(e,t-e.length),br(r)}function nt(e,t){return!(typeof e!="string"||!e.match(/^0x[0-9A-Fa-f]*$/)||t&&e.length!==2+2*t)}const Yn="0123456789abcdef";function Xe(e,t){if(t||(t={}),typeof e=="number"){ze.checkSafeUint53(e,"invalid hexlify value");let r="";for(;e;)r=Yn[e&15]+r,e=Math.floor(e/16);return r.length?(r.length%2&&(r="0"+r),"0x"+r):"0x00"}if(typeof e=="bigint")return e=e.toString(16),e.length%2?"0x0"+e:"0x"+e;if(t.allowMissingPrefix&&typeof e=="string"&&e.substring(0,2)!=="0x"&&(e="0x"+e),Jf(e))return e.toHexString();if(nt(e))return e.length%2&&(t.hexPad==="left"?e="0x0"+e.substring(2):t.hexPad==="right"?e+="0":ze.throwArgumentError("hex data is odd-length","value",e)),e.toLowerCase();if(mr(e)){let r="0x";for(let n=0;n>4]+Yn[i&15]}return r}return ze.throwArgumentError("invalid hexlify value","value",e)}function du(e){if(typeof e!="string")e=Xe(e);else if(!nt(e)||e.length%2)return null;return(e.length-2)/2}function Xf(e,t,r){return typeof e!="string"?e=Xe(e):(!nt(e)||e.length%2)&&ze.throwArgumentError("invalid hexData","value",e),t=2+2*t,r!=null?"0x"+e.substring(t,2+2*r):"0x"+e.substring(t)}function mt(e,t){for(typeof e!="string"?e=Xe(e):nt(e)||ze.throwArgumentError("invalid hex string","value",e),e.length>2*t+2&&ze.throwArgumentError("value out of range","value",arguments[1]);e.length<2*t+2;)e="0x0"+e.substring(2);return e}function Zf(e){const t={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(hu(e)){let r=Ke(e);r.length===64?(t.v=27+(r[32]>>7),r[32]&=127,t.r=Xe(r.slice(0,32)),t.s=Xe(r.slice(32,64))):r.length===65?(t.r=Xe(r.slice(0,32)),t.s=Xe(r.slice(32,64)),t.v=r[64]):ze.throwArgumentError("invalid signature string","signature",e),t.v<27&&(t.v===0||t.v===1?t.v+=27:ze.throwArgumentError("signature invalid v byte","signature",e)),t.recoveryParam=1-t.v%2,t.recoveryParam&&(r[32]|=128),t._vs=Xe(r.slice(32,64))}else{if(t.r=e.r,t.s=e.s,t.v=e.v,t.recoveryParam=e.recoveryParam,t._vs=e._vs,t._vs!=null){const i=lu(Ke(t._vs),32);t._vs=Xe(i);const f=i[0]>=128?1:0;t.recoveryParam==null?t.recoveryParam=f:t.recoveryParam!==f&&ze.throwArgumentError("signature recoveryParam mismatch _vs","signature",e),i[0]&=127;const h=Xe(i);t.s==null?t.s=h:t.s!==h&&ze.throwArgumentError("signature v mismatch _vs","signature",e)}if(t.recoveryParam==null)t.v==null?ze.throwArgumentError("signature missing v and recoveryParam","signature",e):t.v===0||t.v===1?t.recoveryParam=t.v:t.recoveryParam=1-t.v%2;else if(t.v==null)t.v=27+t.recoveryParam;else{const i=t.v===0||t.v===1?t.v:1-t.v%2;t.recoveryParam!==i&&ze.throwArgumentError("signature recoveryParam mismatch v","signature",e)}t.r==null||!nt(t.r)?ze.throwArgumentError("signature missing or invalid r","signature",e):t.r=mt(t.r,32),t.s==null||!nt(t.s)?ze.throwArgumentError("signature missing or invalid s","signature",e):t.s=mt(t.s,32);const r=Ke(t.s);r[0]>=128&&ze.throwArgumentError("signature s out of range","signature",e),t.recoveryParam&&(r[0]|=128);const n=Xe(r);t._vs&&(nt(t._vs)||ze.throwArgumentError("signature invalid _vs","signature",e),t._vs=mt(t._vs,32)),t._vs==null?t._vs=n:t._vs!==n&&ze.throwArgumentError("signature _vs mismatch v and s","signature",e)}return t.yParityAndS=t._vs,t.compact=t.r+t.yParityAndS.substring(2),t}function Gn(e){return"0x"+au.keccak_256(Ke(e))}var ea={exports:{}},vu={},pu=Object.freeze({__proto__:null,default:vu}),ta=df(pu);(function(e){(function(t,r){function n(E,a){if(!E)throw new Error(a||"Assertion failed")}function i(E,a){E.super_=a;var u=function(){};u.prototype=a.prototype,E.prototype=new u,E.prototype.constructor=E}function f(E,a,u){if(f.isBN(E))return E;this.negative=0,this.words=null,this.length=0,this.red=null,E!==null&&((a==="le"||a==="be")&&(u=a,a=10),this._init(E||0,a||10,u||"be"))}typeof t=="object"?t.exports=f:r.BN=f,f.BN=f,f.wordSize=26;var h;try{typeof window<"u"&&typeof window.Buffer<"u"?h=window.Buffer:h=ta.Buffer}catch{}f.isBN=function(a){return a instanceof f?!0:a!==null&&typeof a=="object"&&a.constructor.wordSize===f.wordSize&&Array.isArray(a.words)},f.max=function(a,u){return a.cmp(u)>0?a:u},f.min=function(a,u){return a.cmp(u)<0?a:u},f.prototype._init=function(a,u,p){if(typeof a=="number")return this._initNumber(a,u,p);if(typeof a=="object")return this._initArray(a,u,p);u==="hex"&&(u=16),n(u===(u|0)&&u>=2&&u<=36),a=a.toString().replace(/\s+/g,"");var b=0;a[0]==="-"&&(b++,this.negative=1),b=0;b-=3)C=a[b]|a[b-1]<<8|a[b-2]<<16,this.words[A]|=C<>>26-R&67108863,R+=24,R>=26&&(R-=26,A++);else if(p==="le")for(b=0,A=0;b>>26-R&67108863,R+=24,R>=26&&(R-=26,A++);return this._strip()};function c(E,a){var u=E.charCodeAt(a);if(u>=48&&u<=57)return u-48;if(u>=65&&u<=70)return u-55;if(u>=97&&u<=102)return u-87;n(!1,"Invalid character in "+E)}function d(E,a,u){var p=c(E,u);return u-1>=a&&(p|=c(E,u-1)<<4),p}f.prototype._parseHex=function(a,u,p){this.length=Math.ceil((a.length-u)/6),this.words=new Array(this.length);for(var b=0;b=u;b-=2)R=d(a,u,b)<=18?(A-=18,C+=1,this.words[C]|=R>>>26):A+=8;else{var y=a.length-u;for(b=y%2===0?u+1:u;b=18?(A-=18,C+=1,this.words[C]|=R>>>26):A+=8}this._strip()};function v(E,a,u,p){for(var b=0,A=0,C=Math.min(E.length,u),R=a;R=49?A=y-49+10:y>=17?A=y-17+10:A=y,n(y>=0&&A1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},f.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{f.prototype[Symbol.for("nodejs.util.inspect.custom")]=m}catch{f.prototype.inspect=m}else f.prototype.inspect=m;function m(){return(this.red?""}var D=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],S=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],O=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];f.prototype.toString=function(a,u){a=a||10,u=u|0||1;var p;if(a===16||a==="hex"){p="";for(var b=0,A=0,C=0;C>>24-b&16777215,b+=2,b>=26&&(b-=26,C--),A!==0||C!==this.length-1?p=D[6-y.length]+y+p:p=y+p}for(A!==0&&(p=A.toString(16)+p);p.length%u!==0;)p="0"+p;return this.negative!==0&&(p="-"+p),p}if(a===(a|0)&&a>=2&&a<=36){var o=S[a],w=O[a];p="";var V=this.clone();for(V.negative=0;!V.isZero();){var l=V.modrn(w).toString(a);V=V.idivn(w),V.isZero()?p=l+p:p=D[o-l.length]+l+p}for(this.isZero()&&(p="0"+p);p.length%u!==0;)p="0"+p;return this.negative!==0&&(p="-"+p),p}n(!1,"Base should be between 2 and 36")},f.prototype.toNumber=function(){var a=this.words[0];return this.length===2?a+=this.words[1]*67108864:this.length===3&&this.words[2]===1?a+=4503599627370496+this.words[1]*67108864:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-a:a},f.prototype.toJSON=function(){return this.toString(16,2)},h&&(f.prototype.toBuffer=function(a,u){return this.toArrayLike(h,a,u)}),f.prototype.toArray=function(a,u){return this.toArrayLike(Array,a,u)};var T=function(a,u){return a.allocUnsafe?a.allocUnsafe(u):new a(u)};f.prototype.toArrayLike=function(a,u,p){this._strip();var b=this.byteLength(),A=p||Math.max(1,b);n(b<=A,"byte array longer than desired length"),n(A>0,"Requested array length <= 0");var C=T(a,A),R=u==="le"?"LE":"BE";return this["_toArrayLike"+R](C,b),C},f.prototype._toArrayLikeLE=function(a,u){for(var p=0,b=0,A=0,C=0;A>8&255),p>16&255),C===6?(p>24&255),b=0,C=0):(b=R>>>24,C+=2)}if(p=0&&(a[p--]=R>>8&255),p>=0&&(a[p--]=R>>16&255),C===6?(p>=0&&(a[p--]=R>>24&255),b=0,C=0):(b=R>>>24,C+=2)}if(p>=0)for(a[p--]=b;p>=0;)a[p--]=0},Math.clz32?f.prototype._countBits=function(a){return 32-Math.clz32(a)}:f.prototype._countBits=function(a){var u=a,p=0;return u>=4096&&(p+=13,u>>>=13),u>=64&&(p+=7,u>>>=7),u>=8&&(p+=4,u>>>=4),u>=2&&(p+=2,u>>>=2),p+u},f.prototype._zeroBits=function(a){if(a===0)return 26;var u=a,p=0;return u&8191||(p+=13,u>>>=13),u&127||(p+=7,u>>>=7),u&15||(p+=4,u>>>=4),u&3||(p+=2,u>>>=2),u&1||p++,p},f.prototype.bitLength=function(){var a=this.words[this.length-1],u=this._countBits(a);return(this.length-1)*26+u};function P(E){for(var a=new Array(E.bitLength()),u=0;u>>b&1}return a}f.prototype.zeroBits=function(){if(this.isZero())return 0;for(var a=0,u=0;ua.length?this.clone().ior(a):a.clone().ior(this)},f.prototype.uor=function(a){return this.length>a.length?this.clone().iuor(a):a.clone().iuor(this)},f.prototype.iuand=function(a){var u;this.length>a.length?u=a:u=this;for(var p=0;pa.length?this.clone().iand(a):a.clone().iand(this)},f.prototype.uand=function(a){return this.length>a.length?this.clone().iuand(a):a.clone().iuand(this)},f.prototype.iuxor=function(a){var u,p;this.length>a.length?(u=this,p=a):(u=a,p=this);for(var b=0;ba.length?this.clone().ixor(a):a.clone().ixor(this)},f.prototype.uxor=function(a){return this.length>a.length?this.clone().iuxor(a):a.clone().iuxor(this)},f.prototype.inotn=function(a){n(typeof a=="number"&&a>=0);var u=Math.ceil(a/26)|0,p=a%26;this._expand(u),p>0&&u--;for(var b=0;b0&&(this.words[b]=~this.words[b]&67108863>>26-p),this._strip()},f.prototype.notn=function(a){return this.clone().inotn(a)},f.prototype.setn=function(a,u){n(typeof a=="number"&&a>=0);var p=a/26|0,b=a%26;return this._expand(p+1),u?this.words[p]=this.words[p]|1<a.length?(p=this,b=a):(p=a,b=this);for(var A=0,C=0;C>>26;for(;A!==0&&C>>26;if(this.length=p.length,A!==0)this.words[this.length]=A,this.length++;else if(p!==this)for(;Ca.length?this.clone().iadd(a):a.clone().iadd(this)},f.prototype.isub=function(a){if(a.negative!==0){a.negative=0;var u=this.iadd(a);return a.negative=1,u._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(a),this.negative=1,this._normSign();var p=this.cmp(a);if(p===0)return this.negative=0,this.length=1,this.words[0]=0,this;var b,A;p>0?(b=this,A=a):(b=a,A=this);for(var C=0,R=0;R>26,this.words[R]=u&67108863;for(;C!==0&&R>26,this.words[R]=u&67108863;if(C===0&&R>>26,V=y&67108863,l=Math.min(o,a.length-1),F=Math.max(0,o-E.length+1);F<=l;F++){var L=o-F|0;b=E.words[L]|0,A=a.words[F]|0,C=b*A+V,w+=C/67108864|0,V=C&67108863}u.words[o]=V|0,y=w|0}return y!==0?u.words[o]=y|0:u.length--,u._strip()}var B=function(a,u,p){var b=a.words,A=u.words,C=p.words,R=0,y,o,w,V=b[0]|0,l=V&8191,F=V>>>13,L=b[1]|0,H=L&8191,k=L>>>13,Y=b[2]|0,z=Y&8191,K=Y>>>13,X=b[3]|0,Q=X&8191,$=X>>>13,at=b[4]|0,pe=at&8191,ge=at>>>13,Ot=b[5]|0,ee=Ot&8191,te=Ot>>>13,Le=b[6]|0,re=Le&8191,ne=Le>>>13,He=b[7]|0,ie=He&8191,fe=He>>>13,ke=b[8]|0,ae=ke&8191,oe=ke>>>13,je=b[9]|0,se=je&8191,ue=je>>>13,qe=A[0]|0,he=qe&8191,we=qe>>>13,fr=A[1]|0,Ae=fr&8191,ye=fr>>>13,ar=A[2]|0,Ee=ar&8191,_e=ar>>>13,or=A[3]|0,De=or&8191,Se=or>>>13,sr=A[4]|0,Me=sr&8191,xe=sr>>>13,ur=A[5]|0,Ne=ur&8191,Ce=ur>>>13,hr=A[6]|0,Oe=hr&8191,Ie=hr>>>13,cr=A[7]|0,Be=cr&8191,Re=cr>>>13,lr=A[8]|0,Fe=lr&8191,Ue=lr>>>13,dr=A[9]|0,Te=dr&8191,Pe=dr>>>13;p.negative=a.negative^u.negative,p.length=19,y=Math.imul(l,he),o=Math.imul(l,we),o=o+Math.imul(F,he)|0,w=Math.imul(F,we);var Vt=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,y=Math.imul(H,he),o=Math.imul(H,we),o=o+Math.imul(k,he)|0,w=Math.imul(k,we),y=y+Math.imul(l,Ae)|0,o=o+Math.imul(l,ye)|0,o=o+Math.imul(F,Ae)|0,w=w+Math.imul(F,ye)|0;var Yt=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,y=Math.imul(z,he),o=Math.imul(z,we),o=o+Math.imul(K,he)|0,w=Math.imul(K,we),y=y+Math.imul(H,Ae)|0,o=o+Math.imul(H,ye)|0,o=o+Math.imul(k,Ae)|0,w=w+Math.imul(k,ye)|0,y=y+Math.imul(l,Ee)|0,o=o+Math.imul(l,_e)|0,o=o+Math.imul(F,Ee)|0,w=w+Math.imul(F,_e)|0;var Gt=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,y=Math.imul(Q,he),o=Math.imul(Q,we),o=o+Math.imul($,he)|0,w=Math.imul($,we),y=y+Math.imul(z,Ae)|0,o=o+Math.imul(z,ye)|0,o=o+Math.imul(K,Ae)|0,w=w+Math.imul(K,ye)|0,y=y+Math.imul(H,Ee)|0,o=o+Math.imul(H,_e)|0,o=o+Math.imul(k,Ee)|0,w=w+Math.imul(k,_e)|0,y=y+Math.imul(l,De)|0,o=o+Math.imul(l,Se)|0,o=o+Math.imul(F,De)|0,w=w+Math.imul(F,Se)|0;var Wt=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Wt>>>26)|0,Wt&=67108863,y=Math.imul(pe,he),o=Math.imul(pe,we),o=o+Math.imul(ge,he)|0,w=Math.imul(ge,we),y=y+Math.imul(Q,Ae)|0,o=o+Math.imul(Q,ye)|0,o=o+Math.imul($,Ae)|0,w=w+Math.imul($,ye)|0,y=y+Math.imul(z,Ee)|0,o=o+Math.imul(z,_e)|0,o=o+Math.imul(K,Ee)|0,w=w+Math.imul(K,_e)|0,y=y+Math.imul(H,De)|0,o=o+Math.imul(H,Se)|0,o=o+Math.imul(k,De)|0,w=w+Math.imul(k,Se)|0,y=y+Math.imul(l,Me)|0,o=o+Math.imul(l,xe)|0,o=o+Math.imul(F,Me)|0,w=w+Math.imul(F,xe)|0;var Qt=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,y=Math.imul(ee,he),o=Math.imul(ee,we),o=o+Math.imul(te,he)|0,w=Math.imul(te,we),y=y+Math.imul(pe,Ae)|0,o=o+Math.imul(pe,ye)|0,o=o+Math.imul(ge,Ae)|0,w=w+Math.imul(ge,ye)|0,y=y+Math.imul(Q,Ee)|0,o=o+Math.imul(Q,_e)|0,o=o+Math.imul($,Ee)|0,w=w+Math.imul($,_e)|0,y=y+Math.imul(z,De)|0,o=o+Math.imul(z,Se)|0,o=o+Math.imul(K,De)|0,w=w+Math.imul(K,Se)|0,y=y+Math.imul(H,Me)|0,o=o+Math.imul(H,xe)|0,o=o+Math.imul(k,Me)|0,w=w+Math.imul(k,xe)|0,y=y+Math.imul(l,Ne)|0,o=o+Math.imul(l,Ce)|0,o=o+Math.imul(F,Ne)|0,w=w+Math.imul(F,Ce)|0;var ji=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(ji>>>26)|0,ji&=67108863,y=Math.imul(re,he),o=Math.imul(re,we),o=o+Math.imul(ne,he)|0,w=Math.imul(ne,we),y=y+Math.imul(ee,Ae)|0,o=o+Math.imul(ee,ye)|0,o=o+Math.imul(te,Ae)|0,w=w+Math.imul(te,ye)|0,y=y+Math.imul(pe,Ee)|0,o=o+Math.imul(pe,_e)|0,o=o+Math.imul(ge,Ee)|0,w=w+Math.imul(ge,_e)|0,y=y+Math.imul(Q,De)|0,o=o+Math.imul(Q,Se)|0,o=o+Math.imul($,De)|0,w=w+Math.imul($,Se)|0,y=y+Math.imul(z,Me)|0,o=o+Math.imul(z,xe)|0,o=o+Math.imul(K,Me)|0,w=w+Math.imul(K,xe)|0,y=y+Math.imul(H,Ne)|0,o=o+Math.imul(H,Ce)|0,o=o+Math.imul(k,Ne)|0,w=w+Math.imul(k,Ce)|0,y=y+Math.imul(l,Oe)|0,o=o+Math.imul(l,Ie)|0,o=o+Math.imul(F,Oe)|0,w=w+Math.imul(F,Ie)|0;var qi=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(qi>>>26)|0,qi&=67108863,y=Math.imul(ie,he),o=Math.imul(ie,we),o=o+Math.imul(fe,he)|0,w=Math.imul(fe,we),y=y+Math.imul(re,Ae)|0,o=o+Math.imul(re,ye)|0,o=o+Math.imul(ne,Ae)|0,w=w+Math.imul(ne,ye)|0,y=y+Math.imul(ee,Ee)|0,o=o+Math.imul(ee,_e)|0,o=o+Math.imul(te,Ee)|0,w=w+Math.imul(te,_e)|0,y=y+Math.imul(pe,De)|0,o=o+Math.imul(pe,Se)|0,o=o+Math.imul(ge,De)|0,w=w+Math.imul(ge,Se)|0,y=y+Math.imul(Q,Me)|0,o=o+Math.imul(Q,xe)|0,o=o+Math.imul($,Me)|0,w=w+Math.imul($,xe)|0,y=y+Math.imul(z,Ne)|0,o=o+Math.imul(z,Ce)|0,o=o+Math.imul(K,Ne)|0,w=w+Math.imul(K,Ce)|0,y=y+Math.imul(H,Oe)|0,o=o+Math.imul(H,Ie)|0,o=o+Math.imul(k,Oe)|0,w=w+Math.imul(k,Ie)|0,y=y+Math.imul(l,Be)|0,o=o+Math.imul(l,Re)|0,o=o+Math.imul(F,Be)|0,w=w+Math.imul(F,Re)|0;var Ki=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Ki>>>26)|0,Ki&=67108863,y=Math.imul(ae,he),o=Math.imul(ae,we),o=o+Math.imul(oe,he)|0,w=Math.imul(oe,we),y=y+Math.imul(ie,Ae)|0,o=o+Math.imul(ie,ye)|0,o=o+Math.imul(fe,Ae)|0,w=w+Math.imul(fe,ye)|0,y=y+Math.imul(re,Ee)|0,o=o+Math.imul(re,_e)|0,o=o+Math.imul(ne,Ee)|0,w=w+Math.imul(ne,_e)|0,y=y+Math.imul(ee,De)|0,o=o+Math.imul(ee,Se)|0,o=o+Math.imul(te,De)|0,w=w+Math.imul(te,Se)|0,y=y+Math.imul(pe,Me)|0,o=o+Math.imul(pe,xe)|0,o=o+Math.imul(ge,Me)|0,w=w+Math.imul(ge,xe)|0,y=y+Math.imul(Q,Ne)|0,o=o+Math.imul(Q,Ce)|0,o=o+Math.imul($,Ne)|0,w=w+Math.imul($,Ce)|0,y=y+Math.imul(z,Oe)|0,o=o+Math.imul(z,Ie)|0,o=o+Math.imul(K,Oe)|0,w=w+Math.imul(K,Ie)|0,y=y+Math.imul(H,Be)|0,o=o+Math.imul(H,Re)|0,o=o+Math.imul(k,Be)|0,w=w+Math.imul(k,Re)|0,y=y+Math.imul(l,Fe)|0,o=o+Math.imul(l,Ue)|0,o=o+Math.imul(F,Fe)|0,w=w+Math.imul(F,Ue)|0;var zi=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(zi>>>26)|0,zi&=67108863,y=Math.imul(se,he),o=Math.imul(se,we),o=o+Math.imul(ue,he)|0,w=Math.imul(ue,we),y=y+Math.imul(ae,Ae)|0,o=o+Math.imul(ae,ye)|0,o=o+Math.imul(oe,Ae)|0,w=w+Math.imul(oe,ye)|0,y=y+Math.imul(ie,Ee)|0,o=o+Math.imul(ie,_e)|0,o=o+Math.imul(fe,Ee)|0,w=w+Math.imul(fe,_e)|0,y=y+Math.imul(re,De)|0,o=o+Math.imul(re,Se)|0,o=o+Math.imul(ne,De)|0,w=w+Math.imul(ne,Se)|0,y=y+Math.imul(ee,Me)|0,o=o+Math.imul(ee,xe)|0,o=o+Math.imul(te,Me)|0,w=w+Math.imul(te,xe)|0,y=y+Math.imul(pe,Ne)|0,o=o+Math.imul(pe,Ce)|0,o=o+Math.imul(ge,Ne)|0,w=w+Math.imul(ge,Ce)|0,y=y+Math.imul(Q,Oe)|0,o=o+Math.imul(Q,Ie)|0,o=o+Math.imul($,Oe)|0,w=w+Math.imul($,Ie)|0,y=y+Math.imul(z,Be)|0,o=o+Math.imul(z,Re)|0,o=o+Math.imul(K,Be)|0,w=w+Math.imul(K,Re)|0,y=y+Math.imul(H,Fe)|0,o=o+Math.imul(H,Ue)|0,o=o+Math.imul(k,Fe)|0,w=w+Math.imul(k,Ue)|0,y=y+Math.imul(l,Te)|0,o=o+Math.imul(l,Pe)|0,o=o+Math.imul(F,Te)|0,w=w+Math.imul(F,Pe)|0;var Vi=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Vi>>>26)|0,Vi&=67108863,y=Math.imul(se,Ae),o=Math.imul(se,ye),o=o+Math.imul(ue,Ae)|0,w=Math.imul(ue,ye),y=y+Math.imul(ae,Ee)|0,o=o+Math.imul(ae,_e)|0,o=o+Math.imul(oe,Ee)|0,w=w+Math.imul(oe,_e)|0,y=y+Math.imul(ie,De)|0,o=o+Math.imul(ie,Se)|0,o=o+Math.imul(fe,De)|0,w=w+Math.imul(fe,Se)|0,y=y+Math.imul(re,Me)|0,o=o+Math.imul(re,xe)|0,o=o+Math.imul(ne,Me)|0,w=w+Math.imul(ne,xe)|0,y=y+Math.imul(ee,Ne)|0,o=o+Math.imul(ee,Ce)|0,o=o+Math.imul(te,Ne)|0,w=w+Math.imul(te,Ce)|0,y=y+Math.imul(pe,Oe)|0,o=o+Math.imul(pe,Ie)|0,o=o+Math.imul(ge,Oe)|0,w=w+Math.imul(ge,Ie)|0,y=y+Math.imul(Q,Be)|0,o=o+Math.imul(Q,Re)|0,o=o+Math.imul($,Be)|0,w=w+Math.imul($,Re)|0,y=y+Math.imul(z,Fe)|0,o=o+Math.imul(z,Ue)|0,o=o+Math.imul(K,Fe)|0,w=w+Math.imul(K,Ue)|0,y=y+Math.imul(H,Te)|0,o=o+Math.imul(H,Pe)|0,o=o+Math.imul(k,Te)|0,w=w+Math.imul(k,Pe)|0;var Yi=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Yi>>>26)|0,Yi&=67108863,y=Math.imul(se,Ee),o=Math.imul(se,_e),o=o+Math.imul(ue,Ee)|0,w=Math.imul(ue,_e),y=y+Math.imul(ae,De)|0,o=o+Math.imul(ae,Se)|0,o=o+Math.imul(oe,De)|0,w=w+Math.imul(oe,Se)|0,y=y+Math.imul(ie,Me)|0,o=o+Math.imul(ie,xe)|0,o=o+Math.imul(fe,Me)|0,w=w+Math.imul(fe,xe)|0,y=y+Math.imul(re,Ne)|0,o=o+Math.imul(re,Ce)|0,o=o+Math.imul(ne,Ne)|0,w=w+Math.imul(ne,Ce)|0,y=y+Math.imul(ee,Oe)|0,o=o+Math.imul(ee,Ie)|0,o=o+Math.imul(te,Oe)|0,w=w+Math.imul(te,Ie)|0,y=y+Math.imul(pe,Be)|0,o=o+Math.imul(pe,Re)|0,o=o+Math.imul(ge,Be)|0,w=w+Math.imul(ge,Re)|0,y=y+Math.imul(Q,Fe)|0,o=o+Math.imul(Q,Ue)|0,o=o+Math.imul($,Fe)|0,w=w+Math.imul($,Ue)|0,y=y+Math.imul(z,Te)|0,o=o+Math.imul(z,Pe)|0,o=o+Math.imul(K,Te)|0,w=w+Math.imul(K,Pe)|0;var Gi=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Gi>>>26)|0,Gi&=67108863,y=Math.imul(se,De),o=Math.imul(se,Se),o=o+Math.imul(ue,De)|0,w=Math.imul(ue,Se),y=y+Math.imul(ae,Me)|0,o=o+Math.imul(ae,xe)|0,o=o+Math.imul(oe,Me)|0,w=w+Math.imul(oe,xe)|0,y=y+Math.imul(ie,Ne)|0,o=o+Math.imul(ie,Ce)|0,o=o+Math.imul(fe,Ne)|0,w=w+Math.imul(fe,Ce)|0,y=y+Math.imul(re,Oe)|0,o=o+Math.imul(re,Ie)|0,o=o+Math.imul(ne,Oe)|0,w=w+Math.imul(ne,Ie)|0,y=y+Math.imul(ee,Be)|0,o=o+Math.imul(ee,Re)|0,o=o+Math.imul(te,Be)|0,w=w+Math.imul(te,Re)|0,y=y+Math.imul(pe,Fe)|0,o=o+Math.imul(pe,Ue)|0,o=o+Math.imul(ge,Fe)|0,w=w+Math.imul(ge,Ue)|0,y=y+Math.imul(Q,Te)|0,o=o+Math.imul(Q,Pe)|0,o=o+Math.imul($,Te)|0,w=w+Math.imul($,Pe)|0;var Wi=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Wi>>>26)|0,Wi&=67108863,y=Math.imul(se,Me),o=Math.imul(se,xe),o=o+Math.imul(ue,Me)|0,w=Math.imul(ue,xe),y=y+Math.imul(ae,Ne)|0,o=o+Math.imul(ae,Ce)|0,o=o+Math.imul(oe,Ne)|0,w=w+Math.imul(oe,Ce)|0,y=y+Math.imul(ie,Oe)|0,o=o+Math.imul(ie,Ie)|0,o=o+Math.imul(fe,Oe)|0,w=w+Math.imul(fe,Ie)|0,y=y+Math.imul(re,Be)|0,o=o+Math.imul(re,Re)|0,o=o+Math.imul(ne,Be)|0,w=w+Math.imul(ne,Re)|0,y=y+Math.imul(ee,Fe)|0,o=o+Math.imul(ee,Ue)|0,o=o+Math.imul(te,Fe)|0,w=w+Math.imul(te,Ue)|0,y=y+Math.imul(pe,Te)|0,o=o+Math.imul(pe,Pe)|0,o=o+Math.imul(ge,Te)|0,w=w+Math.imul(ge,Pe)|0;var Qi=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Qi>>>26)|0,Qi&=67108863,y=Math.imul(se,Ne),o=Math.imul(se,Ce),o=o+Math.imul(ue,Ne)|0,w=Math.imul(ue,Ce),y=y+Math.imul(ae,Oe)|0,o=o+Math.imul(ae,Ie)|0,o=o+Math.imul(oe,Oe)|0,w=w+Math.imul(oe,Ie)|0,y=y+Math.imul(ie,Be)|0,o=o+Math.imul(ie,Re)|0,o=o+Math.imul(fe,Be)|0,w=w+Math.imul(fe,Re)|0,y=y+Math.imul(re,Fe)|0,o=o+Math.imul(re,Ue)|0,o=o+Math.imul(ne,Fe)|0,w=w+Math.imul(ne,Ue)|0,y=y+Math.imul(ee,Te)|0,o=o+Math.imul(ee,Pe)|0,o=o+Math.imul(te,Te)|0,w=w+Math.imul(te,Pe)|0;var Ji=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Ji>>>26)|0,Ji&=67108863,y=Math.imul(se,Oe),o=Math.imul(se,Ie),o=o+Math.imul(ue,Oe)|0,w=Math.imul(ue,Ie),y=y+Math.imul(ae,Be)|0,o=o+Math.imul(ae,Re)|0,o=o+Math.imul(oe,Be)|0,w=w+Math.imul(oe,Re)|0,y=y+Math.imul(ie,Fe)|0,o=o+Math.imul(ie,Ue)|0,o=o+Math.imul(fe,Fe)|0,w=w+Math.imul(fe,Ue)|0,y=y+Math.imul(re,Te)|0,o=o+Math.imul(re,Pe)|0,o=o+Math.imul(ne,Te)|0,w=w+Math.imul(ne,Pe)|0;var $i=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+($i>>>26)|0,$i&=67108863,y=Math.imul(se,Be),o=Math.imul(se,Re),o=o+Math.imul(ue,Be)|0,w=Math.imul(ue,Re),y=y+Math.imul(ae,Fe)|0,o=o+Math.imul(ae,Ue)|0,o=o+Math.imul(oe,Fe)|0,w=w+Math.imul(oe,Ue)|0,y=y+Math.imul(ie,Te)|0,o=o+Math.imul(ie,Pe)|0,o=o+Math.imul(fe,Te)|0,w=w+Math.imul(fe,Pe)|0;var Xi=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Xi>>>26)|0,Xi&=67108863,y=Math.imul(se,Fe),o=Math.imul(se,Ue),o=o+Math.imul(ue,Fe)|0,w=Math.imul(ue,Ue),y=y+Math.imul(ae,Te)|0,o=o+Math.imul(ae,Pe)|0,o=o+Math.imul(oe,Te)|0,w=w+Math.imul(oe,Pe)|0;var Zi=(R+y|0)+((o&8191)<<13)|0;R=(w+(o>>>13)|0)+(Zi>>>26)|0,Zi&=67108863,y=Math.imul(se,Te),o=Math.imul(se,Pe),o=o+Math.imul(ue,Te)|0,w=Math.imul(ue,Pe);var ef=(R+y|0)+((o&8191)<<13)|0;return R=(w+(o>>>13)|0)+(ef>>>26)|0,ef&=67108863,C[0]=Vt,C[1]=Yt,C[2]=Gt,C[3]=Wt,C[4]=Qt,C[5]=ji,C[6]=qi,C[7]=Ki,C[8]=zi,C[9]=Vi,C[10]=Yi,C[11]=Gi,C[12]=Wi,C[13]=Qi,C[14]=Ji,C[15]=$i,C[16]=Xi,C[17]=Zi,C[18]=ef,R!==0&&(C[19]=R,p.length++),p};Math.imul||(B=j);function U(E,a,u){u.negative=a.negative^E.negative,u.length=E.length+a.length;for(var p=0,b=0,A=0;A>>26)|0,b+=C>>>26,C&=67108863}u.words[A]=R,p=C,C=b}return p!==0?u.words[A]=p:u.length--,u._strip()}function M(E,a,u){return U(E,a,u)}f.prototype.mulTo=function(a,u){var p,b=this.length+a.length;return this.length===10&&a.length===10?p=B(this,a,u):b<63?p=j(this,a,u):b<1024?p=U(this,a,u):p=M(this,a,u),p},f.prototype.mul=function(a){var u=new f(null);return u.words=new Array(this.length+a.length),this.mulTo(a,u)},f.prototype.mulf=function(a){var u=new f(null);return u.words=new Array(this.length+a.length),M(this,a,u)},f.prototype.imul=function(a){return this.clone().mulTo(a,this)},f.prototype.imuln=function(a){var u=a<0;u&&(a=-a),n(typeof a=="number"),n(a<67108864);for(var p=0,b=0;b>=26,p+=A/67108864|0,p+=C>>>26,this.words[b]=C&67108863}return p!==0&&(this.words[b]=p,this.length++),u?this.ineg():this},f.prototype.muln=function(a){return this.clone().imuln(a)},f.prototype.sqr=function(){return this.mul(this)},f.prototype.isqr=function(){return this.imul(this.clone())},f.prototype.pow=function(a){var u=P(a);if(u.length===0)return new f(1);for(var p=this,b=0;b=0);var u=a%26,p=(a-u)/26,b=67108863>>>26-u<<26-u,A;if(u!==0){var C=0;for(A=0;A>>26-u}C&&(this.words[A]=C,this.length++)}if(p!==0){for(A=this.length-1;A>=0;A--)this.words[A+p]=this.words[A];for(A=0;A=0);var b;u?b=(u-u%26)/26:b=0;var A=a%26,C=Math.min((a-A)/26,this.length),R=67108863^67108863>>>A<C)for(this.length-=C,o=0;o=0&&(w!==0||o>=b);o--){var V=this.words[o]|0;this.words[o]=w<<26-A|V>>>A,w=V&R}return y&&w!==0&&(y.words[y.length++]=w),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},f.prototype.ishrn=function(a,u,p){return n(this.negative===0),this.iushrn(a,u,p)},f.prototype.shln=function(a){return this.clone().ishln(a)},f.prototype.ushln=function(a){return this.clone().iushln(a)},f.prototype.shrn=function(a){return this.clone().ishrn(a)},f.prototype.ushrn=function(a){return this.clone().iushrn(a)},f.prototype.testn=function(a){n(typeof a=="number"&&a>=0);var u=a%26,p=(a-u)/26,b=1<=0);var u=a%26,p=(a-u)/26;if(n(this.negative===0,"imaskn works only with positive numbers"),this.length<=p)return this;if(u!==0&&p++,this.length=Math.min(p,this.length),u!==0){var b=67108863^67108863>>>u<=67108864;u++)this.words[u]-=67108864,u===this.length-1?this.words[u+1]=1:this.words[u+1]++;return this.length=Math.max(this.length,u+1),this},f.prototype.isubn=function(a){if(n(typeof a=="number"),n(a<67108864),a<0)return this.iaddn(-a);if(this.negative!==0)return this.negative=0,this.iaddn(a),this.negative=1,this;if(this.words[0]-=a,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var u=0;u>26)-(y/67108864|0),this.words[A+p]=C&67108863}for(;A>26,this.words[A+p]=C&67108863;if(R===0)return this._strip();for(n(R===-1),R=0,A=0;A>26,this.words[A]=C&67108863;return this.negative=1,this._strip()},f.prototype._wordDiv=function(a,u){var p=this.length-a.length,b=this.clone(),A=a,C=A.words[A.length-1]|0,R=this._countBits(C);p=26-R,p!==0&&(A=A.ushln(p),b.iushln(p),C=A.words[A.length-1]|0);var y=b.length-A.length,o;if(u!=="mod"){o=new f(null),o.length=y+1,o.words=new Array(o.length);for(var w=0;w=0;l--){var F=(b.words[A.length+l]|0)*67108864+(b.words[A.length+l-1]|0);for(F=Math.min(F/C|0,67108863),b._ishlnsubmul(A,F,l);b.negative!==0;)F--,b.negative=0,b._ishlnsubmul(A,1,l),b.isZero()||(b.negative^=1);o&&(o.words[l]=F)}return o&&o._strip(),b._strip(),u!=="div"&&p!==0&&b.iushrn(p),{div:o||null,mod:b}},f.prototype.divmod=function(a,u,p){if(n(!a.isZero()),this.isZero())return{div:new f(0),mod:new f(0)};var b,A,C;return this.negative!==0&&a.negative===0?(C=this.neg().divmod(a,u),u!=="mod"&&(b=C.div.neg()),u!=="div"&&(A=C.mod.neg(),p&&A.negative!==0&&A.iadd(a)),{div:b,mod:A}):this.negative===0&&a.negative!==0?(C=this.divmod(a.neg(),u),u!=="mod"&&(b=C.div.neg()),{div:b,mod:C.mod}):this.negative&a.negative?(C=this.neg().divmod(a.neg(),u),u!=="div"&&(A=C.mod.neg(),p&&A.negative!==0&&A.isub(a)),{div:C.div,mod:A}):a.length>this.length||this.cmp(a)<0?{div:new f(0),mod:this}:a.length===1?u==="div"?{div:this.divn(a.words[0]),mod:null}:u==="mod"?{div:null,mod:new f(this.modrn(a.words[0]))}:{div:this.divn(a.words[0]),mod:new f(this.modrn(a.words[0]))}:this._wordDiv(a,u)},f.prototype.div=function(a){return this.divmod(a,"div",!1).div},f.prototype.mod=function(a){return this.divmod(a,"mod",!1).mod},f.prototype.umod=function(a){return this.divmod(a,"mod",!0).mod},f.prototype.divRound=function(a){var u=this.divmod(a);if(u.mod.isZero())return u.div;var p=u.div.negative!==0?u.mod.isub(a):u.mod,b=a.ushrn(1),A=a.andln(1),C=p.cmp(b);return C<0||A===1&&C===0?u.div:u.div.negative!==0?u.div.isubn(1):u.div.iaddn(1)},f.prototype.modrn=function(a){var u=a<0;u&&(a=-a),n(a<=67108863);for(var p=(1<<26)%a,b=0,A=this.length-1;A>=0;A--)b=(p*b+(this.words[A]|0))%a;return u?-b:b},f.prototype.modn=function(a){return this.modrn(a)},f.prototype.idivn=function(a){var u=a<0;u&&(a=-a),n(a<=67108863);for(var p=0,b=this.length-1;b>=0;b--){var A=(this.words[b]|0)+p*67108864;this.words[b]=A/a|0,p=A%a}return this._strip(),u?this.ineg():this},f.prototype.divn=function(a){return this.clone().idivn(a)},f.prototype.egcd=function(a){n(a.negative===0),n(!a.isZero());var u=this,p=a.clone();u.negative!==0?u=u.umod(a):u=u.clone();for(var b=new f(1),A=new f(0),C=new f(0),R=new f(1),y=0;u.isEven()&&p.isEven();)u.iushrn(1),p.iushrn(1),++y;for(var o=p.clone(),w=u.clone();!u.isZero();){for(var V=0,l=1;!(u.words[0]&l)&&V<26;++V,l<<=1);if(V>0)for(u.iushrn(V);V-- >0;)(b.isOdd()||A.isOdd())&&(b.iadd(o),A.isub(w)),b.iushrn(1),A.iushrn(1);for(var F=0,L=1;!(p.words[0]&L)&&F<26;++F,L<<=1);if(F>0)for(p.iushrn(F);F-- >0;)(C.isOdd()||R.isOdd())&&(C.iadd(o),R.isub(w)),C.iushrn(1),R.iushrn(1);u.cmp(p)>=0?(u.isub(p),b.isub(C),A.isub(R)):(p.isub(u),C.isub(b),R.isub(A))}return{a:C,b:R,gcd:p.iushln(y)}},f.prototype._invmp=function(a){n(a.negative===0),n(!a.isZero());var u=this,p=a.clone();u.negative!==0?u=u.umod(a):u=u.clone();for(var b=new f(1),A=new f(0),C=p.clone();u.cmpn(1)>0&&p.cmpn(1)>0;){for(var R=0,y=1;!(u.words[0]&y)&&R<26;++R,y<<=1);if(R>0)for(u.iushrn(R);R-- >0;)b.isOdd()&&b.iadd(C),b.iushrn(1);for(var o=0,w=1;!(p.words[0]&w)&&o<26;++o,w<<=1);if(o>0)for(p.iushrn(o);o-- >0;)A.isOdd()&&A.iadd(C),A.iushrn(1);u.cmp(p)>=0?(u.isub(p),b.isub(A)):(p.isub(u),A.isub(b))}var V;return u.cmpn(1)===0?V=b:V=A,V.cmpn(0)<0&&V.iadd(a),V},f.prototype.gcd=function(a){if(this.isZero())return a.abs();if(a.isZero())return this.abs();var u=this.clone(),p=a.clone();u.negative=0,p.negative=0;for(var b=0;u.isEven()&&p.isEven();b++)u.iushrn(1),p.iushrn(1);do{for(;u.isEven();)u.iushrn(1);for(;p.isEven();)p.iushrn(1);var A=u.cmp(p);if(A<0){var C=u;u=p,p=C}else if(A===0||p.cmpn(1)===0)break;u.isub(p)}while(!0);return p.iushln(b)},f.prototype.invm=function(a){return this.egcd(a).a.umod(a)},f.prototype.isEven=function(){return(this.words[0]&1)===0},f.prototype.isOdd=function(){return(this.words[0]&1)===1},f.prototype.andln=function(a){return this.words[0]&a},f.prototype.bincn=function(a){n(typeof a=="number");var u=a%26,p=(a-u)/26,b=1<>>26,R&=67108863,this.words[C]=R}return A!==0&&(this.words[C]=A,this.length++),this},f.prototype.isZero=function(){return this.length===1&&this.words[0]===0},f.prototype.cmpn=function(a){var u=a<0;if(this.negative!==0&&!u)return-1;if(this.negative===0&&u)return 1;this._strip();var p;if(this.length>1)p=1;else{u&&(a=-a),n(a<=67108863,"Number is too big");var b=this.words[0]|0;p=b===a?0:ba.length)return 1;if(this.length=0;p--){var b=this.words[p]|0,A=a.words[p]|0;if(b!==A){bA&&(u=1);break}}return u},f.prototype.gtn=function(a){return this.cmpn(a)===1},f.prototype.gt=function(a){return this.cmp(a)===1},f.prototype.gten=function(a){return this.cmpn(a)>=0},f.prototype.gte=function(a){return this.cmp(a)>=0},f.prototype.ltn=function(a){return this.cmpn(a)===-1},f.prototype.lt=function(a){return this.cmp(a)===-1},f.prototype.lten=function(a){return this.cmpn(a)<=0},f.prototype.lte=function(a){return this.cmp(a)<=0},f.prototype.eqn=function(a){return this.cmpn(a)===0},f.prototype.eq=function(a){return this.cmp(a)===0},f.red=function(a){return new W(a)},f.prototype.toRed=function(a){return n(!this.red,"Already a number in reduction context"),n(this.negative===0,"red works only with positives"),a.convertTo(this)._forceRed(a)},f.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},f.prototype._forceRed=function(a){return this.red=a,this},f.prototype.forceRed=function(a){return n(!this.red,"Already a number in reduction context"),this._forceRed(a)},f.prototype.redAdd=function(a){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,a)},f.prototype.redIAdd=function(a){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,a)},f.prototype.redSub=function(a){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,a)},f.prototype.redISub=function(a){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,a)},f.prototype.redShl=function(a){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,a)},f.prototype.redMul=function(a){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,a),this.red.mul(this,a)},f.prototype.redIMul=function(a){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,a),this.red.imul(this,a)},f.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},f.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},f.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},f.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},f.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},f.prototype.redPow=function(a){return n(this.red&&!a.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,a)};var x={k256:null,p224:null,p192:null,p25519:null};function N(E,a){this.name=E,this.p=new f(a,16),this.n=this.p.bitLength(),this.k=new f(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}N.prototype._tmp=function(){var a=new f(null);return a.words=new Array(Math.ceil(this.n/13)),a},N.prototype.ireduce=function(a){var u=a,p;do this.split(u,this.tmp),u=this.imulK(u),u=u.iadd(this.tmp),p=u.bitLength();while(p>this.n);var b=p0?u.isub(this.p):u.strip!==void 0?u.strip():u._strip(),u},N.prototype.split=function(a,u){a.iushrn(this.n,0,u)},N.prototype.imulK=function(a){return a.imul(this.k)};function s(){N.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}i(s,N),s.prototype.split=function(a,u){for(var p=4194303,b=Math.min(a.length,9),A=0;A>>22,C=R}C>>>=22,a.words[A-10]=C,C===0&&a.length>10?a.length-=10:a.length-=9},s.prototype.imulK=function(a){a.words[a.length]=0,a.words[a.length+1]=0,a.length+=2;for(var u=0,p=0;p>>=26,a.words[p]=A,u=b}return u!==0&&(a.words[a.length++]=u),a},f._prime=function(a){if(x[a])return x[a];var u;if(a==="k256")u=new s;else if(a==="p224")u=new _;else if(a==="p192")u=new q;else if(a==="p25519")u=new G;else throw new Error("Unknown prime "+a);return x[a]=u,u};function W(E){if(typeof E=="string"){var a=f._prime(E);this.m=a.p,this.prime=a}else n(E.gtn(1),"modulus must be greater than 1"),this.m=E,this.prime=null}W.prototype._verify1=function(a){n(a.negative===0,"red works only with positives"),n(a.red,"red works only with red numbers")},W.prototype._verify2=function(a,u){n((a.negative|u.negative)===0,"red works only with positives"),n(a.red&&a.red===u.red,"red works only with red numbers")},W.prototype.imod=function(a){return this.prime?this.prime.ireduce(a)._forceRed(this):(g(a,a.umod(this.m)._forceRed(this)),a)},W.prototype.neg=function(a){return a.isZero()?a.clone():this.m.sub(a)._forceRed(this)},W.prototype.add=function(a,u){this._verify2(a,u);var p=a.add(u);return p.cmp(this.m)>=0&&p.isub(this.m),p._forceRed(this)},W.prototype.iadd=function(a,u){this._verify2(a,u);var p=a.iadd(u);return p.cmp(this.m)>=0&&p.isub(this.m),p},W.prototype.sub=function(a,u){this._verify2(a,u);var p=a.sub(u);return p.cmpn(0)<0&&p.iadd(this.m),p._forceRed(this)},W.prototype.isub=function(a,u){this._verify2(a,u);var p=a.isub(u);return p.cmpn(0)<0&&p.iadd(this.m),p},W.prototype.shl=function(a,u){return this._verify1(a),this.imod(a.ushln(u))},W.prototype.imul=function(a,u){return this._verify2(a,u),this.imod(a.imul(u))},W.prototype.mul=function(a,u){return this._verify2(a,u),this.imod(a.mul(u))},W.prototype.isqr=function(a){return this.imul(a,a.clone())},W.prototype.sqr=function(a){return this.mul(a,a)},W.prototype.sqrt=function(a){if(a.isZero())return a.clone();var u=this.m.andln(3);if(n(u%2===1),u===3){var p=this.m.add(new f(1)).iushrn(2);return this.pow(a,p)}for(var b=this.m.subn(1),A=0;!b.isZero()&&b.andln(1)===0;)A++,b.iushrn(1);n(!b.isZero());var C=new f(1).toRed(this),R=C.redNeg(),y=this.m.subn(1).iushrn(1),o=this.m.bitLength();for(o=new f(2*o*o).toRed(this);this.pow(o,y).cmp(R)!==0;)o.redIAdd(R);for(var w=this.pow(o,b),V=this.pow(a,b.addn(1).iushrn(1)),l=this.pow(a,b),F=A;l.cmp(C)!==0;){for(var L=l,H=0;L.cmp(C)!==0;H++)L=L.redSqr();n(H=0;A--){for(var w=u.words[A],V=o-1;V>=0;V--){var l=w>>V&1;if(C!==b[0]&&(C=this.sqr(C)),l===0&&R===0){y=0;continue}R<<=1,R|=l,y++,!(y!==p&&(A!==0||V!==0))&&(C=this.mul(C,b[R]),y=0,R=0)}o=26}return C},W.prototype.convertTo=function(a){var u=a.umod(this.m);return u===a?u.clone():u},W.prototype.convertFrom=function(a){var u=a.clone();return u.red=null,u},f.mont=function(a){return new J(a)};function J(E){W.call(this,E),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new f(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}i(J,W),J.prototype.convertTo=function(a){return this.imod(a.ushln(this.shift))},J.prototype.convertFrom=function(a){var u=this.imod(a.mul(this.rinv));return u.red=null,u},J.prototype.imul=function(a,u){if(a.isZero()||u.isZero())return a.words[0]=0,a.length=1,a;var p=a.imul(u),b=p.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),A=p.isub(b).iushrn(this.shift),C=A;return A.cmp(this.m)>=0?C=A.isub(this.m):A.cmpn(0)<0&&(C=A.iadd(this.m)),C._forceRed(this)},J.prototype.mul=function(a,u){if(a.isZero()||u.isZero())return new f(0)._forceRed(this);var p=a.mul(u),b=p.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),A=p.isub(b).iushrn(this.shift),C=A;return A.cmp(this.m)>=0?C=A.isub(this.m):A.cmpn(0)<0&&(C=A.iadd(this.m)),C._forceRed(this)},J.prototype.invm=function(a){var u=this.imod(a._invmp(this.m).mul(this.r2));return u._forceRed(this)}})(e,lf)})(ea);var Z=ea.exports;const ra="bignumber/5.7.0";var $r=Z.BN;const Bt=new ce(ra),Wn={},na=9007199254740991;function gu(e){return e!=null&&(me.isBigNumber(e)||typeof e=="number"&&e%1===0||typeof e=="string"&&!!e.match(/^-?[0-9]+$/)||nt(e)||typeof e=="bigint"||mr(e))}let ia=!1;class me{constructor(t,r){t!==Wn&&Bt.throwError("cannot call constructor directly; use BigNumber.from",ce.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=r,this._isBigNumber=!0,Object.freeze(this)}fromTwos(t){return tt(de(this).fromTwos(t))}toTwos(t){return tt(de(this).toTwos(t))}abs(){return this._hex[0]==="-"?me.from(this._hex.substring(1)):this}add(t){return tt(de(this).add(de(t)))}sub(t){return tt(de(this).sub(de(t)))}div(t){return me.from(t).isZero()&&ot("division-by-zero","div"),tt(de(this).div(de(t)))}mul(t){return tt(de(this).mul(de(t)))}mod(t){const r=de(t);return r.isNeg()&&ot("division-by-zero","mod"),tt(de(this).umod(r))}pow(t){const r=de(t);return r.isNeg()&&ot("negative-power","pow"),tt(de(this).pow(r))}and(t){const r=de(t);return(this.isNegative()||r.isNeg())&&ot("unbound-bitwise-result","and"),tt(de(this).and(r))}or(t){const r=de(t);return(this.isNegative()||r.isNeg())&&ot("unbound-bitwise-result","or"),tt(de(this).or(r))}xor(t){const r=de(t);return(this.isNegative()||r.isNeg())&&ot("unbound-bitwise-result","xor"),tt(de(this).xor(r))}mask(t){return(this.isNegative()||t<0)&&ot("negative-width","mask"),tt(de(this).maskn(t))}shl(t){return(this.isNegative()||t<0)&&ot("negative-width","shl"),tt(de(this).shln(t))}shr(t){return(this.isNegative()||t<0)&&ot("negative-width","shr"),tt(de(this).shrn(t))}eq(t){return de(this).eq(de(t))}lt(t){return de(this).lt(de(t))}lte(t){return de(this).lte(de(t))}gt(t){return de(this).gt(de(t))}gte(t){return de(this).gte(de(t))}isNegative(){return this._hex[0]==="-"}isZero(){return de(this).isZero()}toNumber(){try{return de(this).toNumber()}catch{ot("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch{}return Bt.throwError("this platform does not support BigInt",ce.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(arguments[0]===10?ia||(ia=!0,Bt.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?Bt.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",ce.errors.UNEXPECTED_ARGUMENT,{}):Bt.throwError("BigNumber.toString does not accept parameters",ce.errors.UNEXPECTED_ARGUMENT,{})),de(this).toString(10)}toHexString(){return this._hex}toJSON(t){return{type:"BigNumber",hex:this.toHexString()}}static from(t){if(t instanceof me)return t;if(typeof t=="string")return t.match(/^-?0x[0-9a-f]+$/i)?new me(Wn,Fr(t)):t.match(/^-?[0-9]+$/)?new me(Wn,Fr(new $r(t))):Bt.throwArgumentError("invalid BigNumber string","value",t);if(typeof t=="number")return t%1&&ot("underflow","BigNumber.from",t),(t>=na||t<=-na)&&ot("overflow","BigNumber.from",t),me.from(String(t));const r=t;if(typeof r=="bigint")return me.from(r.toString());if(mr(r))return me.from(Xe(r));if(r)if(r.toHexString){const n=r.toHexString();if(typeof n=="string")return me.from(n)}else{let n=r._hex;if(n==null&&r.type==="BigNumber"&&(n=r.hex),typeof n=="string"&&(nt(n)||n[0]==="-"&&nt(n.substring(1))))return me.from(n)}return Bt.throwArgumentError("invalid BigNumber value","value",t)}static isBigNumber(t){return!!(t&&t._isBigNumber)}}function Fr(e){if(typeof e!="string")return Fr(e.toString(16));if(e[0]==="-")return e=e.substring(1),e[0]==="-"&&Bt.throwArgumentError("invalid hex","value",e),e=Fr(e),e==="0x00"?e:"-"+e;if(e.substring(0,2)!=="0x"&&(e="0x"+e),e==="0x")return"0x00";for(e.length%2&&(e="0x0"+e.substring(2));e.length>4&&e.substring(0,4)==="0x00";)e="0x"+e.substring(4);return e}function tt(e){return me.from(Fr(e))}function de(e){const t=me.from(e).toHexString();return t[0]==="-"?new $r("-"+t.substring(3),16):new $r(t.substring(2),16)}function ot(e,t,r){const n={fault:e,operation:t};return r!=null&&(n.value=r),Bt.throwError(e,ce.errors.NUMERIC_FAULT,n)}function bu(e){return new $r(e,36).toString(16)}const Ze=new ce(ra),Ur={},fa=me.from(0),aa=me.from(-1);function oa(e,t,r,n){const i={fault:t,operation:r};return n!==void 0&&(i.value=n),Ze.throwError(e,ce.errors.NUMERIC_FAULT,i)}let Tr="0";for(;Tr.length<256;)Tr+=Tr;function Qn(e){if(typeof e!="number")try{e=me.from(e).toNumber()}catch{}return typeof e=="number"&&e>=0&&e<=256&&!(e%1)?"1"+Tr.substring(0,e):Ze.throwArgumentError("invalid decimal size","decimals",e)}function Jn(e,t){t==null&&(t=0);const r=Qn(t);e=me.from(e);const n=e.lt(fa);n&&(e=e.mul(aa));let i=e.mod(r).toString();for(;i.length2&&Ze.throwArgumentError("too many decimal points","value",e);let f=i[0],h=i[1];for(f||(f="0"),h||(h="0");h[h.length-1]==="0";)h=h.substring(0,h.length-1);for(h.length>r.length-1&&oa("fractional component exceeds decimals","underflow","parseFixed"),h===""&&(h="0");h.lengtht[h]==null?d:(typeof t[h]!==c&&Ze.throwArgumentError("invalid fixed format ("+h+" not "+c+")","format."+h,t[h]),t[h]);r=f("signed","boolean",r),n=f("width","number",n),i=f("decimals","number",i)}return n%8&&Ze.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",n),i>80&&Ze.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",i),new wr(Ur,r,n,i)}}class Ye{constructor(t,r,n,i){t!==Ur&&Ze.throwError("cannot use FixedNumber constructor; use FixedNumber.from",ce.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=i,this._hex=r,this._value=n,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(t){this.format.name!==t.format.name&&Ze.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",t)}addUnsafe(t){this._checkFormat(t);const r=Rt(this._value,this.format.decimals),n=Rt(t._value,t.format.decimals);return Ye.fromValue(r.add(n),this.format.decimals,this.format)}subUnsafe(t){this._checkFormat(t);const r=Rt(this._value,this.format.decimals),n=Rt(t._value,t.format.decimals);return Ye.fromValue(r.sub(n),this.format.decimals,this.format)}mulUnsafe(t){this._checkFormat(t);const r=Rt(this._value,this.format.decimals),n=Rt(t._value,t.format.decimals);return Ye.fromValue(r.mul(n).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(t){this._checkFormat(t);const r=Rt(this._value,this.format.decimals),n=Rt(t._value,t.format.decimals);return Ye.fromValue(r.mul(this.format._multiplier).div(n),this.format.decimals,this.format)}floor(){const t=this.toString().split(".");t.length===1&&t.push("0");let r=Ye.from(t[0],this.format);const n=!t[1].match(/^(0*)$/);return this.isNegative()&&n&&(r=r.subUnsafe(sa.toFormat(r.format))),r}ceiling(){const t=this.toString().split(".");t.length===1&&t.push("0");let r=Ye.from(t[0],this.format);const n=!t[1].match(/^(0*)$/);return!this.isNegative()&&n&&(r=r.addUnsafe(sa.toFormat(r.format))),r}round(t){t==null&&(t=0);const r=this.toString().split(".");if(r.length===1&&r.push("0"),(t<0||t>80||t%1)&&Ze.throwArgumentError("invalid decimal count","decimals",t),r[1].length<=t)return this;const n=Ye.from("1"+Tr.substring(0,t),this.format),i=mu.toFormat(this.format);return this.mulUnsafe(n).addUnsafe(i).floor().divUnsafe(n)}isZero(){return this._value==="0.0"||this._value==="0"}isNegative(){return this._value[0]==="-"}toString(){return this._value}toHexString(t){if(t==null)return this._hex;t%8&&Ze.throwArgumentError("invalid byte width","width",t);const r=me.from(this._hex).fromTwos(this.format.width).toTwos(t).toHexString();return mt(r,t/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(t){return Ye.fromString(this._value,t)}static fromValue(t,r,n){return n==null&&r!=null&&!gu(r)&&(n=r,r=null),r==null&&(r=0),n==null&&(n="fixed"),Ye.fromString(Jn(t,r),wr.from(n))}static fromString(t,r){r==null&&(r="fixed");const n=wr.from(r),i=Rt(t,n.decimals);!n.signed&&i.lt(fa)&&oa("unsigned value cannot be negative","overflow","value",t);let f=null;n.signed?f=i.toTwos(n.width).toHexString():(f=i.toHexString(),f=mt(f,n.width/8));const h=Jn(i,n.decimals);return new Ye(Ur,f,h,n)}static fromBytes(t,r){r==null&&(r="fixed");const n=wr.from(r);if(Ke(t).length>n.width/8)throw new Error("overflow");let i=me.from(t);n.signed&&(i=i.fromTwos(n.width));const f=i.toTwos((n.signed?0:1)+n.width).toHexString(),h=Jn(i,n.decimals);return new Ye(Ur,f,h,n)}static from(t,r){if(typeof t=="string")return Ye.fromString(t,r);if(mr(t))return Ye.fromBytes(t,r);try{return Ye.fromValue(t,0,r)}catch(n){if(n.code!==ce.errors.INVALID_ARGUMENT)throw n}return Ze.throwArgumentError("invalid FixedNumber value","value",t)}static isFixedNumber(t){return!!(t&&t._isFixedNumber)}}const sa=Ye.from(1),mu=Ye.from("0.5"),wu="strings/5.7.0",ua=new ce(wu);var Xr;(function(e){e.current="",e.NFC="NFC",e.NFD="NFD",e.NFKC="NFKC",e.NFKD="NFKD"})(Xr||(Xr={}));var Ar;(function(e){e.UNEXPECTED_CONTINUE="unexpected continuation byte",e.BAD_PREFIX="bad codepoint prefix",e.OVERRUN="string overrun",e.MISSING_CONTINUE="missing continuation byte",e.OUT_OF_RANGE="out of UTF-8 range",e.UTF16_SURROGATE="UTF-16 surrogate",e.OVERLONG="overlong representation"})(Ar||(Ar={}));function Au(e,t,r,n,i){return ua.throwArgumentError(`invalid codepoint at offset ${t}; ${e}`,"bytes",r)}function ha(e,t,r,n,i){if(e===Ar.BAD_PREFIX||e===Ar.UNEXPECTED_CONTINUE){let f=0;for(let h=t+1;h>6===2;h++)f++;return f}return e===Ar.OVERRUN?r.length-t-1:0}function yu(e,t,r,n,i){return e===Ar.OVERLONG?(n.push(i),0):(n.push(65533),ha(e,t,r))}Object.freeze({error:Au,ignore:ha,replace:yu});function $n(e,t=Xr.current){t!=Xr.current&&(ua.checkNormalize(),e=e.normalize(t));let r=[];for(let n=0;n>6|192),r.push(i&63|128);else if((i&64512)==55296){n++;const f=e.charCodeAt(n);if(n>=e.length||(f&64512)!==56320)throw new Error("invalid utf-8 string");const h=65536+((i&1023)<<10)+(f&1023);r.push(h>>18|240),r.push(h>>12&63|128),r.push(h>>6&63|128),r.push(h&63|128)}else r.push(i>>12|224),r.push(i>>6&63|128),r.push(i&63|128)}return Ke(r)}function Eu(e){if(e.length%4!==0)throw new Error("bad data");let t=[];for(let r=0;r{let f=i.split(":");r+=parseInt(f[0],16),n[r]=t(f[1])}),n}function ca(e){let t=0;return e.split(",").map(r=>{let n=r.split("-");n.length===1?n[1]="0":n[1]===""&&(n[1]="1");let i=t+parseInt(n[0],16);return t=parseInt(n[1],16),{l:i,h:t}})}ca("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(e=>parseInt(e,16)),Xn("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),Xn("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),Xn("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",Eu),ca("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");const la="hash/5.7.0";function _u(e){e=atob(e);const t=[];for(let r=0;r0&&Array.isArray(c)?i(c,h-1):r.push(c)})};return i(e,t),r}function Du(e){const t={};for(let r=0;r>--d&1}const m=31,D=Math.pow(2,m),S=D>>>1,O=S>>1,T=D-1;let P=0;for(let x=0;x1;){let G=N+s>>>1;x>>1|g(),_=_<<1^S,q=(q^S)<<1|S|1;B=_,U=1+q-_}let M=n-4;return j.map(x=>{switch(x-M){case 3:return M+65792+(e[c++]<<16|e[c++]<<8|e[c++]);case 2:return M+256+(e[c++]<<8|e[c++]);case 1:return M+e[c++];default:return x-1}})}function Mu(e){let t=0;return()=>e[t++]}function xu(e){return Mu(Su(e))}function Nu(e){return e&1?~e>>1:e>>1}function Cu(e,t){let r=Array(e);for(let n=0;nt[h]):r}function Iu(e){let t=[];for(;;){let r=e();if(r==0)break;t.push(Ru(r,e))}for(;;){let r=e()-1;if(r<0)break;t.push(Fu(r,e))}return Du(da(t))}function Bu(e){let t=[];for(;;){let r=e();if(r==0)break;t.push(r)}return t}function pa(e,t,r){let n=Array(e).fill(void 0).map(()=>[]);for(let i=0;in[h].push(f));return n}function Ru(e,t){let r=1+t(),n=t(),i=Bu(t),f=pa(i.length,1+e,t);return da(f.map((h,c)=>{const d=h[0],v=h.slice(1);return Array(i[c]).fill(void 0).map((g,m)=>{let D=m*n;return[d+m*r,v.map(S=>S+D)]})}))}function Fu(e,t){let r=1+t();return pa(r,1+e,t).map(i=>[i[0],i.slice(1)])}function Uu(e){let t=Zr(e).sort((n,i)=>n-i);return r();function r(){let n=[];for(;;){let v=Zr(e,t);if(v.length==0)break;n.push({set:new Set(v),node:r()})}n.sort((v,g)=>g.set.size-v.set.size);let i=e(),f=i%3;i=i/3|0;let h=!!(i&1);i>>=1;let c=i==1,d=i==2;return{branches:n,valid:f,fe0f:h,save:c,check:d}}}function Tu(){return xu(_u("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"))}const en=Tu();new Set(Zr(en)),new Set(Zr(en)),Iu(en),Uu(en),new ce(la),new Uint8Array(32).fill(0);const Pu=`Ethereum Signed Message: ++`;function ga(e){return typeof e=="string"&&(e=$n(e)),Gn(cu([$n(Pu),$n(String(e.length)),e]))}const Lu="rlp/5.7.0";new ce(Lu);const Hu="address/5.7.0",Pr=new ce(Hu);function ba(e){nt(e,20)||Pr.throwArgumentError("invalid address","address",e),e=e.toLowerCase();const t=e.substring(2).split(""),r=new Uint8Array(40);for(let i=0;i<40;i++)r[i]=t[i].charCodeAt(0);const n=Ke(Gn(r));for(let i=0;i<40;i+=2)n[i>>1]>>4>=8&&(t[i]=t[i].toUpperCase()),(n[i>>1]&15)>=8&&(t[i+1]=t[i+1].toUpperCase());return"0x"+t.join("")}const ku=9007199254740991;function ju(e){return Math.log10?Math.log10(e):Math.log(e)/Math.LN10}const Zn={};for(let e=0;e<10;e++)Zn[String(e)]=String(e);for(let e=0;e<26;e++)Zn[String.fromCharCode(65+e)]=String(10+e);const ma=Math.floor(ju(ku));function qu(e){e=e.toUpperCase(),e=e.substring(4)+e.substring(0,2)+"00";let t=e.split("").map(n=>Zn[n]).join("");for(;t.length>=ma;){let n=t.substring(0,ma);t=parseInt(n,10)%97+t.substring(n.length)}let r=String(98-parseInt(t,10)%97);for(;r.length<2;)r="0"+r;return r}function Ku(e){let t=null;if(typeof e!="string"&&Pr.throwArgumentError("invalid address","address",e),e.match(/^(0x)?[0-9a-fA-F]{40}$/))e.substring(0,2)!=="0x"&&(e="0x"+e),t=ba(e),e.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&t!==e&&Pr.throwArgumentError("bad address checksum","address",e);else if(e.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(e.substring(2,4)!==qu(e)&&Pr.throwArgumentError("bad icap checksum","address",e),t=bu(e.substring(4));t.length<40;)t="0"+t;t=ba("0x"+t)}else Pr.throwArgumentError("invalid address","address",e);return t}const zu="properties/5.7.0";new ce(zu);function Lr(e,t,r){Object.defineProperty(e,t,{enumerable:!0,value:r,writable:!1})}new ce(la),new Uint8Array(32).fill(0),me.from(-1);const Vu=me.from(0),Yu=me.from(1);me.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),mt(Yu.toHexString(),32),mt(Vu.toHexString(),32);var wt={},ve={},Hr=wa;function wa(e,t){if(!e)throw new Error(t||"Assertion failed")}wa.equal=function(t,r,n){if(t!=r)throw new Error(n||"Assertion failed: "+t+" != "+r)};var ei={exports:{}};typeof Object.create=="function"?ei.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:ei.exports=function(t,r){if(r){t.super_=r;var n=function(){};n.prototype=r.prototype,t.prototype=new n,t.prototype.constructor=t}};var Gu=Hr,Wu=ei.exports;ve.inherits=Wu;function Qu(e,t){return(e.charCodeAt(t)&64512)!==55296||t<0||t+1>=e.length?!1:(e.charCodeAt(t+1)&64512)===56320}function Ju(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if(typeof e=="string")if(t){if(t==="hex")for(e=e.replace(/[^a-z0-9]+/ig,""),e.length%2!==0&&(e="0"+e),i=0;i>6|192,r[n++]=f&63|128):Qu(e,i)?(f=65536+((f&1023)<<10)+(e.charCodeAt(++i)&1023),r[n++]=f>>18|240,r[n++]=f>>12&63|128,r[n++]=f>>6&63|128,r[n++]=f&63|128):(r[n++]=f>>12|224,r[n++]=f>>6&63|128,r[n++]=f&63|128)}else for(i=0;i>>24|e>>>8&65280|e<<8&16711680|(e&255)<<24;return t>>>0}ve.htonl=Aa;function Xu(e,t){for(var r="",n=0;n>>0}return f}ve.join32=Zu;function eh(e,t){for(var r=new Array(e.length*4),n=0,i=0;n>>24,r[i+1]=f>>>16&255,r[i+2]=f>>>8&255,r[i+3]=f&255):(r[i+3]=f>>>24,r[i+2]=f>>>16&255,r[i+1]=f>>>8&255,r[i]=f&255)}return r}ve.split32=eh;function th(e,t){return e>>>t|e<<32-t}ve.rotr32=th;function rh(e,t){return e<>>32-t}ve.rotl32=rh;function nh(e,t){return e+t>>>0}ve.sum32=nh;function ih(e,t,r){return e+t+r>>>0}ve.sum32_3=ih;function fh(e,t,r,n){return e+t+r+n>>>0}ve.sum32_4=fh;function ah(e,t,r,n,i){return e+t+r+n+i>>>0}ve.sum32_5=ah;function oh(e,t,r,n){var i=e[t],f=e[t+1],h=n+f>>>0,c=(h>>0,e[t+1]=h}ve.sum64=oh;function sh(e,t,r,n){var i=t+n>>>0,f=(i>>0}ve.sum64_hi=sh;function uh(e,t,r,n){var i=t+n;return i>>>0}ve.sum64_lo=uh;function hh(e,t,r,n,i,f,h,c){var d=0,v=t;v=v+n>>>0,d+=v>>0,d+=v>>0,d+=v>>0}ve.sum64_4_hi=hh;function ch(e,t,r,n,i,f,h,c){var d=t+n+f+c;return d>>>0}ve.sum64_4_lo=ch;function lh(e,t,r,n,i,f,h,c,d,v){var g=0,m=t;m=m+n>>>0,g+=m>>0,g+=m>>0,g+=m>>0,g+=m>>0}ve.sum64_5_hi=lh;function dh(e,t,r,n,i,f,h,c,d,v){var g=t+n+f+c+v;return g>>>0}ve.sum64_5_lo=dh;function vh(e,t,r){var n=t<<32-r|e>>>r;return n>>>0}ve.rotr64_hi=vh;function ph(e,t,r){var n=e<<32-r|t>>>r;return n>>>0}ve.rotr64_lo=ph;function gh(e,t,r){return e>>>r}ve.shr64_hi=gh;function bh(e,t,r){var n=e<<32-r|t>>>r;return n>>>0}ve.shr64_lo=bh;var yr={},_a=ve,mh=Hr;function tn(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}yr.BlockHash=tn,tn.prototype.update=function(t,r){if(t=_a.toArray(t,r),this.pending?this.pending=this.pending.concat(t):this.pending=t,this.pendingTotal+=t.length,this.pending.length>=this._delta8){t=this.pending;var n=t.length%this._delta8;this.pending=t.slice(t.length-n,t.length),this.pending.length===0&&(this.pending=null),t=_a.join32(t,0,t.length-n,this.endian);for(var i=0;i>>24&255,i[f++]=t>>>16&255,i[f++]=t>>>8&255,i[f++]=t&255}else for(i[f++]=t&255,i[f++]=t>>>8&255,i[f++]=t>>>16&255,i[f++]=t>>>24&255,i[f++]=0,i[f++]=0,i[f++]=0,i[f++]=0,h=8;h>>3}At.g0_256=_h;function Dh(e){return yt(e,17)^yt(e,19)^e>>>10}At.g1_256=Dh;var _r=ve,Sh=yr,Mh=At,ti=_r.rotl32,kr=_r.sum32,xh=_r.sum32_5,Nh=Mh.ft_1,xa=Sh.BlockHash,Ch=[1518500249,1859775393,2400959708,3395469782];function Et(){if(!(this instanceof Et))return new Et;xa.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}_r.inherits(Et,xa);var Oh=Et;Et.blockSize=512,Et.outSize=160,Et.hmacStrength=80,Et.padLength=64,Et.prototype._update=function(t,r){for(var n=this.W,i=0;i<16;i++)n[i]=t[r+i];for(;ithis.blockSize&&(t=new this.Hash().update(t).digest()),bc(t.length<=this.blockSize);for(var r=t.length;r>8,D=g&255;m?d.push(m,D):d.push(D)}return d}r.toArray=n;function i(h){return h.length===1?"0"+h:h}r.zero2=i;function f(h){for(var c="",d=0;d(D>>1)-1?T=(D>>1)-P:T=P,S.isubn(T)):T=0,m[O]=T,S.iushrn(1)}return m}r.getNAF=n;function i(d,v){var g=[[],[]];d=d.clone(),v=v.clone();for(var m=0,D=0,S;d.cmpn(-m)>0||v.cmpn(-D)>0;){var O=d.andln(3)+m&3,T=v.andln(3)+D&3;O===3&&(O=-1),T===3&&(T=-1);var P;O&1?(S=d.andln(7)+m&7,(S===3||S===5)&&T===2?P=-O:P=O):P=0,g[0].push(P);var j;T&1?(S=v.andln(7)+D&7,(S===3||S===5)&&O===2?j=-T:j=T):j=0,g[1].push(j),2*m===P+1&&(m=1-m),2*D===j+1&&(D=1-D),d.iushrn(1),v.iushrn(1)}return g}r.getJSF=i;function f(d,v,g){var m="_"+v;d.prototype[v]=function(){return this[m]!==void 0?this[m]:this[m]=g.call(this)}}r.cachedProperty=f;function h(d){return typeof d=="string"?r.toArray(d,"hex"):d}r.parseBytes=h;function c(d){return new Z(d,"hex","le")}r.intFromLE=c}),nn=it.getNAF,Ac=it.getJSF,fn=it.assert;function kt(e,t){this.type=e,this.p=new Z(t.p,16),this.red=t.prime?Z.red(t.prime):Z.mont(this.p),this.zero=new Z(0).toRed(this.red),this.one=new Z(1).toRed(this.red),this.two=new Z(2).toRed(this.red),this.n=t.n&&new Z(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var rr=kt;kt.prototype.point=function(){throw new Error("Not implemented")},kt.prototype.validate=function(){throw new Error("Not implemented")},kt.prototype._fixedNafMul=function(t,r){fn(t.precomputed);var n=t._getDoubles(),i=nn(r,1,this._bitLength),f=(1<=c;v--)d=(d<<1)+i[v];h.push(d)}for(var g=this.jpoint(null,null,null),m=this.jpoint(null,null,null),D=f;D>0;D--){for(c=0;c=0;d--){for(var v=0;d>=0&&h[d]===0;d--)v++;if(d>=0&&v++,c=c.dblp(v),d<0)break;var g=h[d];fn(g!==0),t.type==="affine"?g>0?c=c.mixedAdd(f[g-1>>1]):c=c.mixedAdd(f[-g-1>>1].neg()):g>0?c=c.add(f[g-1>>1]):c=c.add(f[-g-1>>1].neg())}return t.type==="affine"?c.toP():c},kt.prototype._wnafMulAdd=function(t,r,n,i,f){var h=this._wnafT1,c=this._wnafT2,d=this._wnafT3,v=0,g,m,D;for(g=0;g=1;g-=2){var O=g-1,T=g;if(h[O]!==1||h[T]!==1){d[O]=nn(n[O],h[O],this._bitLength),d[T]=nn(n[T],h[T],this._bitLength),v=Math.max(d[O].length,v),v=Math.max(d[T].length,v);continue}var P=[r[O],null,null,r[T]];r[O].y.cmp(r[T].y)===0?(P[1]=r[O].add(r[T]),P[2]=r[O].toJ().mixedAdd(r[T].neg())):r[O].y.cmp(r[T].y.redNeg())===0?(P[1]=r[O].toJ().mixedAdd(r[T]),P[2]=r[O].add(r[T].neg())):(P[1]=r[O].toJ().mixedAdd(r[T]),P[2]=r[O].toJ().mixedAdd(r[T].neg()));var j=[-3,-1,-5,-7,0,7,5,1,3],B=Ac(n[O],n[T]);for(v=Math.max(B[0].length,v),d[O]=new Array(v),d[T]=new Array(v),m=0;m=0;g--){for(var s=0;g>=0;){var _=!0;for(m=0;m=0&&s++,x=x.dblp(s),g<0)break;for(m=0;m0?D=c[m][q-1>>1]:q<0&&(D=c[m][-q-1>>1].neg()),D.type==="affine"?x=x.mixedAdd(D):x=x.add(D))}}for(g=0;g=Math.ceil((t.bitLength()+1)/r.step):!1},st.prototype._getDoubles=function(t,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var n=[this],i=this,f=0;f=0&&(S=v,O=g),m.negative&&(m=m.neg(),D=D.neg()),S.negative&&(S=S.neg(),O=O.neg()),[{a:m,b:D},{a:S,b:O}]},ut.prototype._endoSplit=function(t){var r=this.endo.basis,n=r[0],i=r[1],f=i.b.mul(t).divRound(this.n),h=n.b.neg().mul(t).divRound(this.n),c=f.mul(n.a),d=h.mul(i.a),v=f.mul(n.b),g=h.mul(i.b),m=t.sub(c).sub(d),D=v.add(g).neg();return{k1:m,k2:D}},ut.prototype.pointFromX=function(t,r){t=new Z(t,16),t.red||(t=t.toRed(this.red));var n=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),i=n.redSqrt();if(i.redSqr().redSub(n).cmp(this.zero)!==0)throw new Error("invalid point");var f=i.fromRed().isOdd();return(r&&!f||!r&&f)&&(i=i.redNeg()),this.point(t,i)},ut.prototype.validate=function(t){if(t.inf)return!0;var r=t.x,n=t.y,i=this.a.redMul(r),f=r.redSqr().redMul(r).redIAdd(i).redIAdd(this.b);return n.redSqr().redISub(f).cmpn(0)===0},ut.prototype._endoWnafMulAdd=function(t,r,n){for(var i=this._endoWnafT1,f=this._endoWnafT2,h=0;h":""},Ve.prototype.isInfinity=function(){return this.inf},Ve.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(this.x.cmp(t.x)===0)return this.curve.point(null,null);var r=this.y.redSub(t.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(t.x).redInvm()));var n=r.redSqr().redISub(this.x).redISub(t.x),i=r.redMul(this.x.redSub(n)).redISub(this.y);return this.curve.point(n,i)},Ve.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(t.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,n=this.x.redSqr(),i=t.redInvm(),f=n.redAdd(n).redIAdd(n).redIAdd(r).redMul(i),h=f.redSqr().redISub(this.x.redAdd(this.x)),c=f.redMul(this.x.redSub(h)).redISub(this.y);return this.curve.point(h,c)},Ve.prototype.getX=function(){return this.x.fromRed()},Ve.prototype.getY=function(){return this.y.fromRed()},Ve.prototype.mul=function(t){return t=new Z(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},Ve.prototype.mulAdd=function(t,r,n){var i=[this,r],f=[t,n];return this.curve.endo?this.curve._endoWnafMulAdd(i,f):this.curve._wnafMulAdd(1,i,f,2)},Ve.prototype.jmulAdd=function(t,r,n){var i=[this,r],f=[t,n];return this.curve.endo?this.curve._endoWnafMulAdd(i,f,!0):this.curve._wnafMulAdd(1,i,f,2,!0)},Ve.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||this.x.cmp(t.x)===0&&this.y.cmp(t.y)===0)},Ve.prototype.neg=function(t){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var n=this.precomputed,i=function(f){return f.neg()};r.precomputed={naf:n.naf&&{wnd:n.naf.wnd,points:n.naf.points.map(i)},doubles:n.doubles&&{step:n.doubles.step,points:n.doubles.points.map(i)}}}return r},Ve.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var t=this.curve.jpoint(this.x,this.y,this.curve.one);return t};function Ge(e,t,r,n){rr.BasePoint.call(this,e,"jacobian"),t===null&&r===null&&n===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new Z(0)):(this.x=new Z(t,16),this.y=new Z(r,16),this.z=new Z(n,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}oi(Ge,rr.BasePoint),ut.prototype.jpoint=function(t,r,n){return new Ge(this,t,r,n)},Ge.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),r=t.redSqr(),n=this.x.redMul(r),i=this.y.redMul(r).redMul(t);return this.curve.point(n,i)},Ge.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},Ge.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var r=t.z.redSqr(),n=this.z.redSqr(),i=this.x.redMul(r),f=t.x.redMul(n),h=this.y.redMul(r.redMul(t.z)),c=t.y.redMul(n.redMul(this.z)),d=i.redSub(f),v=h.redSub(c);if(d.cmpn(0)===0)return v.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var g=d.redSqr(),m=g.redMul(d),D=i.redMul(g),S=v.redSqr().redIAdd(m).redISub(D).redISub(D),O=v.redMul(D.redISub(S)).redISub(h.redMul(m)),T=this.z.redMul(t.z).redMul(d);return this.curve.jpoint(S,O,T)},Ge.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var r=this.z.redSqr(),n=this.x,i=t.x.redMul(r),f=this.y,h=t.y.redMul(r).redMul(this.z),c=n.redSub(i),d=f.redSub(h);if(c.cmpn(0)===0)return d.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var v=c.redSqr(),g=v.redMul(c),m=n.redMul(v),D=d.redSqr().redIAdd(g).redISub(m).redISub(m),S=d.redMul(m.redISub(D)).redISub(f.redMul(g)),O=this.z.redMul(c);return this.curve.jpoint(D,S,O)},Ge.prototype.dblp=function(t){if(t===0)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var n=this;for(r=0;r=0)return!1;if(n.redIAdd(f),this.x.cmp(n)===0)return!0}},Ge.prototype.inspect=function(){return this.isInfinity()?"":""},Ge.prototype.isInfinity=function(){return this.z.cmpn(0)===0};var an=xr(function(e,t){var r=t;r.base=rr,r.short=Ec,r.mont=null,r.edwards=null}),on=xr(function(e,t){var r=t,n=it.assert;function i(c){c.type==="short"?this.curve=new an.short(c):c.type==="edwards"?this.curve=new an.edwards(c):this.curve=new an.mont(c),this.g=this.curve.g,this.n=this.curve.n,this.hash=c.hash,n(this.g.validate(),"Invalid curve"),n(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}r.PresetCurve=i;function f(c,d){Object.defineProperty(r,c,{configurable:!0,enumerable:!0,get:function(){var v=new i(d);return Object.defineProperty(r,c,{configurable:!0,enumerable:!0,value:v}),v}})}f("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:wt.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),f("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:wt.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),f("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:wt.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),f("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:wt.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),f("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:wt.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),f("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:wt.sha256,gRed:!1,g:["9"]}),f("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:wt.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var h;try{h=null.crash()}catch{h=void 0}f("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:wt.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",h]})});function jt(e){if(!(this instanceof jt))return new jt(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=vt.toArray(e.entropy,e.entropyEnc||"hex"),r=vt.toArray(e.nonce,e.nonceEnc||"hex"),n=vt.toArray(e.pers,e.persEnc||"hex");ai(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,r,n)}var qa=jt;jt.prototype._init=function(t,r,n){var i=t.concat(r).concat(n);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var f=0;f=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(n||[])),this._reseed=1},jt.prototype.generate=function(t,r,n,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(i=n,n=r,r=null),n&&(n=vt.toArray(n,i||"hex"),this._update(n));for(var f=[];f.length"};var _c=it.assert;function sn(e,t){if(e instanceof sn)return e;this._importDER(e,t)||(_c(e.r&&e.s,"Signature without r or s"),this.r=new Z(e.r,16),this.s=new Z(e.s,16),e.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}var un=sn;function Dc(){this.place=0}function hi(e,t){var r=e[t.place++];if(!(r&128))return r;var n=r&15;if(n===0||n>4)return!1;for(var i=0,f=0,h=t.place;f>>=0;return i<=127?!1:(t.place=h,i)}function Ka(e){for(var t=0,r=e.length-1;!e[t]&&!(e[t+1]&128)&&t>>3);for(e.push(r|128);--r;)e.push(t>>>(r<<3)&255);e.push(t)}sn.prototype.toDER=function(t){var r=this.r.toArray(),n=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),n[0]&128&&(n=[0].concat(n)),r=Ka(r),n=Ka(n);!n[0]&&!(n[1]&128);)n=n.slice(1);var i=[2];ci(i,r.length),i=i.concat(r),i.push(2),ci(i,n.length);var f=i.concat(n),h=[48];return ci(h,f.length),h=h.concat(f),it.encode(h,t)};var Sc=function(){throw new Error("unsupported")},za=it.assert;function ht(e){if(!(this instanceof ht))return new ht(e);typeof e=="string"&&(za(Object.prototype.hasOwnProperty.call(on,e),"Unknown curve "+e),e=on[e]),e instanceof on.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}var Mc=ht;ht.prototype.keyPair=function(t){return new ui(this,t)},ht.prototype.keyFromPrivate=function(t,r){return ui.fromPrivate(this,t,r)},ht.prototype.keyFromPublic=function(t,r){return ui.fromPublic(this,t,r)},ht.prototype.genKeyPair=function(t){t||(t={});for(var r=new qa({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||Sc(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),n=this.n.byteLength(),i=this.n.sub(new Z(2));;){var f=new Z(r.generate(n));if(!(f.cmp(i)>0))return f.iaddn(1),this.keyFromPrivate(f)}},ht.prototype._truncateToN=function(t,r){var n=t.byteLength()*8-this.n.bitLength();return n>0&&(t=t.ushrn(n)),!r&&t.cmp(this.n)>=0?t.sub(this.n):t},ht.prototype.sign=function(t,r,n,i){typeof n=="object"&&(i=n,n=null),i||(i={}),r=this.keyFromPrivate(r,n),t=this._truncateToN(new Z(t,16));for(var f=this.n.byteLength(),h=r.getPrivate().toArray("be",f),c=t.toArray("be",f),d=new qa({hash:this.hash,entropy:h,nonce:c,pers:i.pers,persEnc:i.persEnc||"utf8"}),v=this.n.sub(new Z(1)),g=0;;g++){var m=i.k?i.k(g):new Z(d.generate(this.n.byteLength()));if(m=this._truncateToN(m,!0),!(m.cmpn(1)<=0||m.cmp(v)>=0)){var D=this.g.mul(m);if(!D.isInfinity()){var S=D.getX(),O=S.umod(this.n);if(O.cmpn(0)!==0){var T=m.invm(this.n).mul(O.mul(r.getPrivate()).iadd(t));if(T=T.umod(this.n),T.cmpn(0)!==0){var P=(D.getY().isOdd()?1:0)|(S.cmp(O)!==0?2:0);return i.canonical&&T.cmp(this.nh)>0&&(T=this.n.sub(T),P^=1),new un({r:O,s:T,recoveryParam:P})}}}}}},ht.prototype.verify=function(t,r,n,i){t=this._truncateToN(new Z(t,16)),n=this.keyFromPublic(n,i),r=new un(r,"hex");var f=r.r,h=r.s;if(f.cmpn(1)<0||f.cmp(this.n)>=0||h.cmpn(1)<0||h.cmp(this.n)>=0)return!1;var c=h.invm(this.n),d=c.mul(t).umod(this.n),v=c.mul(f).umod(this.n),g;return this.curve._maxwellTrick?(g=this.g.jmulAdd(d,n.getPublic(),v),g.isInfinity()?!1:g.eqXToP(f)):(g=this.g.mulAdd(d,n.getPublic(),v),g.isInfinity()?!1:g.getX().umod(this.n).cmp(f)===0)},ht.prototype.recoverPubKey=function(e,t,r,n){za((3&r)===r,"The recovery param is more than two bits"),t=new un(t,n);var i=this.n,f=new Z(e),h=t.r,c=t.s,d=r&1,v=r>>1;if(h.cmp(this.curve.p.umod(this.curve.n))>=0&&v)throw new Error("Unable to find sencond key candinate");v?h=this.curve.pointFromX(h.add(this.curve.n),d):h=this.curve.pointFromX(h,d);var g=t.r.invm(i),m=i.sub(f).mul(g).umod(i),D=c.mul(g).umod(i);return this.g.mulAdd(m,h,D)},ht.prototype.getKeyRecoveryParam=function(e,t,r,n){if(t=new un(t,n),t.recoveryParam!==null)return t.recoveryParam;for(var i=0;i<4;i++){var f;try{f=this.recoverPubKey(e,t,i)}catch{continue}if(f.eq(r))return i}throw new Error("Unable to find valid recovery factor")};var xc=xr(function(e,t){var r=t;r.version="6.5.4",r.utils=it,r.rand=function(){throw new Error("unsupported")},r.curve=an,r.curves=on,r.ec=Mc,r.eddsa=null}),Nc=xc.ec;const Cc="signing-key/5.7.0",li=new ce(Cc);let di=null;function xt(){return di||(di=new Nc("secp256k1")),di}class Oc{constructor(t){Lr(this,"curve","secp256k1"),Lr(this,"privateKey",Xe(t)),du(this.privateKey)!==32&&li.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const r=xt().keyFromPrivate(Ke(this.privateKey));Lr(this,"publicKey","0x"+r.getPublic(!1,"hex")),Lr(this,"compressedPublicKey","0x"+r.getPublic(!0,"hex")),Lr(this,"_isSigningKey",!0)}_addPoint(t){const r=xt().keyFromPublic(Ke(this.publicKey)),n=xt().keyFromPublic(Ke(t));return"0x"+r.pub.add(n.pub).encodeCompressed("hex")}signDigest(t){const r=xt().keyFromPrivate(Ke(this.privateKey)),n=Ke(t);n.length!==32&&li.throwArgumentError("bad digest length","digest",t);const i=r.sign(n,{canonical:!0});return Zf({recoveryParam:i.recoveryParam,r:mt("0x"+i.r.toString(16),32),s:mt("0x"+i.s.toString(16),32)})}computeSharedSecret(t){const r=xt().keyFromPrivate(Ke(this.privateKey)),n=xt().keyFromPublic(Ke(Va(t)));return mt("0x"+r.derive(n.getPublic()).toString(16),32)}static isSigningKey(t){return!!(t&&t._isSigningKey)}}function Ic(e,t){const r=Zf(t),n={r:Ke(r.r),s:Ke(r.s)};return"0x"+xt().recoverPubKey(Ke(e),n,r.recoveryParam).encode("hex",!1)}function Va(e,t){const r=Ke(e);if(r.length===32){const n=new Oc(r);return t?"0x"+xt().keyFromPrivate(r).getPublic(!0,"hex"):n.publicKey}else{if(r.length===33)return t?Xe(r):"0x"+xt().keyFromPublic(r).getPublic(!1,"hex");if(r.length===65)return t?"0x"+xt().keyFromPublic(r).getPublic(!0,"hex"):Xe(r)}return li.throwArgumentError("invalid public or private key","key","[REDACTED]")}const Bc="transactions/5.7.0";new ce(Bc);var Ya;(function(e){e[e.legacy=0]="legacy",e[e.eip2930=1]="eip2930",e[e.eip1559=2]="eip1559"})(Ya||(Ya={}));function Rc(e){const t=Va(e);return Ku(Xf(Gn(Xf(t,1)),12))}function Fc(e,t){return Rc(Ic(Ke(e),t))}const Uc="https://rpc.walletconnect.com/v1";async function Ga(e,t,r,n,i,f){switch(r.t){case"eip191":return Wa(e,t,r.s);case"eip1271":return await Qa(e,t,r.s,n,i,f);default:throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${r.t}`)}}function Wa(e,t,r){return Fc(ga(t),r).toLowerCase()===e.toLowerCase()}async function Qa(e,t,r,n,i,f){try{const h="0x1626ba7e",c="0000000000000000000000000000000000000000000000000000000000000040",d="0000000000000000000000000000000000000000000000000000000000000041",v=r.substring(2),g=ga(t).substring(2),m=h+g+c+d+v,D=await fetch(`${f||Uc}/?chainId=${n}&projectId=${i}`,{method:"POST",body:JSON.stringify({id:Tc(),jsonrpc:"2.0",method:"eth_call",params:[{to:e,data:m},"latest"]})}),{result:S}=await D.json();return S?S.slice(0,h.length).toLowerCase()===h.toLowerCase():!1}catch(h){return console.error("isValidEip1271Signature: ",h),!1}}function Tc(){return Date.now()+Math.floor(Math.random()*1e3)}var Pc=Object.defineProperty,Lc=Object.defineProperties,Hc=Object.getOwnPropertyDescriptors,Ja=Object.getOwnPropertySymbols,kc=Object.prototype.hasOwnProperty,jc=Object.prototype.propertyIsEnumerable,$a=(e,t,r)=>t in e?Pc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,vi=(e,t)=>{for(var r in t||(t={}))kc.call(t,r)&&$a(e,r,t[r]);if(Ja)for(var r of Ja(t))jc.call(t,r)&&$a(e,r,t[r]);return e},Xa=(e,t)=>Lc(e,Hc(t));const qc="did:pkh:",hn=e=>e?.split(":"),pi=e=>{const t=e&&hn(e);if(t)return e.includes(qc)?t[3]:t[1]},Kc=e=>{const t=e&&hn(e);if(t)return t[2]+":"+t[3]},gi=e=>{const t=e&&hn(e);if(t)return t.pop()};async function zc(e){const{cacao:t,projectId:r}=e,{s:n,p:i}=t,f=Za(i,i.iss),h=gi(i.iss);return await Ga(h,f,n,pi(i.iss),r)}const Za=(e,t)=>{const r=`${e.domain} wants you to sign in with your Ethereum account:`,n=gi(t);if(!e.aud&&!e.uri)throw new Error("Either `aud` or `uri` is required to construct the message");let i=e.statement||void 0;const f=`URI: ${e.aud||e.uri}`,h=`Version: ${e.version}`,c=`Chain ID: ${pi(t)}`,d=`Nonce: ${e.nonce}`,v=`Issued At: ${e.iat}`,g=e.resources?`Resources:${e.resources.map(D=>` ++- ${D}`).join("")}`:void 0,m=ln(e.resources);if(m){const D=qt(m);i=wi(i,D)}return[r,n,"",i,"",f,h,c,d,v,g].filter(D=>D!=null).join(` ++`)};function Vc(e,t,r){return r.includes("did:pkh:")||(r=`did:pkh:${r}`),{h:{t:"caip122"},p:{iss:r,domain:e.domain,aud:e.aud,version:e.version,nonce:e.nonce,iat:e.iat,statement:e.statement,requestId:e.requestId,resources:e.resources,nbf:e.nbf,exp:e.exp},s:t}}function Yc(e){var t;const{authPayload:r,chains:n,methods:i}=e,f=r.statement||"";if(!(n!=null&&n.length))return r;const h=r.chains,c=Kn(h,n);if(!(c!=null&&c.length))throw new Error("No supported chains");const d=eo(r.resources);if(!d)return r;Nt(d);const v=to(d,"eip155");let g=r?.resources||[];if(v!=null&&v.length){const m=ro(v),D=Kn(m,i);if(!(D!=null&&D.length))throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(m)}, supported: ${JSON.stringify(i)}`);const S=bi("request",D,{chains:c}),O=ao(d,"eip155",S);g=((t=r?.resources)==null?void 0:t.slice(0,-1))||[],g.push(cn(O))}return Xa(vi({},r),{statement:so(f,ln(g)),chains:c,resources:r!=null&&r.resources||g.length>0?g:void 0})}function eo(e){const t=ln(e);if(t&&mi(t))return qt(t)}function Gc(e,t){var r;return(r=e?.att)==null?void 0:r.hasOwnProperty(t)}function to(e,t){var r,n;return(r=e?.att)!=null&&r[t]?Object.keys((n=e?.att)==null?void 0:n[t]):[]}function Wc(e){return e?.map(t=>Object.keys(t))||[]}function ro(e){return e?.map(t=>{var r;return(r=t.split("/"))==null?void 0:r[1]})||[]}function no(e){return Buffer.from(JSON.stringify(e)).toString("base64")}function io(e){return JSON.parse(Buffer.from(e,"base64").toString("utf-8"))}function Nt(e){if(!e)throw new Error("No recap provided, value is undefined");if(!e.att)throw new Error("No `att` property found");const t=Object.keys(e.att);if(!(t!=null&&t.length))throw new Error("No resources found in `att` property");t.forEach(r=>{const n=e.att[r];if(Array.isArray(n))throw new Error(`Resource must be an object: ${r}`);if(typeof n!="object")throw new Error(`Resource must be an object: ${r}`);if(!Object.keys(n).length)throw new Error(`Resource object is empty: ${r}`);Object.keys(n).forEach(i=>{const f=n[i];if(!Array.isArray(f))throw new Error(`Ability limits ${i} must be an array of objects, found: ${f}`);if(!f.length)throw new Error(`Value of ${i} is empty array, must be an array with objects`);f.forEach(h=>{if(typeof h!="object")throw new Error(`Ability limits (${i}) must be an array of objects, found: ${h}`)})})})}function fo(e,t,r,n={}){return r?.sort((i,f)=>i.localeCompare(f)),{att:{[e]:bi(t,r,n)}}}function ao(e,t,r){var n;return e.att[t]=vi({},r),((n=Object.keys(e.att))==null?void 0:n.sort((i,f)=>i.localeCompare(f))).reduce((i,f)=>(i.att[f]=e.att[f],i),{att:{}})}function bi(e,t,r={}){t=t?.sort((i,f)=>i.localeCompare(f));const n=t.map(i=>({[`${e}/${i}`]:[r]}));return Object.assign({},...n)}function cn(e){return Nt(e),`urn:recap:${no(e).replace(/=/g,"")}`}function qt(e){const t=io(e.replace("urn:recap:",""));return Nt(t),t}function Qc(e,t,r){const n=fo(e,t,r);return cn(n)}function mi(e){return e&&e.includes("urn:recap:")}function Jc(e,t){const r=qt(e),n=qt(t),i=oo(r,n);return cn(i)}function oo(e,t){Nt(e),Nt(t);const r=Object.keys(e.att).concat(Object.keys(t.att)).sort((i,f)=>i.localeCompare(f)),n={att:{}};return r.forEach(i=>{var f,h;Object.keys(((f=e.att)==null?void 0:f[i])||{}).concat(Object.keys(((h=t.att)==null?void 0:h[i])||{})).sort((c,d)=>c.localeCompare(d)).forEach(c=>{var d,v;n.att[i]=Xa(vi({},n.att[i]),{[c]:((d=e.att[i])==null?void 0:d[c])||((v=t.att[i])==null?void 0:v[c])})})}),n}function wi(e="",t){Nt(t);const r="I further authorize the stated URI to perform the following actions on my behalf: ";if(e.includes(r))return e;const n=[];let i=0;Object.keys(t.att).forEach(c=>{const d=Object.keys(t.att[c]).map(m=>({ability:m.split("/")[0],action:m.split("/")[1]}));d.sort((m,D)=>m.action.localeCompare(D.action));const v={};d.forEach(m=>{v[m.ability]||(v[m.ability]=[]),v[m.ability].push(m.action)});const g=Object.keys(v).map(m=>(i++,`(${i}) '${m}': '${v[m].join("', '")}' for '${c}'.`));n.push(g.join(", ").replace(".,","."))});const f=n.join(" "),h=`${r}${f}`;return`${e?e+" ":""}${h}`}function $c(e){var t;const r=qt(e);Nt(r);const n=(t=r.att)==null?void 0:t.eip155;return n?Object.keys(n).map(i=>i.split("/")[1]):[]}function Xc(e){const t=qt(e);Nt(t);const r=[];return Object.values(t.att).forEach(n=>{Object.values(n).forEach(i=>{var f;(f=i?.[0])!=null&&f.chains&&r.push(i[0].chains)})}),[...new Set(r.flat())]}function so(e,t){if(!t)return e;const r=qt(t);return Nt(r),wi(e,r)}function ln(e){if(!e)return;const t=e?.[e.length-1];return mi(t)?t:void 0}var Ai={},dn={},le={},uo={};(function(e){Object.defineProperty(e,"__esModule",{value:!0});function t(c,d){var v=c>>>16&65535,g=c&65535,m=d>>>16&65535,D=d&65535;return g*D+(v*D+g*m<<16>>>0)|0}e.mul=Math.imul||t;function r(c,d){return c+d|0}e.add=r;function n(c,d){return c-d|0}e.sub=n;function i(c,d){return c<>>32-d}e.rotl=i;function f(c,d){return c<<32-d|c>>>d}e.rotr=f;function h(c){return typeof c=="number"&&isFinite(c)&&Math.floor(c)===c}e.isInteger=Number.isInteger||h,e.MAX_SAFE_INTEGER=9007199254740991,e.isSafeInteger=function(c){return e.isInteger(c)&&c>=-e.MAX_SAFE_INTEGER&&c<=e.MAX_SAFE_INTEGER}})(uo),Object.defineProperty(le,"__esModule",{value:!0});var ho=uo;function Zc(e,t){return t===void 0&&(t=0),(e[t+0]<<8|e[t+1])<<16>>16}le.readInt16BE=Zc;function el(e,t){return t===void 0&&(t=0),(e[t+0]<<8|e[t+1])>>>0}le.readUint16BE=el;function tl(e,t){return t===void 0&&(t=0),(e[t+1]<<8|e[t])<<16>>16}le.readInt16LE=tl;function rl(e,t){return t===void 0&&(t=0),(e[t+1]<<8|e[t])>>>0}le.readUint16LE=rl;function co(e,t,r){return t===void 0&&(t=new Uint8Array(2)),r===void 0&&(r=0),t[r+0]=e>>>8,t[r+1]=e>>>0,t}le.writeUint16BE=co,le.writeInt16BE=co;function lo(e,t,r){return t===void 0&&(t=new Uint8Array(2)),r===void 0&&(r=0),t[r+0]=e>>>0,t[r+1]=e>>>8,t}le.writeUint16LE=lo,le.writeInt16LE=lo;function yi(e,t){return t===void 0&&(t=0),e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]}le.readInt32BE=yi;function Ei(e,t){return t===void 0&&(t=0),(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}le.readUint32BE=Ei;function _i(e,t){return t===void 0&&(t=0),e[t+3]<<24|e[t+2]<<16|e[t+1]<<8|e[t]}le.readInt32LE=_i;function Di(e,t){return t===void 0&&(t=0),(e[t+3]<<24|e[t+2]<<16|e[t+1]<<8|e[t])>>>0}le.readUint32LE=Di;function vn(e,t,r){return t===void 0&&(t=new Uint8Array(4)),r===void 0&&(r=0),t[r+0]=e>>>24,t[r+1]=e>>>16,t[r+2]=e>>>8,t[r+3]=e>>>0,t}le.writeUint32BE=vn,le.writeInt32BE=vn;function pn(e,t,r){return t===void 0&&(t=new Uint8Array(4)),r===void 0&&(r=0),t[r+0]=e>>>0,t[r+1]=e>>>8,t[r+2]=e>>>16,t[r+3]=e>>>24,t}le.writeUint32LE=pn,le.writeInt32LE=pn;function nl(e,t){t===void 0&&(t=0);var r=yi(e,t),n=yi(e,t+4);return r*4294967296+n-(n>>31)*4294967296}le.readInt64BE=nl;function il(e,t){t===void 0&&(t=0);var r=Ei(e,t),n=Ei(e,t+4);return r*4294967296+n}le.readUint64BE=il;function fl(e,t){t===void 0&&(t=0);var r=_i(e,t),n=_i(e,t+4);return n*4294967296+r-(r>>31)*4294967296}le.readInt64LE=fl;function al(e,t){t===void 0&&(t=0);var r=Di(e,t),n=Di(e,t+4);return n*4294967296+r}le.readUint64LE=al;function vo(e,t,r){return t===void 0&&(t=new Uint8Array(8)),r===void 0&&(r=0),vn(e/4294967296>>>0,t,r),vn(e>>>0,t,r+4),t}le.writeUint64BE=vo,le.writeInt64BE=vo;function po(e,t,r){return t===void 0&&(t=new Uint8Array(8)),r===void 0&&(r=0),pn(e>>>0,t,r),pn(e/4294967296>>>0,t,r+4),t}le.writeUint64LE=po,le.writeInt64LE=po;function ol(e,t,r){if(r===void 0&&(r=0),e%8!==0)throw new Error("readUintBE supports only bitLengths divisible by 8");if(e/8>t.length-r)throw new Error("readUintBE: array is too short for the given bitLength");for(var n=0,i=1,f=e/8+r-1;f>=r;f--)n+=t[f]*i,i*=256;return n}le.readUintBE=ol;function sl(e,t,r){if(r===void 0&&(r=0),e%8!==0)throw new Error("readUintLE supports only bitLengths divisible by 8");if(e/8>t.length-r)throw new Error("readUintLE: array is too short for the given bitLength");for(var n=0,i=1,f=r;f=n;f--)r[f]=t/i&255,i*=256;return r}le.writeUintBE=ul;function hl(e,t,r,n){if(r===void 0&&(r=new Uint8Array(e/8)),n===void 0&&(n=0),e%8!==0)throw new Error("writeUintLE supports only bitLengths divisible by 8");if(!ho.isSafeInteger(t))throw new Error("writeUintLE value must be an integer");for(var i=1,f=n;f>>32-16|u<<16,W=W+u|0,s^=W,s=s>>>32-12|s<<12,M=M+_|0,p^=M,p=p>>>32-16|p<<16,J=J+p|0,_^=J,_=_>>>32-12|_<<12,x=x+q|0,b^=x,b=b>>>32-16|b<<16,E=E+b|0,q^=E,q=q>>>32-12|q<<12,N=N+G|0,A^=N,A=A>>>32-16|A<<16,a=a+A|0,G^=a,G=G>>>32-12|G<<12,x=x+q|0,b^=x,b=b>>>32-8|b<<8,E=E+b|0,q^=E,q=q>>>32-7|q<<7,N=N+G|0,A^=N,A=A>>>32-8|A<<8,a=a+A|0,G^=a,G=G>>>32-7|G<<7,M=M+_|0,p^=M,p=p>>>32-8|p<<8,J=J+p|0,_^=J,_=_>>>32-7|_<<7,U=U+s|0,u^=U,u=u>>>32-8|u<<8,W=W+u|0,s^=W,s=s>>>32-7|s<<7,U=U+_|0,A^=U,A=A>>>32-16|A<<16,E=E+A|0,_^=E,_=_>>>32-12|_<<12,M=M+q|0,u^=M,u=u>>>32-16|u<<16,a=a+u|0,q^=a,q=q>>>32-12|q<<12,x=x+G|0,p^=x,p=p>>>32-16|p<<16,W=W+p|0,G^=W,G=G>>>32-12|G<<12,N=N+s|0,b^=N,b=b>>>32-16|b<<16,J=J+b|0,s^=J,s=s>>>32-12|s<<12,x=x+G|0,p^=x,p=p>>>32-8|p<<8,W=W+p|0,G^=W,G=G>>>32-7|G<<7,N=N+s|0,b^=N,b=b>>>32-8|b<<8,J=J+b|0,s^=J,s=s>>>32-7|s<<7,M=M+q|0,u^=M,u=u>>>32-8|u<<8,a=a+u|0,q^=a,q=q>>>32-7|q<<7,U=U+_|0,A^=U,A=A>>>32-8|A<<8,E=E+A|0,_^=E,_=_>>>32-7|_<<7;Je.writeUint32LE(U+n|0,e,0),Je.writeUint32LE(M+i|0,e,4),Je.writeUint32LE(x+f|0,e,8),Je.writeUint32LE(N+h|0,e,12),Je.writeUint32LE(s+c|0,e,16),Je.writeUint32LE(_+d|0,e,20),Je.writeUint32LE(q+v|0,e,24),Je.writeUint32LE(G+g|0,e,28),Je.writeUint32LE(W+m|0,e,32),Je.writeUint32LE(J+D|0,e,36),Je.writeUint32LE(E+S|0,e,40),Je.writeUint32LE(a+O|0,e,44),Je.writeUint32LE(u+T|0,e,48),Je.writeUint32LE(p+P|0,e,52),Je.writeUint32LE(b+j|0,e,56),Je.writeUint32LE(A+B|0,e,60)}function go(e,t,r,n,i){if(i===void 0&&(i=0),e.length!==32)throw new Error("ChaCha: key size must be 32 bytes");if(n.length>>=8,t++;if(n>0)throw new Error("ChaCha: counter overflow")}var bo={},Kt={};Object.defineProperty(Kt,"__esModule",{value:!0});function Dl(e,t,r){return~(e-1)&t|e-1&r}Kt.select=Dl;function Sl(e,t){return(e|0)-(t|0)-1>>>31&1}Kt.lessOrEqual=Sl;function mo(e,t){if(e.length!==t.length)return 0;for(var r=0,n=0;n>>8}Kt.compare=mo;function Ml(e,t){return e.length===0||t.length===0?!1:mo(e,t)!==0}Kt.equal=Ml,function(e){Object.defineProperty(e,"__esModule",{value:!0});var t=Kt,r=pt;e.DIGEST_LENGTH=16;var n=function(){function h(c){this.digestLength=e.DIGEST_LENGTH,this._buffer=new Uint8Array(16),this._r=new Uint16Array(10),this._h=new Uint16Array(10),this._pad=new Uint16Array(8),this._leftover=0,this._fin=0,this._finished=!1;var d=c[0]|c[1]<<8;this._r[0]=d&8191;var v=c[2]|c[3]<<8;this._r[1]=(d>>>13|v<<3)&8191;var g=c[4]|c[5]<<8;this._r[2]=(v>>>10|g<<6)&7939;var m=c[6]|c[7]<<8;this._r[3]=(g>>>7|m<<9)&8191;var D=c[8]|c[9]<<8;this._r[4]=(m>>>4|D<<12)&255,this._r[5]=D>>>1&8190;var S=c[10]|c[11]<<8;this._r[6]=(D>>>14|S<<2)&8191;var O=c[12]|c[13]<<8;this._r[7]=(S>>>11|O<<5)&8065;var T=c[14]|c[15]<<8;this._r[8]=(O>>>8|T<<8)&8191,this._r[9]=T>>>5&127,this._pad[0]=c[16]|c[17]<<8,this._pad[1]=c[18]|c[19]<<8,this._pad[2]=c[20]|c[21]<<8,this._pad[3]=c[22]|c[23]<<8,this._pad[4]=c[24]|c[25]<<8,this._pad[5]=c[26]|c[27]<<8,this._pad[6]=c[28]|c[29]<<8,this._pad[7]=c[30]|c[31]<<8}return h.prototype._blocks=function(c,d,v){for(var g=this._fin?0:2048,m=this._h[0],D=this._h[1],S=this._h[2],O=this._h[3],T=this._h[4],P=this._h[5],j=this._h[6],B=this._h[7],U=this._h[8],M=this._h[9],x=this._r[0],N=this._r[1],s=this._r[2],_=this._r[3],q=this._r[4],G=this._r[5],W=this._r[6],J=this._r[7],E=this._r[8],a=this._r[9];v>=16;){var u=c[d+0]|c[d+1]<<8;m+=u&8191;var p=c[d+2]|c[d+3]<<8;D+=(u>>>13|p<<3)&8191;var b=c[d+4]|c[d+5]<<8;S+=(p>>>10|b<<6)&8191;var A=c[d+6]|c[d+7]<<8;O+=(b>>>7|A<<9)&8191;var C=c[d+8]|c[d+9]<<8;T+=(A>>>4|C<<12)&8191,P+=C>>>1&8191;var R=c[d+10]|c[d+11]<<8;j+=(C>>>14|R<<2)&8191;var y=c[d+12]|c[d+13]<<8;B+=(R>>>11|y<<5)&8191;var o=c[d+14]|c[d+15]<<8;U+=(y>>>8|o<<8)&8191,M+=o>>>5|g;var w=0,V=w;V+=m*x,V+=D*(5*a),V+=S*(5*E),V+=O*(5*J),V+=T*(5*W),w=V>>>13,V&=8191,V+=P*(5*G),V+=j*(5*q),V+=B*(5*_),V+=U*(5*s),V+=M*(5*N),w+=V>>>13,V&=8191;var l=w;l+=m*N,l+=D*x,l+=S*(5*a),l+=O*(5*E),l+=T*(5*J),w=l>>>13,l&=8191,l+=P*(5*W),l+=j*(5*G),l+=B*(5*q),l+=U*(5*_),l+=M*(5*s),w+=l>>>13,l&=8191;var F=w;F+=m*s,F+=D*N,F+=S*x,F+=O*(5*a),F+=T*(5*E),w=F>>>13,F&=8191,F+=P*(5*J),F+=j*(5*W),F+=B*(5*G),F+=U*(5*q),F+=M*(5*_),w+=F>>>13,F&=8191;var L=w;L+=m*_,L+=D*s,L+=S*N,L+=O*x,L+=T*(5*a),w=L>>>13,L&=8191,L+=P*(5*E),L+=j*(5*J),L+=B*(5*W),L+=U*(5*G),L+=M*(5*q),w+=L>>>13,L&=8191;var H=w;H+=m*q,H+=D*_,H+=S*s,H+=O*N,H+=T*x,w=H>>>13,H&=8191,H+=P*(5*a),H+=j*(5*E),H+=B*(5*J),H+=U*(5*W),H+=M*(5*G),w+=H>>>13,H&=8191;var k=w;k+=m*G,k+=D*q,k+=S*_,k+=O*s,k+=T*N,w=k>>>13,k&=8191,k+=P*x,k+=j*(5*a),k+=B*(5*E),k+=U*(5*J),k+=M*(5*W),w+=k>>>13,k&=8191;var Y=w;Y+=m*W,Y+=D*G,Y+=S*q,Y+=O*_,Y+=T*s,w=Y>>>13,Y&=8191,Y+=P*N,Y+=j*x,Y+=B*(5*a),Y+=U*(5*E),Y+=M*(5*J),w+=Y>>>13,Y&=8191;var z=w;z+=m*J,z+=D*W,z+=S*G,z+=O*q,z+=T*_,w=z>>>13,z&=8191,z+=P*s,z+=j*N,z+=B*x,z+=U*(5*a),z+=M*(5*E),w+=z>>>13,z&=8191;var K=w;K+=m*E,K+=D*J,K+=S*W,K+=O*G,K+=T*q,w=K>>>13,K&=8191,K+=P*_,K+=j*s,K+=B*N,K+=U*x,K+=M*(5*a),w+=K>>>13,K&=8191;var X=w;X+=m*a,X+=D*E,X+=S*J,X+=O*W,X+=T*G,w=X>>>13,X&=8191,X+=P*q,X+=j*_,X+=B*s,X+=U*N,X+=M*x,w+=X>>>13,X&=8191,w=(w<<2)+w|0,w=w+V|0,V=w&8191,w=w>>>13,l+=w,m=V,D=l,S=F,O=L,T=H,P=k,j=Y,B=z,U=K,M=X,d+=16,v-=16}this._h[0]=m,this._h[1]=D,this._h[2]=S,this._h[3]=O,this._h[4]=T,this._h[5]=P,this._h[6]=j,this._h[7]=B,this._h[8]=U,this._h[9]=M},h.prototype.finish=function(c,d){d===void 0&&(d=0);var v=new Uint16Array(10),g,m,D,S;if(this._leftover){for(S=this._leftover,this._buffer[S++]=1;S<16;S++)this._buffer[S]=0;this._fin=1,this._blocks(this._buffer,0,16)}for(g=this._h[1]>>>13,this._h[1]&=8191,S=2;S<10;S++)this._h[S]+=g,g=this._h[S]>>>13,this._h[S]&=8191;for(this._h[0]+=g*5,g=this._h[0]>>>13,this._h[0]&=8191,this._h[1]+=g,g=this._h[1]>>>13,this._h[1]&=8191,this._h[2]+=g,v[0]=this._h[0]+5,g=v[0]>>>13,v[0]&=8191,S=1;S<10;S++)v[S]=this._h[S]+g,g=v[S]>>>13,v[S]&=8191;for(v[9]-=8192,m=(g^1)-1,S=0;S<10;S++)v[S]&=m;for(m=~m,S=0;S<10;S++)this._h[S]=this._h[S]&m|v[S];for(this._h[0]=(this._h[0]|this._h[1]<<13)&65535,this._h[1]=(this._h[1]>>>3|this._h[2]<<10)&65535,this._h[2]=(this._h[2]>>>6|this._h[3]<<7)&65535,this._h[3]=(this._h[3]>>>9|this._h[4]<<4)&65535,this._h[4]=(this._h[4]>>>12|this._h[5]<<1|this._h[6]<<14)&65535,this._h[5]=(this._h[6]>>>2|this._h[7]<<11)&65535,this._h[6]=(this._h[7]>>>5|this._h[8]<<8)&65535,this._h[7]=(this._h[8]>>>8|this._h[9]<<5)&65535,D=this._h[0]+this._pad[0],this._h[0]=D&65535,S=1;S<8;S++)D=(this._h[S]+this._pad[S]|0)+(D>>>16)|0,this._h[S]=D&65535;return c[d+0]=this._h[0]>>>0,c[d+1]=this._h[0]>>>8,c[d+2]=this._h[1]>>>0,c[d+3]=this._h[1]>>>8,c[d+4]=this._h[2]>>>0,c[d+5]=this._h[2]>>>8,c[d+6]=this._h[3]>>>0,c[d+7]=this._h[3]>>>8,c[d+8]=this._h[4]>>>0,c[d+9]=this._h[4]>>>8,c[d+10]=this._h[5]>>>0,c[d+11]=this._h[5]>>>8,c[d+12]=this._h[6]>>>0,c[d+13]=this._h[6]>>>8,c[d+14]=this._h[7]>>>0,c[d+15]=this._h[7]>>>8,this._finished=!0,this},h.prototype.update=function(c){var d=0,v=c.length,g;if(this._leftover){g=16-this._leftover,g>v&&(g=v);for(var m=0;m=16&&(g=v-v%16,this._blocks(c,d,g),d+=g,v-=g),v){for(var m=0;m16)throw new Error("ChaCha20Poly1305: incorrect nonce length");var S=new Uint8Array(16);S.set(v,S.length-v.length);var O=new Uint8Array(32);t.stream(this._key,S,O,4);var T=g.length+this.tagLength,P;if(D){if(D.length!==T)throw new Error("ChaCha20Poly1305: incorrect destination length");P=D}else P=new Uint8Array(T);return t.streamXOR(this._key,S,g,P,4),this._authenticate(P.subarray(P.length-this.tagLength,P.length),O,P.subarray(0,P.length-this.tagLength),m),n.wipe(S),P},d.prototype.open=function(v,g,m,D){if(v.length>16)throw new Error("ChaCha20Poly1305: incorrect nonce length");if(g.length0&&S.update(h.subarray(D.length%16))),S.update(m),m.length%16>0&&S.update(h.subarray(m.length%16));var O=new Uint8Array(8);D&&i.writeUint64LE(D.length,O),S.update(O),i.writeUint64LE(m.length,O),S.update(O);for(var T=S.digest(),P=0;Pthis.blockSize?this._inner.update(r).finish(n).clean():n.set(r);for(var i=0;i1&&this._hmac.update(this._buffer),this._info&&this._hmac.update(this._info),this._hmac.update(this._counter),this._hmac.finish(this._buffer),this._bufpos=0},e.prototype.expand=function(t){for(var r=new Uint8Array(t),n=0;n256)throw new Error("randomString charset is too long");let D="";const S=g.length,O=256-256%S;for(;v>0;){const T=i(Math.ceil(v*256/O),m);for(let P=0;P0;P++){const j=T[P];j0){for(;this._bufferLength0;)this._buffer[this._bufferLength++]=d[g++],v--;this._bufferLength===this.blockSize&&(f(this._temp,this._state,this._buffer,0,this.blockSize),this._bufferLength=0)}for(v>=this.blockSize&&(g=f(this._temp,this._state,d,g,v),v%=this.blockSize);v>0;)this._buffer[this._bufferLength++]=d[g++],v--;return this},c.prototype.finish=function(d){if(!this._finished){var v=this._bytesHashed,g=this._bufferLength,m=v/536870912|0,D=v<<3,S=v%64<56?64:128;this._buffer[g]=128;for(var O=g+1;O0?new Uint8Array(this._buffer):void 0,bufferLength:this._bufferLength,bytesHashed:this._bytesHashed}},c.prototype.restoreState=function(d){return this._state.set(d.state),this._bufferLength=d.bufferLength,d.buffer&&this._buffer.set(d.buffer),this._bytesHashed=d.bytesHashed,this._finished=!1,this},c.prototype.cleanSavedState=function(d){r.wipe(d.state),d.buffer&&r.wipe(d.buffer),d.bufferLength=0,d.bytesHashed=0},c}();e.SHA256=n;var i=new Int32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function f(c,d,v,g,m){for(;m>=64;){for(var D=d[0],S=d[1],O=d[2],T=d[3],P=d[4],j=d[5],B=d[6],U=d[7],M=0;M<16;M++){var x=g+M*4;c[M]=t.readUint32BE(v,x)}for(var M=16;M<64;M++){var N=c[M-2],s=(N>>>17|N<<32-17)^(N>>>19|N<<32-19)^N>>>10;N=c[M-15];var _=(N>>>7|N<<32-7)^(N>>>18|N<<32-18)^N>>>3;c[M]=(s+c[M-7]|0)+(_+c[M-16]|0)}for(var M=0;M<64;M++){var s=(((P>>>6|P<<26)^(P>>>11|P<<21)^(P>>>25|P<<7))+(P&j^~P&B)|0)+(U+(i[M]+c[M]|0)|0)|0,_=((D>>>2|D<<32-2)^(D>>>13|D<<32-13)^(D>>>22|D<<32-22))+(D&S^D&O^S&O)|0;U=B,B=j,j=P,P=T+s|0,T=O,O=S,S=D,D=s+_|0}d[0]+=D,d[1]+=S,d[2]+=O,d[3]+=T,d[4]+=P,d[5]+=j,d[6]+=B,d[7]+=U,g+=64,m-=64}return g}function h(c){var d=new n;d.update(c);var v=d.digest();return d.clean(),v}e.hash=h})(An);var xi={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.sharedKey=e.generateKeyPair=e.generateKeyPairFromSeed=e.scalarMultBase=e.scalarMult=e.SHARED_KEY_LENGTH=e.SECRET_KEY_LENGTH=e.PUBLIC_KEY_LENGTH=void 0;const t=gn,r=pt;e.PUBLIC_KEY_LENGTH=32,e.SECRET_KEY_LENGTH=32,e.SHARED_KEY_LENGTH=32;function n(M){const x=new Float64Array(16);if(M)for(let N=0;N>16&1),N[G-1]&=65535;N[15]=s[15]-32767-(N[14]>>16&1);const q=N[15]>>16&1;N[14]&=65535,c(s,N,1-q)}for(let _=0;_<16;_++)M[2*_]=s[_]&255,M[2*_+1]=s[_]>>8}function v(M,x){for(let N=0;N<16;N++)M[N]=x[2*N]+(x[2*N+1]<<8);M[15]&=32767}function g(M,x,N){for(let s=0;s<16;s++)M[s]=x[s]+N[s]}function m(M,x,N){for(let s=0;s<16;s++)M[s]=x[s]-N[s]}function D(M,x,N){let s,_,q=0,G=0,W=0,J=0,E=0,a=0,u=0,p=0,b=0,A=0,C=0,R=0,y=0,o=0,w=0,V=0,l=0,F=0,L=0,H=0,k=0,Y=0,z=0,K=0,X=0,Q=0,$=0,at=0,pe=0,ge=0,Ot=0,ee=N[0],te=N[1],Le=N[2],re=N[3],ne=N[4],He=N[5],ie=N[6],fe=N[7],ke=N[8],ae=N[9],oe=N[10],je=N[11],se=N[12],ue=N[13],qe=N[14],he=N[15];s=x[0],q+=s*ee,G+=s*te,W+=s*Le,J+=s*re,E+=s*ne,a+=s*He,u+=s*ie,p+=s*fe,b+=s*ke,A+=s*ae,C+=s*oe,R+=s*je,y+=s*se,o+=s*ue,w+=s*qe,V+=s*he,s=x[1],G+=s*ee,W+=s*te,J+=s*Le,E+=s*re,a+=s*ne,u+=s*He,p+=s*ie,b+=s*fe,A+=s*ke,C+=s*ae,R+=s*oe,y+=s*je,o+=s*se,w+=s*ue,V+=s*qe,l+=s*he,s=x[2],W+=s*ee,J+=s*te,E+=s*Le,a+=s*re,u+=s*ne,p+=s*He,b+=s*ie,A+=s*fe,C+=s*ke,R+=s*ae,y+=s*oe,o+=s*je,w+=s*se,V+=s*ue,l+=s*qe,F+=s*he,s=x[3],J+=s*ee,E+=s*te,a+=s*Le,u+=s*re,p+=s*ne,b+=s*He,A+=s*ie,C+=s*fe,R+=s*ke,y+=s*ae,o+=s*oe,w+=s*je,V+=s*se,l+=s*ue,F+=s*qe,L+=s*he,s=x[4],E+=s*ee,a+=s*te,u+=s*Le,p+=s*re,b+=s*ne,A+=s*He,C+=s*ie,R+=s*fe,y+=s*ke,o+=s*ae,w+=s*oe,V+=s*je,l+=s*se,F+=s*ue,L+=s*qe,H+=s*he,s=x[5],a+=s*ee,u+=s*te,p+=s*Le,b+=s*re,A+=s*ne,C+=s*He,R+=s*ie,y+=s*fe,o+=s*ke,w+=s*ae,V+=s*oe,l+=s*je,F+=s*se,L+=s*ue,H+=s*qe,k+=s*he,s=x[6],u+=s*ee,p+=s*te,b+=s*Le,A+=s*re,C+=s*ne,R+=s*He,y+=s*ie,o+=s*fe,w+=s*ke,V+=s*ae,l+=s*oe,F+=s*je,L+=s*se,H+=s*ue,k+=s*qe,Y+=s*he,s=x[7],p+=s*ee,b+=s*te,A+=s*Le,C+=s*re,R+=s*ne,y+=s*He,o+=s*ie,w+=s*fe,V+=s*ke,l+=s*ae,F+=s*oe,L+=s*je,H+=s*se,k+=s*ue,Y+=s*qe,z+=s*he,s=x[8],b+=s*ee,A+=s*te,C+=s*Le,R+=s*re,y+=s*ne,o+=s*He,w+=s*ie,V+=s*fe,l+=s*ke,F+=s*ae,L+=s*oe,H+=s*je,k+=s*se,Y+=s*ue,z+=s*qe,K+=s*he,s=x[9],A+=s*ee,C+=s*te,R+=s*Le,y+=s*re,o+=s*ne,w+=s*He,V+=s*ie,l+=s*fe,F+=s*ke,L+=s*ae,H+=s*oe,k+=s*je,Y+=s*se,z+=s*ue,K+=s*qe,X+=s*he,s=x[10],C+=s*ee,R+=s*te,y+=s*Le,o+=s*re,w+=s*ne,V+=s*He,l+=s*ie,F+=s*fe,L+=s*ke,H+=s*ae,k+=s*oe,Y+=s*je,z+=s*se,K+=s*ue,X+=s*qe,Q+=s*he,s=x[11],R+=s*ee,y+=s*te,o+=s*Le,w+=s*re,V+=s*ne,l+=s*He,F+=s*ie,L+=s*fe,H+=s*ke,k+=s*ae,Y+=s*oe,z+=s*je,K+=s*se,X+=s*ue,Q+=s*qe,$+=s*he,s=x[12],y+=s*ee,o+=s*te,w+=s*Le,V+=s*re,l+=s*ne,F+=s*He,L+=s*ie,H+=s*fe,k+=s*ke,Y+=s*ae,z+=s*oe,K+=s*je,X+=s*se,Q+=s*ue,$+=s*qe,at+=s*he,s=x[13],o+=s*ee,w+=s*te,V+=s*Le,l+=s*re,F+=s*ne,L+=s*He,H+=s*ie,k+=s*fe,Y+=s*ke,z+=s*ae,K+=s*oe,X+=s*je,Q+=s*se,$+=s*ue,at+=s*qe,pe+=s*he,s=x[14],w+=s*ee,V+=s*te,l+=s*Le,F+=s*re,L+=s*ne,H+=s*He,k+=s*ie,Y+=s*fe,z+=s*ke,K+=s*ae,X+=s*oe,Q+=s*je,$+=s*se,at+=s*ue,pe+=s*qe,ge+=s*he,s=x[15],V+=s*ee,l+=s*te,F+=s*Le,L+=s*re,H+=s*ne,k+=s*He,Y+=s*ie,z+=s*fe,K+=s*ke,X+=s*ae,Q+=s*oe,$+=s*je,at+=s*se,pe+=s*ue,ge+=s*qe,Ot+=s*he,q+=38*l,G+=38*F,W+=38*L,J+=38*H,E+=38*k,a+=38*Y,u+=38*z,p+=38*K,b+=38*X,A+=38*Q,C+=38*$,R+=38*at,y+=38*pe,o+=38*ge,w+=38*Ot,_=1,s=q+_+65535,_=Math.floor(s/65536),q=s-_*65536,s=G+_+65535,_=Math.floor(s/65536),G=s-_*65536,s=W+_+65535,_=Math.floor(s/65536),W=s-_*65536,s=J+_+65535,_=Math.floor(s/65536),J=s-_*65536,s=E+_+65535,_=Math.floor(s/65536),E=s-_*65536,s=a+_+65535,_=Math.floor(s/65536),a=s-_*65536,s=u+_+65535,_=Math.floor(s/65536),u=s-_*65536,s=p+_+65535,_=Math.floor(s/65536),p=s-_*65536,s=b+_+65535,_=Math.floor(s/65536),b=s-_*65536,s=A+_+65535,_=Math.floor(s/65536),A=s-_*65536,s=C+_+65535,_=Math.floor(s/65536),C=s-_*65536,s=R+_+65535,_=Math.floor(s/65536),R=s-_*65536,s=y+_+65535,_=Math.floor(s/65536),y=s-_*65536,s=o+_+65535,_=Math.floor(s/65536),o=s-_*65536,s=w+_+65535,_=Math.floor(s/65536),w=s-_*65536,s=V+_+65535,_=Math.floor(s/65536),V=s-_*65536,q+=_-1+37*(_-1),_=1,s=q+_+65535,_=Math.floor(s/65536),q=s-_*65536,s=G+_+65535,_=Math.floor(s/65536),G=s-_*65536,s=W+_+65535,_=Math.floor(s/65536),W=s-_*65536,s=J+_+65535,_=Math.floor(s/65536),J=s-_*65536,s=E+_+65535,_=Math.floor(s/65536),E=s-_*65536,s=a+_+65535,_=Math.floor(s/65536),a=s-_*65536,s=u+_+65535,_=Math.floor(s/65536),u=s-_*65536,s=p+_+65535,_=Math.floor(s/65536),p=s-_*65536,s=b+_+65535,_=Math.floor(s/65536),b=s-_*65536,s=A+_+65535,_=Math.floor(s/65536),A=s-_*65536,s=C+_+65535,_=Math.floor(s/65536),C=s-_*65536,s=R+_+65535,_=Math.floor(s/65536),R=s-_*65536,s=y+_+65535,_=Math.floor(s/65536),y=s-_*65536,s=o+_+65535,_=Math.floor(s/65536),o=s-_*65536,s=w+_+65535,_=Math.floor(s/65536),w=s-_*65536,s=V+_+65535,_=Math.floor(s/65536),V=s-_*65536,q+=_-1+37*(_-1),M[0]=q,M[1]=G,M[2]=W,M[3]=J,M[4]=E,M[5]=a,M[6]=u,M[7]=p,M[8]=b,M[9]=A,M[10]=C,M[11]=R,M[12]=y,M[13]=o,M[14]=w,M[15]=V}function S(M,x){D(M,x,x)}function O(M,x){const N=n();for(let s=0;s<16;s++)N[s]=x[s];for(let s=253;s>=0;s--)S(N,N),s!==2&&s!==4&&D(N,N,x);for(let s=0;s<16;s++)M[s]=N[s]}function T(M,x){const N=new Uint8Array(32),s=new Float64Array(80),_=n(),q=n(),G=n(),W=n(),J=n(),E=n();for(let b=0;b<31;b++)N[b]=M[b];N[31]=M[31]&127|64,N[0]&=248,v(s,x);for(let b=0;b<16;b++)q[b]=s[b];_[0]=W[0]=1;for(let b=254;b>=0;--b){const A=N[b>>>3]>>>(b&7)&1;c(_,q,A),c(G,W,A),g(J,_,G),m(_,_,G),g(G,q,W),m(q,q,W),S(W,J),S(E,_),D(_,G,_),D(G,q,J),g(J,_,G),m(_,_,G),S(q,_),m(G,W,E),D(_,G,f),g(_,_,W),D(G,G,_),D(_,W,E),D(W,q,s),S(q,J),c(_,q,A),c(G,W,A)}for(let b=0;b<16;b++)s[b+16]=_[b],s[b+32]=G[b],s[b+48]=q[b],s[b+64]=W[b];const a=s.subarray(32),u=s.subarray(16);O(a,a),D(u,u,a);const p=new Uint8Array(32);return d(p,u),p}e.scalarMult=T;function P(M){return T(M,i)}e.scalarMultBase=P;function j(M){if(M.length!==e.SECRET_KEY_LENGTH)throw new Error(`x25519: seed must be ${e.SECRET_KEY_LENGTH} bytes`);const x=new Uint8Array(M);return{publicKey:P(x),secretKey:x}}e.generateKeyPairFromSeed=j;function B(M){const x=(0,t.randomBytes)(32,M),N=j(x);return(0,r.wipe)(x),N}e.generateKeyPair=B;function U(M,x,N=!1){if(M.length!==e.PUBLIC_KEY_LENGTH)throw new Error("X25519: incorrect secret key length");if(x.length!==e.PUBLIC_KEY_LENGTH)throw new Error("X25519: incorrect public key length");const s=T(M,x);if(N){let _=0;for(let q=0;qi+f.length,0));const r=Do(t);let n=0;for(const i of e)r.set(i,n),n+=i.length;return r}function kl(e,t){if(e.length>=255)throw new TypeError("Alphabet too long");for(var r=new Uint8Array(256),n=0;n>>0,M=new Uint8Array(U);j!==B;){for(var x=O[j],N=0,s=U-1;(x!==0||N>>0,M[s]=x%c>>>0,x=x/c>>>0;if(x!==0)throw new Error("Non-zero carry");P=N,j++}for(var _=U-P;_!==U&&M[_]===0;)_++;for(var q=d.repeat(T);_>>0,U=new Uint8Array(B);O[T];){var M=r[O.charCodeAt(T)];if(M===255)return;for(var x=0,N=B-1;(M!==0||x>>0,U[N]=M%256>>>0,M=M/256>>>0;if(M!==0)throw new Error("Non-zero carry");j=x,T++}if(O[T]!==" "){for(var s=B-j;s!==B&&U[s]===0;)s++;for(var _=new Uint8Array(P+(B-s)),q=P;s!==B;)_[q++]=U[s++];return _}}}function S(O){var T=D(O);if(T)return T;throw new Error(`Non-${t} character`)}return{encode:m,decodeUnsafe:D,decode:S}}var jl=kl,ql=jl;const Mo=e=>{if(e instanceof Uint8Array&&e.constructor.name==="Uint8Array")return e;if(e instanceof ArrayBuffer)return new Uint8Array(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw new Error("Unknown type, must be binary type")},Kl=e=>new TextEncoder().encode(e),zl=e=>new TextDecoder().decode(e);class Vl{constructor(t,r,n){this.name=t,this.prefix=r,this.baseEncode=n}encode(t){if(t instanceof Uint8Array)return`${this.prefix}${this.baseEncode(t)}`;throw Error("Unknown type, must be binary type")}}class Yl{constructor(t,r,n){if(this.name=t,this.prefix=r,r.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=r.codePointAt(0),this.baseDecode=n}decode(t){if(typeof t=="string"){if(t.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(t)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(t.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(t){return xo(this,t)}}class Gl{constructor(t){this.decoders=t}or(t){return xo(this,t)}decode(t){const r=t[0],n=this.decoders[r];if(n)return n.decode(t);throw RangeError(`Unable to decode multibase string ${JSON.stringify(t)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const xo=(e,t)=>new Gl({...e.decoders||{[e.prefix]:e},...t.decoders||{[t.prefix]:t}});class Wl{constructor(t,r,n,i){this.name=t,this.prefix=r,this.baseEncode=n,this.baseDecode=i,this.encoder=new Vl(t,r,n),this.decoder=new Yl(t,r,i)}encode(t){return this.encoder.encode(t)}decode(t){return this.decoder.decode(t)}}const yn=({name:e,prefix:t,encode:r,decode:n})=>new Wl(e,t,r,n),Kr=({prefix:e,name:t,alphabet:r})=>{const{encode:n,decode:i}=ql(r,t);return yn({prefix:e,name:t,encode:n,decode:f=>Mo(i(f))})},Ql=(e,t,r,n)=>{const i={};for(let g=0;g=8&&(c-=8,h[v++]=255&d>>c)}if(c>=r||255&d<<8-c)throw new SyntaxError("Unexpected end of data");return h},Jl=(e,t,r)=>{const n=t[t.length-1]==="=",i=(1<r;)h-=r,f+=t[i&c>>h];if(h&&(f+=t[i&c<yn({prefix:t,name:e,encode(i){return Jl(i,n,r)},decode(i){return Ql(i,n,r,e)}}),$l=yn({prefix:"\0",name:"identity",encode:e=>zl(e),decode:e=>Kl(e)});var Xl=Object.freeze({__proto__:null,identity:$l});const Zl=We({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var ed=Object.freeze({__proto__:null,base2:Zl});const td=We({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var rd=Object.freeze({__proto__:null,base8:td});const nd=Kr({prefix:"9",name:"base10",alphabet:"0123456789"});var id=Object.freeze({__proto__:null,base10:nd});const fd=We({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),ad=We({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var od=Object.freeze({__proto__:null,base16:fd,base16upper:ad});const sd=We({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),ud=We({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),hd=We({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),cd=We({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),ld=We({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),dd=We({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),vd=We({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),pd=We({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),gd=We({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var bd=Object.freeze({__proto__:null,base32:sd,base32upper:ud,base32pad:hd,base32padupper:cd,base32hex:ld,base32hexupper:dd,base32hexpad:vd,base32hexpadupper:pd,base32z:gd});const md=Kr({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),wd=Kr({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Ad=Object.freeze({__proto__:null,base36:md,base36upper:wd});const yd=Kr({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Ed=Kr({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var _d=Object.freeze({__proto__:null,base58btc:yd,base58flickr:Ed});const Dd=We({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Sd=We({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Md=We({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),xd=We({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var Nd=Object.freeze({__proto__:null,base64:Dd,base64pad:Sd,base64url:Md,base64urlpad:xd});const No=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),Cd=No.reduce((e,t,r)=>(e[r]=t,e),[]),Od=No.reduce((e,t,r)=>(e[t.codePointAt(0)]=r,e),[]);function Id(e){return e.reduce((t,r)=>(t+=Cd[r],t),"")}function Bd(e){const t=[];for(const r of e){const n=Od[r.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${r}`);t.push(n)}return new Uint8Array(t)}const Rd=yn({prefix:"\u{1F680}",name:"base256emoji",encode:Id,decode:Bd});var Fd=Object.freeze({__proto__:null,base256emoji:Rd}),Ud=Oo,Co=128,Td=127,Pd=~Td,Ld=Math.pow(2,31);function Oo(e,t,r){t=t||[],r=r||0;for(var n=r;e>=Ld;)t[r++]=e&255|Co,e/=128;for(;e&Pd;)t[r++]=e&255|Co,e>>>=7;return t[r]=e|0,Oo.bytes=r-n+1,t}var Hd=Ni,kd=128,Io=127;function Ni(e,n){var r=0,n=n||0,i=0,f=n,h,c=e.length;do{if(f>=c)throw Ni.bytes=0,new RangeError("Could not decode varint");h=e[f++],r+=i<28?(h&Io)<=kd);return Ni.bytes=f-n,r}var jd=Math.pow(2,7),qd=Math.pow(2,14),Kd=Math.pow(2,21),zd=Math.pow(2,28),Vd=Math.pow(2,35),Yd=Math.pow(2,42),Gd=Math.pow(2,49),Wd=Math.pow(2,56),Qd=Math.pow(2,63),Jd=function(e){return e(Bo.encode(e,t,r),t),Fo=e=>Bo.encodingLength(e),Ci=(e,t)=>{const r=t.byteLength,n=Fo(e),i=n+Fo(r),f=new Uint8Array(i+r);return Ro(e,f,0),Ro(r,f,n),f.set(t,i),new Xd(e,r,t,f)};class Xd{constructor(t,r,n,i){this.code=t,this.size=r,this.digest=n,this.bytes=i}}const Uo=({name:e,code:t,encode:r})=>new Zd(e,t,r);class Zd{constructor(t,r,n){this.name=t,this.code=r,this.encode=n}digest(t){if(t instanceof Uint8Array){const r=this.encode(t);return r instanceof Uint8Array?Ci(this.code,r):r.then(n=>Ci(this.code,n))}else throw Error("Unknown type, must be binary type")}}const To=e=>async t=>new Uint8Array(await crypto.subtle.digest(e,t)),e1=Uo({name:"sha2-256",code:18,encode:To("SHA-256")}),t1=Uo({name:"sha2-512",code:19,encode:To("SHA-512")});var r1=Object.freeze({__proto__:null,sha256:e1,sha512:t1});const Po=0,n1="identity",Lo=Mo;var i1=Object.freeze({__proto__:null,identity:{code:Po,name:n1,encode:Lo,digest:e=>Ci(Po,Lo(e))}});new TextEncoder,new TextDecoder;const Ho={...Xl,...ed,...rd,...id,...od,...bd,...Ad,..._d,...Nd,...Fd};({...r1,...i1});function ko(e,t,r,n){return{name:e,prefix:t,encoder:{name:e,prefix:t,encode:r},decoder:{decode:n}}}const jo=ko("utf8","u",e=>"u"+new TextDecoder("utf8").decode(e),e=>new TextEncoder().encode(e.substring(1))),Oi=ko("ascii","a",e=>{let t="a";for(let r=0;r{e=e.substring(1);const t=Do(e.length);for(let r=0;r"u")throw new Error("Missing sender public key for type 1 envelope");const r=typeof e.senderPublicKey<"u"?gt(e.senderPublicKey,et):void 0,n=typeof e.iv<"u"?gt(e.iv,et):gn.randomBytes(Ri),i=new Ai.ChaCha20Poly1305(gt(e.symKey,et)).seal(n,gt(e.message,_n));return Vo({type:t,sealed:i,iv:n,senderPublicKey:r})}function l1(e){const t=new Ai.ChaCha20Poly1305(gt(e.symKey,et)),{sealed:r,iv:n}=Ui(e.encoded),i=t.open(n,r);if(i===null)throw new Error("Failed to decrypt");return bt(i,_n)}function Vo(e){if(zr(e.type)===Nr){if(typeof e.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");return bt(So([e.type,e.senderPublicKey,e.iv,e.sealed]),En)}return bt(So([e.type,e.iv,e.sealed]),En)}function Ui(e){const t=gt(e,En),r=t.slice(f1,Ko),n=Ko;if(zr(r)===Nr){const c=n+Fi,d=c+Ri,v=t.slice(n,c),g=t.slice(c,d),m=t.slice(d);return{type:r,sealed:m,iv:g,senderPublicKey:v}}const i=n+Ri,f=t.slice(n,i),h=t.slice(i);return{type:r,sealed:h,iv:f}}function d1(e,t){const r=Ui(e);return Yo({type:zr(r.type),senderPublicKey:typeof r.senderPublicKey<"u"?bt(r.senderPublicKey,et):void 0,receiverPublicKey:t?.receiverPublicKey})}function Yo(e){const t=e?.type||Bi;if(t===Nr){if(typeof e?.senderPublicKey>"u")throw new Error("missing sender public key");if(typeof e?.receiverPublicKey>"u")throw new Error("missing receiver public key")}return{type:t,senderPublicKey:e?.senderPublicKey,receiverPublicKey:e?.receiverPublicKey}}function v1(e){return e.type===Nr&&typeof e.senderPublicKey=="string"&&typeof e.receiverPublicKey=="string"}const p1={waku:{publish:"waku_publish",batchPublish:"waku_batchPublish",subscribe:"waku_subscribe",batchSubscribe:"waku_batchSubscribe",subscription:"waku_subscription",unsubscribe:"waku_unsubscribe",batchUnsubscribe:"waku_batchUnsubscribe",batchFetchMessages:"waku_batchFetchMessages"},irn:{publish:"irn_publish",batchPublish:"irn_batchPublish",subscribe:"irn_subscribe",batchSubscribe:"irn_batchSubscribe",subscription:"irn_subscription",unsubscribe:"irn_unsubscribe",batchUnsubscribe:"irn_batchUnsubscribe",batchFetchMessages:"irn_batchFetchMessages"},iridium:{publish:"iridium_publish",batchPublish:"iridium_batchPublish",subscribe:"iridium_subscribe",batchSubscribe:"iridium_batchSubscribe",subscription:"iridium_subscription",unsubscribe:"iridium_unsubscribe",batchUnsubscribe:"iridium_batchUnsubscribe",batchFetchMessages:"iridium_batchFetchMessages"}},Go="irn";function g1(e){return e?.relay||{protocol:Go}}function b1(e){const t=p1[e];if(typeof t>"u")throw new Error(`Relay Protocol not supported: ${e}`);return t}var m1=Object.defineProperty,w1=Object.defineProperties,A1=Object.getOwnPropertyDescriptors,Wo=Object.getOwnPropertySymbols,y1=Object.prototype.hasOwnProperty,E1=Object.prototype.propertyIsEnumerable,Qo=(e,t,r)=>t in e?m1(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Jo=(e,t)=>{for(var r in t||(t={}))y1.call(t,r)&&Qo(e,r,t[r]);if(Wo)for(var r of Wo(t))E1.call(t,r)&&Qo(e,r,t[r]);return e},_1=(e,t)=>w1(e,A1(t));function $o(e,t="-"){const r={},n="relay"+t;return Object.keys(e).forEach(i=>{if(i.startsWith(n)){const f=i.replace(n,""),h=e[i];r[f]=h}}),r}function D1(e){e=e.includes("wc://")?e.replace("wc://",""):e,e=e.includes("wc:")?e.replace("wc:",""):e;const t=e.indexOf(":"),r=e.indexOf("?")!==-1?e.indexOf("?"):void 0,n=e.substring(0,t),i=e.substring(t+1,r).split("@"),f=typeof r<"u"?e.substring(r):"",h=Br.parse(f),c=typeof h.methods=="string"?h.methods.split(","):void 0;return{protocol:n,topic:Xo(i[0]),version:parseInt(i[1],10),symKey:h.symKey,relay:$o(h),methods:c,expiryTimestamp:h.expiryTimestamp?parseInt(h.expiryTimestamp,10):void 0}}function Xo(e){return e.startsWith("//")?e.substring(2):e}function Zo(e,t="-"){const r="relay",n={};return Object.keys(e).forEach(i=>{const f=r+t+i;e[i]&&(n[f]=e[i])}),n}function S1(e){return`${e.protocol}:${e.topic}@${e.version}?`+Br.stringify(Jo(_1(Jo({symKey:e.symKey},Zo(e.relay)),{expiryTimestamp:e.expiryTimestamp}),e.methods?{methods:e.methods.join(",")}:{}))}var M1=Object.defineProperty,x1=Object.defineProperties,N1=Object.getOwnPropertyDescriptors,es=Object.getOwnPropertySymbols,C1=Object.prototype.hasOwnProperty,O1=Object.prototype.propertyIsEnumerable,ts=(e,t,r)=>t in e?M1(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,I1=(e,t)=>{for(var r in t||(t={}))C1.call(t,r)&&ts(e,r,t[r]);if(es)for(var r of es(t))O1.call(t,r)&&ts(e,r,t[r]);return e},B1=(e,t)=>x1(e,N1(t));function nr(e){const t=[];return e.forEach(r=>{const[n,i]=r.split(":");t.push(`${n}:${i}`)}),t}function rs(e){const t=[];return Object.values(e).forEach(r=>{t.push(...nr(r.accounts))}),t}function ns(e,t){const r=[];return Object.values(e).forEach(n=>{nr(n.accounts).includes(t)&&r.push(...n.methods)}),r}function is(e,t){const r=[];return Object.values(e).forEach(n=>{nr(n.accounts).includes(t)&&r.push(...n.events)}),r}function R1(e,t){const r=ps(e,t);if(r)throw new Error(r.message);const n={};for(const[i,f]of Object.entries(e))n[i]={methods:f.methods,events:f.events,chains:f.accounts.map(h=>`${h.split(":")[0]}:${h.split(":")[1]}`)};return n}function F1(e){const{proposal:{requiredNamespaces:t,optionalNamespaces:r={}},supportedNamespaces:n}=e,i=Pi(t),f=Pi(r),h={};Object.keys(n).forEach(v=>{const g=n[v].chains,m=n[v].methods,D=n[v].events,S=n[v].accounts;g.forEach(O=>{if(!S.some(T=>T.includes(O)))throw new Error(`No accounts provided for chain ${O} in namespace ${v}`)}),h[v]={chains:g,methods:m,events:D,accounts:S}});const c=bs(t,h,"approve()");if(c)throw new Error(c.message);const d={};return!Object.keys(t).length&&!Object.keys(r).length?h:(Object.keys(i).forEach(v=>{const g=n[v].chains.filter(O=>{var T,P;return(P=(T=i[v])==null?void 0:T.chains)==null?void 0:P.includes(O)}),m=n[v].methods.filter(O=>{var T,P;return(P=(T=i[v])==null?void 0:T.methods)==null?void 0:P.includes(O)}),D=n[v].events.filter(O=>{var T,P;return(P=(T=i[v])==null?void 0:T.events)==null?void 0:P.includes(O)}),S=g.map(O=>n[v].accounts.filter(T=>T.includes(`${O}:`))).flat();d[v]={chains:g,methods:m,events:D,accounts:S}}),Object.keys(f).forEach(v=>{var g,m,D,S,O,T;if(!n[v])return;const P=(m=(g=f[v])==null?void 0:g.chains)==null?void 0:m.filter(M=>n[v].chains.includes(M)),j=n[v].methods.filter(M=>{var x,N;return(N=(x=f[v])==null?void 0:x.methods)==null?void 0:N.includes(M)}),B=n[v].events.filter(M=>{var x,N;return(N=(x=f[v])==null?void 0:x.events)==null?void 0:N.includes(M)}),U=P?.map(M=>n[v].accounts.filter(x=>x.includes(`${M}:`))).flat();d[v]={chains:It((D=d[v])==null?void 0:D.chains,P),methods:It((S=d[v])==null?void 0:S.methods,j),events:It((O=d[v])==null?void 0:O.events,B),accounts:It((T=d[v])==null?void 0:T.accounts,U)}}),d)}function Ti(e){return e.includes(":")}function fs(e){return Ti(e)?e.split(":")[0]:e}function Pi(e){var t,r,n;const i={};if(!Dn(e))return i;for(const[f,h]of Object.entries(e)){const c=Ti(f)?[f]:h.chains,d=h.methods||[],v=h.events||[],g=fs(f);i[g]=B1(I1({},i[g]),{chains:It(c,(t=i[g])==null?void 0:t.chains),methods:It(d,(r=i[g])==null?void 0:r.methods),events:It(v,(n=i[g])==null?void 0:n.events)})}return i}function as(e){const t={};return e?.forEach(r=>{const[n,i]=r.split(":");t[n]||(t[n]={accounts:[],chains:[],events:[]}),t[n].accounts.push(r),t[n].chains.push(`${n}:${i}`)}),t}function U1(e,t){t=t.map(n=>n.replace("did:pkh:",""));const r=as(t);for(const[n,i]of Object.entries(r))i.methods?i.methods=It(i.methods,e):i.methods=e,i.events=["chainChanged","accountsChanged"];return r}const os={INVALID_METHOD:{message:"Invalid method.",code:1001},INVALID_EVENT:{message:"Invalid event.",code:1002},INVALID_UPDATE_REQUEST:{message:"Invalid update request.",code:1003},INVALID_EXTEND_REQUEST:{message:"Invalid extend request.",code:1004},INVALID_SESSION_SETTLE_REQUEST:{message:"Invalid session settle request.",code:1005},UNAUTHORIZED_METHOD:{message:"Unauthorized method.",code:3001},UNAUTHORIZED_EVENT:{message:"Unauthorized event.",code:3002},UNAUTHORIZED_UPDATE_REQUEST:{message:"Unauthorized update request.",code:3003},UNAUTHORIZED_EXTEND_REQUEST:{message:"Unauthorized extend request.",code:3004},USER_REJECTED:{message:"User rejected.",code:5e3},USER_REJECTED_CHAINS:{message:"User rejected chains.",code:5001},USER_REJECTED_METHODS:{message:"User rejected methods.",code:5002},USER_REJECTED_EVENTS:{message:"User rejected events.",code:5003},UNSUPPORTED_CHAINS:{message:"Unsupported chains.",code:5100},UNSUPPORTED_METHODS:{message:"Unsupported methods.",code:5101},UNSUPPORTED_EVENTS:{message:"Unsupported events.",code:5102},UNSUPPORTED_ACCOUNTS:{message:"Unsupported accounts.",code:5103},UNSUPPORTED_NAMESPACE_KEY:{message:"Unsupported namespace key.",code:5104},USER_DISCONNECTED:{message:"User disconnected.",code:6e3},SESSION_SETTLEMENT_FAILED:{message:"Session settlement failed.",code:7e3},WC_METHOD_UNSUPPORTED:{message:"Unsupported wc_ method.",code:10001}},ss={NOT_INITIALIZED:{message:"Not initialized.",code:1},NO_MATCHING_KEY:{message:"No matching key.",code:2},RESTORE_WILL_OVERRIDE:{message:"Restore will override.",code:3},RESUBSCRIBED:{message:"Resubscribed.",code:4},MISSING_OR_INVALID:{message:"Missing or invalid.",code:5},EXPIRED:{message:"Expired.",code:6},UNKNOWN_TYPE:{message:"Unknown type.",code:7},MISMATCHED_TOPIC:{message:"Mismatched topic.",code:8},NON_CONFORMING_NAMESPACES:{message:"Non conforming namespaces.",code:9}};function Tt(e,t){const{message:r,code:n}=ss[e];return{message:t?`${r} ${t}`:r,code:n}}function ir(e,t){const{message:r,code:n}=os[e];return{message:t?`${r} ${t}`:r,code:n}}function Vr(e,t){return Array.isArray(e)?typeof t<"u"&&e.length?e.every(t):!0:!1}function Dn(e){return Object.getPrototypeOf(e)===Object.prototype&&Object.keys(e).length}function zt(e){return typeof e>"u"}function ft(e,t){return t&&zt(e)?!0:typeof e=="string"&&!!e.trim().length}function Sn(e,t){return t&&zt(e)?!0:typeof e=="number"&&!isNaN(e)}function T1(e,t){const{requiredNamespaces:r}=t,n=Object.keys(e.namespaces),i=Object.keys(r);let f=!0;return Lt(i,n)?(n.forEach(h=>{const{accounts:c,methods:d,events:v}=e.namespaces[h],g=nr(c),m=r[h];(!Lt(Gr(h,m),g)||!Lt(m.methods,d)||!Lt(m.events,v))&&(f=!1)}),f):!1}function Yr(e){return ft(e,!1)&&e.includes(":")?e.split(":").length===2:!1}function us(e){if(ft(e,!1)&&e.includes(":")){const t=e.split(":");if(t.length===3){const r=t[0]+":"+t[1];return!!t[2]&&Yr(r)}}return!1}function P1(e){if(ft(e,!1))try{return typeof new URL(e)<"u"}catch{return!1}return!1}function L1(e){var t;return(t=e?.proposer)==null?void 0:t.publicKey}function H1(e){return e?.topic}function k1(e,t){let r=null;return ft(e?.publicKey,!1)||(r=Tt("MISSING_OR_INVALID",`${t} controller public key should be a string`)),r}function Li(e){let t=!0;return Vr(e)?e.length&&(t=e.every(r=>ft(r,!1))):t=!1,t}function hs(e,t,r){let n=null;return Vr(t)&&t.length?t.forEach(i=>{n||Yr(i)||(n=ir("UNSUPPORTED_CHAINS",`${r}, chain ${i} should be a string and conform to "namespace:chainId" format`))}):Yr(e)||(n=ir("UNSUPPORTED_CHAINS",`${r}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)),n}function cs(e,t,r){let n=null;return Object.entries(e).forEach(([i,f])=>{if(n)return;const h=hs(i,Gr(i,f),`${t} ${r}`);h&&(n=h)}),n}function ls(e,t){let r=null;return Vr(e)?e.forEach(n=>{r||us(n)||(r=ir("UNSUPPORTED_ACCOUNTS",`${t}, account ${n} should be a string and conform to "namespace:chainId:address" format`))}):r=ir("UNSUPPORTED_ACCOUNTS",`${t}, accounts should be an array of strings conforming to "namespace:chainId:address" format`),r}function ds(e,t){let r=null;return Object.values(e).forEach(n=>{if(r)return;const i=ls(n?.accounts,`${t} namespace`);i&&(r=i)}),r}function vs(e,t){let r=null;return Li(e?.methods)?Li(e?.events)||(r=ir("UNSUPPORTED_EVENTS",`${t}, events should be an array of strings or empty array for no events`)):r=ir("UNSUPPORTED_METHODS",`${t}, methods should be an array of strings or empty array for no methods`),r}function Hi(e,t){let r=null;return Object.values(e).forEach(n=>{if(r)return;const i=vs(n,`${t}, namespace`);i&&(r=i)}),r}function j1(e,t,r){let n=null;if(e&&Dn(e)){const i=Hi(e,t);i&&(n=i);const f=cs(e,t,r);f&&(n=f)}else n=Tt("MISSING_OR_INVALID",`${t}, ${r} should be an object with data`);return n}function ps(e,t){let r=null;if(e&&Dn(e)){const n=Hi(e,t);n&&(r=n);const i=ds(e,t);i&&(r=i)}else r=Tt("MISSING_OR_INVALID",`${t}, namespaces should be an object with data`);return r}function gs(e){return ft(e.protocol,!0)}function q1(e,t){let r=!1;return t&&!e?r=!0:e&&Vr(e)&&e.length&&e.forEach(n=>{r=gs(n)}),r}function K1(e){return typeof e=="number"}function z1(e){return typeof e<"u"&&typeof e!==null}function V1(e){return!(!e||typeof e!="object"||!e.code||!Sn(e.code,!1)||!e.message||!ft(e.message,!1))}function Y1(e){return!(zt(e)||!ft(e.method,!1))}function G1(e){return!(zt(e)||zt(e.result)&&zt(e.error)||!Sn(e.id,!1)||!ft(e.jsonrpc,!1))}function W1(e){return!(zt(e)||!ft(e.name,!1))}function Q1(e,t){return!(!Yr(t)||!rs(e).includes(t))}function J1(e,t,r){return ft(r,!1)?ns(e,t).includes(r):!1}function $1(e,t,r){return ft(r,!1)?is(e,t).includes(r):!1}function bs(e,t,r){let n=null;const i=X1(e),f=Z1(t),h=Object.keys(i),c=Object.keys(f),d=ms(Object.keys(e)),v=ms(Object.keys(t)),g=d.filter(m=>!v.includes(m));return g.length&&(n=Tt("NON_CONFORMING_NAMESPACES",`${r} namespaces keys don't satisfy requiredNamespaces. + Required: ${g.toString()} +- Received: ${Object.keys(e).toString()}`)),Le(h,c)||(n=Te("NON_CONFORMING_NAMESPACES",`${r} namespaces chains don't satisfy required namespaces. ++ Received: ${Object.keys(t).toString()}`)),Lt(h,c)||(n=Tt("NON_CONFORMING_NAMESPACES",`${r} namespaces chains don't satisfy required namespaces. + Required: ${h.toString()} +- Approved: ${c.toString()}`)),Object.keys(e).forEach(m=>{if(!m.includes(":")||n)return;const D=nr(e[m].accounts);D.includes(m)||(n=Te("NON_CONFORMING_NAMESPACES",`${r} namespaces accounts don't satisfy namespace accounts for ${m} ++ Approved: ${c.toString()}`)),Object.keys(t).forEach(m=>{if(!m.includes(":")||n)return;const D=nr(t[m].accounts);D.includes(m)||(n=Tt("NON_CONFORMING_NAMESPACES",`${r} namespaces accounts don't satisfy namespace accounts for ${m} + Required: ${m} +- Approved: ${D.toString()}`))}),h.forEach(m=>{n||(Le(i[m].methods,f[m].methods)?Le(i[m].events,f[m].events)||(n=Te("NON_CONFORMING_NAMESPACES",`${r} namespaces events don't satisfy namespace events for ${m}`)):n=Te("NON_CONFORMING_NAMESPACES",`${r} namespaces methods don't satisfy namespace methods for ${m}`))}),n}function $1(t){const e={};return Object.keys(t).forEach(r=>{var n;r.includes(":")?e[r]=t[r]:(n=t[r].chains)==null||n.forEach(i=>{e[i]={methods:t[r].methods,events:t[r].events}})}),e}function bs(t){return[...new Set(t.map(e=>e.includes(":")?e.split(":")[0]:e))]}function X1(t){const e={};return Object.keys(t).forEach(r=>{if(r.includes(":"))e[r]=t[r];else{const n=nr(t[r].accounts);n?.forEach(i=>{e[i]={accounts:t[r].accounts.filter(f=>f.includes(`${i}:`)),methods:t[r].methods,events:t[r].events}})}}),e}function Z1(t,e){return Sn(t,!1)&&t<=e.max&&t>=e.min}function tv(){const t=tr();return new Promise(e=>{switch(t){case $t.browser:e(ms());break;case $t.reactNative:e(ws());break;case $t.node:e(As());break;default:e(!0)}})}function ms(){return Rr()&&navigator?.onLine}async function ws(){if(gr()&&typeof global<"u"&&global!=null&&global.NetInfo){const t=await(global==null?void 0:global.NetInfo.fetch());return t?.isConnected}return!0}function As(){return!0}function ev(t){switch(tr()){case $t.browser:ys(t);break;case $t.reactNative:Es(t);break;case $t.node:break}}function ys(t){!gr()&&Rr()&&(window.addEventListener("online",()=>t(!0)),window.addEventListener("offline",()=>t(!1)))}function Es(t){gr()&&typeof global<"u"&&global!=null&&global.NetInfo&&global?.NetInfo.addEventListener(e=>t(e?.isConnected))}const ki={};class rv{static get(e){return ki[e]}static set(e,r){ki[e]=r}static delete(e){delete ki[e]}}B.BASE10=Ii,B.BASE16=te,B.BASE64=En,B.COLON=U0,B.DEFAULT_DEPTH=kn,B.EMPTY_SPACE=Qr,B.ENV_MAP=$t,B.INTERNAL_ERRORS=os,B.MemoryStore=rv,B.ONE_THOUSAND=T0,B.REACT_NATIVE_PRODUCT=Rf,B.RELAYER_DEFAULT_PROTOCOL=Yo,B.SDK_ERRORS=as,B.SDK_TYPE=Uf,B.SLASH=Ff,B.TYPE_0=Bi,B.TYPE_1=Nr,B.UTF8=_n,B.addResourceToRecap=fo,B.appendToQueryString=Tf,B.assertType=q0,B.assignAbilityToActions=bi,B.base64Decode=no,B.base64Encode=ro,B.buildApprovedNamespaces=R1,B.buildAuthObject=zc,B.buildNamespacesFromAuth=F1,B.buildRecapStatement=oo,B.calcExpiry=tu,B.capitalize=W0,B.capitalizeWord=qf,B.createDelayedPromise=Q0,B.createEncodedRecap=Wc,B.createExpiringPromise=J0,B.createRecap=io,B.decodeRecap=qe,B.decodeTypeByte=zr,B.decrypt=c1,B.deriveSymKey=o1,B.deserialize=Ui,B.encodeRecap=cn,B.encodeTypeByte=Ko,B.encrypt=h1,B.engineEvent=ru,B.enumify=G0,B.formatAccountId=nf,B.formatAccountWithChain=_s,B.formatChainId=rf,B.formatExpirerTarget=qn,B.formatIdTarget=X0,B.formatMessage=Xa,B.formatMessageContext=K0,B.formatRelayParams=Xo,B.formatRelayRpcUrl=k0,B.formatStatementFromRecap=wi,B.formatTopicTarget=$0,B.formatUA=Hf,B.formatUri=D1,B.generateKeyPair=f1,B.generateRandomBytes32=a1,B.getAccountsChains=nr,B.getAccountsFromNamespaces=Ss,B.getAddressFromAccount=ff,B.getAddressesFromAccounts=Ds,B.getAppMetadata=L0,B.getBrowserOnlineStatus=ms,B.getBundleId=P0,B.getChainFromAccount=af,B.getChainsFromAccounts=of,B.getChainsFromNamespace=Gr,B.getChainsFromNamespaces=Ms,B.getChainsFromRecap=$c,B.getChainsFromRequiredNamespaces=xs,B.getCommonValuesInArrays=Kn,B.getDecodedRecapFromResources=Za,B.getDeepLink=iu,B.getDidAddress=gi,B.getDidAddressSegments=hn,B.getDidChainId=pi,B.getEnvironment=tr,B.getHttpUrl=j0,B.getInternalError=Te,B.getJavascriptID=Lf,B.getJavascriptOS=Pf,B.getLastItems=jf,B.getMethodsFromRecap=Jc,B.getNamespacedDidChainId=qc,B.getNamespacesChains=es,B.getNamespacesEventsForChainId=ns,B.getNamespacesFromAccounts=fs,B.getNamespacesMethodsForChainId=rs,B.getNodeOnlineStatus=As,B.getReCapActions=eo,B.getReactNativeOnlineStatus=ws,B.getRecapAbilitiesFromResource=Gc,B.getRecapFromResources=ln,B.getRecapResource=to,B.getRelayClientMetadata=H0,B.getRelayProtocolApi=g1,B.getRelayProtocolName=p1,B.getRequiredNamespacesFromNamespaces=B1,B.getSdkError=ir,B.getUniqueValues=xn,B.handleDeeplinkRedirect=nu,B.hasOverlap=Le,B.hashKey=s1,B.hashMessage=u1,B.isBrowser=Rr,B.isCaipNamespace=Ti,B.isConformingNamespaces=gs,B.isExpired=eu,B.isNode=jn,B.isOnline=tv,B.isProposalStruct=P1,B.isReactNative=gr,B.isRecap=mi,B.isSessionCompatible=U1,B.isSessionStruct=L1,B.isTypeOneEnvelope=d1,B.isUndefined=ze,B.isValidAccountId=ss,B.isValidAccounts=cs,B.isValidActions=ds,B.isValidArray=Vr,B.isValidChainId=Yr,B.isValidChains=us,B.isValidController=H1,B.isValidEip1271Signature=Wa,B.isValidEip191Signature=Ga,B.isValidErrorReason=z1,B.isValidEvent=G1,B.isValidId=q1,B.isValidNamespaceAccounts=ls,B.isValidNamespaceActions=Hi,B.isValidNamespaceChains=hs,B.isValidNamespaceMethodsOrEvents=Li,B.isValidNamespaces=vs,B.isValidNamespacesChainId=W1,B.isValidNamespacesEvent=J1,B.isValidNamespacesRequest=Q1,B.isValidNumber=Sn,B.isValidObject=Dn,B.isValidParams=K1,B.isValidRecap=Ne,B.isValidRelay=ps,B.isValidRelays=j1,B.isValidRequest=V1,B.isValidRequestExpiry=Z1,B.isValidRequiredNamespaces=k1,B.isValidResponse=Y1,B.isValidString=fe,B.isValidUrl=T1,B.mapEntries=Y0,B.mapToObj=z0,B.mergeArrays=Ie,B.mergeEncodedRecaps=Qc,B.mergeRecaps=ao,B.normalizeNamespaces=Pi,B.objToMap=V0,B.parseAccountId=Mn,B.parseChainId=ef,B.parseContextNames=kf,B.parseExpirerTarget=Z0,B.parseNamespaceKey=is,B.parseRelayParams=Jo,B.parseTopic=$o,B.parseUri=_1,B.populateAuthPayload=Vc,B.recapHasResource=Yc,B.serialize=zo,B.subscribeToBrowserNetworkChange=ys,B.subscribeToNetworkChange=ev,B.subscribeToReactNativeNetworkChange=Es,B.validateDecoding=l1,B.validateEncoding=Vo,B.validateSignedCacao=Kc,B.verifySignature=Ya,Object.defineProperty(B,"__esModule",{value:!0})}); ++ Approved: ${D.toString()}`))}),h.forEach(m=>{n||(Lt(i[m].methods,f[m].methods)?Lt(i[m].events,f[m].events)||(n=Tt("NON_CONFORMING_NAMESPACES",`${r} namespaces events don't satisfy namespace events for ${m}`)):n=Tt("NON_CONFORMING_NAMESPACES",`${r} namespaces methods don't satisfy namespace methods for ${m}`))}),n}function X1(e){const t={};return Object.keys(e).forEach(r=>{var n;r.includes(":")?t[r]=e[r]:(n=e[r].chains)==null||n.forEach(i=>{t[i]={methods:e[r].methods,events:e[r].events}})}),t}function ms(e){return[...new Set(e.map(t=>t.includes(":")?t.split(":")[0]:t))]}function Z1(e){const t={};return Object.keys(e).forEach(r=>{if(r.includes(":"))t[r]=e[r];else{const n=nr(e[r].accounts);n?.forEach(i=>{t[i]={accounts:e[r].accounts.filter(f=>f.includes(`${i}:`)),methods:e[r].methods,events:e[r].events}})}}),t}function ev(e,t){return Sn(e,!1)&&e<=t.max&&e>=t.min}function tv(){const e=er();return new Promise(t=>{switch(e){case $e.browser:t(ws());break;case $e.reactNative:t(As());break;case $e.node:t(ys());break;default:t(!0)}})}function ws(){return Rr()&&navigator?.onLine}async function As(){if(gr()&&typeof global<"u"&&global!=null&&global.NetInfo){const e=await(global==null?void 0:global.NetInfo.fetch());return e?.isConnected}return!0}function ys(){return!0}function rv(e){switch(er()){case $e.browser:Es(e);break;case $e.reactNative:_s(e);break;case $e.node:break}}function Es(e){!gr()&&Rr()&&(window.addEventListener("online",()=>e(!0)),window.addEventListener("offline",()=>e(!1)))}function _s(e){gr()&&typeof global<"u"&&global!=null&&global.NetInfo&&global?.NetInfo.addEventListener(t=>e(t?.isConnected))}const ki={};class nv{static get(t){return ki[t]}static set(t,r){ki[t]=r}static delete(t){delete ki[t]}}I.BASE10=Ii,I.BASE16=et,I.BASE64=En,I.COLON=T0,I.DEFAULT_DEPTH=kn,I.EMPTY_SPACE=Qr,I.ENV_MAP=$e,I.INTERNAL_ERRORS=ss,I.MemoryStore=nv,I.ONE_THOUSAND=P0,I.REACT_NATIVE_PRODUCT=Rf,I.RELAYER_DEFAULT_PROTOCOL=Go,I.SDK_ERRORS=os,I.SDK_TYPE=Uf,I.SLASH=Ff,I.TYPE_0=Bi,I.TYPE_1=Nr,I.UTF8=_n,I.addResourceToRecap=ao,I.appendToQueryString=Tf,I.assertType=K0,I.assignAbilityToActions=bi,I.base64Decode=io,I.base64Encode=no,I.buildApprovedNamespaces=F1,I.buildAuthObject=Vc,I.buildNamespacesFromAuth=U1,I.buildRecapStatement=so,I.calcExpiry=tu,I.capitalize=Q0,I.capitalizeWord=qf,I.createDelayedPromise=J0,I.createEncodedRecap=Qc,I.createExpiringPromise=$0,I.createRecap=fo,I.decodeRecap=qt,I.decodeTypeByte=zr,I.decrypt=l1,I.deriveSymKey=s1,I.deserialize=Ui,I.encodeRecap=cn,I.encodeTypeByte=zo,I.encrypt=c1,I.engineEvent=nu,I.enumify=W0,I.formatAccountId=nf,I.formatAccountWithChain=Ds,I.formatChainId=rf,I.formatExpirerTarget=qn,I.formatIdTarget=Z0,I.formatMessage=Za,I.formatMessageContext=z0,I.formatRelayParams=Zo,I.formatRelayRpcUrl=j0,I.formatStatementFromRecap=wi,I.formatTopicTarget=X0,I.formatUA=Hf,I.formatUri=S1,I.generateKeyPair=a1,I.generateRandomBytes32=o1,I.getAccountsChains=nr,I.getAccountsFromNamespaces=Ms,I.getAddressFromAccount=ff,I.getAddressesFromAccounts=Ss,I.getAppMetadata=H0,I.getBrowserOnlineStatus=ws,I.getBundleId=L0,I.getChainFromAccount=af,I.getChainsFromAccounts=of,I.getChainsFromNamespace=Gr,I.getChainsFromNamespaces=xs,I.getChainsFromRecap=Xc,I.getChainsFromRequiredNamespaces=Ns,I.getCommonValuesInArrays=Kn,I.getDecodedRecapFromResources=eo,I.getDeepLink=fu,I.getDidAddress=gi,I.getDidAddressSegments=hn,I.getDidChainId=pi,I.getEnvironment=er,I.getHttpUrl=q0,I.getInternalError=Tt,I.getJavascriptID=Lf,I.getJavascriptOS=Pf,I.getLastItems=jf,I.getMethodsFromRecap=$c,I.getNamespacedDidChainId=Kc,I.getNamespacesChains=rs,I.getNamespacesEventsForChainId=is,I.getNamespacesFromAccounts=as,I.getNamespacesMethodsForChainId=ns,I.getNodeOnlineStatus=ys,I.getReCapActions=ro,I.getReactNativeOnlineStatus=As,I.getRecapAbilitiesFromResource=Wc,I.getRecapFromResources=ln,I.getRecapResource=to,I.getRelayClientMetadata=k0,I.getRelayProtocolApi=b1,I.getRelayProtocolName=g1,I.getRequiredNamespacesFromNamespaces=R1,I.getSdkError=ir,I.getUniqueValues=xn,I.handleDeeplinkRedirect=iu,I.hasOverlap=Lt,I.hashKey=u1,I.hashMessage=h1,I.isBrowser=Rr,I.isCaipNamespace=Ti,I.isConformingNamespaces=bs,I.isExpired=ru,I.isNode=jn,I.isOnline=tv,I.isProposalStruct=L1,I.isReactNative=gr,I.isRecap=mi,I.isSessionCompatible=T1,I.isSessionStruct=H1,I.isTelegram=Kf,I.isTypeOneEnvelope=v1,I.isUndefined=zt,I.isValidAccountId=us,I.isValidAccounts=ls,I.isValidActions=vs,I.isValidArray=Vr,I.isValidChainId=Yr,I.isValidChains=hs,I.isValidController=k1,I.isValidEip1271Signature=Qa,I.isValidEip191Signature=Wa,I.isValidErrorReason=V1,I.isValidEvent=W1,I.isValidId=K1,I.isValidNamespaceAccounts=ds,I.isValidNamespaceActions=Hi,I.isValidNamespaceChains=cs,I.isValidNamespaceMethodsOrEvents=Li,I.isValidNamespaces=ps,I.isValidNamespacesChainId=Q1,I.isValidNamespacesEvent=$1,I.isValidNamespacesRequest=J1,I.isValidNumber=Sn,I.isValidObject=Dn,I.isValidParams=z1,I.isValidRecap=Nt,I.isValidRelay=gs,I.isValidRelays=q1,I.isValidRequest=Y1,I.isValidRequestExpiry=ev,I.isValidRequiredNamespaces=j1,I.isValidResponse=G1,I.isValidString=ft,I.isValidUrl=P1,I.mapEntries=G0,I.mapToObj=V0,I.mergeArrays=It,I.mergeEncodedRecaps=Jc,I.mergeRecaps=oo,I.normalizeNamespaces=Pi,I.objToMap=Y0,I.parseAccountId=Mn,I.parseChainId=tf,I.parseContextNames=kf,I.parseExpirerTarget=eu,I.parseNamespaceKey=fs,I.parseRelayParams=$o,I.parseTopic=Xo,I.parseUri=D1,I.populateAuthPayload=Yc,I.recapHasResource=Gc,I.serialize=Vo,I.subscribeToBrowserNetworkChange=Es,I.subscribeToNetworkChange=rv,I.subscribeToReactNativeNetworkChange=_s,I.validateDecoding=d1,I.validateEncoding=Yo,I.validateSignedCacao=zc,I.verifySignature=Ga,Object.defineProperty(I,"__esModule",{value:!0})}); + //# sourceMappingURL=index.umd.js.map +diff --git a/node_modules/@walletconnect/utils/dist/index.umd.js.map b/node_modules/@walletconnect/utils/dist/index.umd.js.map +index 84b0d9d..9b0884a 100644 +--- a/node_modules/@walletconnect/utils/dist/index.umd.js.map ++++ b/node_modules/@walletconnect/utils/dist/index.umd.js.map +@@ -1 +1 @@ +-{"version":3,"file":"index.umd.js","sources":["../src/caip.ts","../../../node_modules/detect-browser/es/index.js","../../../node_modules/@walletconnect/time/node_modules/tslib/tslib.es6.js","../../../node_modules/@walletconnect/time/dist/cjs/utils/delay.js","../../../node_modules/@walletconnect/time/dist/cjs/constants/misc.js","../../../node_modules/@walletconnect/time/dist/cjs/constants/time.js","../../../node_modules/@walletconnect/time/dist/cjs/constants/index.js","../../../node_modules/@walletconnect/time/dist/cjs/utils/convert.js","../../../node_modules/@walletconnect/time/dist/cjs/utils/index.js","../../../node_modules/@walletconnect/time/dist/cjs/watch.js","../../../node_modules/@walletconnect/time/dist/cjs/types/watch.js","../../../node_modules/@walletconnect/time/dist/cjs/types/index.js","../../../node_modules/@walletconnect/time/dist/cjs/index.js","../../../node_modules/@walletconnect/window-getters/dist/cjs/index.js","../../../node_modules/@walletconnect/window-metadata/dist/cjs/index.js","../../../node_modules/strict-uri-encode/index.js","../../../node_modules/decode-uri-component/index.js","../../../node_modules/split-on-first/index.js","../../../node_modules/filter-obj/index.js","../../../node_modules/query-string/index.js","../src/misc.ts","../../../node_modules/js-sha3/src/sha3.js","../../../node_modules/@ethersproject/logger/lib.esm/_version.js","../../../node_modules/@ethersproject/logger/lib.esm/index.js","../../../node_modules/@ethersproject/bytes/lib.esm/_version.js","../../../node_modules/@ethersproject/bytes/lib.esm/index.js","../../../node_modules/@ethersproject/keccak256/lib.esm/index.js","../../../node_modules/bn.js/lib/bn.js","../../../node_modules/@ethersproject/bignumber/lib.esm/_version.js","../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js","../../../node_modules/@ethersproject/bignumber/lib.esm/fixednumber.js","../../../node_modules/@ethersproject/strings/lib.esm/_version.js","../../../node_modules/@ethersproject/strings/lib.esm/utf8.js","../../../node_modules/@ethersproject/strings/lib.esm/idna.js","../../../node_modules/@ethersproject/hash/lib.esm/_version.js","../../../node_modules/@ethersproject/base64/lib.esm/base64.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js","../../../node_modules/@ethersproject/hash/lib.esm/namehash.js","../../../node_modules/@ethersproject/hash/lib.esm/message.js","../../../node_modules/@ethersproject/rlp/lib.esm/_version.js","../../../node_modules/@ethersproject/rlp/lib.esm/index.js","../../../node_modules/@ethersproject/address/lib.esm/_version.js","../../../node_modules/@ethersproject/address/lib.esm/index.js","../../../node_modules/@ethersproject/properties/lib.esm/_version.js","../../../node_modules/@ethersproject/properties/lib.esm/index.js","../../../node_modules/@ethersproject/hash/lib.esm/typed-data.js","../../../node_modules/minimalistic-assert/index.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/hash.js/lib/hash/utils.js","../../../node_modules/hash.js/lib/hash/common.js","../../../node_modules/hash.js/lib/hash/sha/common.js","../../../node_modules/hash.js/lib/hash/sha/1.js","../../../node_modules/hash.js/lib/hash/sha/256.js","../../../node_modules/hash.js/lib/hash/sha/224.js","../../../node_modules/hash.js/lib/hash/sha/512.js","../../../node_modules/hash.js/lib/hash/sha/384.js","../../../node_modules/hash.js/lib/hash/sha.js","../../../node_modules/hash.js/lib/hash/ripemd.js","../../../node_modules/hash.js/lib/hash/hmac.js","../../../node_modules/hash.js/lib/hash.js","../../../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../../../node_modules/@ethersproject/signing-key/lib.esm/_version.js","../../../node_modules/@ethersproject/signing-key/lib.esm/index.js","../../../node_modules/@ethersproject/transactions/lib.esm/_version.js","../../../node_modules/@ethersproject/transactions/lib.esm/index.js","../src/signatures.ts","../src/cacao.ts","../../../node_modules/@stablelib/int/lib/int.js","../../../node_modules/@stablelib/binary/lib/binary.js","../../../node_modules/@stablelib/wipe/lib/wipe.js","../../../node_modules/@stablelib/chacha/lib/chacha.js","../../../node_modules/@stablelib/constant-time/lib/constant-time.js","../../../node_modules/@stablelib/poly1305/lib/poly1305.js","../../../node_modules/@stablelib/chacha20poly1305/lib/chacha20poly1305.js","../../../node_modules/@stablelib/hash/lib/hash.js","../../../node_modules/@stablelib/hmac/lib/hmac.js","../../../node_modules/@stablelib/hkdf/lib/hkdf.js","../../../node_modules/@stablelib/random/lib/source/browser.js","../../../node_modules/@stablelib/random/lib/source/node.js","../../../node_modules/@stablelib/random/lib/source/system.js","../../../node_modules/@stablelib/random/lib/random.js","../../../node_modules/@stablelib/sha256/lib/sha256.js","../../../node_modules/@stablelib/x25519/lib/x25519.js","../node_modules/uint8arrays/esm/src/alloc.js","../node_modules/uint8arrays/esm/src/concat.js","../../../node_modules/multiformats/esm/vendor/base-x.js","../../../node_modules/multiformats/esm/src/bytes.js","../../../node_modules/multiformats/esm/src/bases/base.js","../../../node_modules/multiformats/esm/src/bases/identity.js","../../../node_modules/multiformats/esm/src/bases/base2.js","../../../node_modules/multiformats/esm/src/bases/base8.js","../../../node_modules/multiformats/esm/src/bases/base10.js","../../../node_modules/multiformats/esm/src/bases/base16.js","../../../node_modules/multiformats/esm/src/bases/base32.js","../../../node_modules/multiformats/esm/src/bases/base36.js","../../../node_modules/multiformats/esm/src/bases/base58.js","../../../node_modules/multiformats/esm/src/bases/base64.js","../../../node_modules/multiformats/esm/src/bases/base256emoji.js","../../../node_modules/multiformats/esm/vendor/varint.js","../../../node_modules/multiformats/esm/src/varint.js","../../../node_modules/multiformats/esm/src/hashes/digest.js","../../../node_modules/multiformats/esm/src/hashes/hasher.js","../../../node_modules/multiformats/esm/src/hashes/sha2-browser.js","../../../node_modules/multiformats/esm/src/hashes/identity.js","../../../node_modules/multiformats/esm/src/codecs/json.js","../../../node_modules/multiformats/esm/src/basics.js","../node_modules/uint8arrays/esm/src/util/bases.js","../node_modules/uint8arrays/esm/src/from-string.js","../node_modules/uint8arrays/esm/src/to-string.js","../src/crypto.ts","../../../node_modules/@walletconnect/relay-api/dist/index.es.js","../src/relay.ts","../src/uri.ts","../src/namespaces.ts","../src/errors.ts","../src/validators.ts","../src/network.ts","../src/memoryStore.ts"],"sourcesContent":["import { SessionTypes, ProposalTypes } from \"@walletconnect/types\";\n\ninterface ChainIdParams {\n namespace: string;\n reference: string;\n}\n\ninterface AccountIdParams extends ChainIdParams {\n address: string;\n}\n\nconst CAIP_DELIMITER = \":\";\n\nexport function parseChainId(chain: string): ChainIdParams {\n const [namespace, reference] = chain.split(CAIP_DELIMITER);\n return { namespace, reference };\n}\n\nexport function formatChainId(params: ChainIdParams): string {\n const { namespace, reference } = params;\n return [namespace, reference].join(CAIP_DELIMITER);\n}\n\nexport function parseAccountId(account: string): AccountIdParams {\n const [namespace, reference, address] = account.split(CAIP_DELIMITER);\n return { namespace, reference, address };\n}\n\nexport function formatAccountId(params: AccountIdParams): string {\n const { namespace, reference, address } = params;\n return [namespace, reference, address].join(CAIP_DELIMITER);\n}\n\nexport function getUniqueValues(array: string[], parser: (str: string) => string): string[] {\n const unique: string[] = [];\n array.forEach((str) => {\n const value = parser(str);\n if (!unique.includes(value)) unique.push(value);\n });\n return unique;\n}\n\nexport function getAddressFromAccount(account: string) {\n const { address } = parseAccountId(account);\n return address;\n}\n\nexport function getChainFromAccount(account: string) {\n const { namespace, reference } = parseAccountId(account);\n const chain = formatChainId({ namespace, reference });\n return chain;\n}\n\nexport function formatAccountWithChain(address: string, chain: string) {\n const { namespace, reference } = parseChainId(chain);\n const account = formatAccountId({ namespace, reference, address });\n return account;\n}\n\nexport function getAddressesFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getAddressFromAccount);\n}\n\nexport function getChainsFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getChainFromAccount);\n}\n\nexport function getAccountsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const accounts: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n accounts.push(...ns.accounts);\n });\n return accounts;\n}\n\nexport function getChainsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n chains.push(...getChainsFromAccounts(ns.accounts));\n });\n return chains;\n}\n\nexport function getChainsFromRequiredNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(requiredNamespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = requiredNamespaces[key];\n chains.push(...getChainsFromNamespace(key, ns));\n });\n return chains;\n}\n\nexport function getChainsFromNamespace(\n namespace: string,\n namespaceProps: ProposalTypes.BaseRequiredNamespace,\n) {\n // check if chainId is provided in the key as `eip155:1` or in the namespace as chains[]\n return namespace.includes(\":\") ? [namespace] : namespaceProps.chains || [];\n}\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/],\n ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/],\n ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FB[AS]V\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['curl', /^curl\\/([0-9\\.]+)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.delay = void 0;\nfunction delay(timeout) {\n return new Promise(resolve => {\n setTimeout(() => {\n resolve(true);\n }, timeout);\n });\n}\nexports.delay = delay;\n//# sourceMappingURL=delay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ONE_THOUSAND = exports.ONE_HUNDRED = void 0;\nexports.ONE_HUNDRED = 100;\nexports.ONE_THOUSAND = 1000;\n//# sourceMappingURL=misc.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ONE_YEAR = exports.FOUR_WEEKS = exports.THREE_WEEKS = exports.TWO_WEEKS = exports.ONE_WEEK = exports.THIRTY_DAYS = exports.SEVEN_DAYS = exports.FIVE_DAYS = exports.THREE_DAYS = exports.ONE_DAY = exports.TWENTY_FOUR_HOURS = exports.TWELVE_HOURS = exports.SIX_HOURS = exports.THREE_HOURS = exports.ONE_HOUR = exports.SIXTY_MINUTES = exports.THIRTY_MINUTES = exports.TEN_MINUTES = exports.FIVE_MINUTES = exports.ONE_MINUTE = exports.SIXTY_SECONDS = exports.THIRTY_SECONDS = exports.TEN_SECONDS = exports.FIVE_SECONDS = exports.ONE_SECOND = void 0;\nexports.ONE_SECOND = 1;\nexports.FIVE_SECONDS = 5;\nexports.TEN_SECONDS = 10;\nexports.THIRTY_SECONDS = 30;\nexports.SIXTY_SECONDS = 60;\nexports.ONE_MINUTE = exports.SIXTY_SECONDS;\nexports.FIVE_MINUTES = exports.ONE_MINUTE * 5;\nexports.TEN_MINUTES = exports.ONE_MINUTE * 10;\nexports.THIRTY_MINUTES = exports.ONE_MINUTE * 30;\nexports.SIXTY_MINUTES = exports.ONE_MINUTE * 60;\nexports.ONE_HOUR = exports.SIXTY_MINUTES;\nexports.THREE_HOURS = exports.ONE_HOUR * 3;\nexports.SIX_HOURS = exports.ONE_HOUR * 6;\nexports.TWELVE_HOURS = exports.ONE_HOUR * 12;\nexports.TWENTY_FOUR_HOURS = exports.ONE_HOUR * 24;\nexports.ONE_DAY = exports.TWENTY_FOUR_HOURS;\nexports.THREE_DAYS = exports.ONE_DAY * 3;\nexports.FIVE_DAYS = exports.ONE_DAY * 5;\nexports.SEVEN_DAYS = exports.ONE_DAY * 7;\nexports.THIRTY_DAYS = exports.ONE_DAY * 30;\nexports.ONE_WEEK = exports.SEVEN_DAYS;\nexports.TWO_WEEKS = exports.ONE_WEEK * 2;\nexports.THREE_WEEKS = exports.ONE_WEEK * 3;\nexports.FOUR_WEEKS = exports.ONE_WEEK * 4;\nexports.ONE_YEAR = exports.ONE_DAY * 365;\n//# sourceMappingURL=time.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./misc\"), exports);\ntslib_1.__exportStar(require(\"./time\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromMiliseconds = exports.toMiliseconds = void 0;\nconst constants_1 = require(\"../constants\");\nfunction toMiliseconds(seconds) {\n return seconds * constants_1.ONE_THOUSAND;\n}\nexports.toMiliseconds = toMiliseconds;\nfunction fromMiliseconds(miliseconds) {\n return Math.floor(miliseconds / constants_1.ONE_THOUSAND);\n}\nexports.fromMiliseconds = fromMiliseconds;\n//# sourceMappingURL=convert.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./delay\"), exports);\ntslib_1.__exportStar(require(\"./convert\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Watch = void 0;\nclass Watch {\n constructor() {\n this.timestamps = new Map();\n }\n start(label) {\n if (this.timestamps.has(label)) {\n throw new Error(`Watch already started for label: ${label}`);\n }\n this.timestamps.set(label, { started: Date.now() });\n }\n stop(label) {\n const timestamp = this.get(label);\n if (typeof timestamp.elapsed !== \"undefined\") {\n throw new Error(`Watch already stopped for label: ${label}`);\n }\n const elapsed = Date.now() - timestamp.started;\n this.timestamps.set(label, { started: timestamp.started, elapsed });\n }\n get(label) {\n const timestamp = this.timestamps.get(label);\n if (typeof timestamp === \"undefined\") {\n throw new Error(`No timestamp found for label: ${label}`);\n }\n return timestamp;\n }\n elapsed(label) {\n const timestamp = this.get(label);\n const elapsed = timestamp.elapsed || Date.now() - timestamp.started;\n return elapsed;\n }\n}\nexports.Watch = Watch;\nexports.default = Watch;\n//# sourceMappingURL=watch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IWatch = void 0;\nclass IWatch {\n}\nexports.IWatch = IWatch;\n//# sourceMappingURL=watch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./watch\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./utils\"), exports);\ntslib_1.__exportStar(require(\"./watch\"), exports);\ntslib_1.__exportStar(require(\"./types\"), exports);\ntslib_1.__exportStar(require(\"./constants\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getLocalStorage = exports.getLocalStorageOrThrow = exports.getCrypto = exports.getCryptoOrThrow = exports.getLocation = exports.getLocationOrThrow = exports.getNavigator = exports.getNavigatorOrThrow = exports.getDocument = exports.getDocumentOrThrow = exports.getFromWindowOrThrow = exports.getFromWindow = void 0;\nfunction getFromWindow(name) {\n let res = undefined;\n if (typeof window !== \"undefined\" && typeof window[name] !== \"undefined\") {\n res = window[name];\n }\n return res;\n}\nexports.getFromWindow = getFromWindow;\nfunction getFromWindowOrThrow(name) {\n const res = getFromWindow(name);\n if (!res) {\n throw new Error(`${name} is not defined in Window`);\n }\n return res;\n}\nexports.getFromWindowOrThrow = getFromWindowOrThrow;\nfunction getDocumentOrThrow() {\n return getFromWindowOrThrow(\"document\");\n}\nexports.getDocumentOrThrow = getDocumentOrThrow;\nfunction getDocument() {\n return getFromWindow(\"document\");\n}\nexports.getDocument = getDocument;\nfunction getNavigatorOrThrow() {\n return getFromWindowOrThrow(\"navigator\");\n}\nexports.getNavigatorOrThrow = getNavigatorOrThrow;\nfunction getNavigator() {\n return getFromWindow(\"navigator\");\n}\nexports.getNavigator = getNavigator;\nfunction getLocationOrThrow() {\n return getFromWindowOrThrow(\"location\");\n}\nexports.getLocationOrThrow = getLocationOrThrow;\nfunction getLocation() {\n return getFromWindow(\"location\");\n}\nexports.getLocation = getLocation;\nfunction getCryptoOrThrow() {\n return getFromWindowOrThrow(\"crypto\");\n}\nexports.getCryptoOrThrow = getCryptoOrThrow;\nfunction getCrypto() {\n return getFromWindow(\"crypto\");\n}\nexports.getCrypto = getCrypto;\nfunction getLocalStorageOrThrow() {\n return getFromWindowOrThrow(\"localStorage\");\n}\nexports.getLocalStorageOrThrow = getLocalStorageOrThrow;\nfunction getLocalStorage() {\n return getFromWindow(\"localStorage\");\n}\nexports.getLocalStorage = getLocalStorage;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getWindowMetadata = void 0;\nconst window_getters_1 = require(\"@walletconnect/window-getters\");\nfunction getWindowMetadata() {\n let doc;\n let loc;\n try {\n doc = window_getters_1.getDocumentOrThrow();\n loc = window_getters_1.getLocationOrThrow();\n }\n catch (e) {\n return null;\n }\n function getIcons() {\n const links = doc.getElementsByTagName(\"link\");\n const icons = [];\n for (let i = 0; i < links.length; i++) {\n const link = links[i];\n const rel = link.getAttribute(\"rel\");\n if (rel) {\n if (rel.toLowerCase().indexOf(\"icon\") > -1) {\n const href = link.getAttribute(\"href\");\n if (href) {\n if (href.toLowerCase().indexOf(\"https:\") === -1 &&\n href.toLowerCase().indexOf(\"http:\") === -1 &&\n href.indexOf(\"//\") !== 0) {\n let absoluteHref = loc.protocol + \"//\" + loc.host;\n if (href.indexOf(\"/\") === 0) {\n absoluteHref += href;\n }\n else {\n const path = loc.pathname.split(\"/\");\n path.pop();\n const finalPath = path.join(\"/\");\n absoluteHref += finalPath + \"/\" + href;\n }\n icons.push(absoluteHref);\n }\n else if (href.indexOf(\"//\") === 0) {\n const absoluteUrl = loc.protocol + href;\n icons.push(absoluteUrl);\n }\n else {\n icons.push(href);\n }\n }\n }\n }\n }\n return icons;\n }\n function getWindowMetadataOfAny(...args) {\n const metaTags = doc.getElementsByTagName(\"meta\");\n for (let i = 0; i < metaTags.length; i++) {\n const tag = metaTags[i];\n const attributes = [\"itemprop\", \"property\", \"name\"]\n .map((target) => tag.getAttribute(target))\n .filter((attr) => {\n if (attr) {\n return args.includes(attr);\n }\n return false;\n });\n if (attributes.length && attributes) {\n const content = tag.getAttribute(\"content\");\n if (content) {\n return content;\n }\n }\n }\n return \"\";\n }\n function getName() {\n let name = getWindowMetadataOfAny(\"name\", \"og:site_name\", \"og:title\", \"twitter:title\");\n if (!name) {\n name = doc.title;\n }\n return name;\n }\n function getDescription() {\n const description = getWindowMetadataOfAny(\"description\", \"og:description\", \"twitter:description\", \"keywords\");\n return description;\n }\n const name = getName();\n const description = getDescription();\n const url = loc.origin;\n const icons = getIcons();\n const meta = {\n description,\n url,\n icons,\n name,\n };\n return meta;\n}\nexports.getWindowMetadata = getWindowMetadata;\n//# sourceMappingURL=index.js.map","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","import { detect } from \"detect-browser\";\nimport { FIVE_MINUTES, fromMiliseconds, toMiliseconds } from \"@walletconnect/time\";\nimport {\n SignClientTypes,\n RelayerClientMetadata,\n EngineTypes,\n RelayerTypes,\n} from \"@walletconnect/types\";\nimport { getDocument, getLocation, getNavigator } from \"@walletconnect/window-getters\";\nimport { getWindowMetadata } from \"@walletconnect/window-metadata\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-utils\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport * as qs from \"query-string\";\n\n// -- constants -----------------------------------------//\nexport const REACT_NATIVE_PRODUCT = \"ReactNative\";\n\nexport const ENV_MAP = {\n reactNative: \"react-native\",\n node: \"node\",\n browser: \"browser\",\n unknown: \"unknown\",\n};\n\nexport const EMPTY_SPACE = \" \";\n\nexport const COLON = \":\";\n\nexport const SLASH = \"/\";\n\nexport const DEFAULT_DEPTH = 2;\n\nexport const ONE_THOUSAND = 1000;\n\nexport const SDK_TYPE = \"js\";\n\n// -- env -----------------------------------------------//\n\nexport function isNode(): boolean {\n return (\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\"\n );\n}\n\nexport function isReactNative(): boolean {\n return !getDocument() && !!getNavigator() && navigator.product === REACT_NATIVE_PRODUCT;\n}\n\nexport function isBrowser(): boolean {\n return !isNode() && !!getNavigator() && !!getDocument();\n}\n\nexport function getEnvironment(): string {\n if (isReactNative()) return ENV_MAP.reactNative;\n if (isNode()) return ENV_MAP.node;\n if (isBrowser()) return ENV_MAP.browser;\n return ENV_MAP.unknown;\n}\n\nexport function getBundleId(): string | undefined {\n try {\n if (\n isReactNative() &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Application !== \"undefined\"\n ) {\n return (global as any).Application?.applicationId;\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\n// -- query -----------------------------------------------//\n\nexport function appendToQueryString(queryString: string, newQueryParams: any): string {\n let queryParams = qs.parse(queryString);\n\n queryParams = { ...queryParams, ...newQueryParams };\n\n queryString = qs.stringify(queryParams);\n\n return queryString;\n}\n\n// -- metadata ----------------------------------------------//\n\nexport function getAppMetadata(): SignClientTypes.Metadata {\n return (\n getWindowMetadata() || {\n name: \"\",\n description: \"\",\n url: \"\",\n icons: [\"\"],\n }\n );\n}\n\nexport function getRelayClientMetadata(protocol: string, version: number): RelayerClientMetadata {\n const env = getEnvironment();\n\n const metadata: RelayerClientMetadata = { protocol, version, env };\n if (env === \"browser\") {\n metadata.host = getLocation()?.host || \"unknown\";\n }\n return metadata;\n}\n\n// -- rpcUrl ----------------------------------------------//\n\nexport function getJavascriptOS() {\n const env = getEnvironment();\n // global.Platform is set by react-native-compat\n if (\n env === ENV_MAP.reactNative &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Platform !== \"undefined\"\n ) {\n const { OS, Version } = (global as any).Platform;\n return [OS, Version].join(\"-\");\n }\n\n const info = detect();\n if (info === null) return \"unknown\";\n const os = info.os ? info.os.replace(\" \", \"\").toLowerCase() : \"unknown\";\n if (info.type === \"browser\") {\n return [os, info.name, info.version].join(\"-\");\n }\n return [os, info.version].join(\"-\");\n}\n\nexport function getJavascriptID() {\n const env = getEnvironment();\n return env === ENV_MAP.browser ? [env, getLocation()?.host || \"unknown\"].join(\":\") : env;\n}\n\nexport function formatUA(protocol: string, version: number, sdkVersion: string) {\n const os = getJavascriptOS();\n const id = getJavascriptID();\n return [[protocol, version].join(\"-\"), [SDK_TYPE, sdkVersion].join(\"-\"), os, id].join(\"/\");\n}\nconsole;\n\nexport function formatRelayRpcUrl({\n protocol,\n version,\n relayUrl,\n sdkVersion,\n auth,\n projectId,\n useOnCloseEvent,\n bundleId,\n}: RelayerTypes.RpcUrlParams) {\n const splitUrl = relayUrl.split(\"?\");\n const ua = formatUA(protocol, version, sdkVersion);\n const params = {\n auth,\n ua,\n projectId,\n useOnCloseEvent: useOnCloseEvent || undefined,\n origin: bundleId || undefined,\n };\n const queryString = appendToQueryString(splitUrl[1] || \"\", params);\n return splitUrl[0] + \"?\" + queryString;\n}\n\nexport function getHttpUrl(url: string) {\n // regex from https://stackoverflow.com/questions/3883871/regexp-to-grab-protocol-from-url\n const matches = url.match(/^[^:]+(?=:\\/\\/)/gi) || [];\n let protocol = matches[0];\n const domain = typeof protocol !== \"undefined\" ? url.split(\"://\")[1] : url;\n protocol = protocol === \"wss\" ? \"https\" : \"http\";\n return [protocol, domain].join(\"://\");\n}\n\n// -- assert ------------------------------------------------- //\n\nexport function assertType(obj: any, key: string, type: string) {\n if (!obj[key] || typeof obj[key] !== type) {\n throw new Error(`Missing or invalid \"${key}\" param`);\n }\n}\n\n// -- context ------------------------------------------------- //\n\nexport function parseContextNames(context: string, depth = DEFAULT_DEPTH) {\n return getLastItems(context.split(SLASH), depth);\n}\n\nexport function formatMessageContext(context: string): string {\n return parseContextNames(context).join(EMPTY_SPACE);\n}\n\n// -- array ------------------------------------------------- //\n\nexport function hasOverlap(a: any[], b: any[]): boolean {\n const matches = a.filter((x) => b.includes(x));\n return matches.length === a.length;\n}\n\nexport function getLastItems(arr: any[], depth = DEFAULT_DEPTH): any[] {\n return arr.slice(Math.max(arr.length - depth, 0));\n}\n\n// -- map ------------------------------------------------- //\n\nexport function mapToObj(map: Map): Record {\n return Object.fromEntries(map.entries());\n}\n\nexport function objToMap(obj: Record): Map {\n return new Map(Object.entries(obj));\n}\n\nexport function mapEntries(\n obj: Record,\n cb: (x: A) => B,\n): Record {\n const res = {};\n Object.keys(obj).forEach((key) => {\n res[key] = cb(obj[key]);\n });\n return res;\n}\n\n// -- enum ------------------------------------------------- //\n\n// source: https://github.com/microsoft/TypeScript/issues/3192#issuecomment-261720275\nexport const enumify = (x: T): T => x;\n\n// -- string ------------------------------------------------- //\n\nexport function capitalizeWord(word: string) {\n return word.trim().replace(/^\\w/, (c) => c.toUpperCase());\n}\n\nexport function capitalize(str: string) {\n return str\n .split(EMPTY_SPACE)\n .map((w) => capitalizeWord(w))\n .join(EMPTY_SPACE);\n}\n\n// -- promises --------------------------------------------- //\nexport function createDelayedPromise(\n expiry: number = FIVE_MINUTES,\n expireErrorMessage?: string,\n) {\n const timeout = toMiliseconds(expiry || FIVE_MINUTES);\n let cacheResolve: undefined | ((value: T | PromiseLike) => void);\n let cacheReject: undefined | ((value?: ErrorResponse) => void);\n let cacheTimeout: undefined | NodeJS.Timeout;\n\n const done = () =>\n new Promise((promiseResolve, promiseReject) => {\n cacheTimeout = setTimeout(() => {\n promiseReject(new Error(expireErrorMessage));\n }, timeout);\n cacheResolve = promiseResolve;\n cacheReject = promiseReject;\n });\n const resolve = (value?: T) => {\n if (cacheTimeout && cacheResolve) {\n clearTimeout(cacheTimeout);\n cacheResolve(value as T);\n }\n };\n const reject = (value?: ErrorResponse) => {\n if (cacheTimeout && cacheReject) {\n clearTimeout(cacheTimeout);\n cacheReject(value);\n }\n };\n\n return {\n resolve,\n reject,\n done,\n };\n}\n\nexport function createExpiringPromise(\n promise: Promise,\n expiry: number,\n expireErrorMessage?: string,\n) {\n return new Promise(async (resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error(expireErrorMessage)), expiry);\n try {\n const result = await promise;\n resolve(result);\n } catch (error) {\n reject(error);\n }\n clearTimeout(timeout);\n });\n}\n\n// -- expirer --------------------------------------------- //\n\nexport function formatExpirerTarget(type: \"topic\" | \"id\", value: string | number): string {\n if (typeof value === \"string\" && value.startsWith(`${type}:`)) return value;\n if (type.toLowerCase() === \"topic\") {\n if (typeof value !== \"string\")\n throw new Error(`Value must be \"string\" for expirer target type: topic`);\n return `topic:${value}`;\n } else if (type.toLowerCase() === \"id\") {\n if (typeof value !== \"number\")\n throw new Error(`Value must be \"number\" for expirer target type: id`);\n return `id:${value}`;\n }\n throw new Error(`Unknown expirer target type: ${type}`);\n}\n\nexport function formatTopicTarget(topic: string): string {\n return formatExpirerTarget(\"topic\", topic);\n}\n\nexport function formatIdTarget(id: number): string {\n return formatExpirerTarget(\"id\", id);\n}\n\nexport function parseExpirerTarget(target: string) {\n const [type, value] = target.split(\":\");\n const parsed: { id?: number; topic?: string } = { id: undefined, topic: undefined };\n if (type === \"topic\" && typeof value === \"string\") {\n parsed.topic = value;\n } else if (type === \"id\" && Number.isInteger(Number(value))) {\n parsed.id = Number(value);\n } else {\n throw new Error(`Invalid target, expected id:number or topic:string, got ${type}:${value}`);\n }\n\n return parsed;\n}\n\nexport function calcExpiry(ttl: number, now?: number): number {\n return fromMiliseconds((now || Date.now()) + toMiliseconds(ttl));\n}\n\nexport function isExpired(expiry: number) {\n return Date.now() >= toMiliseconds(expiry);\n}\n\n// -- events ---------------------------------------------- //\n\nexport function engineEvent(event: EngineTypes.Event, id?: number | string | undefined) {\n return `${event}${id ? `:${id}` : \"\"}`;\n}\n\nexport function mergeArrays(a: T[] = [], b: T[] = []): T[] {\n return [...new Set([...a, ...b])];\n}\n\nexport async function handleDeeplinkRedirect({\n id,\n topic,\n wcDeepLink,\n}: {\n id: number;\n topic: string;\n wcDeepLink: string;\n}) {\n try {\n if (!wcDeepLink) return;\n\n const json = typeof wcDeepLink === \"string\" ? JSON.parse(wcDeepLink) : wcDeepLink;\n let deeplink = json?.href;\n\n if (typeof deeplink !== \"string\") return;\n\n if (deeplink.endsWith(\"/\")) deeplink = deeplink.slice(0, -1);\n\n const link = `${deeplink}/wc?requestId=${id}&sessionTopic=${topic}`;\n\n const env = getEnvironment();\n\n if (env === ENV_MAP.browser) {\n if (link.startsWith(\"https://\") || link.startsWith(\"http://\")) {\n window.open(link, \"_blank\", \"noreferrer noopener\");\n } else {\n window.open(link, \"_self\", \"noreferrer noopener\");\n }\n } else if (env === ENV_MAP.reactNative) {\n // global.Linking is set by react-native-compat\n if (typeof (global as any)?.Linking !== \"undefined\") {\n await (global as any).Linking.openURL(link);\n }\n }\n } catch (err) {\n // Silent error, just log in console\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport async function getDeepLink(store: IKeyValueStorage, key: string) {\n try {\n const deepLink = await store.getItem(key);\n if (deepLink) return deepLink;\n\n // check localStorage as fallback\n if (!isBrowser()) return;\n return localStorage.getItem(key) as string;\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport function getCommonValuesInArrays(arr1: T[], arr2: T[]): T[] {\n return arr1.filter((value) => arr2.includes(value));\n}\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","export const version = \"logger/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nimport { version } from \"./_version\";\nlet _globalLogger = null;\nfunction _checkNormalize() {\n try {\n const missing = [];\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n }\n ;\n }\n catch (error) {\n missing.push(form);\n }\n });\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\");\n }\n }\n catch (error) {\n return error.message;\n }\n return null;\n}\nconst _normalizeError = _checkNormalize();\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ///////////////////\n // Generic Errors\n // Unknown Error\n ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n // Not Implemented\n ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n // Unsupported Operation\n // - operation\n ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n // Some sort of bad response from the server\n ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n // Timeout\n ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n ///////////////////\n // Operational Errors\n // Buffer Overrun\n ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n ///////////////////\n // Argument Errors\n // Missing new operator to an object\n // - name: The name of the class\n ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n ///////////////////\n // Blockchain Errors\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n // Nonce has already been used\n // - transaction: the transaction attempted\n ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n ///////////////////\n // Interaction Errors\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ErrorCode[\"ACTION_REJECTED\"] = \"ACTION_REJECTED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nexport class Logger {\n constructor(version) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n _log(logLevel, args) {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) {\n return;\n }\n console.log.apply(console, args);\n }\n debug(...args) {\n this._log(Logger.levels.DEBUG, args);\n }\n info(...args) {\n this._log(Logger.levels.INFO, args);\n }\n warn(...args) {\n this._log(Logger.levels.WARNING, args);\n }\n makeError(message, code, params) {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, {});\n }\n if (!code) {\n code = Logger.errors.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n const messageDetails = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n }\n else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n }\n catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${code}`);\n messageDetails.push(`version=${this.version}`);\n const reason = message;\n let url = \"\";\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n switch (fault) {\n case \"overflow\":\n case \"underflow\":\n case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\":\n case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n // @TODO: Any??\n const error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n return error;\n }\n throwError(message, code, params) {\n throw this.makeError(message, code, params);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, params) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code, params);\n }\n assertArgument(condition, message, name, value) {\n if (!!condition) {\n return;\n }\n this.throwArgumentError(message, name, value);\n }\n checkNormalize(message) {\n if (message == null) {\n message = \"platform missing String.prototype.normalize\";\n }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n checkSafeUint53(value, message) {\n if (typeof (value) !== \"number\") {\n return;\n }\n if (message == null) {\n message = \"value not safe\";\n }\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n checkArgumentCount(count, expectedCount, message) {\n if (message) {\n message = \": \" + message;\n }\n else {\n message = \"\";\n }\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n checkNew(target, kind) {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n checkAbstract(target, kind) {\n if (target === kind) {\n this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n }\n else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setCensorship(censorship, permanent) {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n if (_permanentCensorErrors) {\n if (!censorship) {\n return;\n }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n static setLogLevel(logLevel) {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n static from(version) {\n return new Logger(version);\n }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n//# sourceMappingURL=index.js.map","export const version = \"bytes/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nfunction isHexable(value) {\n return !!(value.toHexString);\n}\nfunction addSlice(array) {\n if (array.slice) {\n return array;\n }\n array.slice = function () {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n };\n return array;\n}\nexport function isBytesLike(value) {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\nfunction isInteger(value) {\n return (typeof (value) === \"number\" && value == value && (value % 1) === 0);\n}\nexport function isBytes(value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof (value) === \"string\") {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\nexport function arrayify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return addSlice(new Uint8Array(result));\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n value = value.toHexString();\n }\n if (isHexString(value)) {\n let hex = value.substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n }\n else if (options.hexPad === \"right\") {\n hex += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return addSlice(new Uint8Array(result));\n }\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nexport function concat(items) {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return addSlice(result);\n}\nexport function stripZeros(value) {\n let result = arrayify(value);\n if (result.length === 0) {\n return result;\n }\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n return result;\n}\nexport function zeroPad(value, length) {\n value = arrayify(value);\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n if (hex.length) {\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return \"0x\" + hex;\n }\n return \"0x00\";\n }\n if (typeof (value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) {\n return (\"0x0\" + value);\n }\n return \"0x\" + value;\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n return value.toHexString();\n }\n if (isHexString(value)) {\n if (value.length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + value.substring(2);\n }\n else if (options.hexPad === \"right\") {\n value += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return value.toLowerCase();\n }\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n return (data.length - 2) / 2;\n}\nexport function hexDataSlice(data, offset, endOffset) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n }\n offset = 2 + 2 * offset;\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n return \"0x\" + data.substring(offset);\n}\nexport function hexConcat(items) {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\nexport function hexValue(value) {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") {\n return \"0x0\";\n }\n return trimmed;\n}\nexport function hexStripZeros(value) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") {\n offset++;\n }\n return \"0x\" + value.substring(offset);\n}\nexport function hexZeroPad(value, length) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n return value;\n}\nexport function splitSignature(signature) {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n if (isBytesLike(signature)) {\n let bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n }\n else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n }\n else {\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n }\n else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n }\n else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1 : 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n }\n else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n }\n else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n }\n else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n }\n else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n }\n else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n }\n else {\n const recId = (result.v === 0 || result.v === 1) ? result.v : (1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n }\n else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n }\n else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n }\n else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\nexport function joinSignature(signature) {\n signature = splitSignature(signature);\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\" : \"0x1b\")\n ]));\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nimport sha3 from \"js-sha3\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function keccak256(data) {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n//# sourceMappingURL=index.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","export const version = \"bignumber/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\nimport _BN from \"bn.js\";\nvar BN = _BN.BN;\nimport { hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst _constructorGuard = {};\nconst MAX_SAFE = 0x1fffffffffffff;\nexport function isBigNumberish(value) {\n return (value != null) && (BigNumber.isBigNumber(value) ||\n (typeof (value) === \"number\" && (value % 1) === 0) ||\n (typeof (value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof (value) === \"bigint\") ||\n isBytes(value));\n}\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\nexport class BigNumber {\n constructor(constructorGuard, hex) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n this._hex = hex;\n this._isBigNumber = true;\n Object.freeze(this);\n }\n fromTwos(value) {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n toTwos(value) {\n return toBigNumber(toBN(this).toTwos(value));\n }\n abs() {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n add(other) {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n sub(other) {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n div(other) {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n mul(other) {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n mod(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n pow(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n and(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n or(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n xor(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n mask(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n shl(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n shr(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n eq(other) {\n return toBN(this).eq(toBN(other));\n }\n lt(other) {\n return toBN(this).lt(toBN(other));\n }\n lte(other) {\n return toBN(this).lte(toBN(other));\n }\n gt(other) {\n return toBN(this).gt(toBN(other));\n }\n gte(other) {\n return toBN(this).gte(toBN(other));\n }\n isNegative() {\n return (this._hex[0] === \"-\");\n }\n isZero() {\n return toBN(this).isZero();\n }\n toNumber() {\n try {\n return toBN(this).toNumber();\n }\n catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n toBigInt() {\n try {\n return BigInt(this.toString());\n }\n catch (e) { }\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n toString() {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n }\n else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n }\n return toBN(this).toString(10);\n }\n toHexString() {\n return this._hex;\n }\n toJSON(key) {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n static from(value) {\n if (value instanceof BigNumber) {\n return value;\n }\n if (typeof (value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n if (typeof (value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n return BigNumber.from(String(value));\n }\n const anyValue = value;\n if (typeof (anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n if (anyValue) {\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof (hex) === \"string\") {\n return BigNumber.from(hex);\n }\n }\n else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n if (typeof (hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n static isBigNumber(value) {\n return !!(value && value._isBigNumber);\n }\n}\n// Normalize the hex string\nfunction toHex(value) {\n // For BN, call on the hex string\n if (typeof (value) !== \"string\") {\n return toHex(value.toString(16));\n }\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") {\n logger.throwArgumentError(\"invalid hex\", \"value\", value);\n }\n // Call toHex on the positive component\n value = toHex(value);\n // Do not allow \"-0x00\"\n if (value === \"0x00\") {\n return value;\n }\n // Negate the value\n return \"-\" + value;\n }\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n // Normalize zero\n if (value === \"0x\") {\n return \"0x00\";\n }\n // Make the string even length\n if (value.length % 2) {\n value = \"0x0\" + value.substring(2);\n }\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n return value;\n}\nfunction toBigNumber(value) {\n return BigNumber.from(toHex(value));\n}\nfunction toBN(value) {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\nfunction throwFault(fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value != null) {\n params.value = value;\n }\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n// value should have no prefix\nexport function _base36To16(value) {\n return (new BN(value, 36)).toString(16);\n}\n// value should have no prefix\nexport function _base16To36(value) {\n return (new BN(value, 16)).toString(36);\n}\n//# sourceMappingURL=bignumber.js.map","\"use strict\";\nimport { arrayify, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { BigNumber, isBigNumberish } from \"./bignumber\";\nconst _constructorGuard = {};\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n }\n catch (e) { }\n }\n if (typeof (decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\nexport function formatFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n const negative = value.lt(Zero);\n if (negative) {\n value = value.mul(NegativeOne);\n }\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n }\n else {\n value = whole + \".\" + fraction;\n }\n if (negative) {\n value = \"-\" + value;\n }\n return value;\n}\nexport function parseFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n let whole = comps[0], fraction = comps[1];\n if (!whole) {\n whole = \"0\";\n }\n if (!fraction) {\n fraction = \"0\";\n }\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n if (negative) {\n wei = wei.mul(NegativeOne);\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\n if (typeof (value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type + \")\", \"format.\" + key, value[key]);\n }\n return value[key];\n };\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.format = format;\n this._hex = hex;\n this._value = value;\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n _checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n addUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n subUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n divUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n isNegative() {\n return (this._value[0] === \"-\");\n }\n toString() { return this._value; }\n toHexString(width) {\n if (width == null) {\n return this._hex;\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid byte width\", \"width\", width);\n }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(this._value, format);\n }\n static fromValue(value, decimals, format) {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n if (decimals == null) {\n decimals = 0;\n }\n if (format == null) {\n format = \"fixed\";\n }\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n let hex = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n }\n else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) {\n numeric = numeric.fromTwos(fixedFormat.width);\n }\n const hex = numeric.toTwos((fixedFormat.signed ? 0 : 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","export const version = \"strings/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n bytes = arrayify(bytes);\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return arrayify(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\";\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","\"use strict\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, func) {\n if (!func) {\n func = function (value) { return [parseInt(value, 16)]; };\n }\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n return [codepoint + range.s];\n }\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n let complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","export const version = \"hash/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function decode(textData) {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\nexport function encode(data) {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n//# sourceMappingURL=base64.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array, depth) {\n if (depth == null) {\n depth = 1;\n }\n const result = [];\n const forEach = result.forEach;\n const flatDeep = function (arr, depth) {\n forEach.call(arr, function (val) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n }\n else {\n result.push(val);\n }\n });\n };\n flatDeep(array, depth);\n return result;\n}\nfunction fromEntries(array) {\n const result = {};\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\nexport function decode_arithmetic(bytes) {\n let pos = 0;\n function u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n // decode the frequency table\n let symbol_count = u16();\n let total = 1;\n let acc = [0, 1]; // first symbol has frequency 1\n for (let i = 1; i < symbol_count; i++) {\n acc.push(total += u16());\n }\n // skip the sized-payload that the last 3 symbols index into\n let skip = u16();\n let pos_payload = pos;\n pos += skip;\n let read_width = 0;\n let read_buffer = 0;\n function read_bit() {\n if (read_width == 0) {\n // this will read beyond end of buffer\n // but (undefined|0) => zero pad\n read_buffer = (read_buffer << 8) | bytes[pos++];\n read_width = 8;\n }\n return (read_buffer >> --read_width) & 1;\n }\n const N = 31;\n const FULL = Math.pow(2, N);\n const HALF = FULL >>> 1;\n const QRTR = HALF >> 1;\n const MASK = FULL - 1;\n // fill register\n let register = 0;\n for (let i = 0; i < N; i++)\n register = (register << 1) | read_bit();\n let symbols = [];\n let low = 0;\n let range = FULL; // treat like a float\n while (true) {\n let value = Math.floor((((register - low + 1) * total) - 1) / range);\n let start = 0;\n let end = symbol_count;\n while (end - start > 1) { // binary search\n let mid = (start + end) >>> 1;\n if (value < acc[mid]) {\n end = mid;\n }\n else {\n start = mid;\n }\n }\n if (start == 0)\n break; // first symbol is end mark\n symbols.push(start);\n let a = low + Math.floor(range * acc[start] / total);\n let b = low + Math.floor(range * acc[start + 1] / total) - 1;\n while (((a ^ b) & HALF) == 0) {\n register = (register << 1) & MASK | read_bit();\n a = (a << 1) & MASK;\n b = (b << 1) & MASK | 1;\n }\n while (a & ~b & QRTR) {\n register = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n a = (a << 1) ^ HALF;\n b = ((b ^ HALF) << 1) | HALF | 1;\n }\n low = a;\n range = 1 + b - a;\n }\n let offset = symbol_count - 4;\n return symbols.map(x => {\n switch (x - offset) {\n case 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 1: return offset + bytes[pos_payload++];\n default: return x - 1;\n }\n });\n}\n// returns an iterator which returns the next symbol\nexport function read_payload(v) {\n let pos = 0;\n return () => v[pos++];\n}\nexport function read_compressed_payload(bytes) {\n return read_payload(decode_arithmetic(bytes));\n}\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i) {\n return (i & 1) ? (~i >> 1) : (i >> 1);\n}\nfunction read_counts(n, next) {\n let v = Array(n);\n for (let i = 0; i < n; i++)\n v[i] = 1 + next();\n return v;\n}\nfunction read_ascending(n, next) {\n let v = Array(n);\n for (let i = 0, x = -1; i < n; i++)\n v[i] = x += 1 + next();\n return v;\n}\nfunction read_deltas(n, next) {\n let v = Array(n);\n for (let i = 0, x = 0; i < n; i++)\n v[i] = x += signed(next());\n return v;\n}\nexport function read_member_array(next, lookup) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next) {\n let ret = [];\n while (true) {\n let w = next();\n if (w == 0)\n break;\n ret.push(read_linear_table(w, next));\n }\n while (true) {\n let w = next() - 1;\n if (w < 0)\n break;\n ret.push(read_replacement_table(w, next));\n }\n return fromEntries(flat(ret));\n}\nexport function read_zero_terminated_array(next) {\n let v = [];\n while (true) {\n let i = next();\n if (i == 0)\n break;\n v.push(i);\n }\n return v;\n}\nfunction read_transposed(n, w, next) {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\nfunction read_linear_table(w, next) {\n let dx = 1 + next();\n let dy = next();\n let vN = read_zero_terminated_array(next);\n let m = read_transposed(vN.length, 1 + w, next);\n return flat(m.map((v, i) => {\n const x = v[0], ys = v.slice(1);\n //let [x, ...ys] = v;\n //return Array(vN[i]).fill().map((_, j) => {\n return Array(vN[i]).fill(undefined).map((_, j) => {\n let j_dy = j * dy;\n return [x + j * dx, ys.map(y => y + j_dy)];\n });\n }));\n}\nfunction read_replacement_table(w, next) {\n let n = 1 + next();\n let m = read_transposed(n, 1 + w, next);\n return m.map(v => [v[0], v.slice(1)]);\n}\nexport function read_emoji_trie(next) {\n let sorted = read_member_array(next).sort((a, b) => a - b);\n return read();\n function read() {\n let branches = [];\n while (true) {\n let keys = read_member_array(next, sorted);\n if (keys.length == 0)\n break;\n branches.push({ set: new Set(keys), node: read() });\n }\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n let temp = next();\n let valid = temp % 3;\n temp = (temp / 3) | 0;\n let fe0f = !!(temp & 1);\n temp >>= 1;\n let save = temp == 1;\n let check = temp == 2;\n return { branches, valid, fe0f, save, check };\n }\n}\n//# sourceMappingURL=decoder.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { decode } from \"@ethersproject/base64\";\nimport { read_compressed_payload } from './decoder.js';\nexport function getData() {\n return read_compressed_payload(decode('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'));\n}\n//# sourceMappingURL=include.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\nimport { getData } from './include.js';\nconst r = getData();\nimport { read_member_array, read_mapped_map, read_emoji_trie } from './decoder.js';\n// @TODO: This should be lazily loaded\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\nfunction explode_cp(name) {\n return toUtf8CodePoints(name);\n}\nfunction filter_fe0f(cps) {\n return cps.filter(cp => cp != 0xFE0F);\n}\nexport function ens_normalize_post_check(name) {\n for (let label of name.split('.')) {\n let cps = explode_cp(label);\n try {\n for (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n if (cps[i] !== UNDERSCORE) {\n throw new Error(`underscore only allowed at start`);\n }\n }\n if (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n throw new Error(`invalid label extension`);\n }\n }\n catch (err) {\n throw new Error(`Invalid label \"${label}\": ${err.message}`);\n }\n }\n return name;\n}\nexport function ens_normalize(name) {\n return ens_normalize_post_check(normalize(name, filter_fe0f));\n}\nfunction normalize(name, emoji_filter) {\n let input = explode_cp(name).reverse(); // flip for pop\n let output = [];\n while (input.length) {\n let emoji = consume_emoji_reversed(input);\n if (emoji) {\n output.push(...emoji_filter(emoji));\n continue;\n }\n let cp = input.pop();\n if (VALID.has(cp)) {\n output.push(cp);\n continue;\n }\n if (IGNORED.has(cp)) {\n continue;\n }\n let cps = MAPPED[cp];\n if (cps) {\n output.push(...cps);\n continue;\n }\n throw new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n }\n return ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\nfunction nfc(s) {\n return s.normalize('NFC');\n}\nfunction consume_emoji_reversed(cps, eaten) {\n var _a;\n let node = EMOJI_ROOT;\n let emoji;\n let saved;\n let stack = [];\n let pos = cps.length;\n if (eaten)\n eaten.length = 0; // clear input buffer (if needed)\n while (pos) {\n let cp = cps[--pos];\n node = (_a = node.branches.find(x => x.set.has(cp))) === null || _a === void 0 ? void 0 : _a.node;\n if (!node)\n break;\n if (node.save) { // remember\n saved = cp;\n }\n else if (node.check) { // check exclusion\n if (cp === saved)\n break;\n }\n stack.push(cp);\n if (node.fe0f) {\n stack.push(0xFE0F);\n if (pos > 0 && cps[pos - 1] == 0xFE0F)\n pos--; // consume optional FE0F\n }\n if (node.valid) { // this is a valid emoji (so far)\n emoji = stack.slice(); // copy stack\n if (node.valid == 2)\n emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n if (eaten)\n eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n cps.length = pos; // truncate\n }\n }\n return emoji;\n}\n//# sourceMappingURL=lib.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { ens_normalize } from \"./ens-normalize/lib\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nfunction checkComponent(comp) {\n if (comp.length === 0) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n return comp;\n}\nfunction ensNameSplit(name) {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps = [];\n if (name.length === 0) {\n return comps;\n }\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n // There was a stray separator at the end of the name\n if (last >= bytes.length) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\nexport function ensNormalize(name) {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\nexport function isValidName(name) {\n try {\n return (ensNameSplit(name).length !== 0);\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n /* istanbul ignore if */\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let result = Zeros;\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n }))) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","export const version = \"rlp/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { arrayify, hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n const data = Array.prototype.slice.call(arrayify(object));\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n }\n else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nexport function encode(object) {\n return hexlify(_encode(object));\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result };\n }\n else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\nexport function decode(data) {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=index.js.map","export const version = \"address/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction getChecksumAddress(address) {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER = 0x1fffffffffffff;\nfunction log10(x) {\n if (Math.log10) {\n return Math.log10(x);\n }\n return Math.log(x) / Math.LN10;\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nexport function getAddress(address) {\n let result = null;\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n // Maybe ICAP? (we only support direct mode)\n }\n else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n result = _base36To16(address.substring(4));\n while (result.length < 40) {\n result = \"0\" + result;\n }\n result = getChecksumAddress(\"0x\" + result);\n }\n else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n return result;\n}\nexport function isAddress(address) {\n try {\n getAddress(address);\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function getIcapAddress(address) {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction) {\n let from = null;\n try {\n from = getAddress(transaction.from);\n }\n catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n return getAddress(hexDataSlice(keccak256(encode([from, nonce])), 12));\n}\nexport function getCreate2Address(from, salt, initCodeHash) {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([\"0xff\", getAddress(from), salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=index.js.map","export const version = \"properties/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor, key) {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) {\n return ctor[key];\n }\n if (!ctor.prototype || typeof (ctor.prototype) !== \"object\") {\n break;\n }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\nexport function resolveProperties(object) {\n return __awaiter(this, void 0, void 0, function* () {\n const promises = Object.keys(object).map((key) => {\n const value = object[key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n const results = yield Promise.all(promises);\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, {});\n });\n}\nexport function checkProperties(object, properties) {\n if (!object || typeof (object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\nexport function shallowCopy(object) {\n const result = {};\n for (const key in object) {\n result[key] = object[key];\n }\n return result;\n}\nconst opaque = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\nfunction _isFrozen(object) {\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof (object)]) {\n return true;\n }\n if (Array.isArray(object) || typeof (object) === \"object\") {\n if (!Object.isFrozen(object)) {\n return false;\n }\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value = null;\n try {\n value = object[keys[i]];\n }\n catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n if (!_isFrozen(value)) {\n return false;\n }\n }\n return true;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object) {\n if (_isFrozen(object)) {\n return object;\n }\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n if (typeof (object) === \"object\") {\n const result = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) {\n continue;\n }\n defineReadOnly(result, key, deepCopy(value));\n }\n return result;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\nexport function deepCopy(object) {\n return _deepCopy(object);\n}\nexport class Description {\n constructor(info) {\n for (const key in info) {\n this[key] = deepCopy(info[key]);\n }\n }\n}\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { id } from \"./id\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst NegativeOne = BigNumber.from(-1);\nconst Zero = BigNumber.from(0);\nconst One = BigNumber.from(1);\nconst MaxUint256 = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return hexConcat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n try {\n return BigNumber.from(value).toString();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) {\n throw new Error(\"bad length\");\n }\n return hexlify(bytes);\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n const boundsUpper = MaxUint256.mask(signed ? (width - 1) : width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne) : Zero;\n return function (value) {\n const v = BigNumber.from(value);\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n return function (value) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${type}`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n switch (type) {\n case \"address\": return function (value) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n defineReadOnly(this, \"_encoderCache\", {});\n defineReadOnly(this, \"_types\", {});\n // Link struct types to their direct child structs\n const links = {};\n // Link structs to structs which contain them as a child\n const parents = {};\n // Link all subtypes within a given struct\n const subtypes = {};\n Object.keys(types).forEach((type) => {\n links[type] = {};\n parents[type] = [];\n subtypes[type] = {};\n });\n for (const name in types) {\n const uniqueNames = {};\n types[name].forEach((field) => {\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n return;\n }\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\n else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${primaryTypes.map((t) => (JSON.stringify(t))).join(\", \")}`, \"types\", types);\n }\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n // Check for circular type references\n function checkCircular(type, found) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found[type] = true;\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) {\n return;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n delete found[type];\n }\n checkCircular(this.primaryType, {});\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n getEncoder(type) {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n _getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return encoder;\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n return keccak256(hexConcat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n encodeType(name) {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return callback(type, value);\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v) => this._visit(subtype, v, callback));\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, {});\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(name)}`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static resolveNames(domain, types, value, resolveName) {\n return __awaiter(this, void 0, void 0, function* () {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n // Look up all ENS names\n const ensCache = {};\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = yield resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n });\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n//# sourceMappingURL=typed-data.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","import BN from 'bn.js';\nimport hash from 'hash.js';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, basedir, module) {\n\treturn module = {\n\t\tpath: basedir,\n\t\texports: {},\n\t\trequire: function (path, base) {\n\t\t\treturn commonjsRequire(path, (base === undefined || base === null) ? module.path : base);\n\t\t}\n\t}, fn(module, module.exports), module.exports;\n}\n\nfunction getDefaultExportFromNamespaceIfPresent (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n;\n}\n\nfunction getDefaultExportFromNamespaceIfNotNamed (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n;\n}\n\nfunction getAugmentedNamespace(n) {\n\tif (n.__esModule) return n;\n\tvar a = Object.defineProperty({}, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n}\n\nvar minimalisticAssert = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\nvar utils_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n});\n\nvar utils_1$1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\n\n\n\nutils.assert = minimalisticAssert;\nutils.toArray = utils_1.toArray;\nutils.zero2 = utils_1.zero2;\nutils.toHex = utils_1.toHex;\nutils.encode = utils_1.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n});\n\n'use strict';\n\n\n\nvar getNAF = utils_1$1.getNAF;\nvar getJSF = utils_1$1.getJSF;\nvar assert$1 = utils_1$1.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nvar base = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert$1(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert$1(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils_1$1.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert$1(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert$1(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils_1$1.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\nvar inherits_browser = createCommonjsModule(function (module) {\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n});\n\n'use strict';\n\n\n\n\n\n\nvar assert$2 = utils_1$1.assert;\n\nfunction ShortCurve(conf) {\n base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits_browser(ShortCurve, base);\nvar short_1 = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert$2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits_browser(Point, base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits_browser(JPoint, base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nvar curve_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curve = exports;\n\ncurve.base = base;\ncurve.short = short_1;\ncurve.mont = /*RicMoo:ethers:require(./mont)*/(null);\ncurve.edwards = /*RicMoo:ethers:require(./edwards)*/(null);\n});\n\nvar curves_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curves = exports;\n\n\n\n\n\nvar assert = utils_1$1.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve_1.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve_1.edwards(options);\n else\n this.curve = new curve_1.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = /*RicMoo:ethers:require(./precomputed/secp256k1)*/(null).crash();\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n});\n\n'use strict';\n\n\n\n\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils_1.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils_1.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils_1.toArray(options.pers, options.persEnc || 'hex');\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nvar hmacDrbg = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils_1.toArray(entropy, entropyEnc);\n add = utils_1.toArray(add, addEnc);\n\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils_1.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils_1.encode(res, enc);\n};\n\n'use strict';\n\n\n\nvar assert$3 = utils_1$1.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nvar key = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert$3(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert$3(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert$3(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n'use strict';\n\n\n\n\nvar assert$4 = utils_1$1.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert$4(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nvar signature = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils_1$1.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils_1$1.encode(res, enc);\n};\n\n'use strict';\n\n\n\n\n\nvar rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nvar assert$5 = utils_1$1.assert;\n\n\n\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert$5(Object.prototype.hasOwnProperty.call(curves_1, options),\n 'Unknown curve ' + options);\n\n options = curves_1[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves_1.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nvar ec = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new key(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return key.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return key.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature$1, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature$1 = new signature(signature$1, 'hex');\n\n // Perform primitive values validation\n var r = signature$1.r;\n var s = signature$1.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature$1, j, enc) {\n assert$5((3 & j) === j, 'The recovery param is more than two bits');\n signature$1 = new signature(signature$1, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature$1.r;\n var s = signature$1.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature$1.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature$1, Q, enc) {\n signature$1 = new signature(signature$1, enc);\n if (signature$1.recoveryParam !== null)\n return signature$1.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature$1, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\nvar elliptic_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = /*RicMoo:ethers*/{ version: \"6.5.4\" }.version;\nelliptic.utils = utils_1$1;\nelliptic.rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nelliptic.curve = curve_1;\nelliptic.curves = curves_1;\n\n// Protocols\nelliptic.ec = ec;\nelliptic.eddsa = /*RicMoo:ethers:require(./elliptic/eddsa)*/(null);\n});\n\nvar EC$1 = elliptic_1.ec;\n\nexport { EC$1 as EC };\n//# sourceMappingURL=elliptic.js.map\n","export const version = \"signing-key/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { EC } from \"./elliptic\";\nimport { arrayify, hexDataLength, hexlify, hexZeroPad, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nlet _curve = null;\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\nexport class SigningKey {\n constructor(privateKey) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n _addPoint(other) {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n signDigest(digest) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n });\n }\n computeSharedSecret(otherKey) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n static isSigningKey(value) {\n return !!(value && value._isSigningKey);\n }\n}\nexport function recoverPublicKey(digest, signature) {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\nexport function computePublicKey(key, compressed) {\n const bytes = arrayify(key);\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n }\n else if (bytes.length === 33) {\n if (compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n }\n else if (bytes.length === 65) {\n if (!compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n//# sourceMappingURL=index.js.map","export const version = \"transactions/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport var TransactionTypes;\n(function (TransactionTypes) {\n TransactionTypes[TransactionTypes[\"legacy\"] = 0] = \"legacy\";\n TransactionTypes[TransactionTypes[\"eip2930\"] = 1] = \"eip2930\";\n TransactionTypes[TransactionTypes[\"eip1559\"] = 2] = \"eip1559\";\n})(TransactionTypes || (TransactionTypes = {}));\n;\n///////////////////////////////\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleNumber(value) {\n if (value === \"0x\") {\n return Zero;\n }\n return BigNumber.from(value);\n}\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\nconst allowedTransactionKeys = {\n chainId: true, data: true, gasLimit: true, gasPrice: true, nonce: true, to: true, type: true, value: true\n};\nexport function computeAddress(key) {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\nfunction formatNumber(value, name) {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${addr}:${index}]`, storageKey);\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${index}]`, set);\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, {});\n return accessSetify(addr, Object.keys(storageKeys).sort());\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _serializeEip1559(transaction, signature) {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x02\", RLP.encode(fields)]);\n}\nfunction _serializeEip2930(transaction, signature) {\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x01\", RLP.encode(fields)]);\n}\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction, signature) {\n checkProperties(transaction, allowedTransactionKeys);\n const raw = [];\n transactionFields.forEach(function (fieldInfo) {\n let value = transaction[fieldInfo.name] || ([]);\n const options = {};\n if (fieldInfo.numeric) {\n options.hexPad = \"left\";\n }\n value = arrayify(hexlify(value, options));\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n }\n raw.push(hexlify(value));\n });\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n if (typeof (chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n }\n else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam;\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n }\n else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n return RLP.encode(raw);\n}\nexport function serialize(transaction, signature) {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${transaction.type}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) {\n throw new Error(\"bad recid\");\n }\n tx.v = recid;\n }\n catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n }\n catch (error) { }\n}\nfunction _parseEip1559(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _parseEip2930(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n const tx = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n return tx;\n}\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction) {\n const transaction = RLP.decode(rawTransaction);\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n const tx = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n // Legacy unsigned transaction\n if (transaction.length === 6) {\n return tx;\n }\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n }\n catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n }\n else {\n // Signed Transaction\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) {\n tx.chainId = 0;\n }\n let recoveryParam = tx.v - 27;\n const raw = transaction.slice(0, 6);\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n }\n catch (error) { }\n tx.hash = keccak256(rawTransaction);\n }\n tx.type = null;\n return tx;\n}\nexport function parse(rawTransaction) {\n const payload = arrayify(rawTransaction);\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) {\n return _parse(payload);\n }\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${payload[0]}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n//# sourceMappingURL=index.js.map","import { AuthTypes } from \"@walletconnect/types\";\nimport { hashMessage } from \"@ethersproject/hash\";\nimport { recoverAddress } from \"@ethersproject/transactions\";\nconst DEFAULT_RPC_URL = \"https://rpc.walletconnect.com/v1\";\n\nexport async function verifySignature(\n address: string,\n reconstructedMessage: string,\n cacaoSignature: AuthTypes.CacaoSignature,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n): Promise {\n // Determine if this signature is from an EOA or a contract.\n switch (cacaoSignature.t) {\n case \"eip191\":\n return isValidEip191Signature(address, reconstructedMessage, cacaoSignature.s);\n case \"eip1271\":\n return await isValidEip1271Signature(\n address,\n reconstructedMessage,\n cacaoSignature.s,\n chainId,\n projectId,\n baseRpcUrl,\n );\n break;\n default:\n throw new Error(\n `verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${cacaoSignature.t}`,\n );\n }\n}\n\nexport function isValidEip191Signature(\n address: string,\n message: string,\n signature: string,\n): boolean {\n const recoveredAddress = recoverAddress(hashMessage(message), signature);\n return recoveredAddress.toLowerCase() === address.toLowerCase();\n}\n\nexport async function isValidEip1271Signature(\n address: string,\n reconstructedMessage: string,\n signature: string,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n) {\n try {\n const eip1271MagicValue = \"0x1626ba7e\";\n const dynamicTypeOffset = \"0000000000000000000000000000000000000000000000000000000000000040\";\n const dynamicTypeLength = \"0000000000000000000000000000000000000000000000000000000000000041\";\n const nonPrefixedSignature = signature.substring(2);\n const nonPrefixedHashedMessage = hashMessage(reconstructedMessage).substring(2);\n\n const data =\n eip1271MagicValue +\n nonPrefixedHashedMessage +\n dynamicTypeOffset +\n dynamicTypeLength +\n nonPrefixedSignature;\n const response = await fetch(\n `${baseRpcUrl || DEFAULT_RPC_URL}/?chainId=${chainId}&projectId=${projectId}`,\n {\n method: \"POST\",\n body: JSON.stringify({\n id: generateJsonRpcId(),\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: address, data }, \"latest\"],\n }),\n },\n );\n const { result } = await response.json();\n if (!result) return false;\n\n // Remove right-padded zeros from result to get only the concrete recovered value.\n const recoveredValue = result.slice(0, eip1271MagicValue.length);\n return recoveredValue.toLowerCase() === eip1271MagicValue.toLowerCase();\n } catch (error: any) {\n // eslint-disable-next-line no-console\n console.error(\"isValidEip1271Signature: \", error);\n return false;\n }\n}\n\nfunction generateJsonRpcId() {\n return Date.now() + Math.floor(Math.random() * 1000);\n}\n","/* eslint-disable no-console */\nimport { AuthTypes } from \"@walletconnect/types\";\nimport { getCommonValuesInArrays } from \"./misc\";\nimport { verifySignature } from \"./signatures\";\nconst didPrefix = \"did:pkh:\";\nexport const getDidAddressSegments = (iss: string) => {\n return iss?.split(\":\");\n};\n\nexport const getDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return iss.includes(didPrefix) ? segments[3] : segments[1];\n }\n return undefined;\n};\n\nexport const getNamespacedDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments[2] + \":\" + segments[3];\n }\n return undefined;\n};\n\nexport const getDidAddress = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments.pop();\n }\n return undefined;\n};\n\nexport async function validateSignedCacao(params: { cacao: AuthTypes.Cacao; projectId?: string }) {\n const { cacao, projectId } = params;\n const { s: signature, p: payload } = cacao;\n const reconstructed = formatMessage(payload, payload.iss);\n const walletAddress = getDidAddress(payload.iss) as string;\n const isValid = await verifySignature(\n walletAddress,\n reconstructed,\n signature,\n getDidChainId(payload.iss) as string,\n projectId as string,\n );\n\n return isValid;\n}\n\nexport const formatMessage = (cacao: AuthTypes.FormatMessageParams, iss: string) => {\n const header = `${cacao.domain} wants you to sign in with your Ethereum account:`;\n const walletAddress = getDidAddress(iss);\n\n if (!cacao.aud && !cacao.uri) {\n throw new Error(\"Either `aud` or `uri` is required to construct the message\");\n }\n\n let statement = cacao.statement || undefined;\n const uri = `URI: ${cacao.aud || cacao.uri}`;\n const version = `Version: ${cacao.version}`;\n const chainId = `Chain ID: ${getDidChainId(iss)}`;\n const nonce = `Nonce: ${cacao.nonce}`;\n const issuedAt = `Issued At: ${cacao.iat}`;\n const resources = cacao.resources\n ? `Resources:${cacao.resources.map((resource) => `\\n- ${resource}`).join(\"\")}`\n : undefined;\n const recap = getRecapFromResources(cacao.resources);\n if (recap) {\n const decoded = decodeRecap(recap);\n statement = formatStatementFromRecap(statement, decoded);\n }\n\n const message = [\n header,\n walletAddress,\n ``,\n statement,\n ``,\n uri,\n version,\n chainId,\n nonce,\n issuedAt,\n resources,\n ]\n .filter((val) => val !== undefined && val !== null) // remove unnecessary empty lines\n .join(\"\\n\");\n\n return message;\n};\n\nexport function buildAuthObject(\n requestPayload: AuthTypes.PayloadParams,\n signature: AuthTypes.CacaoSignature,\n iss: string,\n) {\n if (!iss.includes(\"did:pkh:\")) {\n iss = `did:pkh:${iss}`;\n }\n\n const authObject: AuthTypes.Cacao = {\n h: {\n t: \"caip122\",\n },\n p: {\n iss,\n domain: requestPayload.domain,\n aud: requestPayload.aud,\n version: requestPayload.version,\n nonce: requestPayload.nonce,\n iat: requestPayload.iat,\n statement: requestPayload.statement,\n requestId: requestPayload.requestId,\n resources: requestPayload.resources,\n nbf: requestPayload.nbf,\n exp: requestPayload.exp,\n },\n s: signature,\n };\n return authObject;\n}\ntype PopulateAuthPayloadParams = {\n authPayload: AuthTypes.PayloadParams;\n chains: string[];\n methods: string[];\n};\nexport function populateAuthPayload(params: PopulateAuthPayloadParams): AuthTypes.PayloadParams {\n const { authPayload, chains, methods } = params;\n const statement = authPayload.statement || \"\";\n\n if (!chains?.length) return authPayload;\n\n const requested = authPayload.chains;\n const supported = chains;\n\n const supportedChains = getCommonValuesInArrays(requested, supported);\n if (!supportedChains?.length) {\n throw new Error(\"No supported chains\");\n }\n\n const requestedRecaps = getDecodedRecapFromResources(authPayload.resources);\n if (!requestedRecaps) return authPayload;\n\n isValidRecap(requestedRecaps);\n const resource = getRecapResource(requestedRecaps, \"eip155\");\n let updatedResources = authPayload?.resources || [];\n\n if (resource?.length) {\n const actions = getReCapActions(resource);\n const supportedActions = getCommonValuesInArrays(actions, methods);\n if (!supportedActions?.length) {\n throw new Error(\n `Supported methods don't satisfy the requested: ${JSON.stringify(\n actions,\n )}, supported: ${JSON.stringify(methods)}`,\n );\n }\n const formattedActions = assignAbilityToActions(\"request\", supportedActions as string[], {\n chains: supportedChains,\n });\n const updatedRecap = addResourceToRecap(requestedRecaps, \"eip155\", formattedActions);\n // remove recap from resources as we will add the updated one\n updatedResources = authPayload?.resources?.slice(0, -1) || [];\n updatedResources.push(encodeRecap(updatedRecap));\n }\n\n return {\n ...authPayload,\n statement: buildRecapStatement(statement, getRecapFromResources(updatedResources)),\n chains: supportedChains,\n resources: authPayload?.resources || updatedResources.length > 0 ? updatedResources : undefined,\n };\n}\n\nexport function getDecodedRecapFromResources(resources?: string[]) {\n const resource = getRecapFromResources(resources);\n if (!resource) return;\n if (!isRecap(resource)) return;\n return decodeRecap(resource);\n}\n\nexport function recapHasResource(recap: any, resource: string) {\n return recap?.att?.hasOwnProperty(resource);\n}\n\nexport function getRecapResource(recap: any, resource: string): any[] {\n return recap?.att?.[resource] ? Object.keys(recap?.att?.[resource]) : [];\n}\n\nexport function getRecapAbilitiesFromResource(actions: any[]) {\n return actions?.map((action) => Object.keys(action)) || [];\n}\n\nexport function getReCapActions(abilities: any[]) {\n return abilities?.map((ability) => ability.split(\"/\")?.[1]) || [];\n}\n\nexport function base64Encode(input: unknown): string {\n return Buffer.from(JSON.stringify(input)).toString(\"base64\");\n}\n\nexport function base64Decode(encodedString: string): string {\n return JSON.parse(Buffer.from(encodedString, \"base64\").toString(\"utf-8\"));\n}\n\nexport function isValidRecap(recap: any) {\n if (!recap) throw new Error(\"No recap provided, value is undefined\");\n if (!recap.att) throw new Error(\"No `att` property found\");\n const resources = Object.keys(recap.att);\n if (!resources?.length) throw new Error(\"No resources found in `att` property\");\n resources.forEach((resource) => {\n const resourceAbilities = recap.att[resource];\n if (Array.isArray(resourceAbilities))\n throw new Error(`Resource must be an object: ${resource}`);\n if (typeof resourceAbilities !== \"object\")\n throw new Error(`Resource must be an object: ${resource}`);\n if (!Object.keys(resourceAbilities).length)\n throw new Error(`Resource object is empty: ${resource}`);\n\n Object.keys(resourceAbilities).forEach((ability) => {\n const limits = resourceAbilities[ability];\n if (!Array.isArray(limits))\n throw new Error(`Ability limits ${ability} must be an array of objects, found: ${limits}`);\n if (!limits.length)\n throw new Error(`Value of ${ability} is empty array, must be an array with objects`);\n limits.forEach((limit) => {\n if (typeof limit !== \"object\")\n throw new Error(\n `Ability limits (${ability}) must be an array of objects, found: ${limit}`,\n );\n });\n });\n });\n}\n\nexport function createRecap(resource: string, ability: string, actions: string[], limits = {}) {\n actions?.sort((a, b) => a.localeCompare(b));\n return {\n att: { [resource]: assignAbilityToActions(ability, actions, limits) },\n };\n}\n\ntype RecapType = {\n att: {\n [key: string]: Record;\n };\n};\nexport function addResourceToRecap(recap: RecapType, resource: string, actions: unknown[]) {\n recap.att[resource] = {\n ...actions,\n };\n const keys = Object.keys(recap.att)?.sort((a, b) => a.localeCompare(b));\n const sorted = keys.reduce(\n (obj, key) => {\n obj.att[key] = recap.att[key];\n return obj;\n },\n { att: {} },\n );\n return sorted;\n}\n\nexport function assignAbilityToActions(ability: string, actions: string[], limits = {}) {\n // sort resources alphabetically\n actions = actions?.sort((a, b) => a.localeCompare(b));\n const abilities = actions.map((action) => {\n return {\n [`${ability}/${action}`]: [limits],\n };\n });\n return Object.assign({}, ...abilities);\n}\n\nexport function encodeRecap(recap: any) {\n isValidRecap(recap);\n // remove the padding from the base64 string as per recap spec\n return `urn:recap:${base64Encode(recap).replace(/=/g, \"\")}`;\n}\n\nexport function decodeRecap(recap: any): RecapType {\n // base64Decode adds padding internally so don't need to add it back if it was removed\n const decoded = base64Decode(recap.replace(\"urn:recap:\", \"\"));\n isValidRecap(decoded);\n return decoded as unknown as RecapType;\n}\n\nexport function createEncodedRecap(resource: string, ability: string, actions: string[]): string {\n const recap = createRecap(resource, ability, actions);\n return encodeRecap(recap);\n}\n\nexport function isRecap(resource: string) {\n return resource && resource.includes(\"urn:recap:\");\n}\n\nexport function mergeEncodedRecaps(recap1: string, recap2: string) {\n const decoded1 = decodeRecap(recap1);\n const decoded2 = decodeRecap(recap2);\n const merged = mergeRecaps(decoded1, decoded2);\n return encodeRecap(merged);\n}\n\nexport function mergeRecaps(recap1: RecapType, recap2: RecapType) {\n isValidRecap(recap1);\n isValidRecap(recap2);\n const keys = Object.keys(recap1.att)\n .concat(Object.keys(recap2.att))\n .sort((a, b) => a.localeCompare(b));\n const mergedRecap = { att: {} };\n keys.forEach((key) => {\n const actions = Object.keys(recap1.att?.[key] || {})\n .concat(Object.keys(recap2.att?.[key] || {}))\n .sort((a, b) => a.localeCompare(b));\n actions.forEach((action) => {\n mergedRecap.att[key] = {\n ...mergedRecap.att[key],\n [action]: recap1.att[key]?.[action] || recap2.att[key]?.[action],\n };\n });\n });\n return mergedRecap;\n}\n\nexport function formatStatementFromRecap(statement = \"\", recap: RecapType) {\n isValidRecap(recap);\n const base = \"I further authorize the stated URI to perform the following actions on my behalf: \";\n\n if (statement.includes(base)) return statement;\n\n const statementForRecap: string[] = [];\n let currentCounter = 0;\n Object.keys(recap.att).forEach((resource) => {\n const actions = Object.keys(recap.att[resource]).map((ability: any) => {\n return {\n ability: ability.split(\"/\")[0],\n action: ability.split(\"/\")[1],\n };\n });\n //\n actions.sort((a, b) => a.action.localeCompare(b.action));\n const uniqueAbilities = {};\n actions.forEach((action: any) => {\n if (!uniqueAbilities[action.ability]) {\n uniqueAbilities[action.ability] = [];\n }\n uniqueAbilities[action.ability].push(action.action);\n });\n const abilities = Object.keys(uniqueAbilities).map((ability) => {\n currentCounter++;\n return `(${currentCounter}) '${ability}': '${uniqueAbilities[ability].join(\n \"', '\",\n )}' for '${resource}'.`;\n });\n statementForRecap.push(abilities.join(\", \").replace(\".,\", \".\"));\n });\n\n const recapStatemet = statementForRecap.join(\" \");\n const recapStatement = `${base}${recapStatemet}`;\n // add a space if there is a statement\n return `${statement ? statement + \" \" : \"\"}${recapStatement}`;\n}\n\nexport function getMethodsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n // methods are only available for eip155 as per the current implementation\n const resource = decoded.att?.eip155;\n if (!resource) return [];\n return Object.keys(resource).map((ability: any) => ability.split(\"/\")[1]);\n}\n\nexport function getChainsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n const chains: string[] = [];\n\n Object.values(decoded.att).forEach((resource: any) => {\n Object.values(resource).forEach((ability: any) => {\n if (ability?.[0]?.chains) {\n chains.push(ability[0].chains);\n }\n });\n });\n return [...new Set(chains.flat())];\n}\n\nexport function buildRecapStatement(statement: string, recap: unknown) {\n if (!recap) return statement;\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n return formatStatementFromRecap(statement, decoded);\n}\n\nexport function getRecapFromResources(resources?: string[]) {\n if (!resources) return;\n // per spec, recap is always the last resource\n const resource = resources?.[resources.length - 1];\n return isRecap(resource) ? resource : undefined;\n}\n","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package int provides helper functions for integerss.\n */\n// Shim using 16-bit pieces.\nfunction imulShim(a, b) {\n var ah = (a >>> 16) & 0xffff, al = a & 0xffff;\n var bh = (b >>> 16) & 0xffff, bl = b & 0xffff;\n return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0) | 0);\n}\n/** 32-bit integer multiplication. */\n// Use system Math.imul if available, otherwise use our shim.\nexports.mul = Math.imul || imulShim;\n/** 32-bit integer addition. */\nfunction add(a, b) {\n return (a + b) | 0;\n}\nexports.add = add;\n/** 32-bit integer subtraction. */\nfunction sub(a, b) {\n return (a - b) | 0;\n}\nexports.sub = sub;\n/** 32-bit integer left rotation */\nfunction rotl(x, n) {\n return x << n | x >>> (32 - n);\n}\nexports.rotl = rotl;\n/** 32-bit integer left rotation */\nfunction rotr(x, n) {\n return x << (32 - n) | x >>> n;\n}\nexports.rotr = rotr;\nfunction isIntegerShim(n) {\n return typeof n === \"number\" && isFinite(n) && Math.floor(n) === n;\n}\n/**\n * Returns true if the argument is an integer number.\n *\n * In ES2015, Number.isInteger.\n */\nexports.isInteger = Number.isInteger || isIntegerShim;\n/**\n * Math.pow(2, 53) - 1\n *\n * In ES2015 Number.MAX_SAFE_INTEGER.\n */\nexports.MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * Returns true if the argument is a safe integer number\n * (-MIN_SAFE_INTEGER < number <= MAX_SAFE_INTEGER)\n *\n * In ES2015, Number.isSafeInteger.\n */\nexports.isSafeInteger = function (n) {\n return exports.isInteger(n) && (n >= -exports.MAX_SAFE_INTEGER && n <= exports.MAX_SAFE_INTEGER);\n};\n//# sourceMappingURL=int.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package binary provides functions for encoding and decoding numbers in byte arrays.\n */\nvar int_1 = require(\"@stablelib/int\");\n// TODO(dchest): add asserts for correct value ranges and array offsets.\n/**\n * Reads 2 bytes from array starting at offset as big-endian\n * signed 16-bit integer and returns it.\n */\nfunction readInt16BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (((array[offset + 0] << 8) | array[offset + 1]) << 16) >> 16;\n}\nexports.readInt16BE = readInt16BE;\n/**\n * Reads 2 bytes from array starting at offset as big-endian\n * unsigned 16-bit integer and returns it.\n */\nfunction readUint16BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 0] << 8) | array[offset + 1]) >>> 0;\n}\nexports.readUint16BE = readUint16BE;\n/**\n * Reads 2 bytes from array starting at offset as little-endian\n * signed 16-bit integer and returns it.\n */\nfunction readInt16LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (((array[offset + 1] << 8) | array[offset]) << 16) >> 16;\n}\nexports.readInt16LE = readInt16LE;\n/**\n * Reads 2 bytes from array starting at offset as little-endian\n * unsigned 16-bit integer and returns it.\n */\nfunction readUint16LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 1] << 8) | array[offset]) >>> 0;\n}\nexports.readUint16LE = readUint16LE;\n/**\n * Writes 2-byte big-endian representation of 16-bit unsigned\n * value to byte array starting at offset.\n *\n * If byte array is not given, creates a new 2-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint16BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(2); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 8;\n out[offset + 1] = value >>> 0;\n return out;\n}\nexports.writeUint16BE = writeUint16BE;\nexports.writeInt16BE = writeUint16BE;\n/**\n * Writes 2-byte little-endian representation of 16-bit unsigned\n * value to array starting at offset.\n *\n * If byte array is not given, creates a new 2-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint16LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(2); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 0;\n out[offset + 1] = value >>> 8;\n return out;\n}\nexports.writeUint16LE = writeUint16LE;\nexports.writeInt16LE = writeUint16LE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * signed 32-bit integer and returns it.\n */\nfunction readInt32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (array[offset] << 24) |\n (array[offset + 1] << 16) |\n (array[offset + 2] << 8) |\n array[offset + 3];\n}\nexports.readInt32BE = readInt32BE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * unsigned 32-bit integer and returns it.\n */\nfunction readUint32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset] << 24) |\n (array[offset + 1] << 16) |\n (array[offset + 2] << 8) |\n array[offset + 3]) >>> 0;\n}\nexports.readUint32BE = readUint32BE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * signed 32-bit integer and returns it.\n */\nfunction readInt32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (array[offset + 3] << 24) |\n (array[offset + 2] << 16) |\n (array[offset + 1] << 8) |\n array[offset];\n}\nexports.readInt32LE = readInt32LE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * unsigned 32-bit integer and returns it.\n */\nfunction readUint32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 3] << 24) |\n (array[offset + 2] << 16) |\n (array[offset + 1] << 8) |\n array[offset]) >>> 0;\n}\nexports.readUint32LE = readUint32LE;\n/**\n * Writes 4-byte big-endian representation of 32-bit unsigned\n * value to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint32BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 24;\n out[offset + 1] = value >>> 16;\n out[offset + 2] = value >>> 8;\n out[offset + 3] = value >>> 0;\n return out;\n}\nexports.writeUint32BE = writeUint32BE;\nexports.writeInt32BE = writeUint32BE;\n/**\n * Writes 4-byte little-endian representation of 32-bit unsigned\n * value to array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint32LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 0;\n out[offset + 1] = value >>> 8;\n out[offset + 2] = value >>> 16;\n out[offset + 3] = value >>> 24;\n return out;\n}\nexports.writeUint32LE = writeUint32LE;\nexports.writeInt32LE = writeUint32LE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * signed 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports exact\n * numbers in range -9007199254740991 to 9007199254740991.\n * If the number stored in the byte array is outside this range,\n * the result is not exact.\n */\nfunction readInt64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var hi = readInt32BE(array, offset);\n var lo = readInt32BE(array, offset + 4);\n return hi * 0x100000000 + lo - ((lo >> 31) * 0x100000000);\n}\nexports.readInt64BE = readInt64BE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * unsigned 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports values up to 2^53-1.\n */\nfunction readUint64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var hi = readUint32BE(array, offset);\n var lo = readUint32BE(array, offset + 4);\n return hi * 0x100000000 + lo;\n}\nexports.readUint64BE = readUint64BE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * signed 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports exact\n * numbers in range -9007199254740991 to 9007199254740991.\n * If the number stored in the byte array is outside this range,\n * the result is not exact.\n */\nfunction readInt64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var lo = readInt32LE(array, offset);\n var hi = readInt32LE(array, offset + 4);\n return hi * 0x100000000 + lo - ((lo >> 31) * 0x100000000);\n}\nexports.readInt64LE = readInt64LE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * unsigned 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports values up to 2^53-1.\n */\nfunction readUint64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var lo = readUint32LE(array, offset);\n var hi = readUint32LE(array, offset + 4);\n return hi * 0x100000000 + lo;\n}\nexports.readUint64LE = readUint64LE;\n/**\n * Writes 8-byte big-endian representation of 64-bit unsigned\n * value to byte array starting at offset.\n *\n * Due to JavaScript limitation, supports values up to 2^53-1.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint64BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n writeUint32BE(value / 0x100000000 >>> 0, out, offset);\n writeUint32BE(value >>> 0, out, offset + 4);\n return out;\n}\nexports.writeUint64BE = writeUint64BE;\nexports.writeInt64BE = writeUint64BE;\n/**\n * Writes 8-byte little-endian representation of 64-bit unsigned\n * value to byte array starting at offset.\n *\n * Due to JavaScript limitation, supports values up to 2^53-1.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint64LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n writeUint32LE(value >>> 0, out, offset);\n writeUint32LE(value / 0x100000000 >>> 0, out, offset + 4);\n return out;\n}\nexports.writeUint64LE = writeUint64LE;\nexports.writeInt64LE = writeUint64LE;\n/**\n * Reads bytes from array starting at offset as big-endian\n * unsigned bitLen-bit integer and returns it.\n *\n * Supports bit lengths divisible by 8, up to 48.\n */\nfunction readUintBE(bitLength, array, offset) {\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"readUintBE supports only bitLengths divisible by 8\");\n }\n if (bitLength / 8 > array.length - offset) {\n throw new Error(\"readUintBE: array is too short for the given bitLength\");\n }\n var result = 0;\n var mul = 1;\n for (var i = bitLength / 8 + offset - 1; i >= offset; i--) {\n result += array[i] * mul;\n mul *= 256;\n }\n return result;\n}\nexports.readUintBE = readUintBE;\n/**\n * Reads bytes from array starting at offset as little-endian\n * unsigned bitLen-bit integer and returns it.\n *\n * Supports bit lengths divisible by 8, up to 48.\n */\nfunction readUintLE(bitLength, array, offset) {\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"readUintLE supports only bitLengths divisible by 8\");\n }\n if (bitLength / 8 > array.length - offset) {\n throw new Error(\"readUintLE: array is too short for the given bitLength\");\n }\n var result = 0;\n var mul = 1;\n for (var i = offset; i < offset + bitLength / 8; i++) {\n result += array[i] * mul;\n mul *= 256;\n }\n return result;\n}\nexports.readUintLE = readUintLE;\n/**\n * Writes a big-endian representation of bitLen-bit unsigned\n * value to array starting at offset.\n *\n * Supports bit lengths divisible by 8, up to 48.\n *\n * If byte array is not given, creates a new one.\n *\n * Returns the output byte array.\n */\nfunction writeUintBE(bitLength, value, out, offset) {\n if (out === void 0) { out = new Uint8Array(bitLength / 8); }\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"writeUintBE supports only bitLengths divisible by 8\");\n }\n if (!int_1.isSafeInteger(value)) {\n throw new Error(\"writeUintBE value must be an integer\");\n }\n var div = 1;\n for (var i = bitLength / 8 + offset - 1; i >= offset; i--) {\n out[i] = (value / div) & 0xff;\n div *= 256;\n }\n return out;\n}\nexports.writeUintBE = writeUintBE;\n/**\n * Writes a little-endian representation of bitLen-bit unsigned\n * value to array starting at offset.\n *\n * Supports bit lengths divisible by 8, up to 48.\n *\n * If byte array is not given, creates a new one.\n *\n * Returns the output byte array.\n */\nfunction writeUintLE(bitLength, value, out, offset) {\n if (out === void 0) { out = new Uint8Array(bitLength / 8); }\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"writeUintLE supports only bitLengths divisible by 8\");\n }\n if (!int_1.isSafeInteger(value)) {\n throw new Error(\"writeUintLE value must be an integer\");\n }\n var div = 1;\n for (var i = offset; i < offset + bitLength / 8; i++) {\n out[i] = (value / div) & 0xff;\n div *= 256;\n }\n return out;\n}\nexports.writeUintLE = writeUintLE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * 32-bit floating-point number and returns it.\n */\nfunction readFloat32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset);\n}\nexports.readFloat32BE = readFloat32BE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * 32-bit floating-point number and returns it.\n */\nfunction readFloat32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset, true);\n}\nexports.readFloat32LE = readFloat32LE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * 64-bit floating-point number (\"double\") and returns it.\n */\nfunction readFloat64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset);\n}\nexports.readFloat64BE = readFloat64BE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * 64-bit floating-point number (\"double\") and returns it.\n */\nfunction readFloat64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset, true);\n}\nexports.readFloat64LE = readFloat64LE;\n/**\n * Writes 4-byte big-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat32BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat32(offset, value);\n return out;\n}\nexports.writeFloat32BE = writeFloat32BE;\n/**\n * Writes 4-byte little-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat32LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat32(offset, value, true);\n return out;\n}\nexports.writeFloat32LE = writeFloat32LE;\n/**\n * Writes 8-byte big-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat64BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat64(offset, value);\n return out;\n}\nexports.writeFloat64BE = writeFloat64BE;\n/**\n * Writes 8-byte little-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat64LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat64(offset, value, true);\n return out;\n}\nexports.writeFloat64LE = writeFloat64LE;\n//# sourceMappingURL=binary.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Sets all values in the given array to zero and returns it.\n *\n * The fact that it sets bytes to zero can be relied on.\n *\n * There is no guarantee that this function makes data disappear from memory,\n * as runtime implementation can, for example, have copying garbage collector\n * that will make copies of sensitive data before we wipe it. Or that an\n * operating system will write our data to swap or sleep image. Another thing\n * is that an optimizing compiler can remove calls to this function or make it\n * no-op. There's nothing we can do with it, so we just do our best and hope\n * that everything will be okay and good will triumph over evil.\n */\nfunction wipe(array) {\n // Right now it's similar to array.fill(0). If it turns\n // out that runtimes optimize this call away, maybe\n // we can try something else.\n for (var i = 0; i < array.length; i++) {\n array[i] = 0;\n }\n return array;\n}\nexports.wipe = wipe;\n//# sourceMappingURL=wipe.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package chacha implements ChaCha stream cipher.\n */\nvar binary_1 = require(\"@stablelib/binary\");\nvar wipe_1 = require(\"@stablelib/wipe\");\n// Number of ChaCha rounds (ChaCha20).\nvar ROUNDS = 20;\n// Applies the ChaCha core function to 16-byte input,\n// 32-byte key key, and puts the result into 64-byte array out.\nfunction core(out, input, key) {\n var j0 = 0x61707865; // \"expa\" -- ChaCha's \"sigma\" constant\n var j1 = 0x3320646E; // \"nd 3\" for 32-byte keys\n var j2 = 0x79622D32; // \"2-by\"\n var j3 = 0x6B206574; // \"te k\"\n var j4 = (key[3] << 24) | (key[2] << 16) | (key[1] << 8) | key[0];\n var j5 = (key[7] << 24) | (key[6] << 16) | (key[5] << 8) | key[4];\n var j6 = (key[11] << 24) | (key[10] << 16) | (key[9] << 8) | key[8];\n var j7 = (key[15] << 24) | (key[14] << 16) | (key[13] << 8) | key[12];\n var j8 = (key[19] << 24) | (key[18] << 16) | (key[17] << 8) | key[16];\n var j9 = (key[23] << 24) | (key[22] << 16) | (key[21] << 8) | key[20];\n var j10 = (key[27] << 24) | (key[26] << 16) | (key[25] << 8) | key[24];\n var j11 = (key[31] << 24) | (key[30] << 16) | (key[29] << 8) | key[28];\n var j12 = (input[3] << 24) | (input[2] << 16) | (input[1] << 8) | input[0];\n var j13 = (input[7] << 24) | (input[6] << 16) | (input[5] << 8) | input[4];\n var j14 = (input[11] << 24) | (input[10] << 16) | (input[9] << 8) | input[8];\n var j15 = (input[15] << 24) | (input[14] << 16) | (input[13] << 8) | input[12];\n var x0 = j0;\n var x1 = j1;\n var x2 = j2;\n var x3 = j3;\n var x4 = j4;\n var x5 = j5;\n var x6 = j6;\n var x7 = j7;\n var x8 = j8;\n var x9 = j9;\n var x10 = j10;\n var x11 = j11;\n var x12 = j12;\n var x13 = j13;\n var x14 = j14;\n var x15 = j15;\n for (var i = 0; i < ROUNDS; i += 2) {\n x0 = x0 + x4 | 0;\n x12 ^= x0;\n x12 = x12 >>> (32 - 16) | x12 << 16;\n x8 = x8 + x12 | 0;\n x4 ^= x8;\n x4 = x4 >>> (32 - 12) | x4 << 12;\n x1 = x1 + x5 | 0;\n x13 ^= x1;\n x13 = x13 >>> (32 - 16) | x13 << 16;\n x9 = x9 + x13 | 0;\n x5 ^= x9;\n x5 = x5 >>> (32 - 12) | x5 << 12;\n x2 = x2 + x6 | 0;\n x14 ^= x2;\n x14 = x14 >>> (32 - 16) | x14 << 16;\n x10 = x10 + x14 | 0;\n x6 ^= x10;\n x6 = x6 >>> (32 - 12) | x6 << 12;\n x3 = x3 + x7 | 0;\n x15 ^= x3;\n x15 = x15 >>> (32 - 16) | x15 << 16;\n x11 = x11 + x15 | 0;\n x7 ^= x11;\n x7 = x7 >>> (32 - 12) | x7 << 12;\n x2 = x2 + x6 | 0;\n x14 ^= x2;\n x14 = x14 >>> (32 - 8) | x14 << 8;\n x10 = x10 + x14 | 0;\n x6 ^= x10;\n x6 = x6 >>> (32 - 7) | x6 << 7;\n x3 = x3 + x7 | 0;\n x15 ^= x3;\n x15 = x15 >>> (32 - 8) | x15 << 8;\n x11 = x11 + x15 | 0;\n x7 ^= x11;\n x7 = x7 >>> (32 - 7) | x7 << 7;\n x1 = x1 + x5 | 0;\n x13 ^= x1;\n x13 = x13 >>> (32 - 8) | x13 << 8;\n x9 = x9 + x13 | 0;\n x5 ^= x9;\n x5 = x5 >>> (32 - 7) | x5 << 7;\n x0 = x0 + x4 | 0;\n x12 ^= x0;\n x12 = x12 >>> (32 - 8) | x12 << 8;\n x8 = x8 + x12 | 0;\n x4 ^= x8;\n x4 = x4 >>> (32 - 7) | x4 << 7;\n x0 = x0 + x5 | 0;\n x15 ^= x0;\n x15 = x15 >>> (32 - 16) | x15 << 16;\n x10 = x10 + x15 | 0;\n x5 ^= x10;\n x5 = x5 >>> (32 - 12) | x5 << 12;\n x1 = x1 + x6 | 0;\n x12 ^= x1;\n x12 = x12 >>> (32 - 16) | x12 << 16;\n x11 = x11 + x12 | 0;\n x6 ^= x11;\n x6 = x6 >>> (32 - 12) | x6 << 12;\n x2 = x2 + x7 | 0;\n x13 ^= x2;\n x13 = x13 >>> (32 - 16) | x13 << 16;\n x8 = x8 + x13 | 0;\n x7 ^= x8;\n x7 = x7 >>> (32 - 12) | x7 << 12;\n x3 = x3 + x4 | 0;\n x14 ^= x3;\n x14 = x14 >>> (32 - 16) | x14 << 16;\n x9 = x9 + x14 | 0;\n x4 ^= x9;\n x4 = x4 >>> (32 - 12) | x4 << 12;\n x2 = x2 + x7 | 0;\n x13 ^= x2;\n x13 = x13 >>> (32 - 8) | x13 << 8;\n x8 = x8 + x13 | 0;\n x7 ^= x8;\n x7 = x7 >>> (32 - 7) | x7 << 7;\n x3 = x3 + x4 | 0;\n x14 ^= x3;\n x14 = x14 >>> (32 - 8) | x14 << 8;\n x9 = x9 + x14 | 0;\n x4 ^= x9;\n x4 = x4 >>> (32 - 7) | x4 << 7;\n x1 = x1 + x6 | 0;\n x12 ^= x1;\n x12 = x12 >>> (32 - 8) | x12 << 8;\n x11 = x11 + x12 | 0;\n x6 ^= x11;\n x6 = x6 >>> (32 - 7) | x6 << 7;\n x0 = x0 + x5 | 0;\n x15 ^= x0;\n x15 = x15 >>> (32 - 8) | x15 << 8;\n x10 = x10 + x15 | 0;\n x5 ^= x10;\n x5 = x5 >>> (32 - 7) | x5 << 7;\n }\n binary_1.writeUint32LE(x0 + j0 | 0, out, 0);\n binary_1.writeUint32LE(x1 + j1 | 0, out, 4);\n binary_1.writeUint32LE(x2 + j2 | 0, out, 8);\n binary_1.writeUint32LE(x3 + j3 | 0, out, 12);\n binary_1.writeUint32LE(x4 + j4 | 0, out, 16);\n binary_1.writeUint32LE(x5 + j5 | 0, out, 20);\n binary_1.writeUint32LE(x6 + j6 | 0, out, 24);\n binary_1.writeUint32LE(x7 + j7 | 0, out, 28);\n binary_1.writeUint32LE(x8 + j8 | 0, out, 32);\n binary_1.writeUint32LE(x9 + j9 | 0, out, 36);\n binary_1.writeUint32LE(x10 + j10 | 0, out, 40);\n binary_1.writeUint32LE(x11 + j11 | 0, out, 44);\n binary_1.writeUint32LE(x12 + j12 | 0, out, 48);\n binary_1.writeUint32LE(x13 + j13 | 0, out, 52);\n binary_1.writeUint32LE(x14 + j14 | 0, out, 56);\n binary_1.writeUint32LE(x15 + j15 | 0, out, 60);\n}\n/**\n * Encrypt src with ChaCha20 stream generated for the given 32-byte key and\n * 8-byte (as in original implementation) or 12-byte (as in RFC7539) nonce and\n * write the result into dst and return it.\n *\n * dst and src may be the same, but otherwise must not overlap.\n *\n * If nonce is 12 bytes, users should not encrypt more than 256 GiB with the\n * same key and nonce, otherwise the stream will repeat. The function will\n * throw error if counter overflows to prevent this.\n *\n * If nonce is 8 bytes, the output is practically unlimited (2^70 bytes, which\n * is more than a million petabytes). However, it is not recommended to\n * generate 8-byte nonces randomly, as the chance of collision is high.\n *\n * Never use the same key and nonce to encrypt more than one message.\n *\n * If nonceInplaceCounterLength is not 0, the nonce is assumed to be a 16-byte\n * array with stream counter in first nonceInplaceCounterLength bytes and nonce\n * in the last remaining bytes. The counter will be incremented inplace for\n * each ChaCha block. This is useful if you need to encrypt one stream of data\n * in chunks.\n */\nfunction streamXOR(key, nonce, src, dst, nonceInplaceCounterLength) {\n if (nonceInplaceCounterLength === void 0) { nonceInplaceCounterLength = 0; }\n // We only support 256-bit keys.\n if (key.length !== 32) {\n throw new Error(\"ChaCha: key size must be 32 bytes\");\n }\n if (dst.length < src.length) {\n throw new Error(\"ChaCha: destination is shorter than source\");\n }\n var nc;\n var counterLength;\n if (nonceInplaceCounterLength === 0) {\n if (nonce.length !== 8 && nonce.length !== 12) {\n throw new Error(\"ChaCha nonce must be 8 or 12 bytes\");\n }\n nc = new Uint8Array(16);\n // First counterLength bytes of nc are counter, starting with zero.\n counterLength = nc.length - nonce.length;\n // Last bytes of nc after counterLength are nonce, set them.\n nc.set(nonce, counterLength);\n }\n else {\n if (nonce.length !== 16) {\n throw new Error(\"ChaCha nonce with counter must be 16 bytes\");\n }\n // This will update passed nonce with counter inplace.\n nc = nonce;\n counterLength = nonceInplaceCounterLength;\n }\n // Allocate temporary space for ChaCha block.\n var block = new Uint8Array(64);\n for (var i = 0; i < src.length; i += 64) {\n // Generate a block.\n core(block, nc, key);\n // XOR block bytes with src into dst.\n for (var j = i; j < i + 64 && j < src.length; j++) {\n dst[j] = src[j] ^ block[j - i];\n }\n // Increment counter.\n incrementCounter(nc, 0, counterLength);\n }\n // Cleanup temporary space.\n wipe_1.wipe(block);\n if (nonceInplaceCounterLength === 0) {\n // Cleanup counter.\n wipe_1.wipe(nc);\n }\n return dst;\n}\nexports.streamXOR = streamXOR;\n/**\n * Generate ChaCha20 stream for the given 32-byte key and 8-byte or 12-byte\n * nonce and write it into dst and return it.\n *\n * Never use the same key and nonce to generate more than one stream.\n *\n * If nonceInplaceCounterLength is not 0, it behaves the same with respect to\n * the nonce as described in the streamXOR documentation.\n *\n * stream is like streamXOR with all-zero src.\n */\nfunction stream(key, nonce, dst, nonceInplaceCounterLength) {\n if (nonceInplaceCounterLength === void 0) { nonceInplaceCounterLength = 0; }\n wipe_1.wipe(dst);\n return streamXOR(key, nonce, dst, dst, nonceInplaceCounterLength);\n}\nexports.stream = stream;\nfunction incrementCounter(counter, pos, len) {\n var carry = 1;\n while (len--) {\n carry = carry + (counter[pos] & 0xff) | 0;\n counter[pos] = carry & 0xff;\n carry >>>= 8;\n pos++;\n }\n if (carry > 0) {\n throw new Error(\"ChaCha: counter overflow\");\n }\n}\n//# sourceMappingURL=chacha.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package constant-time provides functions for performing algorithmically constant-time operations.\n */\n/**\n * NOTE! Due to the inability to guarantee real constant time evaluation of\n * anything in JavaScript VM, this is module is the best effort.\n */\n/**\n * Returns resultIfOne if subject is 1, or resultIfZero if subject is 0.\n *\n * Supports only 32-bit integers, so resultIfOne or resultIfZero are not\n * integers, they'll be converted to them with bitwise operations.\n */\nfunction select(subject, resultIfOne, resultIfZero) {\n return (~(subject - 1) & resultIfOne) | ((subject - 1) & resultIfZero);\n}\nexports.select = select;\n/**\n * Returns 1 if a <= b, or 0 if not.\n * Arguments must be positive 32-bit integers less than or equal to 2^31 - 1.\n */\nfunction lessOrEqual(a, b) {\n return (((a | 0) - (b | 0) - 1) >>> 31) & 1;\n}\nexports.lessOrEqual = lessOrEqual;\n/**\n * Returns 1 if a and b are of equal length and their contents\n * are equal, or 0 otherwise.\n *\n * Note that unlike in equal(), zero-length inputs are considered\n * the same, so this function will return 1.\n */\nfunction compare(a, b) {\n if (a.length !== b.length) {\n return 0;\n }\n var result = 0;\n for (var i = 0; i < a.length; i++) {\n result |= a[i] ^ b[i];\n }\n return (1 & ((result - 1) >>> 8));\n}\nexports.compare = compare;\n/**\n * Returns true if a and b are of equal non-zero length,\n * and their contents are equal, or false otherwise.\n *\n * Note that unlike in compare() zero-length inputs are considered\n * _not_ equal, so this function will return false.\n */\nfunction equal(a, b) {\n if (a.length === 0 || b.length === 0) {\n return false;\n }\n return compare(a, b) !== 0;\n}\nexports.equal = equal;\n//# sourceMappingURL=constant-time.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package poly1305 implements Poly1305 one-time message authentication algorithm.\n */\nvar constant_time_1 = require(\"@stablelib/constant-time\");\nvar wipe_1 = require(\"@stablelib/wipe\");\nexports.DIGEST_LENGTH = 16;\n// Port of Andrew Moon's Poly1305-donna-16. Public domain.\n// https://github.com/floodyberry/poly1305-donna\n/**\n * Poly1305 computes 16-byte authenticator of message using\n * a one-time 32-byte key.\n *\n * Important: key should be used for only one message,\n * it should never repeat.\n */\nvar Poly1305 = /** @class */ (function () {\n function Poly1305(key) {\n this.digestLength = exports.DIGEST_LENGTH;\n this._buffer = new Uint8Array(16);\n this._r = new Uint16Array(10);\n this._h = new Uint16Array(10);\n this._pad = new Uint16Array(8);\n this._leftover = 0;\n this._fin = 0;\n this._finished = false;\n var t0 = key[0] | key[1] << 8;\n this._r[0] = (t0) & 0x1fff;\n var t1 = key[2] | key[3] << 8;\n this._r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n var t2 = key[4] | key[5] << 8;\n this._r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n var t3 = key[6] | key[7] << 8;\n this._r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n var t4 = key[8] | key[9] << 8;\n this._r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this._r[5] = ((t4 >>> 1)) & 0x1ffe;\n var t5 = key[10] | key[11] << 8;\n this._r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n var t6 = key[12] | key[13] << 8;\n this._r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n var t7 = key[14] | key[15] << 8;\n this._r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this._r[9] = ((t7 >>> 5)) & 0x007f;\n this._pad[0] = key[16] | key[17] << 8;\n this._pad[1] = key[18] | key[19] << 8;\n this._pad[2] = key[20] | key[21] << 8;\n this._pad[3] = key[22] | key[23] << 8;\n this._pad[4] = key[24] | key[25] << 8;\n this._pad[5] = key[26] | key[27] << 8;\n this._pad[6] = key[28] | key[29] << 8;\n this._pad[7] = key[30] | key[31] << 8;\n }\n Poly1305.prototype._blocks = function (m, mpos, bytes) {\n var hibit = this._fin ? 0 : 1 << 11;\n var h0 = this._h[0], h1 = this._h[1], h2 = this._h[2], h3 = this._h[3], h4 = this._h[4], h5 = this._h[5], h6 = this._h[6], h7 = this._h[7], h8 = this._h[8], h9 = this._h[9];\n var r0 = this._r[0], r1 = this._r[1], r2 = this._r[2], r3 = this._r[3], r4 = this._r[4], r5 = this._r[5], r6 = this._r[6], r7 = this._r[7], r8 = this._r[8], r9 = this._r[9];\n while (bytes >= 16) {\n var t0 = m[mpos + 0] | m[mpos + 1] << 8;\n h0 += (t0) & 0x1fff;\n var t1 = m[mpos + 2] | m[mpos + 3] << 8;\n h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n var t2 = m[mpos + 4] | m[mpos + 5] << 8;\n h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n var t3 = m[mpos + 6] | m[mpos + 7] << 8;\n h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n var t4 = m[mpos + 8] | m[mpos + 9] << 8;\n h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n var t5 = m[mpos + 10] | m[mpos + 11] << 8;\n h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n var t6 = m[mpos + 12] | m[mpos + 13] << 8;\n h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n var t7 = m[mpos + 14] | m[mpos + 15] << 8;\n h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n var c = 0;\n var d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13);\n d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13);\n d0 &= 0x1fff;\n var d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13);\n d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13);\n d1 &= 0x1fff;\n var d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13);\n d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13);\n d2 &= 0x1fff;\n var d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13);\n d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13);\n d3 &= 0x1fff;\n var d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13);\n d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13);\n d4 &= 0x1fff;\n var d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13);\n d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13);\n d5 &= 0x1fff;\n var d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13);\n d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13);\n d6 &= 0x1fff;\n var d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13);\n d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13);\n d7 &= 0x1fff;\n var d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13);\n d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13);\n d8 &= 0x1fff;\n var d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13);\n d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13);\n d9 &= 0x1fff;\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n mpos += 16;\n bytes -= 16;\n }\n this._h[0] = h0;\n this._h[1] = h1;\n this._h[2] = h2;\n this._h[3] = h3;\n this._h[4] = h4;\n this._h[5] = h5;\n this._h[6] = h6;\n this._h[7] = h7;\n this._h[8] = h8;\n this._h[9] = h9;\n };\n Poly1305.prototype.finish = function (mac, macpos) {\n if (macpos === void 0) { macpos = 0; }\n var g = new Uint16Array(10);\n var c;\n var mask;\n var f;\n var i;\n if (this._leftover) {\n i = this._leftover;\n this._buffer[i++] = 1;\n for (; i < 16; i++) {\n this._buffer[i] = 0;\n }\n this._fin = 1;\n this._blocks(this._buffer, 0, 16);\n }\n c = this._h[1] >>> 13;\n this._h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this._h[i] += c;\n c = this._h[i] >>> 13;\n this._h[i] &= 0x1fff;\n }\n this._h[0] += (c * 5);\n c = this._h[0] >>> 13;\n this._h[0] &= 0x1fff;\n this._h[1] += c;\n c = this._h[1] >>> 13;\n this._h[1] &= 0x1fff;\n this._h[2] += c;\n g[0] = this._h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this._h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) {\n g[i] &= mask;\n }\n mask = ~mask;\n for (i = 0; i < 10; i++) {\n this._h[i] = (this._h[i] & mask) | g[i];\n }\n this._h[0] = ((this._h[0]) | (this._h[1] << 13)) & 0xffff;\n this._h[1] = ((this._h[1] >>> 3) | (this._h[2] << 10)) & 0xffff;\n this._h[2] = ((this._h[2] >>> 6) | (this._h[3] << 7)) & 0xffff;\n this._h[3] = ((this._h[3] >>> 9) | (this._h[4] << 4)) & 0xffff;\n this._h[4] = ((this._h[4] >>> 12) | (this._h[5] << 1) | (this._h[6] << 14)) & 0xffff;\n this._h[5] = ((this._h[6] >>> 2) | (this._h[7] << 11)) & 0xffff;\n this._h[6] = ((this._h[7] >>> 5) | (this._h[8] << 8)) & 0xffff;\n this._h[7] = ((this._h[8] >>> 8) | (this._h[9] << 5)) & 0xffff;\n f = this._h[0] + this._pad[0];\n this._h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this._h[i] + this._pad[i]) | 0) + (f >>> 16)) | 0;\n this._h[i] = f & 0xffff;\n }\n mac[macpos + 0] = this._h[0] >>> 0;\n mac[macpos + 1] = this._h[0] >>> 8;\n mac[macpos + 2] = this._h[1] >>> 0;\n mac[macpos + 3] = this._h[1] >>> 8;\n mac[macpos + 4] = this._h[2] >>> 0;\n mac[macpos + 5] = this._h[2] >>> 8;\n mac[macpos + 6] = this._h[3] >>> 0;\n mac[macpos + 7] = this._h[3] >>> 8;\n mac[macpos + 8] = this._h[4] >>> 0;\n mac[macpos + 9] = this._h[4] >>> 8;\n mac[macpos + 10] = this._h[5] >>> 0;\n mac[macpos + 11] = this._h[5] >>> 8;\n mac[macpos + 12] = this._h[6] >>> 0;\n mac[macpos + 13] = this._h[6] >>> 8;\n mac[macpos + 14] = this._h[7] >>> 0;\n mac[macpos + 15] = this._h[7] >>> 8;\n this._finished = true;\n return this;\n };\n Poly1305.prototype.update = function (m) {\n var mpos = 0;\n var bytes = m.length;\n var want;\n if (this._leftover) {\n want = (16 - this._leftover);\n if (want > bytes) {\n want = bytes;\n }\n for (var i = 0; i < want; i++) {\n this._buffer[this._leftover + i] = m[mpos + i];\n }\n bytes -= want;\n mpos += want;\n this._leftover += want;\n if (this._leftover < 16) {\n return this;\n }\n this._blocks(this._buffer, 0, 16);\n this._leftover = 0;\n }\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this._blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n if (bytes) {\n for (var i = 0; i < bytes; i++) {\n this._buffer[this._leftover + i] = m[mpos + i];\n }\n this._leftover += bytes;\n }\n return this;\n };\n Poly1305.prototype.digest = function () {\n // TODO(dchest): it behaves differently than other hashes/HMAC,\n // because it throws when finished — others just return saved result.\n if (this._finished) {\n throw new Error(\"Poly1305 was finished\");\n }\n var mac = new Uint8Array(16);\n this.finish(mac);\n return mac;\n };\n Poly1305.prototype.clean = function () {\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._r);\n wipe_1.wipe(this._h);\n wipe_1.wipe(this._pad);\n this._leftover = 0;\n this._fin = 0;\n this._finished = true; // mark as finished even if not\n return this;\n };\n return Poly1305;\n}());\nexports.Poly1305 = Poly1305;\n/**\n * Returns 16-byte authenticator of data using a one-time 32-byte key.\n *\n * Important: key should be used for only one message, it should never repeat.\n */\nfunction oneTimeAuth(key, data) {\n var h = new Poly1305(key);\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.oneTimeAuth = oneTimeAuth;\n/**\n * Returns true if two authenticators are 16-byte long and equal.\n * Uses contant-time comparison to avoid leaking timing information.\n */\nfunction equal(a, b) {\n if (a.length !== exports.DIGEST_LENGTH || b.length !== exports.DIGEST_LENGTH) {\n return false;\n }\n return constant_time_1.equal(a, b);\n}\nexports.equal = equal;\n//# sourceMappingURL=poly1305.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar chacha_1 = require(\"@stablelib/chacha\");\nvar poly1305_1 = require(\"@stablelib/poly1305\");\nvar wipe_1 = require(\"@stablelib/wipe\");\nvar binary_1 = require(\"@stablelib/binary\");\nvar constant_time_1 = require(\"@stablelib/constant-time\");\nexports.KEY_LENGTH = 32;\nexports.NONCE_LENGTH = 12;\nexports.TAG_LENGTH = 16;\nvar ZEROS = new Uint8Array(16);\n/**\n * ChaCha20-Poly1305 Authenticated Encryption with Associated Data.\n *\n * Defined in RFC7539.\n */\nvar ChaCha20Poly1305 = /** @class */ (function () {\n /**\n * Creates a new instance with the given 32-byte key.\n */\n function ChaCha20Poly1305(key) {\n this.nonceLength = exports.NONCE_LENGTH;\n this.tagLength = exports.TAG_LENGTH;\n if (key.length !== exports.KEY_LENGTH) {\n throw new Error(\"ChaCha20Poly1305 needs 32-byte key\");\n }\n // Copy key.\n this._key = new Uint8Array(key);\n }\n /**\n * Encrypts and authenticates plaintext, authenticates associated data,\n * and returns sealed ciphertext, which includes authentication tag.\n *\n * RFC7539 specifies 12 bytes for nonce. It may be this 12-byte nonce\n * (\"IV\"), or full 16-byte counter (called \"32-bit fixed-common part\")\n * and nonce.\n *\n * If dst is given (it must be the size of plaintext + the size of tag\n * length) the result will be put into it. Dst and plaintext must not\n * overlap.\n */\n ChaCha20Poly1305.prototype.seal = function (nonce, plaintext, associatedData, dst) {\n if (nonce.length > 16) {\n throw new Error(\"ChaCha20Poly1305: incorrect nonce length\");\n }\n // Allocate space for counter, and set nonce as last bytes of it.\n var counter = new Uint8Array(16);\n counter.set(nonce, counter.length - nonce.length);\n // Generate authentication key by taking first 32-bytes of stream.\n // We pass full counter, which has 12-byte nonce and 4-byte block counter,\n // and it will get incremented after generating the block, which is\n // exactly what we need: we only use the first 32 bytes of 64-byte\n // ChaCha block and discard the next 32 bytes.\n var authKey = new Uint8Array(32);\n chacha_1.stream(this._key, counter, authKey, 4);\n // Allocate space for sealed ciphertext.\n var resultLength = plaintext.length + this.tagLength;\n var result;\n if (dst) {\n if (dst.length !== resultLength) {\n throw new Error(\"ChaCha20Poly1305: incorrect destination length\");\n }\n result = dst;\n }\n else {\n result = new Uint8Array(resultLength);\n }\n // Encrypt plaintext.\n chacha_1.streamXOR(this._key, counter, plaintext, result, 4);\n // Authenticate.\n // XXX: can \"simplify\" here: pass full result (which is already padded\n // due to zeroes prepared for tag), and ciphertext length instead of\n // subarray of result.\n this._authenticate(result.subarray(result.length - this.tagLength, result.length), authKey, result.subarray(0, result.length - this.tagLength), associatedData);\n // Cleanup.\n wipe_1.wipe(counter);\n return result;\n };\n /**\n * Authenticates sealed ciphertext (which includes authentication tag) and\n * associated data, decrypts ciphertext and returns decrypted plaintext.\n *\n * RFC7539 specifies 12 bytes for nonce. It may be this 12-byte nonce\n * (\"IV\"), or full 16-byte counter (called \"32-bit fixed-common part\")\n * and nonce.\n *\n * If authentication fails, it returns null.\n *\n * If dst is given (it must be of ciphertext length minus tag length),\n * the result will be put into it. Dst and plaintext must not overlap.\n */\n ChaCha20Poly1305.prototype.open = function (nonce, sealed, associatedData, dst) {\n if (nonce.length > 16) {\n throw new Error(\"ChaCha20Poly1305: incorrect nonce length\");\n }\n // Sealed ciphertext should at least contain tag.\n if (sealed.length < this.tagLength) {\n // TODO(dchest): should we throw here instead?\n return null;\n }\n // Allocate space for counter, and set nonce as last bytes of it.\n var counter = new Uint8Array(16);\n counter.set(nonce, counter.length - nonce.length);\n // Generate authentication key by taking first 32-bytes of stream.\n var authKey = new Uint8Array(32);\n chacha_1.stream(this._key, counter, authKey, 4);\n // Authenticate.\n // XXX: can simplify and avoid allocation: since authenticate()\n // already allocates tag (from Poly1305.digest(), it can return)\n // it instead of copying to calculatedTag. But then in seal()\n // we'll need to copy it.\n var calculatedTag = new Uint8Array(this.tagLength);\n this._authenticate(calculatedTag, authKey, sealed.subarray(0, sealed.length - this.tagLength), associatedData);\n // Constant-time compare tags and return null if they differ.\n if (!constant_time_1.equal(calculatedTag, sealed.subarray(sealed.length - this.tagLength, sealed.length))) {\n return null;\n }\n // Allocate space for decrypted plaintext.\n var resultLength = sealed.length - this.tagLength;\n var result;\n if (dst) {\n if (dst.length !== resultLength) {\n throw new Error(\"ChaCha20Poly1305: incorrect destination length\");\n }\n result = dst;\n }\n else {\n result = new Uint8Array(resultLength);\n }\n // Decrypt.\n chacha_1.streamXOR(this._key, counter, sealed.subarray(0, sealed.length - this.tagLength), result, 4);\n // Cleanup.\n wipe_1.wipe(counter);\n return result;\n };\n ChaCha20Poly1305.prototype.clean = function () {\n wipe_1.wipe(this._key);\n return this;\n };\n ChaCha20Poly1305.prototype._authenticate = function (tagOut, authKey, ciphertext, associatedData) {\n // Initialize Poly1305 with authKey.\n var h = new poly1305_1.Poly1305(authKey);\n // Authenticate padded associated data.\n if (associatedData) {\n h.update(associatedData);\n if (associatedData.length % 16 > 0) {\n h.update(ZEROS.subarray(associatedData.length % 16));\n }\n }\n // Authenticate padded ciphertext.\n h.update(ciphertext);\n if (ciphertext.length % 16 > 0) {\n h.update(ZEROS.subarray(ciphertext.length % 16));\n }\n // Authenticate length of associated data.\n // XXX: can avoid allocation here?\n var length = new Uint8Array(8);\n if (associatedData) {\n binary_1.writeUint64LE(associatedData.length, length);\n }\n h.update(length);\n // Authenticate length of ciphertext.\n binary_1.writeUint64LE(ciphertext.length, length);\n h.update(length);\n // Get tag and copy it into tagOut.\n var tag = h.digest();\n for (var i = 0; i < tag.length; i++) {\n tagOut[i] = tag[i];\n }\n // Cleanup.\n h.clean();\n wipe_1.wipe(tag);\n wipe_1.wipe(length);\n };\n return ChaCha20Poly1305;\n}());\nexports.ChaCha20Poly1305 = ChaCha20Poly1305;\n//# sourceMappingURL=chacha20poly1305.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isSerializableHash(h) {\n return (typeof h.saveState !== \"undefined\" &&\n typeof h.restoreState !== \"undefined\" &&\n typeof h.cleanSavedState !== \"undefined\");\n}\nexports.isSerializableHash = isSerializableHash;\n// TODO(dchest): figure out the standardized interface for XOF such as\n// SHAKE and BLAKE2X.\n//# sourceMappingURL=hash.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package hmac implements HMAC algorithm.\n */\nvar hash_1 = require(\"@stablelib/hash\");\nvar constant_time_1 = require(\"@stablelib/constant-time\");\nvar wipe_1 = require(\"@stablelib/wipe\");\n/**\n * HMAC implements hash-based message authentication algorithm.\n */\nvar HMAC = /** @class */ (function () {\n /**\n * Constructs a new HMAC with the given Hash and secret key.\n */\n function HMAC(hash, key) {\n this._finished = false; // true if HMAC was finalized\n // Initialize inner and outer hashes.\n this._inner = new hash();\n this._outer = new hash();\n // Set block and digest sizes for this HMAC\n // instance to values from the hash.\n this.blockSize = this._outer.blockSize;\n this.digestLength = this._outer.digestLength;\n // Pad temporary stores a key (or its hash) padded with zeroes.\n var pad = new Uint8Array(this.blockSize);\n if (key.length > this.blockSize) {\n // If key is bigger than hash block size, it must be\n // hashed and this hash is used as a key instead.\n this._inner.update(key).finish(pad).clean();\n }\n else {\n // Otherwise, copy the key into pad.\n pad.set(key);\n }\n // Now two different keys are derived from padded key\n // by xoring a different byte value to each.\n // To make inner hash key, xor byte 0x36 into pad.\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36;\n }\n // Update inner hash with the result.\n this._inner.update(pad);\n // To make outer hash key, xor byte 0x5c into pad.\n // But since we already xored 0x36 there, we must\n // first undo this by xoring it again.\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36 ^ 0x5c;\n }\n // Update outer hash with the result.\n this._outer.update(pad);\n // Save states of both hashes, so that we can quickly restore\n // them later in reset() without the need to remember the actual\n // key and perform this initialization again.\n if (hash_1.isSerializableHash(this._inner) && hash_1.isSerializableHash(this._outer)) {\n this._innerKeyedState = this._inner.saveState();\n this._outerKeyedState = this._outer.saveState();\n }\n // Clean pad.\n wipe_1.wipe(pad);\n }\n /**\n * Returns HMAC state to the state initialized with key\n * to make it possible to run HMAC over the other data with the same\n * key without creating a new instance.\n */\n HMAC.prototype.reset = function () {\n if (!hash_1.isSerializableHash(this._inner) || !hash_1.isSerializableHash(this._outer)) {\n throw new Error(\"hmac: can't reset() because hash doesn't implement restoreState()\");\n }\n // Restore keyed states of inner and outer hashes.\n this._inner.restoreState(this._innerKeyedState);\n this._outer.restoreState(this._outerKeyedState);\n this._finished = false;\n return this;\n };\n /**\n * Cleans HMAC state.\n */\n HMAC.prototype.clean = function () {\n if (hash_1.isSerializableHash(this._inner)) {\n this._inner.cleanSavedState(this._innerKeyedState);\n }\n if (hash_1.isSerializableHash(this._outer)) {\n this._outer.cleanSavedState(this._outerKeyedState);\n }\n this._inner.clean();\n this._outer.clean();\n };\n /**\n * Updates state with provided data.\n */\n HMAC.prototype.update = function (data) {\n this._inner.update(data);\n return this;\n };\n /**\n * Finalizes HMAC and puts the result in out.\n */\n HMAC.prototype.finish = function (out) {\n if (this._finished) {\n // If HMAC was finalized, outer hash is also finalized,\n // so it produces the same digest it produced when it\n // was finalized.\n this._outer.finish(out);\n return this;\n }\n // Finalize inner hash and store the result temporarily.\n this._inner.finish(out);\n // Update outer hash with digest of inner hash and and finalize it.\n this._outer.update(out.subarray(0, this.digestLength)).finish(out);\n this._finished = true;\n return this;\n };\n /**\n * Returns the computed message authentication code.\n */\n HMAC.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n /**\n * Saves HMAC state.\n * This function is needed for PBKDF2 optimization.\n */\n HMAC.prototype.saveState = function () {\n if (!hash_1.isSerializableHash(this._inner)) {\n throw new Error(\"hmac: can't saveState() because hash doesn't implement it\");\n }\n return this._inner.saveState();\n };\n HMAC.prototype.restoreState = function (savedState) {\n if (!hash_1.isSerializableHash(this._inner) || !hash_1.isSerializableHash(this._outer)) {\n throw new Error(\"hmac: can't restoreState() because hash doesn't implement it\");\n }\n this._inner.restoreState(savedState);\n this._outer.restoreState(this._outerKeyedState);\n this._finished = false;\n return this;\n };\n HMAC.prototype.cleanSavedState = function (savedState) {\n if (!hash_1.isSerializableHash(this._inner)) {\n throw new Error(\"hmac: can't cleanSavedState() because hash doesn't implement it\");\n }\n this._inner.cleanSavedState(savedState);\n };\n return HMAC;\n}());\nexports.HMAC = HMAC;\n/**\n * Returns HMAC using the given hash constructor for the key over data.\n */\nfunction hmac(hash, key, data) {\n var h = new HMAC(hash, key);\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hmac = hmac;\n/**\n * Returns true if two HMAC digests are equal.\n * Uses constant-time comparison to avoid leaking timing information.\n *\n * Example:\n *\n * const receivedDigest = ...\n * const realDigest = hmac(SHA256, key, data);\n * if (!equal(receivedDigest, realDigest)) {\n * throw new Error(\"Authentication error\");\n * }\n */\nexports.equal = constant_time_1.equal;\n//# sourceMappingURL=hmac.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar hmac_1 = require(\"@stablelib/hmac\");\nvar wipe_1 = require(\"@stablelib/wipe\");\n/**\n * HMAC-based Extract-and-Expand Key Derivation Function.\n *\n * Implements HKDF from RFC5869.\n *\n * Expands the given master key with salt and info into\n * a limited stream of key material.\n */\nvar HKDF = /** @class */ (function () {\n /**\n * Create a new HKDF instance for the given hash function\n * with the master key, optional salt, and info.\n *\n * - Master key is a high-entropy secret key (not a password).\n * - Salt is a non-secret random value.\n * - Info is application- and/or context-specific information.\n */\n function HKDF(hash, key, salt, info) {\n if (salt === void 0) { salt = new Uint8Array(0); }\n this._counter = new Uint8Array(1); // starts with zero\n this._hash = hash;\n this._info = info;\n // HKDF-Extract uses salt as HMAC key, and key as data.\n var okm = hmac_1.hmac(this._hash, salt, key);\n // Initialize HMAC for expanding with extracted key.\n this._hmac = new hmac_1.HMAC(hash, okm);\n // Allocate buffer.\n this._buffer = new Uint8Array(this._hmac.digestLength);\n this._bufpos = this._buffer.length;\n }\n // Fill buffer with new block of HKDF-Extract output.\n HKDF.prototype._fillBuffer = function () {\n // Increment counter.\n this._counter[0]++;\n var ctr = this._counter[0];\n // Check if counter overflowed.\n if (ctr === 0) {\n throw new Error(\"hkdf: cannot expand more\");\n }\n // Prepare HMAC instance for new data with old key.\n this._hmac.reset();\n // Hash in previous output if it was generated\n // (i.e. counter is greater than 1).\n if (ctr > 1) {\n this._hmac.update(this._buffer);\n }\n // Hash in info if it exists.\n if (this._info) {\n this._hmac.update(this._info);\n }\n // Hash in the counter.\n this._hmac.update(this._counter);\n // Output result to buffer and clean HMAC instance.\n this._hmac.finish(this._buffer);\n // Reset buffer position.\n this._bufpos = 0;\n };\n /**\n * Expand returns next key material of the given length.\n *\n * It throws if expansion limit is reached (which is\n * 254 digests of the underlying HMAC function).\n */\n HKDF.prototype.expand = function (length) {\n var out = new Uint8Array(length);\n for (var i = 0; i < out.length; i++) {\n if (this._bufpos === this._buffer.length) {\n this._fillBuffer();\n }\n out[i] = this._buffer[this._bufpos++];\n }\n return out;\n };\n HKDF.prototype.clean = function () {\n this._hmac.clean();\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._counter);\n this._bufpos = 0;\n };\n return HKDF;\n}());\nexports.HKDF = HKDF;\n// TODO(dchest): maybe implement deriveKey?\n//# sourceMappingURL=hkdf.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BrowserRandomSource = void 0;\nconst QUOTA = 65536;\nclass BrowserRandomSource {\n constructor() {\n this.isAvailable = false;\n this.isInstantiated = false;\n const browserCrypto = typeof self !== 'undefined'\n ? (self.crypto || self.msCrypto) // IE11 has msCrypto\n : null;\n if (browserCrypto && browserCrypto.getRandomValues !== undefined) {\n this._crypto = browserCrypto;\n this.isAvailable = true;\n this.isInstantiated = true;\n }\n }\n randomBytes(length) {\n if (!this.isAvailable || !this._crypto) {\n throw new Error(\"Browser random byte generator is not available.\");\n }\n const out = new Uint8Array(length);\n for (let i = 0; i < out.length; i += QUOTA) {\n this._crypto.getRandomValues(out.subarray(i, i + Math.min(out.length - i, QUOTA)));\n }\n return out;\n }\n}\nexports.BrowserRandomSource = BrowserRandomSource;\n//# sourceMappingURL=browser.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeRandomSource = void 0;\nconst wipe_1 = require(\"@stablelib/wipe\");\nclass NodeRandomSource {\n constructor() {\n this.isAvailable = false;\n this.isInstantiated = false;\n if (typeof require !== \"undefined\") {\n const nodeCrypto = require(\"crypto\");\n if (nodeCrypto && nodeCrypto.randomBytes) {\n this._crypto = nodeCrypto;\n this.isAvailable = true;\n this.isInstantiated = true;\n }\n }\n }\n randomBytes(length) {\n if (!this.isAvailable || !this._crypto) {\n throw new Error(\"Node.js random byte generator is not available.\");\n }\n // Get random bytes (result is Buffer).\n let buffer = this._crypto.randomBytes(length);\n // Make sure we got the length that we requested.\n if (buffer.length !== length) {\n throw new Error(\"NodeRandomSource: got fewer bytes than requested\");\n }\n // Allocate output array.\n const out = new Uint8Array(length);\n // Copy bytes from buffer to output.\n for (let i = 0; i < out.length; i++) {\n out[i] = buffer[i];\n }\n // Cleanup.\n (0, wipe_1.wipe)(buffer);\n return out;\n }\n}\nexports.NodeRandomSource = NodeRandomSource;\n//# sourceMappingURL=node.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SystemRandomSource = void 0;\nconst browser_1 = require(\"./browser\");\nconst node_1 = require(\"./node\");\nclass SystemRandomSource {\n constructor() {\n this.isAvailable = false;\n this.name = \"\";\n // Try browser.\n this._source = new browser_1.BrowserRandomSource();\n if (this._source.isAvailable) {\n this.isAvailable = true;\n this.name = \"Browser\";\n return;\n }\n // If no browser source, try Node.\n this._source = new node_1.NodeRandomSource();\n if (this._source.isAvailable) {\n this.isAvailable = true;\n this.name = \"Node\";\n return;\n }\n // No sources, we're out of options.\n }\n randomBytes(length) {\n if (!this.isAvailable) {\n throw new Error(\"System random byte generator is not available.\");\n }\n return this._source.randomBytes(length);\n }\n}\nexports.SystemRandomSource = SystemRandomSource;\n//# sourceMappingURL=system.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.randomStringForEntropy = exports.randomString = exports.randomUint32 = exports.randomBytes = exports.defaultRandomSource = void 0;\nconst system_1 = require(\"./source/system\");\nconst binary_1 = require(\"@stablelib/binary\");\nconst wipe_1 = require(\"@stablelib/wipe\");\nexports.defaultRandomSource = new system_1.SystemRandomSource();\nfunction randomBytes(length, prng = exports.defaultRandomSource) {\n return prng.randomBytes(length);\n}\nexports.randomBytes = randomBytes;\n/**\n * Returns a uniformly random unsigned 32-bit integer.\n */\nfunction randomUint32(prng = exports.defaultRandomSource) {\n // Generate 4-byte random buffer.\n const buf = randomBytes(4, prng);\n // Convert bytes from buffer into a 32-bit integer.\n // It's not important which byte order to use, since\n // the result is random.\n const result = (0, binary_1.readUint32LE)(buf);\n // Clean the buffer.\n (0, wipe_1.wipe)(buf);\n return result;\n}\nexports.randomUint32 = randomUint32;\n/** 62 alphanumeric characters for default charset of randomString() */\nconst ALPHANUMERIC = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\n/**\n * Returns a uniform random string of the given length\n * with characters from the given charset.\n *\n * Charset must not have more than 256 characters.\n *\n * Default charset generates case-sensitive alphanumeric\n * strings (0-9, A-Z, a-z).\n */\nfunction randomString(length, charset = ALPHANUMERIC, prng = exports.defaultRandomSource) {\n if (charset.length < 2) {\n throw new Error(\"randomString charset is too short\");\n }\n if (charset.length > 256) {\n throw new Error(\"randomString charset is too long\");\n }\n let out = '';\n const charsLen = charset.length;\n const maxByte = 256 - (256 % charsLen);\n while (length > 0) {\n const buf = randomBytes(Math.ceil(length * 256 / maxByte), prng);\n for (let i = 0; i < buf.length && length > 0; i++) {\n const randomByte = buf[i];\n if (randomByte < maxByte) {\n out += charset.charAt(randomByte % charsLen);\n length--;\n }\n }\n (0, wipe_1.wipe)(buf);\n }\n return out;\n}\nexports.randomString = randomString;\n/**\n * Returns uniform random string containing at least the given\n * number of bits of entropy.\n *\n * For example, randomStringForEntropy(128) will return a 22-character\n * alphanumeric string, while randomStringForEntropy(128, \"0123456789\")\n * will return a 39-character numeric string, both will contain at\n * least 128 bits of entropy.\n *\n * Default charset generates case-sensitive alphanumeric\n * strings (0-9, A-Z, a-z).\n */\nfunction randomStringForEntropy(bits, charset = ALPHANUMERIC, prng = exports.defaultRandomSource) {\n const length = Math.ceil(bits / (Math.log(charset.length) / Math.LN2));\n return randomString(length, charset, prng);\n}\nexports.randomStringForEntropy = randomStringForEntropy;\n//# sourceMappingURL=random.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar binary_1 = require(\"@stablelib/binary\");\nvar wipe_1 = require(\"@stablelib/wipe\");\nexports.DIGEST_LENGTH = 32;\nexports.BLOCK_SIZE = 64;\n/**\n * SHA2-256 cryptographic hash algorithm.\n */\nvar SHA256 = /** @class */ (function () {\n function SHA256() {\n /** Length of hash output */\n this.digestLength = exports.DIGEST_LENGTH;\n /** Block size */\n this.blockSize = exports.BLOCK_SIZE;\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this._state = new Int32Array(8); // hash state\n this._temp = new Int32Array(64); // temporary state\n this._buffer = new Uint8Array(128); // buffer for data to hash\n this._bufferLength = 0; // number of bytes in buffer\n this._bytesHashed = 0; // number of total bytes hashed\n this._finished = false; // indicates whether the hash was finalized\n this.reset();\n }\n SHA256.prototype._initState = function () {\n this._state[0] = 0x6a09e667;\n this._state[1] = 0xbb67ae85;\n this._state[2] = 0x3c6ef372;\n this._state[3] = 0xa54ff53a;\n this._state[4] = 0x510e527f;\n this._state[5] = 0x9b05688c;\n this._state[6] = 0x1f83d9ab;\n this._state[7] = 0x5be0cd19;\n };\n /**\n * Resets hash state making it possible\n * to re-use this instance to hash other data.\n */\n SHA256.prototype.reset = function () {\n this._initState();\n this._bufferLength = 0;\n this._bytesHashed = 0;\n this._finished = false;\n return this;\n };\n /**\n * Cleans internal buffers and resets hash state.\n */\n SHA256.prototype.clean = function () {\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._temp);\n this.reset();\n };\n /**\n * Updates hash state with the given data.\n *\n * Throws error when trying to update already finalized hash:\n * instance must be reset to update it again.\n */\n SHA256.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length; }\n if (this._finished) {\n throw new Error(\"SHA256: can't update because hash was finished.\");\n }\n var dataPos = 0;\n this._bytesHashed += dataLength;\n if (this._bufferLength > 0) {\n while (this._bufferLength < this.blockSize && dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n if (this._bufferLength === this.blockSize) {\n hashBlocks(this._temp, this._state, this._buffer, 0, this.blockSize);\n this._bufferLength = 0;\n }\n }\n if (dataLength >= this.blockSize) {\n dataPos = hashBlocks(this._temp, this._state, data, dataPos, dataLength);\n dataLength %= this.blockSize;\n }\n while (dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n return this;\n };\n /**\n * Finalizes hash state and puts hash into out.\n * If hash was already finalized, puts the same value.\n */\n SHA256.prototype.finish = function (out) {\n if (!this._finished) {\n var bytesHashed = this._bytesHashed;\n var left = this._bufferLength;\n var bitLenHi = (bytesHashed / 0x20000000) | 0;\n var bitLenLo = bytesHashed << 3;\n var padLength = (bytesHashed % 64 < 56) ? 64 : 128;\n this._buffer[left] = 0x80;\n for (var i = left + 1; i < padLength - 8; i++) {\n this._buffer[i] = 0;\n }\n binary_1.writeUint32BE(bitLenHi, this._buffer, padLength - 8);\n binary_1.writeUint32BE(bitLenLo, this._buffer, padLength - 4);\n hashBlocks(this._temp, this._state, this._buffer, 0, padLength);\n this._finished = true;\n }\n for (var i = 0; i < this.digestLength / 4; i++) {\n binary_1.writeUint32BE(this._state[i], out, i * 4);\n }\n return this;\n };\n /**\n * Returns the final hash digest.\n */\n SHA256.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization.\n * Returns hash state to be used with restoreState().\n * Only chain value is saved, not buffers or other\n * state variables.\n */\n SHA256.prototype.saveState = function () {\n if (this._finished) {\n throw new Error(\"SHA256: cannot save finished state\");\n }\n return {\n state: new Int32Array(this._state),\n buffer: this._bufferLength > 0 ? new Uint8Array(this._buffer) : undefined,\n bufferLength: this._bufferLength,\n bytesHashed: this._bytesHashed\n };\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization.\n * Restores state saved by saveState() and sets bytesHashed\n * to the given value.\n */\n SHA256.prototype.restoreState = function (savedState) {\n this._state.set(savedState.state);\n this._bufferLength = savedState.bufferLength;\n if (savedState.buffer) {\n this._buffer.set(savedState.buffer);\n }\n this._bytesHashed = savedState.bytesHashed;\n this._finished = false;\n return this;\n };\n /**\n * Cleans state returned by saveState().\n */\n SHA256.prototype.cleanSavedState = function (savedState) {\n wipe_1.wipe(savedState.state);\n if (savedState.buffer) {\n wipe_1.wipe(savedState.buffer);\n }\n savedState.bufferLength = 0;\n savedState.bytesHashed = 0;\n };\n return SHA256;\n}());\nexports.SHA256 = SHA256;\n// Constants\nvar K = new Int32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\nfunction hashBlocks(w, v, p, pos, len) {\n while (len >= 64) {\n var a = v[0];\n var b = v[1];\n var c = v[2];\n var d = v[3];\n var e = v[4];\n var f = v[5];\n var g = v[6];\n var h = v[7];\n for (var i = 0; i < 16; i++) {\n var j = pos + i * 4;\n w[i] = binary_1.readUint32BE(p, j);\n }\n for (var i = 16; i < 64; i++) {\n var u = w[i - 2];\n var t1 = (u >>> 17 | u << (32 - 17)) ^ (u >>> 19 | u << (32 - 19)) ^ (u >>> 10);\n u = w[i - 15];\n var t2 = (u >>> 7 | u << (32 - 7)) ^ (u >>> 18 | u << (32 - 18)) ^ (u >>> 3);\n w[i] = (t1 + w[i - 7] | 0) + (t2 + w[i - 16] | 0);\n }\n for (var i = 0; i < 64; i++) {\n var t1 = (((((e >>> 6 | e << (32 - 6)) ^ (e >>> 11 | e << (32 - 11)) ^\n (e >>> 25 | e << (32 - 25))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n var t2 = (((a >>> 2 | a << (32 - 2)) ^ (a >>> 13 | a << (32 - 13)) ^\n (a >>> 22 | a << (32 - 22))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n v[0] += a;\n v[1] += b;\n v[2] += c;\n v[3] += d;\n v[4] += e;\n v[5] += f;\n v[6] += g;\n v[7] += h;\n pos += 64;\n len -= 64;\n }\n return pos;\n}\nfunction hash(data) {\n var h = new SHA256();\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hash = hash;\n//# sourceMappingURL=sha256.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sharedKey = exports.generateKeyPair = exports.generateKeyPairFromSeed = exports.scalarMultBase = exports.scalarMult = exports.SHARED_KEY_LENGTH = exports.SECRET_KEY_LENGTH = exports.PUBLIC_KEY_LENGTH = void 0;\n/**\n * Package x25519 implements X25519 key agreement.\n */\nconst random_1 = require(\"@stablelib/random\");\nconst wipe_1 = require(\"@stablelib/wipe\");\nexports.PUBLIC_KEY_LENGTH = 32;\nexports.SECRET_KEY_LENGTH = 32;\nexports.SHARED_KEY_LENGTH = 32;\n// Returns new zero-filled 16-element GF (Float64Array).\n// If passed an array of numbers, prefills the returned\n// array with them.\n//\n// We use Float64Array, because we need 48-bit numbers\n// for this implementation.\nfunction gf(init) {\n const r = new Float64Array(16);\n if (init) {\n for (let i = 0; i < init.length; i++) {\n r[i] = init[i];\n }\n }\n return r;\n}\n// Base point.\nconst _9 = new Uint8Array(32);\n_9[0] = 9;\nconst _121665 = gf([0xdb41, 1]);\nfunction car25519(o) {\n let c = 1;\n for (let i = 0; i < 16; i++) {\n let v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c - 1 + 37 * (c - 1);\n}\nfunction sel25519(p, q, b) {\n const c = ~(b - 1);\n for (let i = 0; i < 16; i++) {\n const t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\nfunction pack25519(o, n) {\n const m = gf();\n const t = gf();\n for (let i = 0; i < 16; i++) {\n t[i] = n[i];\n }\n car25519(t);\n car25519(t);\n car25519(t);\n for (let j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (let i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i - 1] >> 16) & 1);\n m[i - 1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14] >> 16) & 1);\n const b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (let i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\nfunction unpack25519(o, n) {\n for (let i = 0; i < 16; i++) {\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n }\n o[15] &= 0x7fff;\n}\nfunction add(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] + b[i];\n }\n}\nfunction sub(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] - b[i];\n }\n}\nfunction mul(o, a, b) {\n let v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n // first car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n // second car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n o[0] = t0;\n o[1] = t1;\n o[2] = t2;\n o[3] = t3;\n o[4] = t4;\n o[5] = t5;\n o[6] = t6;\n o[7] = t7;\n o[8] = t8;\n o[9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\nfunction square(o, a) {\n mul(o, a, a);\n}\nfunction inv25519(o, inp) {\n const c = gf();\n for (let i = 0; i < 16; i++) {\n c[i] = inp[i];\n }\n for (let i = 253; i >= 0; i--) {\n square(c, c);\n if (i !== 2 && i !== 4) {\n mul(c, c, inp);\n }\n }\n for (let i = 0; i < 16; i++) {\n o[i] = c[i];\n }\n}\nfunction scalarMult(n, p) {\n const z = new Uint8Array(32);\n const x = new Float64Array(80);\n const a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf();\n for (let i = 0; i < 31; i++) {\n z[i] = n[i];\n }\n z[31] = (n[31] & 127) | 64;\n z[0] &= 248;\n unpack25519(x, p);\n for (let i = 0; i < 16; i++) {\n b[i] = x[i];\n }\n a[0] = d[0] = 1;\n for (let i = 254; i >= 0; --i) {\n const r = (z[i >>> 3] >>> (i & 7)) & 1;\n sel25519(a, b, r);\n sel25519(c, d, r);\n add(e, a, c);\n sub(a, a, c);\n add(c, b, d);\n sub(b, b, d);\n square(d, e);\n square(f, a);\n mul(a, c, a);\n mul(c, b, e);\n add(e, a, c);\n sub(a, a, c);\n square(b, a);\n sub(c, d, f);\n mul(a, c, _121665);\n add(a, a, d);\n mul(c, c, a);\n mul(a, d, f);\n mul(d, b, x);\n square(b, e);\n sel25519(a, b, r);\n sel25519(c, d, r);\n }\n for (let i = 0; i < 16; i++) {\n x[i + 16] = a[i];\n x[i + 32] = c[i];\n x[i + 48] = b[i];\n x[i + 64] = d[i];\n }\n const x32 = x.subarray(32);\n const x16 = x.subarray(16);\n inv25519(x32, x32);\n mul(x16, x16, x32);\n const q = new Uint8Array(32);\n pack25519(q, x16);\n return q;\n}\nexports.scalarMult = scalarMult;\nfunction scalarMultBase(n) {\n return scalarMult(n, _9);\n}\nexports.scalarMultBase = scalarMultBase;\nfunction generateKeyPairFromSeed(seed) {\n if (seed.length !== exports.SECRET_KEY_LENGTH) {\n throw new Error(`x25519: seed must be ${exports.SECRET_KEY_LENGTH} bytes`);\n }\n const secretKey = new Uint8Array(seed);\n const publicKey = scalarMultBase(secretKey);\n return {\n publicKey,\n secretKey\n };\n}\nexports.generateKeyPairFromSeed = generateKeyPairFromSeed;\nfunction generateKeyPair(prng) {\n const seed = (0, random_1.randomBytes)(32, prng);\n const result = generateKeyPairFromSeed(seed);\n (0, wipe_1.wipe)(seed);\n return result;\n}\nexports.generateKeyPair = generateKeyPair;\n/**\n * Returns a shared key between our secret key and a peer's public key.\n *\n * Throws an error if the given keys are of wrong length.\n *\n * If rejectZero is true throws if the calculated shared key is all-zero.\n * From RFC 7748:\n *\n * > Protocol designers using Diffie-Hellman over the curves defined in\n * > this document must not assume \"contributory behavior\". Specially,\n * > contributory behavior means that both parties' private keys\n * > contribute to the resulting shared key. Since curve25519 and\n * > curve448 have cofactors of 8 and 4 (respectively), an input point of\n * > small order will eliminate any contribution from the other party's\n * > private key. This situation can be detected by checking for the all-\n * > zero output, which implementations MAY do, as specified in Section 6.\n * > However, a large number of existing implementations do not do this.\n *\n * IMPORTANT: the returned key is a raw result of scalar multiplication.\n * To use it as a key material, hash it with a cryptographic hash function.\n */\nfunction sharedKey(mySecretKey, theirPublicKey, rejectZero = false) {\n if (mySecretKey.length !== exports.PUBLIC_KEY_LENGTH) {\n throw new Error(\"X25519: incorrect secret key length\");\n }\n if (theirPublicKey.length !== exports.PUBLIC_KEY_LENGTH) {\n throw new Error(\"X25519: incorrect public key length\");\n }\n const result = scalarMult(mySecretKey, theirPublicKey);\n if (rejectZero) {\n let zeros = 0;\n for (let i = 0; i < result.length; i++) {\n zeros |= result[i];\n }\n if (zeros === 0) {\n throw new Error(\"X25519: invalid shared key\");\n }\n }\n return result;\n}\nexports.sharedKey = sharedKey;\n//# sourceMappingURL=x25519.js.map","export function alloc(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) {\n return globalThis.Buffer.alloc(size);\n }\n return new Uint8Array(size);\n}\nexport function allocUnsafe(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) {\n return globalThis.Buffer.allocUnsafe(size);\n }\n return new Uint8Array(size);\n}","import { allocUnsafe } from './alloc.js';\nexport function concat(arrays, length) {\n if (!length) {\n length = arrays.reduce((acc, curr) => acc + curr.length, 0);\n }\n const output = allocUnsafe(length);\n let offset = 0;\n for (const arr of arrays) {\n output.set(arr, offset);\n offset += arr.length;\n }\n return output;\n}","function base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256);\n var iFACTOR = Math.log(256) / Math.log(BASE);\n function encode(source) {\n if (source instanceof Uint8Array);\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n var size = (pend - pbegin) * iFACTOR + 1 >>> 0;\n var b58 = new Uint8Array(size);\n while (pbegin !== pend) {\n var carry = source[pbegin];\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && it1 !== -1; it1--, i++) {\n carry += 256 * b58[it1] >>> 0;\n b58[it1] = carry % BASE >>> 0;\n carry = carry / BASE >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n if (source[psz] === ' ') {\n return;\n }\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n var size = (source.length - psz) * FACTOR + 1 >>> 0;\n var b256 = new Uint8Array(size);\n while (source[psz]) {\n var carry = BASE_MAP[source.charCodeAt(psz)];\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && it3 !== -1; it3--, i++) {\n carry += BASE * b256[it3] >>> 0;\n b256[it3] = carry % 256 >>> 0;\n carry = carry / 256 >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n if (source[psz] === ' ') {\n return;\n }\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${ name } character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;","const empty = new Uint8Array(0);\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\nconst fromHex = hex => {\n const hexes = hex.match(/../g);\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n};\nconst equals = (aa, bb) => {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n};\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n};\nconst isBinary = o => o instanceof ArrayBuffer || ArrayBuffer.isView(o);\nconst fromString = str => new TextEncoder().encode(str);\nconst toString = b => new TextDecoder().decode(b);\nexport {\n equals,\n coerce,\n isBinary,\n fromHex,\n toHex,\n fromString,\n toString,\n empty\n};","import basex from '../../vendor/base-x.js';\nimport { coerce } from '../bytes.js';\nclass Encoder {\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${ this.prefix }${ this.baseEncode(bytes) }`;\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\nclass Decoder {\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${ JSON.stringify(text) }, ${ this.name } decoder only supports inputs prefixed with ${ this.prefix }`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n } else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder) {\n return decoder.decode(input);\n } else {\n throw RangeError(`Unable to decode multibase string ${ JSON.stringify(input) }, only inputs prefixed with ${ Object.keys(this.decoders) } are supported`);\n }\n }\n}\nexport const or = (left, right) => new ComposedDecoder({\n ...left.decoders || { [left.prefix]: left },\n ...right.decoders || { [right.prefix]: right }\n});\nexport class Codec {\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport const from = ({name, prefix, encode, decode}) => new Codec(name, prefix, encode, decode);\nexport const baseX = ({prefix, name, alphabet}) => {\n const {encode, decode} = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: text => coerce(decode(text))\n });\n};\nconst decode = (string, alphabet, bitsPerChar, name) => {\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n const out = new Uint8Array(end * bitsPerChar / 8 | 0);\n let bits = 0;\n let buffer = 0;\n let written = 0;\n for (let i = 0; i < end; ++i) {\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${ name } character`);\n }\n buffer = buffer << bitsPerChar | value;\n bits += bitsPerChar;\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 255 & buffer >> bits;\n }\n }\n if (bits >= bitsPerChar || 255 & buffer << 8 - bits) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n};\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0;\n let buffer = 0;\n for (let i = 0; i < data.length; ++i) {\n buffer = buffer << 8 | data[i];\n bits += 8;\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & buffer >> bits];\n }\n }\n if (bits) {\n out += alphabet[mask & buffer << bitsPerChar - bits];\n }\n if (pad) {\n while (out.length * bitsPerChar & 7) {\n out += '=';\n }\n }\n return out;\n};\nexport const rfc4648 = ({name, prefix, bitsPerChar, alphabet}) => {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n};","import { from } from './base.js';\nimport {\n fromString,\n toString\n} from '../bytes.js';\nexport const identity = from({\n prefix: '\\0',\n name: 'identity',\n encode: buf => toString(buf),\n decode: str => fromString(str)\n});","import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n});","import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n});","import { baseX } from './base.js';\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n});","import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n});","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});","import { baseX } from './base.js';\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});","import { from } from './base.js';\nconst alphabet = Array.from('\\uD83D\\uDE80\\uD83E\\uDE90\\u2604\\uD83D\\uDEF0\\uD83C\\uDF0C\\uD83C\\uDF11\\uD83C\\uDF12\\uD83C\\uDF13\\uD83C\\uDF14\\uD83C\\uDF15\\uD83C\\uDF16\\uD83C\\uDF17\\uD83C\\uDF18\\uD83C\\uDF0D\\uD83C\\uDF0F\\uD83C\\uDF0E\\uD83D\\uDC09\\u2600\\uD83D\\uDCBB\\uD83D\\uDDA5\\uD83D\\uDCBE\\uD83D\\uDCBF\\uD83D\\uDE02\\u2764\\uD83D\\uDE0D\\uD83E\\uDD23\\uD83D\\uDE0A\\uD83D\\uDE4F\\uD83D\\uDC95\\uD83D\\uDE2D\\uD83D\\uDE18\\uD83D\\uDC4D\\uD83D\\uDE05\\uD83D\\uDC4F\\uD83D\\uDE01\\uD83D\\uDD25\\uD83E\\uDD70\\uD83D\\uDC94\\uD83D\\uDC96\\uD83D\\uDC99\\uD83D\\uDE22\\uD83E\\uDD14\\uD83D\\uDE06\\uD83D\\uDE44\\uD83D\\uDCAA\\uD83D\\uDE09\\u263A\\uD83D\\uDC4C\\uD83E\\uDD17\\uD83D\\uDC9C\\uD83D\\uDE14\\uD83D\\uDE0E\\uD83D\\uDE07\\uD83C\\uDF39\\uD83E\\uDD26\\uD83C\\uDF89\\uD83D\\uDC9E\\u270C\\u2728\\uD83E\\uDD37\\uD83D\\uDE31\\uD83D\\uDE0C\\uD83C\\uDF38\\uD83D\\uDE4C\\uD83D\\uDE0B\\uD83D\\uDC97\\uD83D\\uDC9A\\uD83D\\uDE0F\\uD83D\\uDC9B\\uD83D\\uDE42\\uD83D\\uDC93\\uD83E\\uDD29\\uD83D\\uDE04\\uD83D\\uDE00\\uD83D\\uDDA4\\uD83D\\uDE03\\uD83D\\uDCAF\\uD83D\\uDE48\\uD83D\\uDC47\\uD83C\\uDFB6\\uD83D\\uDE12\\uD83E\\uDD2D\\u2763\\uD83D\\uDE1C\\uD83D\\uDC8B\\uD83D\\uDC40\\uD83D\\uDE2A\\uD83D\\uDE11\\uD83D\\uDCA5\\uD83D\\uDE4B\\uD83D\\uDE1E\\uD83D\\uDE29\\uD83D\\uDE21\\uD83E\\uDD2A\\uD83D\\uDC4A\\uD83E\\uDD73\\uD83D\\uDE25\\uD83E\\uDD24\\uD83D\\uDC49\\uD83D\\uDC83\\uD83D\\uDE33\\u270B\\uD83D\\uDE1A\\uD83D\\uDE1D\\uD83D\\uDE34\\uD83C\\uDF1F\\uD83D\\uDE2C\\uD83D\\uDE43\\uD83C\\uDF40\\uD83C\\uDF37\\uD83D\\uDE3B\\uD83D\\uDE13\\u2B50\\u2705\\uD83E\\uDD7A\\uD83C\\uDF08\\uD83D\\uDE08\\uD83E\\uDD18\\uD83D\\uDCA6\\u2714\\uD83D\\uDE23\\uD83C\\uDFC3\\uD83D\\uDC90\\u2639\\uD83C\\uDF8A\\uD83D\\uDC98\\uD83D\\uDE20\\u261D\\uD83D\\uDE15\\uD83C\\uDF3A\\uD83C\\uDF82\\uD83C\\uDF3B\\uD83D\\uDE10\\uD83D\\uDD95\\uD83D\\uDC9D\\uD83D\\uDE4A\\uD83D\\uDE39\\uD83D\\uDDE3\\uD83D\\uDCAB\\uD83D\\uDC80\\uD83D\\uDC51\\uD83C\\uDFB5\\uD83E\\uDD1E\\uD83D\\uDE1B\\uD83D\\uDD34\\uD83D\\uDE24\\uD83C\\uDF3C\\uD83D\\uDE2B\\u26BD\\uD83E\\uDD19\\u2615\\uD83C\\uDFC6\\uD83E\\uDD2B\\uD83D\\uDC48\\uD83D\\uDE2E\\uD83D\\uDE46\\uD83C\\uDF7B\\uD83C\\uDF43\\uD83D\\uDC36\\uD83D\\uDC81\\uD83D\\uDE32\\uD83C\\uDF3F\\uD83E\\uDDE1\\uD83C\\uDF81\\u26A1\\uD83C\\uDF1E\\uD83C\\uDF88\\u274C\\u270A\\uD83D\\uDC4B\\uD83D\\uDE30\\uD83E\\uDD28\\uD83D\\uDE36\\uD83E\\uDD1D\\uD83D\\uDEB6\\uD83D\\uDCB0\\uD83C\\uDF53\\uD83D\\uDCA2\\uD83E\\uDD1F\\uD83D\\uDE41\\uD83D\\uDEA8\\uD83D\\uDCA8\\uD83E\\uDD2C\\u2708\\uD83C\\uDF80\\uD83C\\uDF7A\\uD83E\\uDD13\\uD83D\\uDE19\\uD83D\\uDC9F\\uD83C\\uDF31\\uD83D\\uDE16\\uD83D\\uDC76\\uD83E\\uDD74\\u25B6\\u27A1\\u2753\\uD83D\\uDC8E\\uD83D\\uDCB8\\u2B07\\uD83D\\uDE28\\uD83C\\uDF1A\\uD83E\\uDD8B\\uD83D\\uDE37\\uD83D\\uDD7A\\u26A0\\uD83D\\uDE45\\uD83D\\uDE1F\\uD83D\\uDE35\\uD83D\\uDC4E\\uD83E\\uDD32\\uD83E\\uDD20\\uD83E\\uDD27\\uD83D\\uDCCC\\uD83D\\uDD35\\uD83D\\uDC85\\uD83E\\uDDD0\\uD83D\\uDC3E\\uD83C\\uDF52\\uD83D\\uDE17\\uD83E\\uDD11\\uD83C\\uDF0A\\uD83E\\uDD2F\\uD83D\\uDC37\\u260E\\uD83D\\uDCA7\\uD83D\\uDE2F\\uD83D\\uDC86\\uD83D\\uDC46\\uD83C\\uDFA4\\uD83D\\uDE47\\uD83C\\uDF51\\u2744\\uD83C\\uDF34\\uD83D\\uDCA3\\uD83D\\uDC38\\uD83D\\uDC8C\\uD83D\\uDCCD\\uD83E\\uDD40\\uD83E\\uDD22\\uD83D\\uDC45\\uD83D\\uDCA1\\uD83D\\uDCA9\\uD83D\\uDC50\\uD83D\\uDCF8\\uD83D\\uDC7B\\uD83E\\uDD10\\uD83E\\uDD2E\\uD83C\\uDFBC\\uD83E\\uDD75\\uD83D\\uDEA9\\uD83C\\uDF4E\\uD83C\\uDF4A\\uD83D\\uDC7C\\uD83D\\uDC8D\\uD83D\\uDCE3\\uD83E\\uDD42');\nconst alphabetBytesToChars = alphabet.reduce((p, c, i) => {\n p[i] = c;\n return p;\n}, []);\nconst alphabetCharsToBytes = alphabet.reduce((p, c, i) => {\n p[c.codePointAt(0)] = i;\n return p;\n}, []);\nfunction encode(data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c];\n return p;\n }, '');\n}\nfunction decode(str) {\n const byts = [];\n for (const char of str) {\n const byt = alphabetCharsToBytes[char.codePointAt(0)];\n if (byt === undefined) {\n throw new Error(`Non-base256emoji character: ${ char }`);\n }\n byts.push(byt);\n }\n return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n prefix: '\\uD83D\\uDE80',\n name: 'base256emoji',\n encode,\n decode\n});","var encode_1 = encode;\nvar MSB = 128, REST = 127, MSBALL = ~REST, INT = Math.pow(2, 31);\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = num & 255 | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = num & 255 | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 128, REST$1 = 127;\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28 ? (b & REST$1) << shift : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (value) {\n return value < N1 ? 1 : value < N2 ? 2 : value < N3 ? 3 : value < N4 ? 4 : value < N5 ? 5 : value < N6 ? 6 : value < N7 ? 7 : value < N8 ? 8 : value < N9 ? 9 : 10;\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;","import varint from '../vendor/varint.js';\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset);\n return [\n code,\n varint.decode.bytes\n ];\n};\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset);\n return target;\n};\nexport const encodingLength = int => {\n return varint.encodingLength(int);\n};","import {\n coerce,\n equals as equalBytes\n} from '../bytes.js';\nimport * as varint from '../varint.js';\nexport const create = (code, digest) => {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n};\nexport const decode = multihash => {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n};\nexport const equals = (a, b) => {\n if (a === b) {\n return true;\n } else {\n return a.code === b.code && a.size === b.size && equalBytes(a.bytes, b.bytes);\n }\n};\nexport class Digest {\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}","import * as Digest from './digest.js';\nexport const from = ({name, code, encode}) => new Hasher(name, code, encode);\nexport class Hasher {\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array ? Digest.create(this.code, result) : result.then(digest => Digest.create(this.code, digest));\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}","import { from } from './hasher.js';\nconst sha = name => async data => new Uint8Array(await crypto.subtle.digest(name, data));\nexport const sha256 = from({\n name: 'sha2-256',\n code: 18,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 19,\n encode: sha('SHA-512')\n});","import { coerce } from '../bytes.js';\nimport * as Digest from './digest.js';\nconst code = 0;\nconst name = 'identity';\nconst encode = coerce;\nconst digest = input => Digest.create(code, encode(input));\nexport const identity = {\n code,\n name,\n encode,\n digest\n};","const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 512;\nexport const encode = node => textEncoder.encode(JSON.stringify(node));\nexport const decode = data => JSON.parse(textDecoder.decode(data));","import * as identityBase from './bases/identity.js';\nimport * as base2 from './bases/base2.js';\nimport * as base8 from './bases/base8.js';\nimport * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as sha2 from './hashes/sha2.js';\nimport * as identity from './hashes/identity.js';\nimport * as raw from './codecs/raw.js';\nimport * as json from './codecs/json.js';\nimport {\n CID,\n hasher,\n digest,\n varint,\n bytes\n} from './index.js';\nconst bases = {\n ...identityBase,\n ...base2,\n ...base8,\n ...base10,\n ...base16,\n ...base32,\n ...base36,\n ...base58,\n ...base64,\n ...base256emoji\n};\nconst hashes = {\n ...sha2,\n ...identity\n};\nconst codecs = {\n raw,\n json\n};\nexport {\n CID,\n hasher,\n digest,\n varint,\n bytes,\n hashes,\n bases,\n codecs\n};","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '../alloc.js';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: { decode }\n };\n}\nconst string = createCodec('utf8', 'u', buf => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, str => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', buf => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, str => {\n str = str.substring(1);\n const buf = allocUnsafe(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii: ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;","import bases from './util/bases.js';\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return globalThis.Buffer.from(string, 'utf8');\n }\n return base.decoder.decode(`${ base.prefix }${ string }`);\n}","import bases from './util/bases.js';\nexport function toString(array, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8');\n }\n return base.encoder.encode(array).substring(1);\n}","import { ChaCha20Poly1305 } from \"@stablelib/chacha20poly1305\";\nimport { HKDF } from \"@stablelib/hkdf\";\nimport { randomBytes } from \"@stablelib/random\";\nimport { hash, SHA256 } from \"@stablelib/sha256\";\nimport * as x25519 from \"@stablelib/x25519\";\nimport { CryptoTypes } from \"@walletconnect/types\";\nimport { concat, fromString, toString } from \"uint8arrays\";\n\nexport const BASE10 = \"base10\";\nexport const BASE16 = \"base16\";\nexport const BASE64 = \"base64pad\";\nexport const UTF8 = \"utf8\";\n\nexport const TYPE_0 = 0;\nexport const TYPE_1 = 1;\n\nconst ZERO_INDEX = 0;\nconst TYPE_LENGTH = 1;\nconst IV_LENGTH = 12;\nconst KEY_LENGTH = 32;\n\nexport function generateKeyPair(): CryptoTypes.KeyPair {\n const keyPair = x25519.generateKeyPair();\n return {\n privateKey: toString(keyPair.secretKey, BASE16),\n publicKey: toString(keyPair.publicKey, BASE16),\n };\n}\n\nexport function generateRandomBytes32(): string {\n const random = randomBytes(KEY_LENGTH);\n return toString(random, BASE16);\n}\n\nexport function deriveSymKey(privateKeyA: string, publicKeyB: string): string {\n const sharedKey = x25519.sharedKey(\n fromString(privateKeyA, BASE16),\n fromString(publicKeyB, BASE16),\n true,\n );\n const hkdf = new HKDF(SHA256, sharedKey);\n const symKey = hkdf.expand(KEY_LENGTH);\n return toString(symKey, BASE16);\n}\n\nexport function hashKey(key: string): string {\n const result = hash(fromString(key, BASE16));\n return toString(result, BASE16);\n}\n\nexport function hashMessage(message: string): string {\n const result = hash(fromString(message, UTF8));\n return toString(result, BASE16);\n}\n\nexport function encodeTypeByte(type: number): Uint8Array {\n return fromString(`${type}`, BASE10);\n}\n\nexport function decodeTypeByte(byte: Uint8Array): number {\n return Number(toString(byte, BASE10));\n}\n\nexport function encrypt(params: CryptoTypes.EncryptParams): string {\n const type = encodeTypeByte(typeof params.type !== \"undefined\" ? params.type : TYPE_0);\n if (decodeTypeByte(type) === TYPE_1 && typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n const senderPublicKey =\n typeof params.senderPublicKey !== \"undefined\"\n ? fromString(params.senderPublicKey, BASE16)\n : undefined;\n\n const iv =\n typeof params.iv !== \"undefined\" ? fromString(params.iv, BASE16) : randomBytes(IV_LENGTH);\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const sealed = box.seal(iv, fromString(params.message, UTF8));\n return serialize({ type, sealed, iv, senderPublicKey });\n}\n\nexport function decrypt(params: CryptoTypes.DecryptParams): string {\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const { sealed, iv } = deserialize(params.encoded);\n const message = box.open(iv, sealed);\n if (message === null) throw new Error(\"Failed to decrypt\");\n return toString(message, UTF8);\n}\n\nexport function serialize(params: CryptoTypes.EncodingParams): string {\n if (decodeTypeByte(params.type) === TYPE_1) {\n if (typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n return toString(\n concat([params.type, params.senderPublicKey, params.iv, params.sealed]),\n BASE64,\n );\n }\n // default to type 0 envelope\n return toString(concat([params.type, params.iv, params.sealed]), BASE64);\n}\n\nexport function deserialize(encoded: string): CryptoTypes.EncodingParams {\n const bytes = fromString(encoded, BASE64);\n const type = bytes.slice(ZERO_INDEX, TYPE_LENGTH);\n const slice1 = TYPE_LENGTH;\n if (decodeTypeByte(type) === TYPE_1) {\n const slice2 = slice1 + KEY_LENGTH;\n const slice3 = slice2 + IV_LENGTH;\n const senderPublicKey = bytes.slice(slice1, slice2);\n const iv = bytes.slice(slice2, slice3);\n const sealed = bytes.slice(slice3);\n return { type, sealed, iv, senderPublicKey };\n }\n // default to type 0 envelope\n const slice2 = slice1 + IV_LENGTH;\n const iv = bytes.slice(slice1, slice2);\n const sealed = bytes.slice(slice2);\n return { type, sealed, iv };\n}\n\nexport function validateDecoding(\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n): CryptoTypes.EncodingValidation {\n const deserialized = deserialize(encoded);\n return validateEncoding({\n type: decodeTypeByte(deserialized.type),\n senderPublicKey:\n typeof deserialized.senderPublicKey !== \"undefined\"\n ? toString(deserialized.senderPublicKey, BASE16)\n : undefined,\n receiverPublicKey: opts?.receiverPublicKey,\n });\n}\n\nexport function validateEncoding(opts?: CryptoTypes.EncodeOptions): CryptoTypes.EncodingValidation {\n const type = opts?.type || TYPE_0;\n if (type === TYPE_1) {\n if (typeof opts?.senderPublicKey === \"undefined\") {\n throw new Error(\"missing sender public key\");\n }\n if (typeof opts?.receiverPublicKey === \"undefined\") {\n throw new Error(\"missing receiver public key\");\n }\n }\n return {\n type,\n senderPublicKey: opts?.senderPublicKey,\n receiverPublicKey: opts?.receiverPublicKey,\n };\n}\n\nexport function isTypeOneEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return (\n result.type === TYPE_1 &&\n typeof result.senderPublicKey === \"string\" &&\n typeof result.receiverPublicKey === \"string\"\n );\n}\n","function e(s,r,i=\"string\"){if(!s[r]||typeof s[r]!==i)throw new Error(`Missing or invalid \"${r}\" param`)}function l(s,r){let i=!0;return r.forEach(t=>{t in s||(i=!1)}),i}function f(s,r){return Array.isArray(s)?s.length===r:Object.keys(s).length===r}function w(s,r){return Array.isArray(s)?s.length>=r:Object.keys(s).length>=r}function u(s,r,i){return(i.length?w(s,r.length):f(s,r.length))?l(s,r):!1}function n(s,r,i=\"_\"){const t=s.split(i);return t[t.length-1].trim().toLowerCase()===r.trim().toLowerCase()}function R(s){return b(s.method)&&a(s.params)}function b(s){return n(s,\"subscribe\")}function a(s){return u(s,[\"topic\"],[])}function P(s){return c(s.method)&&h(s.params)}function c(s){return n(s,\"publish\")}function h(s){return u(s,[\"message\",\"topic\",\"ttl\"],[\"prompt\",\"tag\"])}function _(s){return o(s.method)&&p(s.params)}function o(s){return n(s,\"unsubscribe\")}function p(s){return u(s,[\"id\",\"topic\"],[])}function S(s){return m(s.method)&&d(s.params)}function m(s){return n(s,\"subscription\")}function d(s){return u(s,[\"id\",\"data\"],[])}function g(s){if(!b(s.method))throw new Error(\"JSON-RPC Request has invalid subscribe method\");if(!a(s.params))throw new Error(\"JSON-RPC Request has invalid subscribe params\");const r=s.params;return e(r,\"topic\"),r}function q(s){if(!c(s.method))throw new Error(\"JSON-RPC Request has invalid publish method\");if(!h(s.params))throw new Error(\"JSON-RPC Request has invalid publish params\");const r=s.params;return e(r,\"topic\"),e(r,\"message\"),e(r,\"ttl\",\"number\"),r}function E(s){if(!o(s.method))throw new Error(\"JSON-RPC Request has invalid unsubscribe method\");if(!p(s.params))throw new Error(\"JSON-RPC Request has invalid unsubscribe params\");const r=s.params;return e(r,\"id\"),r}function k(s){if(!m(s.method))throw new Error(\"JSON-RPC Request has invalid subscription method\");if(!d(s.params))throw new Error(\"JSON-RPC Request has invalid subscription params\");const r=s.params;return e(r,\"id\"),e(r,\"data\"),r}const C={waku:{publish:\"waku_publish\",batchPublish:\"waku_batchPublish\",subscribe:\"waku_subscribe\",batchSubscribe:\"waku_batchSubscribe\",subscription:\"waku_subscription\",unsubscribe:\"waku_unsubscribe\",batchUnsubscribe:\"waku_batchUnsubscribe\",batchFetchMessages:\"waku_batchFetchMessages\"},irn:{publish:\"irn_publish\",batchPublish:\"irn_batchPublish\",subscribe:\"irn_subscribe\",batchSubscribe:\"irn_batchSubscribe\",subscription:\"irn_subscription\",unsubscribe:\"irn_unsubscribe\",batchUnsubscribe:\"irn_batchUnsubscribe\",batchFetchMessages:\"irn_batchFetchMessages\"},iridium:{publish:\"iridium_publish\",batchPublish:\"iridium_batchPublish\",subscribe:\"iridium_subscribe\",batchSubscribe:\"iridium_batchSubscribe\",subscription:\"iridium_subscription\",unsubscribe:\"iridium_unsubscribe\",batchUnsubscribe:\"iridium_batchUnsubscribe\",batchFetchMessages:\"iridium_batchFetchMessages\"}};export{C as RELAY_JSONRPC,c as isPublishMethod,h as isPublishParams,P as isPublishRequest,b as isSubscribeMethod,a as isSubscribeParams,R as isSubscribeRequest,m as isSubscriptionMethod,d as isSubscriptionParams,S as isSubscriptionRequest,o as isUnsubscribeMethod,p as isUnsubscribeParams,_ as isUnsubscribeRequest,q as parsePublishRequest,g as parseSubscribeRequest,k as parseSubscriptionRequest,E as parseUnsubscribeRequest};\n//# sourceMappingURL=index.es.js.map\n","import { RELAY_JSONRPC } from \"@walletconnect/relay-api\";\nimport { RelayerTypes } from \"@walletconnect/types\";\n\nexport const RELAYER_DEFAULT_PROTOCOL = \"irn\";\n\nexport function getRelayProtocolName(\n opts?: RelayerTypes.RequestOptions,\n): RelayerTypes.ProtocolOptions {\n return opts?.relay || { protocol: RELAYER_DEFAULT_PROTOCOL };\n}\n\nexport function getRelayProtocolApi(protocol: string) {\n const jsonrpc = RELAY_JSONRPC[protocol];\n if (typeof jsonrpc === \"undefined\") {\n throw new Error(`Relay Protocol not supported: ${protocol}`);\n }\n return jsonrpc;\n}\n","import * as qs from \"query-string\";\nimport { EngineTypes, RelayerTypes } from \"@walletconnect/types\";\n\n// -- uri -------------------------------------------------- //\n\nexport function parseRelayParams(params: any, delimiter = \"-\"): RelayerTypes.ProtocolOptions {\n const relay: any = {};\n const prefix = \"relay\" + delimiter;\n Object.keys(params).forEach((key) => {\n if (key.startsWith(prefix)) {\n const name = key.replace(prefix, \"\");\n const value = params[key];\n relay[name] = value;\n }\n });\n return relay;\n}\n\nexport function parseUri(str: string): EngineTypes.UriParameters {\n // remove android schema prefix\n str = str.includes(\"wc://\") ? str.replace(\"wc://\", \"\") : str;\n // remove ios schema prefix\n str = str.includes(\"wc:\") ? str.replace(\"wc:\", \"\") : str;\n const pathStart: number = str.indexOf(\":\");\n const pathEnd: number | undefined = str.indexOf(\"?\") !== -1 ? str.indexOf(\"?\") : undefined;\n const protocol: string = str.substring(0, pathStart);\n const path: string = str.substring(pathStart + 1, pathEnd);\n const requiredValues = path.split(\"@\");\n const queryString: string = typeof pathEnd !== \"undefined\" ? str.substring(pathEnd) : \"\";\n const queryParams = qs.parse(queryString);\n const methods =\n typeof queryParams.methods === \"string\" ? queryParams.methods.split(\",\") : undefined;\n const result = {\n protocol,\n topic: parseTopic(requiredValues[0]),\n version: parseInt(requiredValues[1], 10),\n symKey: queryParams.symKey as string,\n relay: parseRelayParams(queryParams),\n methods,\n expiryTimestamp: queryParams.expiryTimestamp\n ? parseInt(queryParams.expiryTimestamp as string, 10)\n : undefined,\n };\n return result;\n}\n\nexport function parseTopic(topic: string): string {\n return topic.startsWith(\"//\") ? topic.substring(2) : topic;\n}\n\nexport function formatRelayParams(relay: RelayerTypes.ProtocolOptions, delimiter = \"-\") {\n const prefix = \"relay\";\n const params: any = {};\n Object.keys(relay).forEach((key) => {\n const k = prefix + delimiter + key;\n if (relay[key]) {\n params[k] = relay[key];\n }\n });\n return params;\n}\n\nexport function formatUri(params: EngineTypes.UriParameters): string {\n return (\n `${params.protocol}:${params.topic}@${params.version}?` +\n qs.stringify({\n symKey: params.symKey,\n ...formatRelayParams(params.relay),\n expiryTimestamp: params.expiryTimestamp,\n ...(params.methods ? { methods: params.methods.join(\",\") } : {}),\n })\n );\n}\n","import { ProposalTypes, SessionTypes } from \"@walletconnect/types\";\nimport { mergeArrays } from \"./misc\";\nimport { isConformingNamespaces, isValidNamespaces, isValidObject } from \"./validators\";\n\nexport function getAccountsChains(accounts: SessionTypes.Namespace[\"accounts\"]) {\n const chains: string[] = [];\n accounts.forEach((account) => {\n const [chain, chainId] = account.split(\":\");\n chains.push(`${chain}:${chainId}`);\n });\n\n return chains;\n}\n\nexport function getNamespacesChains(namespaces: SessionTypes.Namespaces) {\n const chains: string[] = [];\n Object.values(namespaces).forEach((namespace) => {\n chains.push(...getAccountsChains(namespace.accounts));\n });\n\n return chains;\n}\n\nexport function getNamespacesMethodsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const methods: SessionTypes.Namespace[\"methods\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) methods.push(...namespace.methods);\n });\n\n return methods;\n}\n\nexport function getNamespacesEventsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const events: SessionTypes.Namespace[\"events\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) events.push(...namespace.events);\n });\n\n return events;\n}\n\nexport function getRequiredNamespacesFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n caller: string,\n): ProposalTypes.RequiredNamespaces {\n const validNamespacesError = isValidNamespaces(namespaces, caller);\n if (validNamespacesError) throw new Error(validNamespacesError.message);\n\n const required = {};\n for (const [namespace, values] of Object.entries(namespaces)) {\n required[namespace] = {\n methods: values.methods,\n events: values.events,\n chains: values.accounts.map((account) => `${account.split(\":\")[0]}:${account.split(\":\")[1]}`),\n };\n }\n return required;\n}\n\nexport type BuildApprovedNamespacesParams = {\n proposal: ProposalTypes.Struct;\n supportedNamespaces: Record<\n string,\n { chains: string[]; methods: string[]; events: string[]; accounts: string[] }\n >;\n};\n\n/**\n * util designed for Wallets that builds namespaces structure by provided supported chains, methods, events & accounts.\n * It takes required & optional namespaces provided in the session proposal\n * along with the supported chains/methods/events/accounts by the wallet and returns a structured namespaces object\n * @param {BuildApprovedNamespacesParams} params\n * @returns {SessionTypes.Namespaces}\n */\nexport function buildApprovedNamespaces(\n params: BuildApprovedNamespacesParams,\n): SessionTypes.Namespaces {\n const {\n proposal: { requiredNamespaces, optionalNamespaces = {} },\n supportedNamespaces,\n } = params;\n const normalizedRequired = normalizeNamespaces(requiredNamespaces);\n const normalizedOptional = normalizeNamespaces(optionalNamespaces);\n\n // build approved namespaces\n const namespaces = {};\n Object.keys(supportedNamespaces).forEach((namespace) => {\n const supportedChains = supportedNamespaces[namespace].chains;\n const supportedMethods = supportedNamespaces[namespace].methods;\n const supportedEvents = supportedNamespaces[namespace].events;\n const supportedAccounts = supportedNamespaces[namespace].accounts;\n\n supportedChains.forEach((chain) => {\n if (!supportedAccounts.some((account) => account.includes(chain))) {\n throw new Error(`No accounts provided for chain ${chain} in namespace ${namespace}`);\n }\n });\n\n namespaces[namespace] = {\n chains: supportedChains,\n methods: supportedMethods,\n events: supportedEvents,\n accounts: supportedAccounts,\n };\n });\n\n // verify all required namespaces are supported\n const err = isConformingNamespaces(requiredNamespaces, namespaces, \"approve()\");\n if (err) throw new Error(err.message);\n\n const approvedNamespaces = {};\n\n // if both required & optional namespaces are empty, return all supported namespaces by the wallet\n if (!Object.keys(requiredNamespaces).length && !Object.keys(optionalNamespaces).length)\n return namespaces;\n\n // assign accounts for the required namespaces\n Object.keys(normalizedRequired).forEach((requiredNamespace) => {\n const chains = supportedNamespaces[requiredNamespace].chains.filter((chain) =>\n normalizedRequired[requiredNamespace]?.chains?.includes(chain),\n );\n const methods = supportedNamespaces[requiredNamespace].methods.filter((method) =>\n normalizedRequired[requiredNamespace]?.methods?.includes(method),\n );\n const events = supportedNamespaces[requiredNamespace].events.filter((event) =>\n normalizedRequired[requiredNamespace]?.events?.includes(event),\n );\n\n const accounts = chains\n .map((chain: string) =>\n supportedNamespaces[requiredNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[requiredNamespace] = {\n chains,\n methods,\n events,\n accounts,\n };\n });\n\n // add optional namespaces\n Object.keys(normalizedOptional).forEach((optionalNamespace) => {\n if (!supportedNamespaces[optionalNamespace]) return;\n\n const chainsToAdd = normalizedOptional[optionalNamespace]?.chains?.filter((chain) =>\n supportedNamespaces[optionalNamespace].chains.includes(chain),\n );\n const methodsToAdd = supportedNamespaces[optionalNamespace].methods.filter((method) =>\n normalizedOptional[optionalNamespace]?.methods?.includes(method),\n );\n const eventsToAdd = supportedNamespaces[optionalNamespace].events.filter((event) =>\n normalizedOptional[optionalNamespace]?.events?.includes(event),\n );\n\n const accountsToAdd = chainsToAdd\n ?.map((chain: string) =>\n supportedNamespaces[optionalNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[optionalNamespace] = {\n chains: mergeArrays(approvedNamespaces[optionalNamespace]?.chains, chainsToAdd),\n methods: mergeArrays(approvedNamespaces[optionalNamespace]?.methods, methodsToAdd),\n events: mergeArrays(approvedNamespaces[optionalNamespace]?.events, eventsToAdd),\n accounts: mergeArrays(approvedNamespaces[optionalNamespace]?.accounts, accountsToAdd),\n };\n });\n\n return approvedNamespaces;\n}\n\nexport function isCaipNamespace(namespace: string): boolean {\n return namespace.includes(\":\");\n}\n\nexport function parseNamespaceKey(namespace: string) {\n return isCaipNamespace(namespace) ? namespace.split(\":\")[0] : namespace;\n}\n\n/**\n * Converts\n * ```\n * {\n * \"eip155:1\": {...},\n * \"eip155:2\": {...},\n * }\n * ```\n * into\n * ```\n * {\n * \"eip155\": {\n * chains: [\"eip155:1\", \"eip155:2\"],\n * ...\n * }\n * }\n *```\n */\nexport function normalizeNamespaces(\n namespaces: ProposalTypes.RequiredNamespaces,\n): ProposalTypes.RequiredNamespaces {\n const normalizedNamespaces = {} as ProposalTypes.RequiredNamespaces;\n if (!isValidObject(namespaces)) return normalizedNamespaces;\n for (const [key, values] of Object.entries(namespaces)) {\n const chains = isCaipNamespace(key) ? [key] : values.chains;\n const methods = values.methods || [];\n const events = values.events || [];\n const normalizedKey = parseNamespaceKey(key);\n normalizedNamespaces[normalizedKey] = {\n ...normalizedNamespaces[normalizedKey],\n chains: mergeArrays(chains, normalizedNamespaces[normalizedKey]?.chains),\n methods: mergeArrays(methods, normalizedNamespaces[normalizedKey]?.methods),\n events: mergeArrays(events, normalizedNamespaces[normalizedKey]?.events),\n };\n }\n return normalizedNamespaces;\n}\n\nexport function getNamespacesFromAccounts(accounts: string[]) {\n const namespaces = {};\n accounts?.forEach((account) => {\n const [namespace, chainId] = account.split(\":\");\n if (!namespaces[namespace]) {\n namespaces[namespace] = {\n accounts: [],\n chains: [],\n events: [],\n };\n }\n namespaces[namespace].accounts.push(account);\n namespaces[namespace].chains.push(`${namespace}:${chainId}`);\n });\n\n return namespaces;\n}\n\nexport function buildNamespacesFromAuth(methods: string[], accounts: string[]) {\n accounts = accounts.map((account) => account.replace(\"did:pkh:\", \"\"));\n\n const namespaces = getNamespacesFromAccounts(accounts);\n\n for (const [_, values] of Object.entries(namespaces) as [string, SessionTypes.Namespace][]) {\n if (!values.methods) {\n values.methods = methods;\n } else {\n values.methods = mergeArrays(values.methods, methods);\n }\n values.events = [\"chainChanged\", \"accountsChanged\"];\n }\n return namespaces;\n}\n","/**\n * Types\n */\nexport type SdkErrorKey = keyof typeof SDK_ERRORS;\nexport type InternalErrorKey = keyof typeof INTERNAL_ERRORS;\n\n/**\n * Constants\n */\nexport const SDK_ERRORS = {\n /* ----- INVALID (1xxx) ----- */\n INVALID_METHOD: {\n message: \"Invalid method.\",\n code: 1001,\n },\n INVALID_EVENT: {\n message: \"Invalid event.\",\n code: 1002,\n },\n INVALID_UPDATE_REQUEST: {\n message: \"Invalid update request.\",\n code: 1003,\n },\n INVALID_EXTEND_REQUEST: {\n message: \"Invalid extend request.\",\n code: 1004,\n },\n INVALID_SESSION_SETTLE_REQUEST: {\n message: \"Invalid session settle request.\",\n code: 1005,\n },\n /* ----- UNAUTHORIZED (3xxx) ----- */\n UNAUTHORIZED_METHOD: {\n message: \"Unauthorized method.\",\n code: 3001,\n },\n UNAUTHORIZED_EVENT: {\n message: \"Unauthorized event.\",\n code: 3002,\n },\n UNAUTHORIZED_UPDATE_REQUEST: {\n message: \"Unauthorized update request.\",\n code: 3003,\n },\n UNAUTHORIZED_EXTEND_REQUEST: {\n message: \"Unauthorized extend request.\",\n code: 3004,\n },\n /* ----- REJECTED (5xxx) ----- */\n USER_REJECTED: {\n message: \"User rejected.\",\n code: 5000,\n },\n USER_REJECTED_CHAINS: {\n message: \"User rejected chains.\",\n code: 5001,\n },\n USER_REJECTED_METHODS: {\n message: \"User rejected methods.\",\n code: 5002,\n },\n USER_REJECTED_EVENTS: {\n message: \"User rejected events.\",\n code: 5003,\n },\n UNSUPPORTED_CHAINS: {\n message: \"Unsupported chains.\",\n code: 5100,\n },\n UNSUPPORTED_METHODS: {\n message: \"Unsupported methods.\",\n code: 5101,\n },\n UNSUPPORTED_EVENTS: {\n message: \"Unsupported events.\",\n code: 5102,\n },\n UNSUPPORTED_ACCOUNTS: {\n message: \"Unsupported accounts.\",\n code: 5103,\n },\n UNSUPPORTED_NAMESPACE_KEY: {\n message: \"Unsupported namespace key.\",\n code: 5104,\n },\n /* ----- REASON (6xxx) ----- */\n USER_DISCONNECTED: {\n message: \"User disconnected.\",\n code: 6000,\n },\n /* ----- FAILURE (7xxx) ----- */\n SESSION_SETTLEMENT_FAILED: {\n message: \"Session settlement failed.\",\n code: 7000,\n },\n /* ----- PAIRING (10xxx) ----- */\n WC_METHOD_UNSUPPORTED: {\n message: \"Unsupported wc_ method.\",\n code: 10001,\n },\n};\n\nexport const INTERNAL_ERRORS = {\n NOT_INITIALIZED: {\n message: \"Not initialized.\",\n code: 1,\n },\n NO_MATCHING_KEY: {\n message: \"No matching key.\",\n code: 2,\n },\n RESTORE_WILL_OVERRIDE: {\n message: \"Restore will override.\",\n code: 3,\n },\n RESUBSCRIBED: {\n message: \"Resubscribed.\",\n code: 4,\n },\n MISSING_OR_INVALID: {\n message: \"Missing or invalid.\",\n code: 5,\n },\n EXPIRED: {\n message: \"Expired.\",\n code: 6,\n },\n UNKNOWN_TYPE: {\n message: \"Unknown type.\",\n code: 7,\n },\n MISMATCHED_TOPIC: {\n message: \"Mismatched topic.\",\n code: 8,\n },\n NON_CONFORMING_NAMESPACES: {\n message: \"Non conforming namespaces.\",\n code: 9,\n },\n};\n\n/**\n * Utilities\n */\nexport function getInternalError(key: InternalErrorKey, context?: string | number) {\n const { message, code } = INTERNAL_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n\nexport function getSdkError(key: SdkErrorKey, context?: string | number) {\n const { message, code } = SDK_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n","import { SessionTypes, ProposalTypes, RelayerTypes, EngineTypes } from \"@walletconnect/types\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport {\n getNamespacesChains,\n getNamespacesMethodsForChainId,\n getNamespacesEventsForChainId,\n getAccountsChains,\n} from \"./namespaces\";\nimport { getSdkError, getInternalError } from \"./errors\";\nimport { hasOverlap } from \"./misc\";\nimport { getChainsFromNamespace } from \"./caip\";\n\nexport type ErrorObject = { message: string; code: number } | null;\n\n// -- types validation ----------------------------------------------------- //\n\nexport function isValidArray(arr: any, itemCondition?: (item: any) => boolean) {\n if (Array.isArray(arr)) {\n if (typeof itemCondition !== \"undefined\" && arr.length) {\n return arr.every(itemCondition);\n } else {\n return true;\n }\n }\n return false;\n}\n\nexport function isValidObject(obj: any) {\n return Object.getPrototypeOf(obj) === Object.prototype && Object.keys(obj).length;\n}\n\nexport function isUndefined(input: any): input is undefined {\n return typeof input === \"undefined\";\n}\n\nexport function isValidString(input: any, optional: boolean): input is string {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"string\" && Boolean(input.trim().length);\n}\n\nexport function isValidNumber(input: any, optional: boolean) {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"number\" && !isNaN(input);\n}\n\n// -- protocol validation -------------------------------------------------- //\n\nexport function isSessionCompatible(session: SessionTypes.Struct, params: EngineTypes.FindParams) {\n const { requiredNamespaces } = params;\n const sessionKeys = Object.keys(session.namespaces);\n const paramsKeys = Object.keys(requiredNamespaces);\n let compatible = true;\n\n if (!hasOverlap(paramsKeys, sessionKeys)) return false;\n\n sessionKeys.forEach((key) => {\n const { accounts, methods, events } = session.namespaces[key];\n const chains = getAccountsChains(accounts);\n const requiredNamespace = requiredNamespaces[key];\n if (\n !hasOverlap(getChainsFromNamespace(key, requiredNamespace), chains) ||\n !hasOverlap(requiredNamespace.methods, methods) ||\n !hasOverlap(requiredNamespace.events, events)\n ) {\n compatible = false;\n }\n });\n\n return compatible;\n}\n\nexport function isValidChainId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n return split.length === 2;\n }\n return false;\n}\n\nexport function isValidAccountId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n if (split.length === 3) {\n const chainId = split[0] + \":\" + split[1];\n return !!split[2] && isValidChainId(chainId);\n }\n }\n return false;\n}\n\nexport function isValidUrl(value: any) {\n if (isValidString(value, false)) {\n try {\n const url = new URL(value);\n return typeof url !== \"undefined\";\n } catch (e) {\n return false;\n }\n }\n return false;\n}\n\nexport function isProposalStruct(input: any): input is ProposalTypes.Struct {\n return input?.proposer?.publicKey;\n}\n\nexport function isSessionStruct(input: any): input is SessionTypes.Struct {\n return input?.topic;\n}\n\nexport function isValidController(input: any, method: string) {\n let error: ErrorObject = null;\n if (!isValidString(input?.publicKey, false)) {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method} controller public key should be a string`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceMethodsOrEvents(input: any): input is string {\n let valid = true;\n if (isValidArray(input)) {\n if (input.length) {\n valid = input.every((item: any) => isValidString(item, false));\n }\n } else {\n valid = false;\n }\n\n return valid;\n}\n\nexport function isValidChains(key: string, chains: any, context: string) {\n let error: ErrorObject = null;\n\n if (isValidArray(chains) && chains.length) {\n chains.forEach((chain: any) => {\n if (error) return;\n if (!isValidChainId(chain)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chain ${chain} should be a string and conform to \"namespace:chainId\" format`,\n );\n }\n });\n } else if (!isValidChainId(key)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chains must be defined as \"namespace:chainId\" e.g. \"eip155:1\": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: [\"eip155:1\", \"eip155:5\"] }`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceChains(namespaces: any, method: string, type: string) {\n let error: ErrorObject = null;\n Object.entries(namespaces).forEach(([key, namespace]: [string, any]) => {\n if (error) return;\n const validChainsError = isValidChains(\n key,\n getChainsFromNamespace(key, namespace),\n `${method} ${type}`,\n );\n if (validChainsError) {\n error = validChainsError;\n }\n });\n\n return error;\n}\n\nexport function isValidAccounts(accounts: any, context: string) {\n let error: ErrorObject = null;\n if (isValidArray(accounts)) {\n accounts.forEach((account: any) => {\n if (error) return;\n if (!isValidAccountId(account)) {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, account ${account} should be a string and conform to \"namespace:chainId:address\" format`,\n );\n }\n });\n } else {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, accounts should be an array of strings conforming to \"namespace:chainId:address\" format`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceAccounts(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validAccountsError = isValidAccounts(namespace?.accounts, `${method} namespace`);\n if (validAccountsError) {\n error = validAccountsError;\n }\n });\n\n return error;\n}\n\nexport function isValidActions(namespace: any, context: string) {\n let error: ErrorObject = null;\n if (!isValidNamespaceMethodsOrEvents(namespace?.methods)) {\n error = getSdkError(\n \"UNSUPPORTED_METHODS\",\n `${context}, methods should be an array of strings or empty array for no methods`,\n );\n } else if (!isValidNamespaceMethodsOrEvents(namespace?.events)) {\n error = getSdkError(\n \"UNSUPPORTED_EVENTS\",\n `${context}, events should be an array of strings or empty array for no events`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceActions(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validActionsError = isValidActions(namespace, `${method}, namespace`);\n if (validActionsError) {\n error = validActionsError;\n }\n });\n\n return error;\n}\n\nexport function isValidRequiredNamespaces(input: any, method: string, type: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validChainsError = isValidNamespaceChains(input, method, type);\n if (validChainsError) {\n error = validChainsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, ${type} should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaces(input: any, method: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validAccountsError = isValidNamespaceAccounts(input, method);\n if (validAccountsError) {\n error = validAccountsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, namespaces should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidRelay(input: any): input is RelayerTypes.ProtocolOptions {\n return isValidString(input.protocol, true);\n}\n\nexport function isValidRelays(\n input: any,\n optional: boolean,\n): input is RelayerTypes.ProtocolOptions[] {\n let valid = false;\n\n if (optional && !input) valid = true;\n else if (input && isValidArray(input) && input.length) {\n input.forEach((relay: RelayerTypes.ProtocolOptions) => {\n valid = isValidRelay(relay);\n });\n }\n\n return valid;\n}\n\nexport function isValidId(input: any) {\n return typeof input === \"number\";\n}\n\nexport function isValidParams(input: any) {\n return typeof input !== \"undefined\" && typeof input !== null;\n}\n\nexport function isValidErrorReason(input: any): input is ErrorResponse {\n if (!input) return false;\n if (typeof input !== \"object\") return false;\n if (!input.code || !isValidNumber(input.code, false)) return false;\n if (!input.message || !isValidString(input.message, false)) return false;\n\n return true;\n}\n\nexport function isValidRequest(request: any) {\n if (isUndefined(request)) return false;\n if (!isValidString(request.method, false)) return false;\n return true;\n}\n\nexport function isValidResponse(response: any) {\n if (isUndefined(response)) return false;\n if (isUndefined(response.result) && isUndefined(response.error)) return false;\n if (!isValidNumber(response.id, false)) return false;\n if (!isValidString(response.jsonrpc, false)) return false;\n return true;\n}\n\nexport function isValidEvent(event: any) {\n if (isUndefined(event)) return false;\n if (!isValidString(event.name, false)) return false;\n return true;\n}\n\nexport function isValidNamespacesChainId(namespaces: SessionTypes.Namespaces, chainId: string) {\n if (!isValidChainId(chainId)) return false;\n const chains = getNamespacesChains(namespaces);\n if (!chains.includes(chainId)) return false;\n\n return true;\n}\n\nexport function isValidNamespacesRequest(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n method: string,\n) {\n if (!isValidString(method, false)) return false;\n const methods = getNamespacesMethodsForChainId(namespaces, chainId);\n return methods.includes(method);\n}\n\nexport function isValidNamespacesEvent(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n eventName: string,\n) {\n if (!isValidString(eventName, false)) return false;\n const events = getNamespacesEventsForChainId(namespaces, chainId);\n return events.includes(eventName);\n}\n\nexport function isConformingNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n namespaces: SessionTypes.Namespaces,\n context: string,\n) {\n let error: ErrorObject = null;\n\n const parsedRequired = parseNamespaces(requiredNamespaces);\n const parsedApproved = parseApprovedNamespaces(namespaces);\n const requiredChains = Object.keys(parsedRequired);\n const approvedChains = Object.keys(parsedApproved);\n\n const uniqueRequired = filterDuplicateNamespaces(Object.keys(requiredNamespaces));\n const uniqueApproved = filterDuplicateNamespaces(Object.keys(namespaces));\n const missingRequiredNamespaces = uniqueRequired.filter(\n (namespace) => !uniqueApproved.includes(namespace),\n );\n\n if (missingRequiredNamespaces.length) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces keys don't satisfy requiredNamespaces.\n Required: ${missingRequiredNamespaces.toString()}\n Received: ${Object.keys(namespaces).toString()}`,\n );\n }\n\n if (!hasOverlap(requiredChains, approvedChains)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces chains don't satisfy required namespaces.\n Required: ${requiredChains.toString()}\n Approved: ${approvedChains.toString()}`,\n );\n }\n\n // validate inline defined chains with approved accounts\n Object.keys(namespaces).forEach((chain) => {\n if (!chain.includes(\":\")) return;\n if (error) return;\n const chains = getAccountsChains(namespaces[chain].accounts);\n if (!chains.includes(chain)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces accounts don't satisfy namespace accounts for ${chain}\n Required: ${chain}\n Approved: ${chains.toString()}`,\n );\n }\n });\n\n requiredChains.forEach((chain) => {\n if (error) return;\n\n if (!hasOverlap(parsedRequired[chain].methods, parsedApproved[chain].methods)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces methods don't satisfy namespace methods for ${chain}`,\n );\n } else if (!hasOverlap(parsedRequired[chain].events, parsedApproved[chain].events)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces events don't satisfy namespace events for ${chain}`,\n );\n }\n });\n\n return error;\n}\n\nfunction parseNamespaces(namespaces: ProposalTypes.RequiredNamespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n // e.g. `eip155:1`\n const isInlineChainDefinition = key.includes(\":\");\n\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n namespaces[key].chains?.forEach((chain) => {\n parsed[chain] = {\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nfunction filterDuplicateNamespaces(namespaces: string[]) {\n return [\n ...new Set(\n namespaces.map((namespace) =>\n namespace.includes(\":\") ? namespace.split(\":\")[0] : namespace,\n ),\n ),\n ];\n}\n\nfunction parseApprovedNamespaces(namespaces: SessionTypes.Namespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n const isInlineChainDefinition = key.includes(\":\");\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n const chains = getAccountsChains(namespaces[key].accounts);\n chains?.forEach((chain) => {\n parsed[chain] = {\n accounts: namespaces[key].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nexport function isValidRequestExpiry(expiry: number, boundaries: { min: number; max: number }) {\n return isValidNumber(expiry, false) && expiry <= boundaries.max && expiry >= boundaries.min;\n}\n","import { getEnvironment, ENV_MAP, isBrowser, isReactNative } from \"./misc\";\n\nexport function isOnline(): Promise {\n const env = getEnvironment();\n return new Promise((resolve) => {\n switch (env) {\n case ENV_MAP.browser:\n resolve(getBrowserOnlineStatus());\n break;\n case ENV_MAP.reactNative:\n resolve(getReactNativeOnlineStatus());\n break;\n case ENV_MAP.node:\n resolve(getNodeOnlineStatus());\n break;\n default:\n resolve(true);\n }\n });\n}\n\nexport function getBrowserOnlineStatus() {\n return isBrowser() && navigator?.onLine;\n}\n\nexport async function getReactNativeOnlineStatus(): Promise {\n // global.NetInfo is set in react-native-compat\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n const state = await (global as any)?.NetInfo.fetch();\n return state?.isConnected;\n }\n // fallback to true if global.NetInfo is undefined, meaning an older version of react-native-compat is used\n return true;\n}\n\nexport function getNodeOnlineStatus() {\n /**\n * TODO: need to implement\n */\n return true;\n}\n\nexport function subscribeToNetworkChange(callbackHandler: (connected: boolean) => void) {\n const env = getEnvironment();\n switch (env) {\n case ENV_MAP.browser:\n subscribeToBrowserNetworkChange(callbackHandler);\n break;\n case ENV_MAP.reactNative:\n subscribeToReactNativeNetworkChange(callbackHandler);\n break;\n case ENV_MAP.node:\n // wip: need to implement\n break;\n default:\n break;\n }\n}\n\nexport function subscribeToBrowserNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (!isReactNative() && isBrowser()) {\n window.addEventListener(\"online\", () => callbackHandler(true));\n window.addEventListener(\"offline\", () => callbackHandler(false));\n }\n}\n\n// global.NetInfo is set in react-native-compat\nexport function subscribeToReactNativeNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n (global as any)?.NetInfo.addEventListener((state: any) => callbackHandler(state?.isConnected));\n }\n}\n","const memoryStore = {};\n\nexport abstract class MemoryStore {\n static get(key: string) {\n return memoryStore[key] as T | undefined;\n }\n\n static set(key: string, value: unknown) {\n memoryStore[key] = value;\n }\n\n static delete(key: string) {\n delete memoryStore[key];\n }\n}\n"],"names":["c","this","delay_1","delay","require$$1","require$$2","require$$0","watch","require$$3","require$$4","cjs","decode","strictUriEncode","splitOnFirst","h","l","E","g","u","x","T","b.parse","b.stringify","M","y","R","m","f","N","global","version","logger","concat","_BN","_constructorGuard","throwFault","toHex","Zero","r","hashMessage","minimalisticAssert","assert","inherits_browserModule","utils","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","BlockHash","common","ft_1","ch32","maj32","s0_256","s1_256","g0_256","g1_256","shaCommon","SHA256","SHA512","sha","hmac","commonjsRequire","BN","base","hash","EC","j","A","$","k","O","wipe_1","hmac_1","require","fromString","toString","from","basex","encode","identity","varint","varint.encodingLength","varint.encodeTo","Digest.create","base2","base8","base10","base16","base32","base36","base64","base256emoji","bases","P","d","K.generateKeyPair","i","p","K.sharedKey","t","v","b","C","m.parse","m.stringify","S","z","w","F","o","a"],"mappings":"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OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB;EACA,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAChB,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAChB,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;EACxC,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C;EACA,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,C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,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAA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AAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAA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IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,G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,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAA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E,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UA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AAE,EAAE;EACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;EACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;EACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACxD,CAAC,CAAC;AACF;EACA,IAAI,EAAE,GAAG;EACT,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;EACxD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EACxD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;EACxD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE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AAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EACxE,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC1E,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC1E,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC1E,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC3E,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC3E,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EAC/E,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC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CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACtd,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,GAAG,IAAI,EAAE,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"} +\ No newline at end of file ++{"version":3,"file":"index.umd.js","sources":["../src/caip.js","../../../node_modules/detect-browser/es/index.js","../../../node_modules/@walletconnect/time/node_modules/tslib/tslib.es6.js","../../../node_modules/@walletconnect/time/dist/cjs/utils/delay.js","../../../node_modules/@walletconnect/time/dist/cjs/constants/misc.js","../../../node_modules/@walletconnect/time/dist/cjs/constants/time.js","../../../node_modules/@walletconnect/time/dist/cjs/constants/index.js","../../../node_modules/@walletconnect/time/dist/cjs/utils/convert.js","../../../node_modules/@walletconnect/time/dist/cjs/utils/index.js","../../../node_modules/@walletconnect/time/dist/cjs/watch.js","../../../node_modules/@walletconnect/time/dist/cjs/types/watch.js","../../../node_modules/@walletconnect/time/dist/cjs/types/index.js","../../../node_modules/@walletconnect/time/dist/cjs/index.js","../../../node_modules/@walletconnect/window-getters/dist/cjs/index.js","../../../node_modules/@walletconnect/window-metadata/dist/cjs/index.js","../../../node_modules/strict-uri-encode/index.js","../../../node_modules/decode-uri-component/index.js","../../../node_modules/split-on-first/index.js","../../../node_modules/filter-obj/index.js","../../../node_modules/query-string/index.js","../src/misc.js","../../../node_modules/js-sha3/src/sha3.js","../../../node_modules/@ethersproject/logger/lib.esm/_version.js","../../../node_modules/@ethersproject/logger/lib.esm/index.js","../../../node_modules/@ethersproject/bytes/lib.esm/_version.js","../../../node_modules/@ethersproject/bytes/lib.esm/index.js","../../../node_modules/@ethersproject/keccak256/lib.esm/index.js","../../../node_modules/bn.js/lib/bn.js","../../../node_modules/@ethersproject/bignumber/lib.esm/_version.js","../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js","../../../node_modules/@ethersproject/bignumber/lib.esm/fixednumber.js","../../../node_modules/@ethersproject/strings/lib.esm/_version.js","../../../node_modules/@ethersproject/strings/lib.esm/utf8.js","../../../node_modules/@ethersproject/strings/lib.esm/idna.js","../../../node_modules/@ethersproject/hash/lib.esm/_version.js","../../../node_modules/@ethersproject/base64/lib.esm/base64.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js","../../../node_modules/@ethersproject/hash/lib.esm/namehash.js","../../../node_modules/@ethersproject/hash/lib.esm/message.js","../../../node_modules/@ethersproject/rlp/lib.esm/_version.js","../../../node_modules/@ethersproject/rlp/lib.esm/index.js","../../../node_modules/@ethersproject/address/lib.esm/_version.js","../../../node_modules/@ethersproject/address/lib.esm/index.js","../../../node_modules/@ethersproject/properties/lib.esm/_version.js","../../../node_modules/@ethersproject/properties/lib.esm/index.js","../../../node_modules/@ethersproject/hash/lib.esm/typed-data.js","../../../node_modules/minimalistic-assert/index.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/hash.js/lib/hash/utils.js","../../../node_modules/hash.js/lib/hash/common.js","../../../node_modules/hash.js/lib/hash/sha/common.js","../../../node_modules/hash.js/lib/hash/sha/1.js","../../../node_modules/hash.js/lib/hash/sha/256.js","../../../node_modules/hash.js/lib/hash/sha/224.js","../../../node_modules/hash.js/lib/hash/sha/512.js","../../../node_modules/hash.js/lib/hash/sha/384.js","../../../node_modules/hash.js/lib/hash/sha.js","../../../node_modules/hash.js/lib/hash/ripemd.js","../../../node_modules/hash.js/lib/hash/hmac.js","../../../node_modules/hash.js/lib/hash.js","../../../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../../../node_modules/@ethersproject/signing-key/lib.esm/_version.js","../../../node_modules/@ethersproject/signing-key/lib.esm/index.js","../../../node_modules/@ethersproject/transactions/lib.esm/_version.js","../../../node_modules/@ethersproject/transactions/lib.esm/index.js","../src/signatures.js","../src/cacao.js","../../../node_modules/@stablelib/int/lib/int.js","../../../node_modules/@stablelib/binary/lib/binary.js","../../../node_modules/@stablelib/wipe/lib/wipe.js","../../../node_modules/@stablelib/chacha/lib/chacha.js","../../../node_modules/@stablelib/constant-time/lib/constant-time.js","../../../node_modules/@stablelib/poly1305/lib/poly1305.js","../../../node_modules/@stablelib/chacha20poly1305/lib/chacha20poly1305.js","../../../node_modules/@stablelib/hash/lib/hash.js","../../../node_modules/@stablelib/hmac/lib/hmac.js","../../../node_modules/@stablelib/hkdf/lib/hkdf.js","../../../node_modules/@stablelib/random/lib/source/browser.js","../../../node_modules/@stablelib/random/lib/source/node.js","../../../node_modules/@stablelib/random/lib/source/system.js","../../../node_modules/@stablelib/random/lib/random.js","../../../node_modules/@stablelib/sha256/lib/sha256.js","../../../node_modules/@stablelib/x25519/lib/x25519.js","../node_modules/uint8arrays/esm/src/alloc.js","../node_modules/uint8arrays/esm/src/concat.js","../../../node_modules/multiformats/esm/vendor/base-x.js","../../../node_modules/multiformats/esm/src/bytes.js","../../../node_modules/multiformats/esm/src/bases/base.js","../../../node_modules/multiformats/esm/src/bases/identity.js","../../../node_modules/multiformats/esm/src/bases/base2.js","../../../node_modules/multiformats/esm/src/bases/base8.js","../../../node_modules/multiformats/esm/src/bases/base10.js","../../../node_modules/multiformats/esm/src/bases/base16.js","../../../node_modules/multiformats/esm/src/bases/base32.js","../../../node_modules/multiformats/esm/src/bases/base36.js","../../../node_modules/multiformats/esm/src/bases/base58.js","../../../node_modules/multiformats/esm/src/bases/base64.js","../../../node_modules/multiformats/esm/src/bases/base256emoji.js","../../../node_modules/multiformats/esm/vendor/varint.js","../../../node_modules/multiformats/esm/src/varint.js","../../../node_modules/multiformats/esm/src/hashes/digest.js","../../../node_modules/multiformats/esm/src/hashes/hasher.js","../../../node_modules/multiformats/esm/src/hashes/sha2-browser.js","../../../node_modules/multiformats/esm/src/hashes/identity.js","../../../node_modules/multiformats/esm/src/codecs/json.js","../../../node_modules/multiformats/esm/src/basics.js","../node_modules/uint8arrays/esm/src/util/bases.js","../node_modules/uint8arrays/esm/src/from-string.js","../node_modules/uint8arrays/esm/src/to-string.js","../src/crypto.js","../../../node_modules/@walletconnect/relay-api/dist/index.es.js","../src/relay.js","../src/uri.js","../src/namespaces.js","../src/errors.js","../src/validators.js","../src/network.js","../src/memoryStore.js"],"sourcesContent":["const CAIP_DELIMITER = \":\";\nexport function parseChainId(chain) {\n const [namespace, reference] = chain.split(CAIP_DELIMITER);\n return { namespace, reference };\n}\nexport function formatChainId(params) {\n const { namespace, reference } = params;\n return [namespace, reference].join(CAIP_DELIMITER);\n}\nexport function parseAccountId(account) {\n const [namespace, reference, address] = account.split(CAIP_DELIMITER);\n return { namespace, reference, address };\n}\nexport function formatAccountId(params) {\n const { namespace, reference, address } = params;\n return [namespace, reference, address].join(CAIP_DELIMITER);\n}\nexport function getUniqueValues(array, parser) {\n const unique = [];\n array.forEach((str) => {\n const value = parser(str);\n if (!unique.includes(value))\n unique.push(value);\n });\n return unique;\n}\nexport function getAddressFromAccount(account) {\n const { address } = parseAccountId(account);\n return address;\n}\nexport function getChainFromAccount(account) {\n const { namespace, reference } = parseAccountId(account);\n const chain = formatChainId({ namespace, reference });\n return chain;\n}\nexport function formatAccountWithChain(address, chain) {\n const { namespace, reference } = parseChainId(chain);\n const account = formatAccountId({ namespace, reference, address });\n return account;\n}\nexport function getAddressesFromAccounts(accounts) {\n return getUniqueValues(accounts, getAddressFromAccount);\n}\nexport function getChainsFromAccounts(accounts) {\n return getUniqueValues(accounts, getChainFromAccount);\n}\nexport function getAccountsFromNamespaces(namespaces, keys = []) {\n const accounts = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key))\n return;\n const ns = namespaces[key];\n accounts.push(...ns.accounts);\n });\n return accounts;\n}\nexport function getChainsFromNamespaces(namespaces, keys = []) {\n const chains = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key))\n return;\n const ns = namespaces[key];\n chains.push(...getChainsFromAccounts(ns.accounts));\n });\n return chains;\n}\nexport function getChainsFromRequiredNamespaces(requiredNamespaces, keys = []) {\n const chains = [];\n Object.keys(requiredNamespaces).forEach((key) => {\n if (keys.length && !keys.includes(key))\n return;\n const ns = requiredNamespaces[key];\n chains.push(...getChainsFromNamespace(key, ns));\n });\n return chains;\n}\nexport function getChainsFromNamespace(namespace, namespaceProps) {\n return namespace.includes(\":\") ? [namespace] : namespaceProps.chains || [];\n}\n//# sourceMappingURL=caip.js.map","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/],\n ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/],\n ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FB[AS]V\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['curl', /^curl\\/([0-9\\.]+)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.delay = void 0;\nfunction delay(timeout) {\n return new Promise(resolve => {\n setTimeout(() => {\n resolve(true);\n }, timeout);\n });\n}\nexports.delay = delay;\n//# sourceMappingURL=delay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ONE_THOUSAND = exports.ONE_HUNDRED = void 0;\nexports.ONE_HUNDRED = 100;\nexports.ONE_THOUSAND = 1000;\n//# sourceMappingURL=misc.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ONE_YEAR = exports.FOUR_WEEKS = exports.THREE_WEEKS = exports.TWO_WEEKS = exports.ONE_WEEK = exports.THIRTY_DAYS = exports.SEVEN_DAYS = exports.FIVE_DAYS = exports.THREE_DAYS = exports.ONE_DAY = exports.TWENTY_FOUR_HOURS = exports.TWELVE_HOURS = exports.SIX_HOURS = exports.THREE_HOURS = exports.ONE_HOUR = exports.SIXTY_MINUTES = exports.THIRTY_MINUTES = exports.TEN_MINUTES = exports.FIVE_MINUTES = exports.ONE_MINUTE = exports.SIXTY_SECONDS = exports.THIRTY_SECONDS = exports.TEN_SECONDS = exports.FIVE_SECONDS = exports.ONE_SECOND = void 0;\nexports.ONE_SECOND = 1;\nexports.FIVE_SECONDS = 5;\nexports.TEN_SECONDS = 10;\nexports.THIRTY_SECONDS = 30;\nexports.SIXTY_SECONDS = 60;\nexports.ONE_MINUTE = exports.SIXTY_SECONDS;\nexports.FIVE_MINUTES = exports.ONE_MINUTE * 5;\nexports.TEN_MINUTES = exports.ONE_MINUTE * 10;\nexports.THIRTY_MINUTES = exports.ONE_MINUTE * 30;\nexports.SIXTY_MINUTES = exports.ONE_MINUTE * 60;\nexports.ONE_HOUR = exports.SIXTY_MINUTES;\nexports.THREE_HOURS = exports.ONE_HOUR * 3;\nexports.SIX_HOURS = exports.ONE_HOUR * 6;\nexports.TWELVE_HOURS = exports.ONE_HOUR * 12;\nexports.TWENTY_FOUR_HOURS = exports.ONE_HOUR * 24;\nexports.ONE_DAY = exports.TWENTY_FOUR_HOURS;\nexports.THREE_DAYS = exports.ONE_DAY * 3;\nexports.FIVE_DAYS = exports.ONE_DAY * 5;\nexports.SEVEN_DAYS = exports.ONE_DAY * 7;\nexports.THIRTY_DAYS = exports.ONE_DAY * 30;\nexports.ONE_WEEK = exports.SEVEN_DAYS;\nexports.TWO_WEEKS = exports.ONE_WEEK * 2;\nexports.THREE_WEEKS = exports.ONE_WEEK * 3;\nexports.FOUR_WEEKS = exports.ONE_WEEK * 4;\nexports.ONE_YEAR = exports.ONE_DAY * 365;\n//# sourceMappingURL=time.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./misc\"), exports);\ntslib_1.__exportStar(require(\"./time\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromMiliseconds = exports.toMiliseconds = void 0;\nconst constants_1 = require(\"../constants\");\nfunction toMiliseconds(seconds) {\n return seconds * constants_1.ONE_THOUSAND;\n}\nexports.toMiliseconds = toMiliseconds;\nfunction fromMiliseconds(miliseconds) {\n return Math.floor(miliseconds / constants_1.ONE_THOUSAND);\n}\nexports.fromMiliseconds = fromMiliseconds;\n//# sourceMappingURL=convert.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./delay\"), exports);\ntslib_1.__exportStar(require(\"./convert\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Watch = void 0;\nclass Watch {\n constructor() {\n this.timestamps = new Map();\n }\n start(label) {\n if (this.timestamps.has(label)) {\n throw new Error(`Watch already started for label: ${label}`);\n }\n this.timestamps.set(label, { started: Date.now() });\n }\n stop(label) {\n const timestamp = this.get(label);\n if (typeof timestamp.elapsed !== \"undefined\") {\n throw new Error(`Watch already stopped for label: ${label}`);\n }\n const elapsed = Date.now() - timestamp.started;\n this.timestamps.set(label, { started: timestamp.started, elapsed });\n }\n get(label) {\n const timestamp = this.timestamps.get(label);\n if (typeof timestamp === \"undefined\") {\n throw new Error(`No timestamp found for label: ${label}`);\n }\n return timestamp;\n }\n elapsed(label) {\n const timestamp = this.get(label);\n const elapsed = timestamp.elapsed || Date.now() - timestamp.started;\n return elapsed;\n }\n}\nexports.Watch = Watch;\nexports.default = Watch;\n//# sourceMappingURL=watch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IWatch = void 0;\nclass IWatch {\n}\nexports.IWatch = IWatch;\n//# sourceMappingURL=watch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./watch\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./utils\"), exports);\ntslib_1.__exportStar(require(\"./watch\"), exports);\ntslib_1.__exportStar(require(\"./types\"), exports);\ntslib_1.__exportStar(require(\"./constants\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getLocalStorage = exports.getLocalStorageOrThrow = exports.getCrypto = exports.getCryptoOrThrow = exports.getLocation = exports.getLocationOrThrow = exports.getNavigator = exports.getNavigatorOrThrow = exports.getDocument = exports.getDocumentOrThrow = exports.getFromWindowOrThrow = exports.getFromWindow = void 0;\nfunction getFromWindow(name) {\n let res = undefined;\n if (typeof window !== \"undefined\" && typeof window[name] !== \"undefined\") {\n res = window[name];\n }\n return res;\n}\nexports.getFromWindow = getFromWindow;\nfunction getFromWindowOrThrow(name) {\n const res = getFromWindow(name);\n if (!res) {\n throw new Error(`${name} is not defined in Window`);\n }\n return res;\n}\nexports.getFromWindowOrThrow = getFromWindowOrThrow;\nfunction getDocumentOrThrow() {\n return getFromWindowOrThrow(\"document\");\n}\nexports.getDocumentOrThrow = getDocumentOrThrow;\nfunction getDocument() {\n return getFromWindow(\"document\");\n}\nexports.getDocument = getDocument;\nfunction getNavigatorOrThrow() {\n return getFromWindowOrThrow(\"navigator\");\n}\nexports.getNavigatorOrThrow = getNavigatorOrThrow;\nfunction getNavigator() {\n return getFromWindow(\"navigator\");\n}\nexports.getNavigator = getNavigator;\nfunction getLocationOrThrow() {\n return getFromWindowOrThrow(\"location\");\n}\nexports.getLocationOrThrow = getLocationOrThrow;\nfunction getLocation() {\n return getFromWindow(\"location\");\n}\nexports.getLocation = getLocation;\nfunction getCryptoOrThrow() {\n return getFromWindowOrThrow(\"crypto\");\n}\nexports.getCryptoOrThrow = getCryptoOrThrow;\nfunction getCrypto() {\n return getFromWindow(\"crypto\");\n}\nexports.getCrypto = getCrypto;\nfunction getLocalStorageOrThrow() {\n return getFromWindowOrThrow(\"localStorage\");\n}\nexports.getLocalStorageOrThrow = getLocalStorageOrThrow;\nfunction getLocalStorage() {\n return getFromWindow(\"localStorage\");\n}\nexports.getLocalStorage = getLocalStorage;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getWindowMetadata = void 0;\nconst window_getters_1 = require(\"@walletconnect/window-getters\");\nfunction getWindowMetadata() {\n let doc;\n let loc;\n try {\n doc = window_getters_1.getDocumentOrThrow();\n loc = window_getters_1.getLocationOrThrow();\n }\n catch (e) {\n return null;\n }\n function getIcons() {\n const links = doc.getElementsByTagName(\"link\");\n const icons = [];\n for (let i = 0; i < links.length; i++) {\n const link = links[i];\n const rel = link.getAttribute(\"rel\");\n if (rel) {\n if (rel.toLowerCase().indexOf(\"icon\") > -1) {\n const href = link.getAttribute(\"href\");\n if (href) {\n if (href.toLowerCase().indexOf(\"https:\") === -1 &&\n href.toLowerCase().indexOf(\"http:\") === -1 &&\n href.indexOf(\"//\") !== 0) {\n let absoluteHref = loc.protocol + \"//\" + loc.host;\n if (href.indexOf(\"/\") === 0) {\n absoluteHref += href;\n }\n else {\n const path = loc.pathname.split(\"/\");\n path.pop();\n const finalPath = path.join(\"/\");\n absoluteHref += finalPath + \"/\" + href;\n }\n icons.push(absoluteHref);\n }\n else if (href.indexOf(\"//\") === 0) {\n const absoluteUrl = loc.protocol + href;\n icons.push(absoluteUrl);\n }\n else {\n icons.push(href);\n }\n }\n }\n }\n }\n return icons;\n }\n function getWindowMetadataOfAny(...args) {\n const metaTags = doc.getElementsByTagName(\"meta\");\n for (let i = 0; i < metaTags.length; i++) {\n const tag = metaTags[i];\n const attributes = [\"itemprop\", \"property\", \"name\"]\n .map((target) => tag.getAttribute(target))\n .filter((attr) => {\n if (attr) {\n return args.includes(attr);\n }\n return false;\n });\n if (attributes.length && attributes) {\n const content = tag.getAttribute(\"content\");\n if (content) {\n return content;\n }\n }\n }\n return \"\";\n }\n function getName() {\n let name = getWindowMetadataOfAny(\"name\", \"og:site_name\", \"og:title\", \"twitter:title\");\n if (!name) {\n name = doc.title;\n }\n return name;\n }\n function getDescription() {\n const description = getWindowMetadataOfAny(\"description\", \"og:description\", \"twitter:description\", \"keywords\");\n return description;\n }\n const name = getName();\n const description = getDescription();\n const url = loc.origin;\n const icons = getIcons();\n const meta = {\n description,\n url,\n icons,\n name,\n };\n return meta;\n}\nexports.getWindowMetadata = getWindowMetadata;\n//# sourceMappingURL=index.js.map","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","import { detect } from \"detect-browser\";\nimport { FIVE_MINUTES, fromMiliseconds, toMiliseconds } from \"@walletconnect/time\";\nimport { getDocument, getLocation, getNavigator } from \"@walletconnect/window-getters\";\nimport { getWindowMetadata } from \"@walletconnect/window-metadata\";\nimport * as qs from \"query-string\";\nexport const REACT_NATIVE_PRODUCT = \"ReactNative\";\nexport const ENV_MAP = {\n reactNative: \"react-native\",\n node: \"node\",\n browser: \"browser\",\n unknown: \"unknown\",\n};\nexport const EMPTY_SPACE = \" \";\nexport const COLON = \":\";\nexport const SLASH = \"/\";\nexport const DEFAULT_DEPTH = 2;\nexport const ONE_THOUSAND = 1000;\nexport const SDK_TYPE = \"js\";\nexport function isNode() {\n return (typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\");\n}\nexport function isReactNative() {\n return !getDocument() && !!getNavigator() && navigator.product === REACT_NATIVE_PRODUCT;\n}\nexport function isBrowser() {\n return !isNode() && !!getNavigator() && !!getDocument();\n}\nexport function getEnvironment() {\n if (isReactNative())\n return ENV_MAP.reactNative;\n if (isNode())\n return ENV_MAP.node;\n if (isBrowser())\n return ENV_MAP.browser;\n return ENV_MAP.unknown;\n}\nexport function getBundleId() {\n try {\n if (isReactNative() &&\n typeof global !== \"undefined\" &&\n typeof global?.Application !== \"undefined\") {\n return global.Application?.applicationId;\n }\n return undefined;\n }\n catch {\n return undefined;\n }\n}\nexport function appendToQueryString(queryString, newQueryParams) {\n let queryParams = qs.parse(queryString);\n queryParams = { ...queryParams, ...newQueryParams };\n queryString = qs.stringify(queryParams);\n return queryString;\n}\nexport function getAppMetadata() {\n return (getWindowMetadata() || {\n name: \"\",\n description: \"\",\n url: \"\",\n icons: [\"\"],\n });\n}\nexport function getRelayClientMetadata(protocol, version) {\n const env = getEnvironment();\n const metadata = { protocol, version, env };\n if (env === \"browser\") {\n metadata.host = getLocation()?.host || \"unknown\";\n }\n return metadata;\n}\nexport function getJavascriptOS() {\n const env = getEnvironment();\n if (env === ENV_MAP.reactNative &&\n typeof global !== \"undefined\" &&\n typeof global?.Platform !== \"undefined\") {\n const { OS, Version } = global.Platform;\n return [OS, Version].join(\"-\");\n }\n const info = detect();\n if (info === null)\n return \"unknown\";\n const os = info.os ? info.os.replace(\" \", \"\").toLowerCase() : \"unknown\";\n if (info.type === \"browser\") {\n return [os, info.name, info.version].join(\"-\");\n }\n return [os, info.version].join(\"-\");\n}\nexport function getJavascriptID() {\n const env = getEnvironment();\n return env === ENV_MAP.browser ? [env, getLocation()?.host || \"unknown\"].join(\":\") : env;\n}\nexport function formatUA(protocol, version, sdkVersion) {\n const os = getJavascriptOS();\n const id = getJavascriptID();\n return [[protocol, version].join(\"-\"), [SDK_TYPE, sdkVersion].join(\"-\"), os, id].join(\"/\");\n}\nconsole;\nexport function formatRelayRpcUrl({ protocol, version, relayUrl, sdkVersion, auth, projectId, useOnCloseEvent, bundleId, }) {\n const splitUrl = relayUrl.split(\"?\");\n const ua = formatUA(protocol, version, sdkVersion);\n const params = {\n auth,\n ua,\n projectId,\n useOnCloseEvent: useOnCloseEvent || undefined,\n origin: bundleId || undefined,\n };\n const queryString = appendToQueryString(splitUrl[1] || \"\", params);\n return splitUrl[0] + \"?\" + queryString;\n}\nexport function getHttpUrl(url) {\n const matches = url.match(/^[^:]+(?=:\\/\\/)/gi) || [];\n let protocol = matches[0];\n const domain = typeof protocol !== \"undefined\" ? url.split(\"://\")[1] : url;\n protocol = protocol === \"wss\" ? \"https\" : \"http\";\n return [protocol, domain].join(\"://\");\n}\nexport function assertType(obj, key, type) {\n if (!obj[key] || typeof obj[key] !== type) {\n throw new Error(`Missing or invalid \"${key}\" param`);\n }\n}\nexport function parseContextNames(context, depth = DEFAULT_DEPTH) {\n return getLastItems(context.split(SLASH), depth);\n}\nexport function formatMessageContext(context) {\n return parseContextNames(context).join(EMPTY_SPACE);\n}\nexport function hasOverlap(a, b) {\n const matches = a.filter((x) => b.includes(x));\n return matches.length === a.length;\n}\nexport function getLastItems(arr, depth = DEFAULT_DEPTH) {\n return arr.slice(Math.max(arr.length - depth, 0));\n}\nexport function mapToObj(map) {\n return Object.fromEntries(map.entries());\n}\nexport function objToMap(obj) {\n return new Map(Object.entries(obj));\n}\nexport function mapEntries(obj, cb) {\n const res = {};\n Object.keys(obj).forEach((key) => {\n res[key] = cb(obj[key]);\n });\n return res;\n}\nexport const enumify = (x) => x;\nexport function capitalizeWord(word) {\n return word.trim().replace(/^\\w/, (c) => c.toUpperCase());\n}\nexport function capitalize(str) {\n return str\n .split(EMPTY_SPACE)\n .map((w) => capitalizeWord(w))\n .join(EMPTY_SPACE);\n}\nexport function createDelayedPromise(expiry = FIVE_MINUTES, expireErrorMessage) {\n const timeout = toMiliseconds(expiry || FIVE_MINUTES);\n let cacheResolve;\n let cacheReject;\n let cacheTimeout;\n const done = () => new Promise((promiseResolve, promiseReject) => {\n cacheTimeout = setTimeout(() => {\n promiseReject(new Error(expireErrorMessage));\n }, timeout);\n cacheResolve = promiseResolve;\n cacheReject = promiseReject;\n });\n const resolve = (value) => {\n if (cacheTimeout && cacheResolve) {\n clearTimeout(cacheTimeout);\n cacheResolve(value);\n }\n };\n const reject = (value) => {\n if (cacheTimeout && cacheReject) {\n clearTimeout(cacheTimeout);\n cacheReject(value);\n }\n };\n return {\n resolve,\n reject,\n done,\n };\n}\nexport function createExpiringPromise(promise, expiry, expireErrorMessage) {\n return new Promise(async (resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error(expireErrorMessage)), expiry);\n try {\n const result = await promise;\n resolve(result);\n }\n catch (error) {\n reject(error);\n }\n clearTimeout(timeout);\n });\n}\nexport function formatExpirerTarget(type, value) {\n if (typeof value === \"string\" && value.startsWith(`${type}:`))\n return value;\n if (type.toLowerCase() === \"topic\") {\n if (typeof value !== \"string\")\n throw new Error(`Value must be \"string\" for expirer target type: topic`);\n return `topic:${value}`;\n }\n else if (type.toLowerCase() === \"id\") {\n if (typeof value !== \"number\")\n throw new Error(`Value must be \"number\" for expirer target type: id`);\n return `id:${value}`;\n }\n throw new Error(`Unknown expirer target type: ${type}`);\n}\nexport function formatTopicTarget(topic) {\n return formatExpirerTarget(\"topic\", topic);\n}\nexport function formatIdTarget(id) {\n return formatExpirerTarget(\"id\", id);\n}\nexport function parseExpirerTarget(target) {\n const [type, value] = target.split(\":\");\n const parsed = { id: undefined, topic: undefined };\n if (type === \"topic\" && typeof value === \"string\") {\n parsed.topic = value;\n }\n else if (type === \"id\" && Number.isInteger(Number(value))) {\n parsed.id = Number(value);\n }\n else {\n throw new Error(`Invalid target, expected id:number or topic:string, got ${type}:${value}`);\n }\n return parsed;\n}\nexport function calcExpiry(ttl, now) {\n return fromMiliseconds((now || Date.now()) + toMiliseconds(ttl));\n}\nexport function isExpired(expiry) {\n return Date.now() >= toMiliseconds(expiry);\n}\nexport function engineEvent(event, id) {\n return `${event}${id ? `:${id}` : \"\"}`;\n}\nexport function mergeArrays(a = [], b = []) {\n return [...new Set([...a, ...b])];\n}\nexport function isTelegram() {\n return (typeof window !== \"undefined\" &&\n (Boolean(window.TelegramWebviewProxy) ||\n Boolean(window.Telegram) ||\n Boolean(window.TelegramWebviewProxyProto)));\n}\nexport async function handleDeeplinkRedirect({ id, topic, wcDeepLink, }) {\n try {\n if (!wcDeepLink)\n return;\n const json = typeof wcDeepLink === \"string\" ? JSON.parse(wcDeepLink) : wcDeepLink;\n let deeplink = json?.href;\n if (typeof deeplink !== \"string\")\n return;\n if (deeplink.endsWith(\"/\"))\n deeplink = deeplink.slice(0, -1);\n const link = `${deeplink}/wc?requestId=${id}&sessionTopic=${topic}`;\n const env = getEnvironment();\n if (env === ENV_MAP.browser) {\n if (link.startsWith(\"https://\") || link.startsWith(\"http://\")) {\n window.open(link, \"_blank\", \"noreferrer noopener\");\n }\n else {\n if (isTelegram()) {\n window.open(link, \"_blank\", \"noreferrer noopener\");\n }\n else {\n window.open(link, \"_self\", \"noreferrer noopener\");\n }\n }\n }\n else if (env === ENV_MAP.reactNative) {\n if (typeof global?.Linking !== \"undefined\") {\n await global.Linking.openURL(link);\n }\n }\n }\n catch (err) {\n console.error(err);\n }\n}\nexport async function getDeepLink(store, key) {\n try {\n const deepLink = await store.getItem(key);\n if (deepLink)\n return deepLink;\n if (!isBrowser())\n return;\n return localStorage.getItem(key);\n }\n catch (err) {\n console.error(err);\n }\n}\nexport function getCommonValuesInArrays(arr1, arr2) {\n return arr1.filter((value) => arr2.includes(value));\n}\n//# sourceMappingURL=misc.js.map","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","export const version = \"logger/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nimport { version } from \"./_version\";\nlet _globalLogger = null;\nfunction _checkNormalize() {\n try {\n const missing = [];\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n }\n ;\n }\n catch (error) {\n missing.push(form);\n }\n });\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\");\n }\n }\n catch (error) {\n return error.message;\n }\n return null;\n}\nconst _normalizeError = _checkNormalize();\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ///////////////////\n // Generic Errors\n // Unknown Error\n ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n // Not Implemented\n ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n // Unsupported Operation\n // - operation\n ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n // Some sort of bad response from the server\n ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n // Timeout\n ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n ///////////////////\n // Operational Errors\n // Buffer Overrun\n ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n ///////////////////\n // Argument Errors\n // Missing new operator to an object\n // - name: The name of the class\n ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n ///////////////////\n // Blockchain Errors\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n // Nonce has already been used\n // - transaction: the transaction attempted\n ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n ///////////////////\n // Interaction Errors\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ErrorCode[\"ACTION_REJECTED\"] = \"ACTION_REJECTED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nexport class Logger {\n constructor(version) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n _log(logLevel, args) {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) {\n return;\n }\n console.log.apply(console, args);\n }\n debug(...args) {\n this._log(Logger.levels.DEBUG, args);\n }\n info(...args) {\n this._log(Logger.levels.INFO, args);\n }\n warn(...args) {\n this._log(Logger.levels.WARNING, args);\n }\n makeError(message, code, params) {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, {});\n }\n if (!code) {\n code = Logger.errors.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n const messageDetails = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n }\n else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n }\n catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${code}`);\n messageDetails.push(`version=${this.version}`);\n const reason = message;\n let url = \"\";\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n switch (fault) {\n case \"overflow\":\n case \"underflow\":\n case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\":\n case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n // @TODO: Any??\n const error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n return error;\n }\n throwError(message, code, params) {\n throw this.makeError(message, code, params);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, params) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code, params);\n }\n assertArgument(condition, message, name, value) {\n if (!!condition) {\n return;\n }\n this.throwArgumentError(message, name, value);\n }\n checkNormalize(message) {\n if (message == null) {\n message = \"platform missing String.prototype.normalize\";\n }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n checkSafeUint53(value, message) {\n if (typeof (value) !== \"number\") {\n return;\n }\n if (message == null) {\n message = \"value not safe\";\n }\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n checkArgumentCount(count, expectedCount, message) {\n if (message) {\n message = \": \" + message;\n }\n else {\n message = \"\";\n }\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n checkNew(target, kind) {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n checkAbstract(target, kind) {\n if (target === kind) {\n this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n }\n else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setCensorship(censorship, permanent) {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n if (_permanentCensorErrors) {\n if (!censorship) {\n return;\n }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n static setLogLevel(logLevel) {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n static from(version) {\n return new Logger(version);\n }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n//# sourceMappingURL=index.js.map","export const version = \"bytes/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nfunction isHexable(value) {\n return !!(value.toHexString);\n}\nfunction addSlice(array) {\n if (array.slice) {\n return array;\n }\n array.slice = function () {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n };\n return array;\n}\nexport function isBytesLike(value) {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\nfunction isInteger(value) {\n return (typeof (value) === \"number\" && value == value && (value % 1) === 0);\n}\nexport function isBytes(value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof (value) === \"string\") {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\nexport function arrayify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return addSlice(new Uint8Array(result));\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n value = value.toHexString();\n }\n if (isHexString(value)) {\n let hex = value.substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n }\n else if (options.hexPad === \"right\") {\n hex += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return addSlice(new Uint8Array(result));\n }\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nexport function concat(items) {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return addSlice(result);\n}\nexport function stripZeros(value) {\n let result = arrayify(value);\n if (result.length === 0) {\n return result;\n }\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n return result;\n}\nexport function zeroPad(value, length) {\n value = arrayify(value);\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n if (hex.length) {\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return \"0x\" + hex;\n }\n return \"0x00\";\n }\n if (typeof (value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) {\n return (\"0x0\" + value);\n }\n return \"0x\" + value;\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n return value.toHexString();\n }\n if (isHexString(value)) {\n if (value.length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + value.substring(2);\n }\n else if (options.hexPad === \"right\") {\n value += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return value.toLowerCase();\n }\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n return (data.length - 2) / 2;\n}\nexport function hexDataSlice(data, offset, endOffset) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n }\n offset = 2 + 2 * offset;\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n return \"0x\" + data.substring(offset);\n}\nexport function hexConcat(items) {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\nexport function hexValue(value) {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") {\n return \"0x0\";\n }\n return trimmed;\n}\nexport function hexStripZeros(value) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") {\n offset++;\n }\n return \"0x\" + value.substring(offset);\n}\nexport function hexZeroPad(value, length) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n return value;\n}\nexport function splitSignature(signature) {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n if (isBytesLike(signature)) {\n let bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n }\n else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n }\n else {\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n }\n else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n }\n else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1 : 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n }\n else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n }\n else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n }\n else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n }\n else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n }\n else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n }\n else {\n const recId = (result.v === 0 || result.v === 1) ? result.v : (1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n }\n else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n }\n else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n }\n else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\nexport function joinSignature(signature) {\n signature = splitSignature(signature);\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\" : \"0x1b\")\n ]));\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nimport sha3 from \"js-sha3\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function keccak256(data) {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n//# sourceMappingURL=index.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","export const version = \"bignumber/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\nimport _BN from \"bn.js\";\nvar BN = _BN.BN;\nimport { hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst _constructorGuard = {};\nconst MAX_SAFE = 0x1fffffffffffff;\nexport function isBigNumberish(value) {\n return (value != null) && (BigNumber.isBigNumber(value) ||\n (typeof (value) === \"number\" && (value % 1) === 0) ||\n (typeof (value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof (value) === \"bigint\") ||\n isBytes(value));\n}\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\nexport class BigNumber {\n constructor(constructorGuard, hex) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n this._hex = hex;\n this._isBigNumber = true;\n Object.freeze(this);\n }\n fromTwos(value) {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n toTwos(value) {\n return toBigNumber(toBN(this).toTwos(value));\n }\n abs() {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n add(other) {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n sub(other) {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n div(other) {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n mul(other) {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n mod(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n pow(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n and(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n or(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n xor(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n mask(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n shl(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n shr(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n eq(other) {\n return toBN(this).eq(toBN(other));\n }\n lt(other) {\n return toBN(this).lt(toBN(other));\n }\n lte(other) {\n return toBN(this).lte(toBN(other));\n }\n gt(other) {\n return toBN(this).gt(toBN(other));\n }\n gte(other) {\n return toBN(this).gte(toBN(other));\n }\n isNegative() {\n return (this._hex[0] === \"-\");\n }\n isZero() {\n return toBN(this).isZero();\n }\n toNumber() {\n try {\n return toBN(this).toNumber();\n }\n catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n toBigInt() {\n try {\n return BigInt(this.toString());\n }\n catch (e) { }\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n toString() {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n }\n else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n }\n return toBN(this).toString(10);\n }\n toHexString() {\n return this._hex;\n }\n toJSON(key) {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n static from(value) {\n if (value instanceof BigNumber) {\n return value;\n }\n if (typeof (value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n if (typeof (value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n return BigNumber.from(String(value));\n }\n const anyValue = value;\n if (typeof (anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n if (anyValue) {\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof (hex) === \"string\") {\n return BigNumber.from(hex);\n }\n }\n else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n if (typeof (hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n static isBigNumber(value) {\n return !!(value && value._isBigNumber);\n }\n}\n// Normalize the hex string\nfunction toHex(value) {\n // For BN, call on the hex string\n if (typeof (value) !== \"string\") {\n return toHex(value.toString(16));\n }\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") {\n logger.throwArgumentError(\"invalid hex\", \"value\", value);\n }\n // Call toHex on the positive component\n value = toHex(value);\n // Do not allow \"-0x00\"\n if (value === \"0x00\") {\n return value;\n }\n // Negate the value\n return \"-\" + value;\n }\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n // Normalize zero\n if (value === \"0x\") {\n return \"0x00\";\n }\n // Make the string even length\n if (value.length % 2) {\n value = \"0x0\" + value.substring(2);\n }\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n return value;\n}\nfunction toBigNumber(value) {\n return BigNumber.from(toHex(value));\n}\nfunction toBN(value) {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\nfunction throwFault(fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value != null) {\n params.value = value;\n }\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n// value should have no prefix\nexport function _base36To16(value) {\n return (new BN(value, 36)).toString(16);\n}\n// value should have no prefix\nexport function _base16To36(value) {\n return (new BN(value, 16)).toString(36);\n}\n//# sourceMappingURL=bignumber.js.map","\"use strict\";\nimport { arrayify, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { BigNumber, isBigNumberish } from \"./bignumber\";\nconst _constructorGuard = {};\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n }\n catch (e) { }\n }\n if (typeof (decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\nexport function formatFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n const negative = value.lt(Zero);\n if (negative) {\n value = value.mul(NegativeOne);\n }\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n }\n else {\n value = whole + \".\" + fraction;\n }\n if (negative) {\n value = \"-\" + value;\n }\n return value;\n}\nexport function parseFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n let whole = comps[0], fraction = comps[1];\n if (!whole) {\n whole = \"0\";\n }\n if (!fraction) {\n fraction = \"0\";\n }\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n if (negative) {\n wei = wei.mul(NegativeOne);\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\n if (typeof (value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type + \")\", \"format.\" + key, value[key]);\n }\n return value[key];\n };\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.format = format;\n this._hex = hex;\n this._value = value;\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n _checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n addUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n subUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n divUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n isNegative() {\n return (this._value[0] === \"-\");\n }\n toString() { return this._value; }\n toHexString(width) {\n if (width == null) {\n return this._hex;\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid byte width\", \"width\", width);\n }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(this._value, format);\n }\n static fromValue(value, decimals, format) {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n if (decimals == null) {\n decimals = 0;\n }\n if (format == null) {\n format = \"fixed\";\n }\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n let hex = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n }\n else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) {\n numeric = numeric.fromTwos(fixedFormat.width);\n }\n const hex = numeric.toTwos((fixedFormat.signed ? 0 : 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","export const version = \"strings/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n bytes = arrayify(bytes);\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return arrayify(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\";\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","\"use strict\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, func) {\n if (!func) {\n func = function (value) { return [parseInt(value, 16)]; };\n }\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n return [codepoint + range.s];\n }\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n let complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","export const version = \"hash/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function decode(textData) {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\nexport function encode(data) {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n//# sourceMappingURL=base64.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array, depth) {\n if (depth == null) {\n depth = 1;\n }\n const result = [];\n const forEach = result.forEach;\n const flatDeep = function (arr, depth) {\n forEach.call(arr, function (val) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n }\n else {\n result.push(val);\n }\n });\n };\n flatDeep(array, depth);\n return result;\n}\nfunction fromEntries(array) {\n const result = {};\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\nexport function decode_arithmetic(bytes) {\n let pos = 0;\n function u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n // decode the frequency table\n let symbol_count = u16();\n let total = 1;\n let acc = [0, 1]; // first symbol has frequency 1\n for (let i = 1; i < symbol_count; i++) {\n acc.push(total += u16());\n }\n // skip the sized-payload that the last 3 symbols index into\n let skip = u16();\n let pos_payload = pos;\n pos += skip;\n let read_width = 0;\n let read_buffer = 0;\n function read_bit() {\n if (read_width == 0) {\n // this will read beyond end of buffer\n // but (undefined|0) => zero pad\n read_buffer = (read_buffer << 8) | bytes[pos++];\n read_width = 8;\n }\n return (read_buffer >> --read_width) & 1;\n }\n const N = 31;\n const FULL = Math.pow(2, N);\n const HALF = FULL >>> 1;\n const QRTR = HALF >> 1;\n const MASK = FULL - 1;\n // fill register\n let register = 0;\n for (let i = 0; i < N; i++)\n register = (register << 1) | read_bit();\n let symbols = [];\n let low = 0;\n let range = FULL; // treat like a float\n while (true) {\n let value = Math.floor((((register - low + 1) * total) - 1) / range);\n let start = 0;\n let end = symbol_count;\n while (end - start > 1) { // binary search\n let mid = (start + end) >>> 1;\n if (value < acc[mid]) {\n end = mid;\n }\n else {\n start = mid;\n }\n }\n if (start == 0)\n break; // first symbol is end mark\n symbols.push(start);\n let a = low + Math.floor(range * acc[start] / total);\n let b = low + Math.floor(range * acc[start + 1] / total) - 1;\n while (((a ^ b) & HALF) == 0) {\n register = (register << 1) & MASK | read_bit();\n a = (a << 1) & MASK;\n b = (b << 1) & MASK | 1;\n }\n while (a & ~b & QRTR) {\n register = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n a = (a << 1) ^ HALF;\n b = ((b ^ HALF) << 1) | HALF | 1;\n }\n low = a;\n range = 1 + b - a;\n }\n let offset = symbol_count - 4;\n return symbols.map(x => {\n switch (x - offset) {\n case 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 1: return offset + bytes[pos_payload++];\n default: return x - 1;\n }\n });\n}\n// returns an iterator which returns the next symbol\nexport function read_payload(v) {\n let pos = 0;\n return () => v[pos++];\n}\nexport function read_compressed_payload(bytes) {\n return read_payload(decode_arithmetic(bytes));\n}\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i) {\n return (i & 1) ? (~i >> 1) : (i >> 1);\n}\nfunction read_counts(n, next) {\n let v = Array(n);\n for (let i = 0; i < n; i++)\n v[i] = 1 + next();\n return v;\n}\nfunction read_ascending(n, next) {\n let v = Array(n);\n for (let i = 0, x = -1; i < n; i++)\n v[i] = x += 1 + next();\n return v;\n}\nfunction read_deltas(n, next) {\n let v = Array(n);\n for (let i = 0, x = 0; i < n; i++)\n v[i] = x += signed(next());\n return v;\n}\nexport function read_member_array(next, lookup) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next) {\n let ret = [];\n while (true) {\n let w = next();\n if (w == 0)\n break;\n ret.push(read_linear_table(w, next));\n }\n while (true) {\n let w = next() - 1;\n if (w < 0)\n break;\n ret.push(read_replacement_table(w, next));\n }\n return fromEntries(flat(ret));\n}\nexport function read_zero_terminated_array(next) {\n let v = [];\n while (true) {\n let i = next();\n if (i == 0)\n break;\n v.push(i);\n }\n return v;\n}\nfunction read_transposed(n, w, next) {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\nfunction read_linear_table(w, next) {\n let dx = 1 + next();\n let dy = next();\n let vN = read_zero_terminated_array(next);\n let m = read_transposed(vN.length, 1 + w, next);\n return flat(m.map((v, i) => {\n const x = v[0], ys = v.slice(1);\n //let [x, ...ys] = v;\n //return Array(vN[i]).fill().map((_, j) => {\n return Array(vN[i]).fill(undefined).map((_, j) => {\n let j_dy = j * dy;\n return [x + j * dx, ys.map(y => y + j_dy)];\n });\n }));\n}\nfunction read_replacement_table(w, next) {\n let n = 1 + next();\n let m = read_transposed(n, 1 + w, next);\n return m.map(v => [v[0], v.slice(1)]);\n}\nexport function read_emoji_trie(next) {\n let sorted = read_member_array(next).sort((a, b) => a - b);\n return read();\n function read() {\n let branches = [];\n while (true) {\n let keys = read_member_array(next, sorted);\n if (keys.length == 0)\n break;\n branches.push({ set: new Set(keys), node: read() });\n }\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n let temp = next();\n let valid = temp % 3;\n temp = (temp / 3) | 0;\n let fe0f = !!(temp & 1);\n temp >>= 1;\n let save = temp == 1;\n let check = temp == 2;\n return { branches, valid, fe0f, save, check };\n }\n}\n//# sourceMappingURL=decoder.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { decode } from \"@ethersproject/base64\";\nimport { read_compressed_payload } from './decoder.js';\nexport function getData() {\n return read_compressed_payload(decode('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'));\n}\n//# sourceMappingURL=include.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\nimport { getData } from './include.js';\nconst r = getData();\nimport { read_member_array, read_mapped_map, read_emoji_trie } from './decoder.js';\n// @TODO: This should be lazily loaded\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\nfunction explode_cp(name) {\n return toUtf8CodePoints(name);\n}\nfunction filter_fe0f(cps) {\n return cps.filter(cp => cp != 0xFE0F);\n}\nexport function ens_normalize_post_check(name) {\n for (let label of name.split('.')) {\n let cps = explode_cp(label);\n try {\n for (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n if (cps[i] !== UNDERSCORE) {\n throw new Error(`underscore only allowed at start`);\n }\n }\n if (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n throw new Error(`invalid label extension`);\n }\n }\n catch (err) {\n throw new Error(`Invalid label \"${label}\": ${err.message}`);\n }\n }\n return name;\n}\nexport function ens_normalize(name) {\n return ens_normalize_post_check(normalize(name, filter_fe0f));\n}\nfunction normalize(name, emoji_filter) {\n let input = explode_cp(name).reverse(); // flip for pop\n let output = [];\n while (input.length) {\n let emoji = consume_emoji_reversed(input);\n if (emoji) {\n output.push(...emoji_filter(emoji));\n continue;\n }\n let cp = input.pop();\n if (VALID.has(cp)) {\n output.push(cp);\n continue;\n }\n if (IGNORED.has(cp)) {\n continue;\n }\n let cps = MAPPED[cp];\n if (cps) {\n output.push(...cps);\n continue;\n }\n throw new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n }\n return ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\nfunction nfc(s) {\n return s.normalize('NFC');\n}\nfunction consume_emoji_reversed(cps, eaten) {\n var _a;\n let node = EMOJI_ROOT;\n let emoji;\n let saved;\n let stack = [];\n let pos = cps.length;\n if (eaten)\n eaten.length = 0; // clear input buffer (if needed)\n while (pos) {\n let cp = cps[--pos];\n node = (_a = node.branches.find(x => x.set.has(cp))) === null || _a === void 0 ? void 0 : _a.node;\n if (!node)\n break;\n if (node.save) { // remember\n saved = cp;\n }\n else if (node.check) { // check exclusion\n if (cp === saved)\n break;\n }\n stack.push(cp);\n if (node.fe0f) {\n stack.push(0xFE0F);\n if (pos > 0 && cps[pos - 1] == 0xFE0F)\n pos--; // consume optional FE0F\n }\n if (node.valid) { // this is a valid emoji (so far)\n emoji = stack.slice(); // copy stack\n if (node.valid == 2)\n emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n if (eaten)\n eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n cps.length = pos; // truncate\n }\n }\n return emoji;\n}\n//# sourceMappingURL=lib.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { ens_normalize } from \"./ens-normalize/lib\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nfunction checkComponent(comp) {\n if (comp.length === 0) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n return comp;\n}\nfunction ensNameSplit(name) {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps = [];\n if (name.length === 0) {\n return comps;\n }\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n // There was a stray separator at the end of the name\n if (last >= bytes.length) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\nexport function ensNormalize(name) {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\nexport function isValidName(name) {\n try {\n return (ensNameSplit(name).length !== 0);\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n /* istanbul ignore if */\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let result = Zeros;\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n }))) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","export const version = \"rlp/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { arrayify, hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n const data = Array.prototype.slice.call(arrayify(object));\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n }\n else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nexport function encode(object) {\n return hexlify(_encode(object));\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result };\n }\n else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\nexport function decode(data) {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=index.js.map","export const version = \"address/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction getChecksumAddress(address) {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER = 0x1fffffffffffff;\nfunction log10(x) {\n if (Math.log10) {\n return Math.log10(x);\n }\n return Math.log(x) / Math.LN10;\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nexport function getAddress(address) {\n let result = null;\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n // Maybe ICAP? (we only support direct mode)\n }\n else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n result = _base36To16(address.substring(4));\n while (result.length < 40) {\n result = \"0\" + result;\n }\n result = getChecksumAddress(\"0x\" + result);\n }\n else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n return result;\n}\nexport function isAddress(address) {\n try {\n getAddress(address);\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function getIcapAddress(address) {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction) {\n let from = null;\n try {\n from = getAddress(transaction.from);\n }\n catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n return getAddress(hexDataSlice(keccak256(encode([from, nonce])), 12));\n}\nexport function getCreate2Address(from, salt, initCodeHash) {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([\"0xff\", getAddress(from), salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=index.js.map","export const version = \"properties/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor, key) {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) {\n return ctor[key];\n }\n if (!ctor.prototype || typeof (ctor.prototype) !== \"object\") {\n break;\n }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\nexport function resolveProperties(object) {\n return __awaiter(this, void 0, void 0, function* () {\n const promises = Object.keys(object).map((key) => {\n const value = object[key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n const results = yield Promise.all(promises);\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, {});\n });\n}\nexport function checkProperties(object, properties) {\n if (!object || typeof (object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\nexport function shallowCopy(object) {\n const result = {};\n for (const key in object) {\n result[key] = object[key];\n }\n return result;\n}\nconst opaque = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\nfunction _isFrozen(object) {\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof (object)]) {\n return true;\n }\n if (Array.isArray(object) || typeof (object) === \"object\") {\n if (!Object.isFrozen(object)) {\n return false;\n }\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value = null;\n try {\n value = object[keys[i]];\n }\n catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n if (!_isFrozen(value)) {\n return false;\n }\n }\n return true;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object) {\n if (_isFrozen(object)) {\n return object;\n }\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n if (typeof (object) === \"object\") {\n const result = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) {\n continue;\n }\n defineReadOnly(result, key, deepCopy(value));\n }\n return result;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\nexport function deepCopy(object) {\n return _deepCopy(object);\n}\nexport class Description {\n constructor(info) {\n for (const key in info) {\n this[key] = deepCopy(info[key]);\n }\n }\n}\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { id } from \"./id\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst NegativeOne = BigNumber.from(-1);\nconst Zero = BigNumber.from(0);\nconst One = BigNumber.from(1);\nconst MaxUint256 = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return hexConcat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n try {\n return BigNumber.from(value).toString();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) {\n throw new Error(\"bad length\");\n }\n return hexlify(bytes);\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n const boundsUpper = MaxUint256.mask(signed ? (width - 1) : width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne) : Zero;\n return function (value) {\n const v = BigNumber.from(value);\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n return function (value) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${type}`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n switch (type) {\n case \"address\": return function (value) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n defineReadOnly(this, \"_encoderCache\", {});\n defineReadOnly(this, \"_types\", {});\n // Link struct types to their direct child structs\n const links = {};\n // Link structs to structs which contain them as a child\n const parents = {};\n // Link all subtypes within a given struct\n const subtypes = {};\n Object.keys(types).forEach((type) => {\n links[type] = {};\n parents[type] = [];\n subtypes[type] = {};\n });\n for (const name in types) {\n const uniqueNames = {};\n types[name].forEach((field) => {\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n return;\n }\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\n else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${primaryTypes.map((t) => (JSON.stringify(t))).join(\", \")}`, \"types\", types);\n }\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n // Check for circular type references\n function checkCircular(type, found) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found[type] = true;\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) {\n return;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n delete found[type];\n }\n checkCircular(this.primaryType, {});\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n getEncoder(type) {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n _getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return encoder;\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n return keccak256(hexConcat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n encodeType(name) {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return callback(type, value);\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v) => this._visit(subtype, v, callback));\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, {});\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(name)}`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static resolveNames(domain, types, value, resolveName) {\n return __awaiter(this, void 0, void 0, function* () {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n // Look up all ENS names\n const ensCache = {};\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = yield resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n });\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n//# sourceMappingURL=typed-data.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","import BN from 'bn.js';\nimport hash from 'hash.js';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, basedir, module) {\n\treturn module = {\n\t\tpath: basedir,\n\t\texports: {},\n\t\trequire: function (path, base) {\n\t\t\treturn commonjsRequire(path, (base === undefined || base === null) ? module.path : base);\n\t\t}\n\t}, fn(module, module.exports), module.exports;\n}\n\nfunction getDefaultExportFromNamespaceIfPresent (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n;\n}\n\nfunction getDefaultExportFromNamespaceIfNotNamed (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n;\n}\n\nfunction getAugmentedNamespace(n) {\n\tif (n.__esModule) return n;\n\tvar a = Object.defineProperty({}, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n}\n\nvar minimalisticAssert = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\nvar utils_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n});\n\nvar utils_1$1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\n\n\n\nutils.assert = minimalisticAssert;\nutils.toArray = utils_1.toArray;\nutils.zero2 = utils_1.zero2;\nutils.toHex = utils_1.toHex;\nutils.encode = utils_1.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n});\n\n'use strict';\n\n\n\nvar getNAF = utils_1$1.getNAF;\nvar getJSF = utils_1$1.getJSF;\nvar assert$1 = utils_1$1.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nvar base = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert$1(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert$1(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils_1$1.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert$1(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert$1(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils_1$1.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\nvar inherits_browser = createCommonjsModule(function (module) {\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n});\n\n'use strict';\n\n\n\n\n\n\nvar assert$2 = utils_1$1.assert;\n\nfunction ShortCurve(conf) {\n base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits_browser(ShortCurve, base);\nvar short_1 = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert$2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits_browser(Point, base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits_browser(JPoint, base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nvar curve_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curve = exports;\n\ncurve.base = base;\ncurve.short = short_1;\ncurve.mont = /*RicMoo:ethers:require(./mont)*/(null);\ncurve.edwards = /*RicMoo:ethers:require(./edwards)*/(null);\n});\n\nvar curves_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curves = exports;\n\n\n\n\n\nvar assert = utils_1$1.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve_1.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve_1.edwards(options);\n else\n this.curve = new curve_1.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = /*RicMoo:ethers:require(./precomputed/secp256k1)*/(null).crash();\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n});\n\n'use strict';\n\n\n\n\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils_1.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils_1.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils_1.toArray(options.pers, options.persEnc || 'hex');\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nvar hmacDrbg = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils_1.toArray(entropy, entropyEnc);\n add = utils_1.toArray(add, addEnc);\n\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils_1.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils_1.encode(res, enc);\n};\n\n'use strict';\n\n\n\nvar assert$3 = utils_1$1.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nvar key = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert$3(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert$3(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert$3(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n'use strict';\n\n\n\n\nvar assert$4 = utils_1$1.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert$4(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nvar signature = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils_1$1.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils_1$1.encode(res, enc);\n};\n\n'use strict';\n\n\n\n\n\nvar rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nvar assert$5 = utils_1$1.assert;\n\n\n\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert$5(Object.prototype.hasOwnProperty.call(curves_1, options),\n 'Unknown curve ' + options);\n\n options = curves_1[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves_1.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nvar ec = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new key(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return key.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return key.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature$1, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature$1 = new signature(signature$1, 'hex');\n\n // Perform primitive values validation\n var r = signature$1.r;\n var s = signature$1.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature$1, j, enc) {\n assert$5((3 & j) === j, 'The recovery param is more than two bits');\n signature$1 = new signature(signature$1, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature$1.r;\n var s = signature$1.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature$1.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature$1, Q, enc) {\n signature$1 = new signature(signature$1, enc);\n if (signature$1.recoveryParam !== null)\n return signature$1.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature$1, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\nvar elliptic_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = /*RicMoo:ethers*/{ version: \"6.5.4\" }.version;\nelliptic.utils = utils_1$1;\nelliptic.rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nelliptic.curve = curve_1;\nelliptic.curves = curves_1;\n\n// Protocols\nelliptic.ec = ec;\nelliptic.eddsa = /*RicMoo:ethers:require(./elliptic/eddsa)*/(null);\n});\n\nvar EC$1 = elliptic_1.ec;\n\nexport { EC$1 as EC };\n//# sourceMappingURL=elliptic.js.map\n","export const version = \"signing-key/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { EC } from \"./elliptic\";\nimport { arrayify, hexDataLength, hexlify, hexZeroPad, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nlet _curve = null;\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\nexport class SigningKey {\n constructor(privateKey) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n _addPoint(other) {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n signDigest(digest) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n });\n }\n computeSharedSecret(otherKey) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n static isSigningKey(value) {\n return !!(value && value._isSigningKey);\n }\n}\nexport function recoverPublicKey(digest, signature) {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\nexport function computePublicKey(key, compressed) {\n const bytes = arrayify(key);\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n }\n else if (bytes.length === 33) {\n if (compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n }\n else if (bytes.length === 65) {\n if (!compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n//# sourceMappingURL=index.js.map","export const version = \"transactions/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport var TransactionTypes;\n(function (TransactionTypes) {\n TransactionTypes[TransactionTypes[\"legacy\"] = 0] = \"legacy\";\n TransactionTypes[TransactionTypes[\"eip2930\"] = 1] = \"eip2930\";\n TransactionTypes[TransactionTypes[\"eip1559\"] = 2] = \"eip1559\";\n})(TransactionTypes || (TransactionTypes = {}));\n;\n///////////////////////////////\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleNumber(value) {\n if (value === \"0x\") {\n return Zero;\n }\n return BigNumber.from(value);\n}\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\nconst allowedTransactionKeys = {\n chainId: true, data: true, gasLimit: true, gasPrice: true, nonce: true, to: true, type: true, value: true\n};\nexport function computeAddress(key) {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\nfunction formatNumber(value, name) {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${addr}:${index}]`, storageKey);\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${index}]`, set);\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, {});\n return accessSetify(addr, Object.keys(storageKeys).sort());\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _serializeEip1559(transaction, signature) {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x02\", RLP.encode(fields)]);\n}\nfunction _serializeEip2930(transaction, signature) {\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x01\", RLP.encode(fields)]);\n}\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction, signature) {\n checkProperties(transaction, allowedTransactionKeys);\n const raw = [];\n transactionFields.forEach(function (fieldInfo) {\n let value = transaction[fieldInfo.name] || ([]);\n const options = {};\n if (fieldInfo.numeric) {\n options.hexPad = \"left\";\n }\n value = arrayify(hexlify(value, options));\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n }\n raw.push(hexlify(value));\n });\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n if (typeof (chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n }\n else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam;\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n }\n else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n return RLP.encode(raw);\n}\nexport function serialize(transaction, signature) {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${transaction.type}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) {\n throw new Error(\"bad recid\");\n }\n tx.v = recid;\n }\n catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n }\n catch (error) { }\n}\nfunction _parseEip1559(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _parseEip2930(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n const tx = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n return tx;\n}\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction) {\n const transaction = RLP.decode(rawTransaction);\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n const tx = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n // Legacy unsigned transaction\n if (transaction.length === 6) {\n return tx;\n }\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n }\n catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n }\n else {\n // Signed Transaction\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) {\n tx.chainId = 0;\n }\n let recoveryParam = tx.v - 27;\n const raw = transaction.slice(0, 6);\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n }\n catch (error) { }\n tx.hash = keccak256(rawTransaction);\n }\n tx.type = null;\n return tx;\n}\nexport function parse(rawTransaction) {\n const payload = arrayify(rawTransaction);\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) {\n return _parse(payload);\n }\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${payload[0]}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n//# sourceMappingURL=index.js.map","import { hashMessage } from \"@ethersproject/hash\";\nimport { recoverAddress } from \"@ethersproject/transactions\";\nconst DEFAULT_RPC_URL = \"https://rpc.walletconnect.com/v1\";\nexport async function verifySignature(address, reconstructedMessage, cacaoSignature, chainId, projectId, baseRpcUrl) {\n switch (cacaoSignature.t) {\n case \"eip191\":\n return isValidEip191Signature(address, reconstructedMessage, cacaoSignature.s);\n case \"eip1271\":\n return await isValidEip1271Signature(address, reconstructedMessage, cacaoSignature.s, chainId, projectId, baseRpcUrl);\n break;\n default:\n throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${cacaoSignature.t}`);\n }\n}\nexport function isValidEip191Signature(address, message, signature) {\n const recoveredAddress = recoverAddress(hashMessage(message), signature);\n return recoveredAddress.toLowerCase() === address.toLowerCase();\n}\nexport async function isValidEip1271Signature(address, reconstructedMessage, signature, chainId, projectId, baseRpcUrl) {\n try {\n const eip1271MagicValue = \"0x1626ba7e\";\n const dynamicTypeOffset = \"0000000000000000000000000000000000000000000000000000000000000040\";\n const dynamicTypeLength = \"0000000000000000000000000000000000000000000000000000000000000041\";\n const nonPrefixedSignature = signature.substring(2);\n const nonPrefixedHashedMessage = hashMessage(reconstructedMessage).substring(2);\n const data = eip1271MagicValue +\n nonPrefixedHashedMessage +\n dynamicTypeOffset +\n dynamicTypeLength +\n nonPrefixedSignature;\n const response = await fetch(`${baseRpcUrl || DEFAULT_RPC_URL}/?chainId=${chainId}&projectId=${projectId}`, {\n method: \"POST\",\n body: JSON.stringify({\n id: generateJsonRpcId(),\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: address, data }, \"latest\"],\n }),\n });\n const { result } = await response.json();\n if (!result)\n return false;\n const recoveredValue = result.slice(0, eip1271MagicValue.length);\n return recoveredValue.toLowerCase() === eip1271MagicValue.toLowerCase();\n }\n catch (error) {\n console.error(\"isValidEip1271Signature: \", error);\n return false;\n }\n}\nfunction generateJsonRpcId() {\n return Date.now() + Math.floor(Math.random() * 1000);\n}\n//# sourceMappingURL=signatures.js.map","import { getCommonValuesInArrays } from \"./misc\";\nimport { verifySignature } from \"./signatures\";\nconst didPrefix = \"did:pkh:\";\nexport const getDidAddressSegments = (iss) => {\n return iss?.split(\":\");\n};\nexport const getDidChainId = (iss) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return iss.includes(didPrefix) ? segments[3] : segments[1];\n }\n return undefined;\n};\nexport const getNamespacedDidChainId = (iss) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments[2] + \":\" + segments[3];\n }\n return undefined;\n};\nexport const getDidAddress = (iss) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments.pop();\n }\n return undefined;\n};\nexport async function validateSignedCacao(params) {\n const { cacao, projectId } = params;\n const { s: signature, p: payload } = cacao;\n const reconstructed = formatMessage(payload, payload.iss);\n const walletAddress = getDidAddress(payload.iss);\n const isValid = await verifySignature(walletAddress, reconstructed, signature, getDidChainId(payload.iss), projectId);\n return isValid;\n}\nexport const formatMessage = (cacao, iss) => {\n const header = `${cacao.domain} wants you to sign in with your Ethereum account:`;\n const walletAddress = getDidAddress(iss);\n if (!cacao.aud && !cacao.uri) {\n throw new Error(\"Either `aud` or `uri` is required to construct the message\");\n }\n let statement = cacao.statement || undefined;\n const uri = `URI: ${cacao.aud || cacao.uri}`;\n const version = `Version: ${cacao.version}`;\n const chainId = `Chain ID: ${getDidChainId(iss)}`;\n const nonce = `Nonce: ${cacao.nonce}`;\n const issuedAt = `Issued At: ${cacao.iat}`;\n const resources = cacao.resources\n ? `Resources:${cacao.resources.map((resource) => `\\n- ${resource}`).join(\"\")}`\n : undefined;\n const recap = getRecapFromResources(cacao.resources);\n if (recap) {\n const decoded = decodeRecap(recap);\n statement = formatStatementFromRecap(statement, decoded);\n }\n const message = [\n header,\n walletAddress,\n ``,\n statement,\n ``,\n uri,\n version,\n chainId,\n nonce,\n issuedAt,\n resources,\n ]\n .filter((val) => val !== undefined && val !== null)\n .join(\"\\n\");\n return message;\n};\nexport function buildAuthObject(requestPayload, signature, iss) {\n if (!iss.includes(\"did:pkh:\")) {\n iss = `did:pkh:${iss}`;\n }\n const authObject = {\n h: {\n t: \"caip122\",\n },\n p: {\n iss,\n domain: requestPayload.domain,\n aud: requestPayload.aud,\n version: requestPayload.version,\n nonce: requestPayload.nonce,\n iat: requestPayload.iat,\n statement: requestPayload.statement,\n requestId: requestPayload.requestId,\n resources: requestPayload.resources,\n nbf: requestPayload.nbf,\n exp: requestPayload.exp,\n },\n s: signature,\n };\n return authObject;\n}\nexport function populateAuthPayload(params) {\n const { authPayload, chains, methods } = params;\n const statement = authPayload.statement || \"\";\n if (!chains?.length)\n return authPayload;\n const requested = authPayload.chains;\n const supported = chains;\n const supportedChains = getCommonValuesInArrays(requested, supported);\n if (!supportedChains?.length) {\n throw new Error(\"No supported chains\");\n }\n const requestedRecaps = getDecodedRecapFromResources(authPayload.resources);\n if (!requestedRecaps)\n return authPayload;\n isValidRecap(requestedRecaps);\n const resource = getRecapResource(requestedRecaps, \"eip155\");\n let updatedResources = authPayload?.resources || [];\n if (resource?.length) {\n const actions = getReCapActions(resource);\n const supportedActions = getCommonValuesInArrays(actions, methods);\n if (!supportedActions?.length) {\n throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(actions)}, supported: ${JSON.stringify(methods)}`);\n }\n const formattedActions = assignAbilityToActions(\"request\", supportedActions, {\n chains: supportedChains,\n });\n const updatedRecap = addResourceToRecap(requestedRecaps, \"eip155\", formattedActions);\n updatedResources = authPayload?.resources?.slice(0, -1) || [];\n updatedResources.push(encodeRecap(updatedRecap));\n }\n return {\n ...authPayload,\n statement: buildRecapStatement(statement, getRecapFromResources(updatedResources)),\n chains: supportedChains,\n resources: authPayload?.resources || updatedResources.length > 0 ? updatedResources : undefined,\n };\n}\nexport function getDecodedRecapFromResources(resources) {\n const resource = getRecapFromResources(resources);\n if (!resource)\n return;\n if (!isRecap(resource))\n return;\n return decodeRecap(resource);\n}\nexport function recapHasResource(recap, resource) {\n return recap?.att?.hasOwnProperty(resource);\n}\nexport function getRecapResource(recap, resource) {\n return recap?.att?.[resource] ? Object.keys(recap?.att?.[resource]) : [];\n}\nexport function getRecapAbilitiesFromResource(actions) {\n return actions?.map((action) => Object.keys(action)) || [];\n}\nexport function getReCapActions(abilities) {\n return abilities?.map((ability) => ability.split(\"/\")?.[1]) || [];\n}\nexport function base64Encode(input) {\n return Buffer.from(JSON.stringify(input)).toString(\"base64\");\n}\nexport function base64Decode(encodedString) {\n return JSON.parse(Buffer.from(encodedString, \"base64\").toString(\"utf-8\"));\n}\nexport function isValidRecap(recap) {\n if (!recap)\n throw new Error(\"No recap provided, value is undefined\");\n if (!recap.att)\n throw new Error(\"No `att` property found\");\n const resources = Object.keys(recap.att);\n if (!resources?.length)\n throw new Error(\"No resources found in `att` property\");\n resources.forEach((resource) => {\n const resourceAbilities = recap.att[resource];\n if (Array.isArray(resourceAbilities))\n throw new Error(`Resource must be an object: ${resource}`);\n if (typeof resourceAbilities !== \"object\")\n throw new Error(`Resource must be an object: ${resource}`);\n if (!Object.keys(resourceAbilities).length)\n throw new Error(`Resource object is empty: ${resource}`);\n Object.keys(resourceAbilities).forEach((ability) => {\n const limits = resourceAbilities[ability];\n if (!Array.isArray(limits))\n throw new Error(`Ability limits ${ability} must be an array of objects, found: ${limits}`);\n if (!limits.length)\n throw new Error(`Value of ${ability} is empty array, must be an array with objects`);\n limits.forEach((limit) => {\n if (typeof limit !== \"object\")\n throw new Error(`Ability limits (${ability}) must be an array of objects, found: ${limit}`);\n });\n });\n });\n}\nexport function createRecap(resource, ability, actions, limits = {}) {\n actions?.sort((a, b) => a.localeCompare(b));\n return {\n att: { [resource]: assignAbilityToActions(ability, actions, limits) },\n };\n}\nexport function addResourceToRecap(recap, resource, actions) {\n recap.att[resource] = {\n ...actions,\n };\n const keys = Object.keys(recap.att)?.sort((a, b) => a.localeCompare(b));\n const sorted = keys.reduce((obj, key) => {\n obj.att[key] = recap.att[key];\n return obj;\n }, { att: {} });\n return sorted;\n}\nexport function assignAbilityToActions(ability, actions, limits = {}) {\n actions = actions?.sort((a, b) => a.localeCompare(b));\n const abilities = actions.map((action) => {\n return {\n [`${ability}/${action}`]: [limits],\n };\n });\n return Object.assign({}, ...abilities);\n}\nexport function encodeRecap(recap) {\n isValidRecap(recap);\n return `urn:recap:${base64Encode(recap).replace(/=/g, \"\")}`;\n}\nexport function decodeRecap(recap) {\n const decoded = base64Decode(recap.replace(\"urn:recap:\", \"\"));\n isValidRecap(decoded);\n return decoded;\n}\nexport function createEncodedRecap(resource, ability, actions) {\n const recap = createRecap(resource, ability, actions);\n return encodeRecap(recap);\n}\nexport function isRecap(resource) {\n return resource && resource.includes(\"urn:recap:\");\n}\nexport function mergeEncodedRecaps(recap1, recap2) {\n const decoded1 = decodeRecap(recap1);\n const decoded2 = decodeRecap(recap2);\n const merged = mergeRecaps(decoded1, decoded2);\n return encodeRecap(merged);\n}\nexport function mergeRecaps(recap1, recap2) {\n isValidRecap(recap1);\n isValidRecap(recap2);\n const keys = Object.keys(recap1.att)\n .concat(Object.keys(recap2.att))\n .sort((a, b) => a.localeCompare(b));\n const mergedRecap = { att: {} };\n keys.forEach((key) => {\n const actions = Object.keys(recap1.att?.[key] || {})\n .concat(Object.keys(recap2.att?.[key] || {}))\n .sort((a, b) => a.localeCompare(b));\n actions.forEach((action) => {\n mergedRecap.att[key] = {\n ...mergedRecap.att[key],\n [action]: recap1.att[key]?.[action] || recap2.att[key]?.[action],\n };\n });\n });\n return mergedRecap;\n}\nexport function formatStatementFromRecap(statement = \"\", recap) {\n isValidRecap(recap);\n const base = \"I further authorize the stated URI to perform the following actions on my behalf: \";\n if (statement.includes(base))\n return statement;\n const statementForRecap = [];\n let currentCounter = 0;\n Object.keys(recap.att).forEach((resource) => {\n const actions = Object.keys(recap.att[resource]).map((ability) => {\n return {\n ability: ability.split(\"/\")[0],\n action: ability.split(\"/\")[1],\n };\n });\n actions.sort((a, b) => a.action.localeCompare(b.action));\n const uniqueAbilities = {};\n actions.forEach((action) => {\n if (!uniqueAbilities[action.ability]) {\n uniqueAbilities[action.ability] = [];\n }\n uniqueAbilities[action.ability].push(action.action);\n });\n const abilities = Object.keys(uniqueAbilities).map((ability) => {\n currentCounter++;\n return `(${currentCounter}) '${ability}': '${uniqueAbilities[ability].join(\"', '\")}' for '${resource}'.`;\n });\n statementForRecap.push(abilities.join(\", \").replace(\".,\", \".\"));\n });\n const recapStatemet = statementForRecap.join(\" \");\n const recapStatement = `${base}${recapStatemet}`;\n return `${statement ? statement + \" \" : \"\"}${recapStatement}`;\n}\nexport function getMethodsFromRecap(recap) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n const resource = decoded.att?.eip155;\n if (!resource)\n return [];\n return Object.keys(resource).map((ability) => ability.split(\"/\")[1]);\n}\nexport function getChainsFromRecap(recap) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n const chains = [];\n Object.values(decoded.att).forEach((resource) => {\n Object.values(resource).forEach((ability) => {\n if (ability?.[0]?.chains) {\n chains.push(ability[0].chains);\n }\n });\n });\n return [...new Set(chains.flat())];\n}\nexport function buildRecapStatement(statement, recap) {\n if (!recap)\n return statement;\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n return formatStatementFromRecap(statement, decoded);\n}\nexport function getRecapFromResources(resources) {\n if (!resources)\n return;\n const resource = resources?.[resources.length - 1];\n return isRecap(resource) ? resource : undefined;\n}\n//# sourceMappingURL=cacao.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package int provides helper functions for integerss.\n */\n// Shim using 16-bit pieces.\nfunction imulShim(a, b) {\n var ah = (a >>> 16) & 0xffff, al = a & 0xffff;\n var bh = (b >>> 16) & 0xffff, bl = b & 0xffff;\n return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0) | 0);\n}\n/** 32-bit integer multiplication. */\n// Use system Math.imul if available, otherwise use our shim.\nexports.mul = Math.imul || imulShim;\n/** 32-bit integer addition. */\nfunction add(a, b) {\n return (a + b) | 0;\n}\nexports.add = add;\n/** 32-bit integer subtraction. */\nfunction sub(a, b) {\n return (a - b) | 0;\n}\nexports.sub = sub;\n/** 32-bit integer left rotation */\nfunction rotl(x, n) {\n return x << n | x >>> (32 - n);\n}\nexports.rotl = rotl;\n/** 32-bit integer left rotation */\nfunction rotr(x, n) {\n return x << (32 - n) | x >>> n;\n}\nexports.rotr = rotr;\nfunction isIntegerShim(n) {\n return typeof n === \"number\" && isFinite(n) && Math.floor(n) === n;\n}\n/**\n * Returns true if the argument is an integer number.\n *\n * In ES2015, Number.isInteger.\n */\nexports.isInteger = Number.isInteger || isIntegerShim;\n/**\n * Math.pow(2, 53) - 1\n *\n * In ES2015 Number.MAX_SAFE_INTEGER.\n */\nexports.MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * Returns true if the argument is a safe integer number\n * (-MIN_SAFE_INTEGER < number <= MAX_SAFE_INTEGER)\n *\n * In ES2015, Number.isSafeInteger.\n */\nexports.isSafeInteger = function (n) {\n return exports.isInteger(n) && (n >= -exports.MAX_SAFE_INTEGER && n <= exports.MAX_SAFE_INTEGER);\n};\n//# sourceMappingURL=int.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package binary provides functions for encoding and decoding numbers in byte arrays.\n */\nvar int_1 = require(\"@stablelib/int\");\n// TODO(dchest): add asserts for correct value ranges and array offsets.\n/**\n * Reads 2 bytes from array starting at offset as big-endian\n * signed 16-bit integer and returns it.\n */\nfunction readInt16BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (((array[offset + 0] << 8) | array[offset + 1]) << 16) >> 16;\n}\nexports.readInt16BE = readInt16BE;\n/**\n * Reads 2 bytes from array starting at offset as big-endian\n * unsigned 16-bit integer and returns it.\n */\nfunction readUint16BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 0] << 8) | array[offset + 1]) >>> 0;\n}\nexports.readUint16BE = readUint16BE;\n/**\n * Reads 2 bytes from array starting at offset as little-endian\n * signed 16-bit integer and returns it.\n */\nfunction readInt16LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (((array[offset + 1] << 8) | array[offset]) << 16) >> 16;\n}\nexports.readInt16LE = readInt16LE;\n/**\n * Reads 2 bytes from array starting at offset as little-endian\n * unsigned 16-bit integer and returns it.\n */\nfunction readUint16LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 1] << 8) | array[offset]) >>> 0;\n}\nexports.readUint16LE = readUint16LE;\n/**\n * Writes 2-byte big-endian representation of 16-bit unsigned\n * value to byte array starting at offset.\n *\n * If byte array is not given, creates a new 2-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint16BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(2); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 8;\n out[offset + 1] = value >>> 0;\n return out;\n}\nexports.writeUint16BE = writeUint16BE;\nexports.writeInt16BE = writeUint16BE;\n/**\n * Writes 2-byte little-endian representation of 16-bit unsigned\n * value to array starting at offset.\n *\n * If byte array is not given, creates a new 2-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint16LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(2); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 0;\n out[offset + 1] = value >>> 8;\n return out;\n}\nexports.writeUint16LE = writeUint16LE;\nexports.writeInt16LE = writeUint16LE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * signed 32-bit integer and returns it.\n */\nfunction readInt32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (array[offset] << 24) |\n (array[offset + 1] << 16) |\n (array[offset + 2] << 8) |\n array[offset + 3];\n}\nexports.readInt32BE = readInt32BE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * unsigned 32-bit integer and returns it.\n */\nfunction readUint32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset] << 24) |\n (array[offset + 1] << 16) |\n (array[offset + 2] << 8) |\n array[offset + 3]) >>> 0;\n}\nexports.readUint32BE = readUint32BE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * signed 32-bit integer and returns it.\n */\nfunction readInt32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (array[offset + 3] << 24) |\n (array[offset + 2] << 16) |\n (array[offset + 1] << 8) |\n array[offset];\n}\nexports.readInt32LE = readInt32LE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * unsigned 32-bit integer and returns it.\n */\nfunction readUint32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 3] << 24) |\n (array[offset + 2] << 16) |\n (array[offset + 1] << 8) |\n array[offset]) >>> 0;\n}\nexports.readUint32LE = readUint32LE;\n/**\n * Writes 4-byte big-endian representation of 32-bit unsigned\n * value to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint32BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 24;\n out[offset + 1] = value >>> 16;\n out[offset + 2] = value >>> 8;\n out[offset + 3] = value >>> 0;\n return out;\n}\nexports.writeUint32BE = writeUint32BE;\nexports.writeInt32BE = writeUint32BE;\n/**\n * Writes 4-byte little-endian representation of 32-bit unsigned\n * value to array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint32LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 0;\n out[offset + 1] = value >>> 8;\n out[offset + 2] = value >>> 16;\n out[offset + 3] = value >>> 24;\n return out;\n}\nexports.writeUint32LE = writeUint32LE;\nexports.writeInt32LE = writeUint32LE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * signed 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports exact\n * numbers in range -9007199254740991 to 9007199254740991.\n * If the number stored in the byte array is outside this range,\n * the result is not exact.\n */\nfunction readInt64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var hi = readInt32BE(array, offset);\n var lo = readInt32BE(array, offset + 4);\n return hi * 0x100000000 + lo - ((lo >> 31) * 0x100000000);\n}\nexports.readInt64BE = readInt64BE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * unsigned 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports values up to 2^53-1.\n */\nfunction readUint64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var hi = readUint32BE(array, offset);\n var lo = readUint32BE(array, offset + 4);\n return hi * 0x100000000 + lo;\n}\nexports.readUint64BE = readUint64BE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * signed 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports exact\n * numbers in range -9007199254740991 to 9007199254740991.\n * If the number stored in the byte array is outside this range,\n * the result is not exact.\n */\nfunction readInt64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var lo = readInt32LE(array, offset);\n var hi = readInt32LE(array, offset + 4);\n return hi * 0x100000000 + lo - ((lo >> 31) * 0x100000000);\n}\nexports.readInt64LE = readInt64LE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * unsigned 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports values up to 2^53-1.\n */\nfunction readUint64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var lo = readUint32LE(array, offset);\n var hi = readUint32LE(array, offset + 4);\n return hi * 0x100000000 + lo;\n}\nexports.readUint64LE = readUint64LE;\n/**\n * Writes 8-byte big-endian representation of 64-bit unsigned\n * value to byte array starting at offset.\n *\n * Due to JavaScript limitation, supports values up to 2^53-1.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint64BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n writeUint32BE(value / 0x100000000 >>> 0, out, offset);\n writeUint32BE(value >>> 0, out, offset + 4);\n return out;\n}\nexports.writeUint64BE = writeUint64BE;\nexports.writeInt64BE = writeUint64BE;\n/**\n * Writes 8-byte little-endian representation of 64-bit unsigned\n * value to byte array starting at offset.\n *\n * Due to JavaScript limitation, supports values up to 2^53-1.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint64LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n writeUint32LE(value >>> 0, out, offset);\n writeUint32LE(value / 0x100000000 >>> 0, out, offset + 4);\n return out;\n}\nexports.writeUint64LE = writeUint64LE;\nexports.writeInt64LE = writeUint64LE;\n/**\n * Reads bytes from array starting at offset as big-endian\n * unsigned bitLen-bit integer and returns it.\n *\n * Supports bit lengths divisible by 8, up to 48.\n */\nfunction readUintBE(bitLength, array, offset) {\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"readUintBE supports only bitLengths divisible by 8\");\n }\n if (bitLength / 8 > array.length - offset) {\n throw new Error(\"readUintBE: array is too short for the given bitLength\");\n }\n var result = 0;\n var mul = 1;\n for (var i = bitLength / 8 + offset - 1; i >= offset; i--) {\n result += array[i] * mul;\n mul *= 256;\n }\n return result;\n}\nexports.readUintBE = readUintBE;\n/**\n * Reads bytes from array starting at offset as little-endian\n * unsigned bitLen-bit integer and returns it.\n *\n * Supports bit lengths divisible by 8, up to 48.\n */\nfunction readUintLE(bitLength, array, offset) {\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"readUintLE supports only bitLengths divisible by 8\");\n }\n if (bitLength / 8 > array.length - offset) {\n throw new Error(\"readUintLE: array is too short for the given bitLength\");\n }\n var result = 0;\n var mul = 1;\n for (var i = offset; i < offset + bitLength / 8; i++) {\n result += array[i] * mul;\n mul *= 256;\n }\n return result;\n}\nexports.readUintLE = readUintLE;\n/**\n * Writes a big-endian representation of bitLen-bit unsigned\n * value to array starting at offset.\n *\n * Supports bit lengths divisible by 8, up to 48.\n *\n * If byte array is not given, creates a new one.\n *\n * Returns the output byte array.\n */\nfunction writeUintBE(bitLength, value, out, offset) {\n if (out === void 0) { out = new Uint8Array(bitLength / 8); }\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"writeUintBE supports only bitLengths divisible by 8\");\n }\n if (!int_1.isSafeInteger(value)) {\n throw new Error(\"writeUintBE value must be an integer\");\n }\n var div = 1;\n for (var i = bitLength / 8 + offset - 1; i >= offset; i--) {\n out[i] = (value / div) & 0xff;\n div *= 256;\n }\n return out;\n}\nexports.writeUintBE = writeUintBE;\n/**\n * Writes a little-endian representation of bitLen-bit unsigned\n * value to array starting at offset.\n *\n * Supports bit lengths divisible by 8, up to 48.\n *\n * If byte array is not given, creates a new one.\n *\n * Returns the output byte array.\n */\nfunction writeUintLE(bitLength, value, out, offset) {\n if (out === void 0) { out = new Uint8Array(bitLength / 8); }\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"writeUintLE supports only bitLengths divisible by 8\");\n }\n if (!int_1.isSafeInteger(value)) {\n throw new Error(\"writeUintLE value must be an integer\");\n }\n var div = 1;\n for (var i = offset; i < offset + bitLength / 8; i++) {\n out[i] = (value / div) & 0xff;\n div *= 256;\n }\n return out;\n}\nexports.writeUintLE = writeUintLE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * 32-bit floating-point number and returns it.\n */\nfunction readFloat32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset);\n}\nexports.readFloat32BE = readFloat32BE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * 32-bit floating-point number and returns it.\n */\nfunction readFloat32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset, true);\n}\nexports.readFloat32LE = readFloat32LE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * 64-bit floating-point number (\"double\") and returns it.\n */\nfunction readFloat64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset);\n}\nexports.readFloat64BE = readFloat64BE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * 64-bit floating-point number (\"double\") and returns it.\n */\nfunction readFloat64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset, true);\n}\nexports.readFloat64LE = readFloat64LE;\n/**\n * Writes 4-byte big-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat32BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat32(offset, value);\n return out;\n}\nexports.writeFloat32BE = writeFloat32BE;\n/**\n * Writes 4-byte little-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat32LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat32(offset, value, true);\n return out;\n}\nexports.writeFloat32LE = writeFloat32LE;\n/**\n * Writes 8-byte big-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat64BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat64(offset, value);\n return out;\n}\nexports.writeFloat64BE = writeFloat64BE;\n/**\n * Writes 8-byte little-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat64LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat64(offset, value, true);\n return out;\n}\nexports.writeFloat64LE = writeFloat64LE;\n//# sourceMappingURL=binary.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Sets all values in the given array to zero and returns it.\n *\n * The fact that it sets bytes to zero can be relied on.\n *\n * There is no guarantee that this function makes data disappear from memory,\n * as runtime implementation can, for example, have copying garbage collector\n * that will make copies of sensitive data before we wipe it. Or that an\n * operating system will write our data to swap or sleep image. Another thing\n * is that an optimizing compiler can remove calls to this function or make it\n * no-op. There's nothing we can do with it, so we just do our best and hope\n * that everything will be okay and good will triumph over evil.\n */\nfunction wipe(array) {\n // Right now it's similar to array.fill(0). If it turns\n // out that runtimes optimize this call away, maybe\n // we can try something else.\n for (var i = 0; i < array.length; i++) {\n array[i] = 0;\n }\n return array;\n}\nexports.wipe = wipe;\n//# sourceMappingURL=wipe.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package chacha implements ChaCha stream cipher.\n */\nvar binary_1 = require(\"@stablelib/binary\");\nvar wipe_1 = require(\"@stablelib/wipe\");\n// Number of ChaCha rounds (ChaCha20).\nvar ROUNDS = 20;\n// Applies the ChaCha core function to 16-byte input,\n// 32-byte key key, and puts the result into 64-byte array out.\nfunction core(out, input, key) {\n var j0 = 0x61707865; // \"expa\" -- ChaCha's \"sigma\" constant\n var j1 = 0x3320646E; // \"nd 3\" for 32-byte keys\n var j2 = 0x79622D32; // \"2-by\"\n var j3 = 0x6B206574; // \"te k\"\n var j4 = (key[3] << 24) | (key[2] << 16) | (key[1] << 8) | key[0];\n var j5 = (key[7] << 24) | (key[6] << 16) | (key[5] << 8) | key[4];\n var j6 = (key[11] << 24) | (key[10] << 16) | (key[9] << 8) | key[8];\n var j7 = (key[15] << 24) | (key[14] << 16) | (key[13] << 8) | key[12];\n var j8 = (key[19] << 24) | (key[18] << 16) | (key[17] << 8) | key[16];\n var j9 = (key[23] << 24) | (key[22] << 16) | (key[21] << 8) | key[20];\n var j10 = (key[27] << 24) | (key[26] << 16) | (key[25] << 8) | key[24];\n var j11 = (key[31] << 24) | (key[30] << 16) | (key[29] << 8) | key[28];\n var j12 = (input[3] << 24) | (input[2] << 16) | (input[1] << 8) | input[0];\n var j13 = (input[7] << 24) | (input[6] << 16) | (input[5] << 8) | input[4];\n var j14 = (input[11] << 24) | (input[10] << 16) | (input[9] << 8) | input[8];\n var j15 = (input[15] << 24) | (input[14] << 16) | (input[13] << 8) | input[12];\n var x0 = j0;\n var x1 = j1;\n var x2 = j2;\n var x3 = j3;\n var x4 = j4;\n var x5 = j5;\n var x6 = j6;\n var x7 = j7;\n var x8 = j8;\n var x9 = j9;\n var x10 = j10;\n var x11 = j11;\n var x12 = j12;\n var x13 = j13;\n var x14 = j14;\n var x15 = j15;\n for (var i = 0; i < ROUNDS; i += 2) {\n x0 = x0 + x4 | 0;\n x12 ^= x0;\n x12 = x12 >>> (32 - 16) | x12 << 16;\n x8 = x8 + x12 | 0;\n x4 ^= x8;\n x4 = x4 >>> (32 - 12) | x4 << 12;\n x1 = x1 + x5 | 0;\n x13 ^= x1;\n x13 = x13 >>> (32 - 16) | x13 << 16;\n x9 = x9 + x13 | 0;\n x5 ^= x9;\n x5 = x5 >>> (32 - 12) | x5 << 12;\n x2 = x2 + x6 | 0;\n x14 ^= x2;\n x14 = x14 >>> (32 - 16) | x14 << 16;\n x10 = x10 + x14 | 0;\n x6 ^= x10;\n x6 = x6 >>> (32 - 12) | x6 << 12;\n x3 = x3 + x7 | 0;\n x15 ^= x3;\n x15 = x15 >>> (32 - 16) | x15 << 16;\n x11 = x11 + x15 | 0;\n x7 ^= x11;\n x7 = x7 >>> (32 - 12) | x7 << 12;\n x2 = x2 + x6 | 0;\n x14 ^= x2;\n x14 = x14 >>> (32 - 8) | x14 << 8;\n x10 = x10 + x14 | 0;\n x6 ^= x10;\n x6 = x6 >>> (32 - 7) | x6 << 7;\n x3 = x3 + x7 | 0;\n x15 ^= x3;\n x15 = x15 >>> (32 - 8) | x15 << 8;\n x11 = x11 + x15 | 0;\n x7 ^= x11;\n x7 = x7 >>> (32 - 7) | x7 << 7;\n x1 = x1 + x5 | 0;\n x13 ^= x1;\n x13 = x13 >>> (32 - 8) | x13 << 8;\n x9 = x9 + x13 | 0;\n x5 ^= x9;\n x5 = x5 >>> (32 - 7) | x5 << 7;\n x0 = x0 + x4 | 0;\n x12 ^= x0;\n x12 = x12 >>> (32 - 8) | x12 << 8;\n x8 = x8 + x12 | 0;\n x4 ^= x8;\n x4 = x4 >>> (32 - 7) | x4 << 7;\n x0 = x0 + x5 | 0;\n x15 ^= x0;\n x15 = x15 >>> (32 - 16) | x15 << 16;\n x10 = x10 + x15 | 0;\n x5 ^= x10;\n x5 = x5 >>> (32 - 12) | x5 << 12;\n x1 = x1 + x6 | 0;\n x12 ^= x1;\n x12 = x12 >>> (32 - 16) | x12 << 16;\n x11 = x11 + x12 | 0;\n x6 ^= x11;\n x6 = x6 >>> (32 - 12) | x6 << 12;\n x2 = x2 + x7 | 0;\n x13 ^= x2;\n x13 = x13 >>> (32 - 16) | x13 << 16;\n x8 = x8 + x13 | 0;\n x7 ^= x8;\n x7 = x7 >>> (32 - 12) | x7 << 12;\n x3 = x3 + x4 | 0;\n x14 ^= x3;\n x14 = x14 >>> (32 - 16) | x14 << 16;\n x9 = x9 + x14 | 0;\n x4 ^= x9;\n x4 = x4 >>> (32 - 12) | x4 << 12;\n x2 = x2 + x7 | 0;\n x13 ^= x2;\n x13 = x13 >>> (32 - 8) | x13 << 8;\n x8 = x8 + x13 | 0;\n x7 ^= x8;\n x7 = x7 >>> (32 - 7) | x7 << 7;\n x3 = x3 + x4 | 0;\n x14 ^= x3;\n x14 = x14 >>> (32 - 8) | x14 << 8;\n x9 = x9 + x14 | 0;\n x4 ^= x9;\n x4 = x4 >>> (32 - 7) | x4 << 7;\n x1 = x1 + x6 | 0;\n x12 ^= x1;\n x12 = x12 >>> (32 - 8) | x12 << 8;\n x11 = x11 + x12 | 0;\n x6 ^= x11;\n x6 = x6 >>> (32 - 7) | x6 << 7;\n x0 = x0 + x5 | 0;\n x15 ^= x0;\n x15 = x15 >>> (32 - 8) | x15 << 8;\n x10 = x10 + x15 | 0;\n x5 ^= x10;\n x5 = x5 >>> (32 - 7) | x5 << 7;\n }\n binary_1.writeUint32LE(x0 + j0 | 0, out, 0);\n binary_1.writeUint32LE(x1 + j1 | 0, out, 4);\n binary_1.writeUint32LE(x2 + j2 | 0, out, 8);\n binary_1.writeUint32LE(x3 + j3 | 0, out, 12);\n binary_1.writeUint32LE(x4 + j4 | 0, out, 16);\n binary_1.writeUint32LE(x5 + j5 | 0, out, 20);\n binary_1.writeUint32LE(x6 + j6 | 0, out, 24);\n binary_1.writeUint32LE(x7 + j7 | 0, out, 28);\n binary_1.writeUint32LE(x8 + j8 | 0, out, 32);\n binary_1.writeUint32LE(x9 + j9 | 0, out, 36);\n binary_1.writeUint32LE(x10 + j10 | 0, out, 40);\n binary_1.writeUint32LE(x11 + j11 | 0, out, 44);\n binary_1.writeUint32LE(x12 + j12 | 0, out, 48);\n binary_1.writeUint32LE(x13 + j13 | 0, out, 52);\n binary_1.writeUint32LE(x14 + j14 | 0, out, 56);\n binary_1.writeUint32LE(x15 + j15 | 0, out, 60);\n}\n/**\n * Encrypt src with ChaCha20 stream generated for the given 32-byte key and\n * 8-byte (as in original implementation) or 12-byte (as in RFC7539) nonce and\n * write the result into dst and return it.\n *\n * dst and src may be the same, but otherwise must not overlap.\n *\n * If nonce is 12 bytes, users should not encrypt more than 256 GiB with the\n * same key and nonce, otherwise the stream will repeat. The function will\n * throw error if counter overflows to prevent this.\n *\n * If nonce is 8 bytes, the output is practically unlimited (2^70 bytes, which\n * is more than a million petabytes). However, it is not recommended to\n * generate 8-byte nonces randomly, as the chance of collision is high.\n *\n * Never use the same key and nonce to encrypt more than one message.\n *\n * If nonceInplaceCounterLength is not 0, the nonce is assumed to be a 16-byte\n * array with stream counter in first nonceInplaceCounterLength bytes and nonce\n * in the last remaining bytes. The counter will be incremented inplace for\n * each ChaCha block. This is useful if you need to encrypt one stream of data\n * in chunks.\n */\nfunction streamXOR(key, nonce, src, dst, nonceInplaceCounterLength) {\n if (nonceInplaceCounterLength === void 0) { nonceInplaceCounterLength = 0; }\n // We only support 256-bit keys.\n if (key.length !== 32) {\n throw new Error(\"ChaCha: key size must be 32 bytes\");\n }\n if (dst.length < src.length) {\n throw new Error(\"ChaCha: destination is shorter than source\");\n }\n var nc;\n var counterLength;\n if (nonceInplaceCounterLength === 0) {\n if (nonce.length !== 8 && nonce.length !== 12) {\n throw new Error(\"ChaCha nonce must be 8 or 12 bytes\");\n }\n nc = new Uint8Array(16);\n // First counterLength bytes of nc are counter, starting with zero.\n counterLength = nc.length - nonce.length;\n // Last bytes of nc after counterLength are nonce, set them.\n nc.set(nonce, counterLength);\n }\n else {\n if (nonce.length !== 16) {\n throw new Error(\"ChaCha nonce with counter must be 16 bytes\");\n }\n // This will update passed nonce with counter inplace.\n nc = nonce;\n counterLength = nonceInplaceCounterLength;\n }\n // Allocate temporary space for ChaCha block.\n var block = new Uint8Array(64);\n for (var i = 0; i < src.length; i += 64) {\n // Generate a block.\n core(block, nc, key);\n // XOR block bytes with src into dst.\n for (var j = i; j < i + 64 && j < src.length; j++) {\n dst[j] = src[j] ^ block[j - i];\n }\n // Increment counter.\n incrementCounter(nc, 0, counterLength);\n }\n // Cleanup temporary space.\n wipe_1.wipe(block);\n if (nonceInplaceCounterLength === 0) {\n // Cleanup counter.\n wipe_1.wipe(nc);\n }\n return dst;\n}\nexports.streamXOR = streamXOR;\n/**\n * Generate ChaCha20 stream for the given 32-byte key and 8-byte or 12-byte\n * nonce and write it into dst and return it.\n *\n * Never use the same key and nonce to generate more than one stream.\n *\n * If nonceInplaceCounterLength is not 0, it behaves the same with respect to\n * the nonce as described in the streamXOR documentation.\n *\n * stream is like streamXOR with all-zero src.\n */\nfunction stream(key, nonce, dst, nonceInplaceCounterLength) {\n if (nonceInplaceCounterLength === void 0) { nonceInplaceCounterLength = 0; }\n wipe_1.wipe(dst);\n return streamXOR(key, nonce, dst, dst, nonceInplaceCounterLength);\n}\nexports.stream = stream;\nfunction incrementCounter(counter, pos, len) {\n var carry = 1;\n while (len--) {\n carry = carry + (counter[pos] & 0xff) | 0;\n counter[pos] = carry & 0xff;\n carry >>>= 8;\n pos++;\n }\n if (carry > 0) {\n throw new Error(\"ChaCha: counter overflow\");\n }\n}\n//# sourceMappingURL=chacha.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package constant-time provides functions for performing algorithmically constant-time operations.\n */\n/**\n * NOTE! Due to the inability to guarantee real constant time evaluation of\n * anything in JavaScript VM, this is module is the best effort.\n */\n/**\n * Returns resultIfOne if subject is 1, or resultIfZero if subject is 0.\n *\n * Supports only 32-bit integers, so resultIfOne or resultIfZero are not\n * integers, they'll be converted to them with bitwise operations.\n */\nfunction select(subject, resultIfOne, resultIfZero) {\n return (~(subject - 1) & resultIfOne) | ((subject - 1) & resultIfZero);\n}\nexports.select = select;\n/**\n * Returns 1 if a <= b, or 0 if not.\n * Arguments must be positive 32-bit integers less than or equal to 2^31 - 1.\n */\nfunction lessOrEqual(a, b) {\n return (((a | 0) - (b | 0) - 1) >>> 31) & 1;\n}\nexports.lessOrEqual = lessOrEqual;\n/**\n * Returns 1 if a and b are of equal length and their contents\n * are equal, or 0 otherwise.\n *\n * Note that unlike in equal(), zero-length inputs are considered\n * the same, so this function will return 1.\n */\nfunction compare(a, b) {\n if (a.length !== b.length) {\n return 0;\n }\n var result = 0;\n for (var i = 0; i < a.length; i++) {\n result |= a[i] ^ b[i];\n }\n return (1 & ((result - 1) >>> 8));\n}\nexports.compare = compare;\n/**\n * Returns true if a and b are of equal non-zero length,\n * and their contents are equal, or false otherwise.\n *\n * Note that unlike in compare() zero-length inputs are considered\n * _not_ equal, so this function will return false.\n */\nfunction equal(a, b) {\n if (a.length === 0 || b.length === 0) {\n return false;\n }\n return compare(a, b) !== 0;\n}\nexports.equal = equal;\n//# sourceMappingURL=constant-time.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package poly1305 implements Poly1305 one-time message authentication algorithm.\n */\nvar constant_time_1 = require(\"@stablelib/constant-time\");\nvar wipe_1 = require(\"@stablelib/wipe\");\nexports.DIGEST_LENGTH = 16;\n// Port of Andrew Moon's Poly1305-donna-16. Public domain.\n// https://github.com/floodyberry/poly1305-donna\n/**\n * Poly1305 computes 16-byte authenticator of message using\n * a one-time 32-byte key.\n *\n * Important: key should be used for only one message,\n * it should never repeat.\n */\nvar Poly1305 = /** @class */ (function () {\n function Poly1305(key) {\n this.digestLength = exports.DIGEST_LENGTH;\n this._buffer = new Uint8Array(16);\n this._r = new Uint16Array(10);\n this._h = new Uint16Array(10);\n this._pad = new Uint16Array(8);\n this._leftover = 0;\n this._fin = 0;\n this._finished = false;\n var t0 = key[0] | key[1] << 8;\n this._r[0] = (t0) & 0x1fff;\n var t1 = key[2] | key[3] << 8;\n this._r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n var t2 = key[4] | key[5] << 8;\n this._r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n var t3 = key[6] | key[7] << 8;\n this._r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n var t4 = key[8] | key[9] << 8;\n this._r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this._r[5] = ((t4 >>> 1)) & 0x1ffe;\n var t5 = key[10] | key[11] << 8;\n this._r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n var t6 = key[12] | key[13] << 8;\n this._r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n var t7 = key[14] | key[15] << 8;\n this._r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this._r[9] = ((t7 >>> 5)) & 0x007f;\n this._pad[0] = key[16] | key[17] << 8;\n this._pad[1] = key[18] | key[19] << 8;\n this._pad[2] = key[20] | key[21] << 8;\n this._pad[3] = key[22] | key[23] << 8;\n this._pad[4] = key[24] | key[25] << 8;\n this._pad[5] = key[26] | key[27] << 8;\n this._pad[6] = key[28] | key[29] << 8;\n this._pad[7] = key[30] | key[31] << 8;\n }\n Poly1305.prototype._blocks = function (m, mpos, bytes) {\n var hibit = this._fin ? 0 : 1 << 11;\n var h0 = this._h[0], h1 = this._h[1], h2 = this._h[2], h3 = this._h[3], h4 = this._h[4], h5 = this._h[5], h6 = this._h[6], h7 = this._h[7], h8 = this._h[8], h9 = this._h[9];\n var r0 = this._r[0], r1 = this._r[1], r2 = this._r[2], r3 = this._r[3], r4 = this._r[4], r5 = this._r[5], r6 = this._r[6], r7 = this._r[7], r8 = this._r[8], r9 = this._r[9];\n while (bytes >= 16) {\n var t0 = m[mpos + 0] | m[mpos + 1] << 8;\n h0 += (t0) & 0x1fff;\n var t1 = m[mpos + 2] | m[mpos + 3] << 8;\n h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n var t2 = m[mpos + 4] | m[mpos + 5] << 8;\n h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n var t3 = m[mpos + 6] | m[mpos + 7] << 8;\n h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n var t4 = m[mpos + 8] | m[mpos + 9] << 8;\n h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n var t5 = m[mpos + 10] | m[mpos + 11] << 8;\n h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n var t6 = m[mpos + 12] | m[mpos + 13] << 8;\n h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n var t7 = m[mpos + 14] | m[mpos + 15] << 8;\n h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n var c = 0;\n var d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13);\n d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13);\n d0 &= 0x1fff;\n var d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13);\n d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13);\n d1 &= 0x1fff;\n var d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13);\n d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13);\n d2 &= 0x1fff;\n var d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13);\n d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13);\n d3 &= 0x1fff;\n var d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13);\n d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13);\n d4 &= 0x1fff;\n var d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13);\n d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13);\n d5 &= 0x1fff;\n var d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13);\n d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13);\n d6 &= 0x1fff;\n var d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13);\n d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13);\n d7 &= 0x1fff;\n var d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13);\n d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13);\n d8 &= 0x1fff;\n var d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13);\n d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13);\n d9 &= 0x1fff;\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n mpos += 16;\n bytes -= 16;\n }\n this._h[0] = h0;\n this._h[1] = h1;\n this._h[2] = h2;\n this._h[3] = h3;\n this._h[4] = h4;\n this._h[5] = h5;\n this._h[6] = h6;\n this._h[7] = h7;\n this._h[8] = h8;\n this._h[9] = h9;\n };\n Poly1305.prototype.finish = function (mac, macpos) {\n if (macpos === void 0) { macpos = 0; }\n var g = new Uint16Array(10);\n var c;\n var mask;\n var f;\n var i;\n if (this._leftover) {\n i = this._leftover;\n this._buffer[i++] = 1;\n for (; i < 16; i++) {\n this._buffer[i] = 0;\n }\n this._fin = 1;\n this._blocks(this._buffer, 0, 16);\n }\n c = this._h[1] >>> 13;\n this._h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this._h[i] += c;\n c = this._h[i] >>> 13;\n this._h[i] &= 0x1fff;\n }\n this._h[0] += (c * 5);\n c = this._h[0] >>> 13;\n this._h[0] &= 0x1fff;\n this._h[1] += c;\n c = this._h[1] >>> 13;\n this._h[1] &= 0x1fff;\n this._h[2] += c;\n g[0] = this._h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this._h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) {\n g[i] &= mask;\n }\n mask = ~mask;\n for (i = 0; i < 10; i++) {\n this._h[i] = (this._h[i] & mask) | g[i];\n }\n this._h[0] = ((this._h[0]) | (this._h[1] << 13)) & 0xffff;\n this._h[1] = ((this._h[1] >>> 3) | (this._h[2] << 10)) & 0xffff;\n this._h[2] = ((this._h[2] >>> 6) | (this._h[3] << 7)) & 0xffff;\n this._h[3] = ((this._h[3] >>> 9) | (this._h[4] << 4)) & 0xffff;\n this._h[4] = ((this._h[4] >>> 12) | (this._h[5] << 1) | (this._h[6] << 14)) & 0xffff;\n this._h[5] = ((this._h[6] >>> 2) | (this._h[7] << 11)) & 0xffff;\n this._h[6] = ((this._h[7] >>> 5) | (this._h[8] << 8)) & 0xffff;\n this._h[7] = ((this._h[8] >>> 8) | (this._h[9] << 5)) & 0xffff;\n f = this._h[0] + this._pad[0];\n this._h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this._h[i] + this._pad[i]) | 0) + (f >>> 16)) | 0;\n this._h[i] = f & 0xffff;\n }\n mac[macpos + 0] = this._h[0] >>> 0;\n mac[macpos + 1] = this._h[0] >>> 8;\n mac[macpos + 2] = this._h[1] >>> 0;\n mac[macpos + 3] = this._h[1] >>> 8;\n mac[macpos + 4] = this._h[2] >>> 0;\n mac[macpos + 5] = this._h[2] >>> 8;\n mac[macpos + 6] = this._h[3] >>> 0;\n mac[macpos + 7] = this._h[3] >>> 8;\n mac[macpos + 8] = this._h[4] >>> 0;\n mac[macpos + 9] = this._h[4] >>> 8;\n mac[macpos + 10] = this._h[5] >>> 0;\n mac[macpos + 11] = this._h[5] >>> 8;\n mac[macpos + 12] = this._h[6] >>> 0;\n mac[macpos + 13] = this._h[6] >>> 8;\n mac[macpos + 14] = this._h[7] >>> 0;\n mac[macpos + 15] = this._h[7] >>> 8;\n this._finished = true;\n return this;\n };\n Poly1305.prototype.update = function (m) {\n var mpos = 0;\n var bytes = m.length;\n var want;\n if (this._leftover) {\n want = (16 - this._leftover);\n if (want > bytes) {\n want = bytes;\n }\n for (var i = 0; i < want; i++) {\n this._buffer[this._leftover + i] = m[mpos + i];\n }\n bytes -= want;\n mpos += want;\n this._leftover += want;\n if (this._leftover < 16) {\n return this;\n }\n this._blocks(this._buffer, 0, 16);\n this._leftover = 0;\n }\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this._blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n if (bytes) {\n for (var i = 0; i < bytes; i++) {\n this._buffer[this._leftover + i] = m[mpos + i];\n }\n this._leftover += bytes;\n }\n return this;\n };\n Poly1305.prototype.digest = function () {\n // TODO(dchest): it behaves differently than other hashes/HMAC,\n // because it throws when finished — others just return saved result.\n if (this._finished) {\n throw new Error(\"Poly1305 was finished\");\n }\n var mac = new Uint8Array(16);\n this.finish(mac);\n return mac;\n };\n Poly1305.prototype.clean = function () {\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._r);\n wipe_1.wipe(this._h);\n wipe_1.wipe(this._pad);\n this._leftover = 0;\n this._fin = 0;\n this._finished = true; // mark as finished even if not\n return this;\n };\n return Poly1305;\n}());\nexports.Poly1305 = Poly1305;\n/**\n * Returns 16-byte authenticator of data using a one-time 32-byte key.\n *\n * Important: key should be used for only one message, it should never repeat.\n */\nfunction oneTimeAuth(key, data) {\n var h = new Poly1305(key);\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.oneTimeAuth = oneTimeAuth;\n/**\n * Returns true if two authenticators are 16-byte long and equal.\n * Uses contant-time comparison to avoid leaking timing information.\n */\nfunction equal(a, b) {\n if (a.length !== exports.DIGEST_LENGTH || b.length !== exports.DIGEST_LENGTH) {\n return false;\n }\n return constant_time_1.equal(a, b);\n}\nexports.equal = equal;\n//# sourceMappingURL=poly1305.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar chacha_1 = require(\"@stablelib/chacha\");\nvar poly1305_1 = require(\"@stablelib/poly1305\");\nvar wipe_1 = require(\"@stablelib/wipe\");\nvar binary_1 = require(\"@stablelib/binary\");\nvar constant_time_1 = require(\"@stablelib/constant-time\");\nexports.KEY_LENGTH = 32;\nexports.NONCE_LENGTH = 12;\nexports.TAG_LENGTH = 16;\nvar ZEROS = new Uint8Array(16);\n/**\n * ChaCha20-Poly1305 Authenticated Encryption with Associated Data.\n *\n * Defined in RFC7539.\n */\nvar ChaCha20Poly1305 = /** @class */ (function () {\n /**\n * Creates a new instance with the given 32-byte key.\n */\n function ChaCha20Poly1305(key) {\n this.nonceLength = exports.NONCE_LENGTH;\n this.tagLength = exports.TAG_LENGTH;\n if (key.length !== exports.KEY_LENGTH) {\n throw new Error(\"ChaCha20Poly1305 needs 32-byte key\");\n }\n // Copy key.\n this._key = new Uint8Array(key);\n }\n /**\n * Encrypts and authenticates plaintext, authenticates associated data,\n * and returns sealed ciphertext, which includes authentication tag.\n *\n * RFC7539 specifies 12 bytes for nonce. It may be this 12-byte nonce\n * (\"IV\"), or full 16-byte counter (called \"32-bit fixed-common part\")\n * and nonce.\n *\n * If dst is given (it must be the size of plaintext + the size of tag\n * length) the result will be put into it. Dst and plaintext must not\n * overlap.\n */\n ChaCha20Poly1305.prototype.seal = function (nonce, plaintext, associatedData, dst) {\n if (nonce.length > 16) {\n throw new Error(\"ChaCha20Poly1305: incorrect nonce length\");\n }\n // Allocate space for counter, and set nonce as last bytes of it.\n var counter = new Uint8Array(16);\n counter.set(nonce, counter.length - nonce.length);\n // Generate authentication key by taking first 32-bytes of stream.\n // We pass full counter, which has 12-byte nonce and 4-byte block counter,\n // and it will get incremented after generating the block, which is\n // exactly what we need: we only use the first 32 bytes of 64-byte\n // ChaCha block and discard the next 32 bytes.\n var authKey = new Uint8Array(32);\n chacha_1.stream(this._key, counter, authKey, 4);\n // Allocate space for sealed ciphertext.\n var resultLength = plaintext.length + this.tagLength;\n var result;\n if (dst) {\n if (dst.length !== resultLength) {\n throw new Error(\"ChaCha20Poly1305: incorrect destination length\");\n }\n result = dst;\n }\n else {\n result = new Uint8Array(resultLength);\n }\n // Encrypt plaintext.\n chacha_1.streamXOR(this._key, counter, plaintext, result, 4);\n // Authenticate.\n // XXX: can \"simplify\" here: pass full result (which is already padded\n // due to zeroes prepared for tag), and ciphertext length instead of\n // subarray of result.\n this._authenticate(result.subarray(result.length - this.tagLength, result.length), authKey, result.subarray(0, result.length - this.tagLength), associatedData);\n // Cleanup.\n wipe_1.wipe(counter);\n return result;\n };\n /**\n * Authenticates sealed ciphertext (which includes authentication tag) and\n * associated data, decrypts ciphertext and returns decrypted plaintext.\n *\n * RFC7539 specifies 12 bytes for nonce. It may be this 12-byte nonce\n * (\"IV\"), or full 16-byte counter (called \"32-bit fixed-common part\")\n * and nonce.\n *\n * If authentication fails, it returns null.\n *\n * If dst is given (it must be of ciphertext length minus tag length),\n * the result will be put into it. Dst and plaintext must not overlap.\n */\n ChaCha20Poly1305.prototype.open = function (nonce, sealed, associatedData, dst) {\n if (nonce.length > 16) {\n throw new Error(\"ChaCha20Poly1305: incorrect nonce length\");\n }\n // Sealed ciphertext should at least contain tag.\n if (sealed.length < this.tagLength) {\n // TODO(dchest): should we throw here instead?\n return null;\n }\n // Allocate space for counter, and set nonce as last bytes of it.\n var counter = new Uint8Array(16);\n counter.set(nonce, counter.length - nonce.length);\n // Generate authentication key by taking first 32-bytes of stream.\n var authKey = new Uint8Array(32);\n chacha_1.stream(this._key, counter, authKey, 4);\n // Authenticate.\n // XXX: can simplify and avoid allocation: since authenticate()\n // already allocates tag (from Poly1305.digest(), it can return)\n // it instead of copying to calculatedTag. But then in seal()\n // we'll need to copy it.\n var calculatedTag = new Uint8Array(this.tagLength);\n this._authenticate(calculatedTag, authKey, sealed.subarray(0, sealed.length - this.tagLength), associatedData);\n // Constant-time compare tags and return null if they differ.\n if (!constant_time_1.equal(calculatedTag, sealed.subarray(sealed.length - this.tagLength, sealed.length))) {\n return null;\n }\n // Allocate space for decrypted plaintext.\n var resultLength = sealed.length - this.tagLength;\n var result;\n if (dst) {\n if (dst.length !== resultLength) {\n throw new Error(\"ChaCha20Poly1305: incorrect destination length\");\n }\n result = dst;\n }\n else {\n result = new Uint8Array(resultLength);\n }\n // Decrypt.\n chacha_1.streamXOR(this._key, counter, sealed.subarray(0, sealed.length - this.tagLength), result, 4);\n // Cleanup.\n wipe_1.wipe(counter);\n return result;\n };\n ChaCha20Poly1305.prototype.clean = function () {\n wipe_1.wipe(this._key);\n return this;\n };\n ChaCha20Poly1305.prototype._authenticate = function (tagOut, authKey, ciphertext, associatedData) {\n // Initialize Poly1305 with authKey.\n var h = new poly1305_1.Poly1305(authKey);\n // Authenticate padded associated data.\n if (associatedData) {\n h.update(associatedData);\n if (associatedData.length % 16 > 0) {\n h.update(ZEROS.subarray(associatedData.length % 16));\n }\n }\n // Authenticate padded ciphertext.\n h.update(ciphertext);\n if (ciphertext.length % 16 > 0) {\n h.update(ZEROS.subarray(ciphertext.length % 16));\n }\n // Authenticate length of associated data.\n // XXX: can avoid allocation here?\n var length = new Uint8Array(8);\n if (associatedData) {\n binary_1.writeUint64LE(associatedData.length, length);\n }\n h.update(length);\n // Authenticate length of ciphertext.\n binary_1.writeUint64LE(ciphertext.length, length);\n h.update(length);\n // Get tag and copy it into tagOut.\n var tag = h.digest();\n for (var i = 0; i < tag.length; i++) {\n tagOut[i] = tag[i];\n }\n // Cleanup.\n h.clean();\n wipe_1.wipe(tag);\n wipe_1.wipe(length);\n };\n return ChaCha20Poly1305;\n}());\nexports.ChaCha20Poly1305 = ChaCha20Poly1305;\n//# sourceMappingURL=chacha20poly1305.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isSerializableHash(h) {\n return (typeof h.saveState !== \"undefined\" &&\n typeof h.restoreState !== \"undefined\" &&\n typeof h.cleanSavedState !== \"undefined\");\n}\nexports.isSerializableHash = isSerializableHash;\n// TODO(dchest): figure out the standardized interface for XOF such as\n// SHAKE and BLAKE2X.\n//# sourceMappingURL=hash.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package hmac implements HMAC algorithm.\n */\nvar hash_1 = require(\"@stablelib/hash\");\nvar constant_time_1 = require(\"@stablelib/constant-time\");\nvar wipe_1 = require(\"@stablelib/wipe\");\n/**\n * HMAC implements hash-based message authentication algorithm.\n */\nvar HMAC = /** @class */ (function () {\n /**\n * Constructs a new HMAC with the given Hash and secret key.\n */\n function HMAC(hash, key) {\n this._finished = false; // true if HMAC was finalized\n // Initialize inner and outer hashes.\n this._inner = new hash();\n this._outer = new hash();\n // Set block and digest sizes for this HMAC\n // instance to values from the hash.\n this.blockSize = this._outer.blockSize;\n this.digestLength = this._outer.digestLength;\n // Pad temporary stores a key (or its hash) padded with zeroes.\n var pad = new Uint8Array(this.blockSize);\n if (key.length > this.blockSize) {\n // If key is bigger than hash block size, it must be\n // hashed and this hash is used as a key instead.\n this._inner.update(key).finish(pad).clean();\n }\n else {\n // Otherwise, copy the key into pad.\n pad.set(key);\n }\n // Now two different keys are derived from padded key\n // by xoring a different byte value to each.\n // To make inner hash key, xor byte 0x36 into pad.\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36;\n }\n // Update inner hash with the result.\n this._inner.update(pad);\n // To make outer hash key, xor byte 0x5c into pad.\n // But since we already xored 0x36 there, we must\n // first undo this by xoring it again.\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36 ^ 0x5c;\n }\n // Update outer hash with the result.\n this._outer.update(pad);\n // Save states of both hashes, so that we can quickly restore\n // them later in reset() without the need to remember the actual\n // key and perform this initialization again.\n if (hash_1.isSerializableHash(this._inner) && hash_1.isSerializableHash(this._outer)) {\n this._innerKeyedState = this._inner.saveState();\n this._outerKeyedState = this._outer.saveState();\n }\n // Clean pad.\n wipe_1.wipe(pad);\n }\n /**\n * Returns HMAC state to the state initialized with key\n * to make it possible to run HMAC over the other data with the same\n * key without creating a new instance.\n */\n HMAC.prototype.reset = function () {\n if (!hash_1.isSerializableHash(this._inner) || !hash_1.isSerializableHash(this._outer)) {\n throw new Error(\"hmac: can't reset() because hash doesn't implement restoreState()\");\n }\n // Restore keyed states of inner and outer hashes.\n this._inner.restoreState(this._innerKeyedState);\n this._outer.restoreState(this._outerKeyedState);\n this._finished = false;\n return this;\n };\n /**\n * Cleans HMAC state.\n */\n HMAC.prototype.clean = function () {\n if (hash_1.isSerializableHash(this._inner)) {\n this._inner.cleanSavedState(this._innerKeyedState);\n }\n if (hash_1.isSerializableHash(this._outer)) {\n this._outer.cleanSavedState(this._outerKeyedState);\n }\n this._inner.clean();\n this._outer.clean();\n };\n /**\n * Updates state with provided data.\n */\n HMAC.prototype.update = function (data) {\n this._inner.update(data);\n return this;\n };\n /**\n * Finalizes HMAC and puts the result in out.\n */\n HMAC.prototype.finish = function (out) {\n if (this._finished) {\n // If HMAC was finalized, outer hash is also finalized,\n // so it produces the same digest it produced when it\n // was finalized.\n this._outer.finish(out);\n return this;\n }\n // Finalize inner hash and store the result temporarily.\n this._inner.finish(out);\n // Update outer hash with digest of inner hash and and finalize it.\n this._outer.update(out.subarray(0, this.digestLength)).finish(out);\n this._finished = true;\n return this;\n };\n /**\n * Returns the computed message authentication code.\n */\n HMAC.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n /**\n * Saves HMAC state.\n * This function is needed for PBKDF2 optimization.\n */\n HMAC.prototype.saveState = function () {\n if (!hash_1.isSerializableHash(this._inner)) {\n throw new Error(\"hmac: can't saveState() because hash doesn't implement it\");\n }\n return this._inner.saveState();\n };\n HMAC.prototype.restoreState = function (savedState) {\n if (!hash_1.isSerializableHash(this._inner) || !hash_1.isSerializableHash(this._outer)) {\n throw new Error(\"hmac: can't restoreState() because hash doesn't implement it\");\n }\n this._inner.restoreState(savedState);\n this._outer.restoreState(this._outerKeyedState);\n this._finished = false;\n return this;\n };\n HMAC.prototype.cleanSavedState = function (savedState) {\n if (!hash_1.isSerializableHash(this._inner)) {\n throw new Error(\"hmac: can't cleanSavedState() because hash doesn't implement it\");\n }\n this._inner.cleanSavedState(savedState);\n };\n return HMAC;\n}());\nexports.HMAC = HMAC;\n/**\n * Returns HMAC using the given hash constructor for the key over data.\n */\nfunction hmac(hash, key, data) {\n var h = new HMAC(hash, key);\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hmac = hmac;\n/**\n * Returns true if two HMAC digests are equal.\n * Uses constant-time comparison to avoid leaking timing information.\n *\n * Example:\n *\n * const receivedDigest = ...\n * const realDigest = hmac(SHA256, key, data);\n * if (!equal(receivedDigest, realDigest)) {\n * throw new Error(\"Authentication error\");\n * }\n */\nexports.equal = constant_time_1.equal;\n//# sourceMappingURL=hmac.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar hmac_1 = require(\"@stablelib/hmac\");\nvar wipe_1 = require(\"@stablelib/wipe\");\n/**\n * HMAC-based Extract-and-Expand Key Derivation Function.\n *\n * Implements HKDF from RFC5869.\n *\n * Expands the given master key with salt and info into\n * a limited stream of key material.\n */\nvar HKDF = /** @class */ (function () {\n /**\n * Create a new HKDF instance for the given hash function\n * with the master key, optional salt, and info.\n *\n * - Master key is a high-entropy secret key (not a password).\n * - Salt is a non-secret random value.\n * - Info is application- and/or context-specific information.\n */\n function HKDF(hash, key, salt, info) {\n if (salt === void 0) { salt = new Uint8Array(0); }\n this._counter = new Uint8Array(1); // starts with zero\n this._hash = hash;\n this._info = info;\n // HKDF-Extract uses salt as HMAC key, and key as data.\n var okm = hmac_1.hmac(this._hash, salt, key);\n // Initialize HMAC for expanding with extracted key.\n this._hmac = new hmac_1.HMAC(hash, okm);\n // Allocate buffer.\n this._buffer = new Uint8Array(this._hmac.digestLength);\n this._bufpos = this._buffer.length;\n }\n // Fill buffer with new block of HKDF-Extract output.\n HKDF.prototype._fillBuffer = function () {\n // Increment counter.\n this._counter[0]++;\n var ctr = this._counter[0];\n // Check if counter overflowed.\n if (ctr === 0) {\n throw new Error(\"hkdf: cannot expand more\");\n }\n // Prepare HMAC instance for new data with old key.\n this._hmac.reset();\n // Hash in previous output if it was generated\n // (i.e. counter is greater than 1).\n if (ctr > 1) {\n this._hmac.update(this._buffer);\n }\n // Hash in info if it exists.\n if (this._info) {\n this._hmac.update(this._info);\n }\n // Hash in the counter.\n this._hmac.update(this._counter);\n // Output result to buffer and clean HMAC instance.\n this._hmac.finish(this._buffer);\n // Reset buffer position.\n this._bufpos = 0;\n };\n /**\n * Expand returns next key material of the given length.\n *\n * It throws if expansion limit is reached (which is\n * 254 digests of the underlying HMAC function).\n */\n HKDF.prototype.expand = function (length) {\n var out = new Uint8Array(length);\n for (var i = 0; i < out.length; i++) {\n if (this._bufpos === this._buffer.length) {\n this._fillBuffer();\n }\n out[i] = this._buffer[this._bufpos++];\n }\n return out;\n };\n HKDF.prototype.clean = function () {\n this._hmac.clean();\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._counter);\n this._bufpos = 0;\n };\n return HKDF;\n}());\nexports.HKDF = HKDF;\n// TODO(dchest): maybe implement deriveKey?\n//# sourceMappingURL=hkdf.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BrowserRandomSource = void 0;\nconst QUOTA = 65536;\nclass BrowserRandomSource {\n constructor() {\n this.isAvailable = false;\n this.isInstantiated = false;\n const browserCrypto = typeof self !== 'undefined'\n ? (self.crypto || self.msCrypto) // IE11 has msCrypto\n : null;\n if (browserCrypto && browserCrypto.getRandomValues !== undefined) {\n this._crypto = browserCrypto;\n this.isAvailable = true;\n this.isInstantiated = true;\n }\n }\n randomBytes(length) {\n if (!this.isAvailable || !this._crypto) {\n throw new Error(\"Browser random byte generator is not available.\");\n }\n const out = new Uint8Array(length);\n for (let i = 0; i < out.length; i += QUOTA) {\n this._crypto.getRandomValues(out.subarray(i, i + Math.min(out.length - i, QUOTA)));\n }\n return out;\n }\n}\nexports.BrowserRandomSource = BrowserRandomSource;\n//# sourceMappingURL=browser.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeRandomSource = void 0;\nconst wipe_1 = require(\"@stablelib/wipe\");\nclass NodeRandomSource {\n constructor() {\n this.isAvailable = false;\n this.isInstantiated = false;\n if (typeof require !== \"undefined\") {\n const nodeCrypto = require(\"crypto\");\n if (nodeCrypto && nodeCrypto.randomBytes) {\n this._crypto = nodeCrypto;\n this.isAvailable = true;\n this.isInstantiated = true;\n }\n }\n }\n randomBytes(length) {\n if (!this.isAvailable || !this._crypto) {\n throw new Error(\"Node.js random byte generator is not available.\");\n }\n // Get random bytes (result is Buffer).\n let buffer = this._crypto.randomBytes(length);\n // Make sure we got the length that we requested.\n if (buffer.length !== length) {\n throw new Error(\"NodeRandomSource: got fewer bytes than requested\");\n }\n // Allocate output array.\n const out = new Uint8Array(length);\n // Copy bytes from buffer to output.\n for (let i = 0; i < out.length; i++) {\n out[i] = buffer[i];\n }\n // Cleanup.\n (0, wipe_1.wipe)(buffer);\n return out;\n }\n}\nexports.NodeRandomSource = NodeRandomSource;\n//# sourceMappingURL=node.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SystemRandomSource = void 0;\nconst browser_1 = require(\"./browser\");\nconst node_1 = require(\"./node\");\nclass SystemRandomSource {\n constructor() {\n this.isAvailable = false;\n this.name = \"\";\n // Try browser.\n this._source = new browser_1.BrowserRandomSource();\n if (this._source.isAvailable) {\n this.isAvailable = true;\n this.name = \"Browser\";\n return;\n }\n // If no browser source, try Node.\n this._source = new node_1.NodeRandomSource();\n if (this._source.isAvailable) {\n this.isAvailable = true;\n this.name = \"Node\";\n return;\n }\n // No sources, we're out of options.\n }\n randomBytes(length) {\n if (!this.isAvailable) {\n throw new Error(\"System random byte generator is not available.\");\n }\n return this._source.randomBytes(length);\n }\n}\nexports.SystemRandomSource = SystemRandomSource;\n//# sourceMappingURL=system.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.randomStringForEntropy = exports.randomString = exports.randomUint32 = exports.randomBytes = exports.defaultRandomSource = void 0;\nconst system_1 = require(\"./source/system\");\nconst binary_1 = require(\"@stablelib/binary\");\nconst wipe_1 = require(\"@stablelib/wipe\");\nexports.defaultRandomSource = new system_1.SystemRandomSource();\nfunction randomBytes(length, prng = exports.defaultRandomSource) {\n return prng.randomBytes(length);\n}\nexports.randomBytes = randomBytes;\n/**\n * Returns a uniformly random unsigned 32-bit integer.\n */\nfunction randomUint32(prng = exports.defaultRandomSource) {\n // Generate 4-byte random buffer.\n const buf = randomBytes(4, prng);\n // Convert bytes from buffer into a 32-bit integer.\n // It's not important which byte order to use, since\n // the result is random.\n const result = (0, binary_1.readUint32LE)(buf);\n // Clean the buffer.\n (0, wipe_1.wipe)(buf);\n return result;\n}\nexports.randomUint32 = randomUint32;\n/** 62 alphanumeric characters for default charset of randomString() */\nconst ALPHANUMERIC = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\n/**\n * Returns a uniform random string of the given length\n * with characters from the given charset.\n *\n * Charset must not have more than 256 characters.\n *\n * Default charset generates case-sensitive alphanumeric\n * strings (0-9, A-Z, a-z).\n */\nfunction randomString(length, charset = ALPHANUMERIC, prng = exports.defaultRandomSource) {\n if (charset.length < 2) {\n throw new Error(\"randomString charset is too short\");\n }\n if (charset.length > 256) {\n throw new Error(\"randomString charset is too long\");\n }\n let out = '';\n const charsLen = charset.length;\n const maxByte = 256 - (256 % charsLen);\n while (length > 0) {\n const buf = randomBytes(Math.ceil(length * 256 / maxByte), prng);\n for (let i = 0; i < buf.length && length > 0; i++) {\n const randomByte = buf[i];\n if (randomByte < maxByte) {\n out += charset.charAt(randomByte % charsLen);\n length--;\n }\n }\n (0, wipe_1.wipe)(buf);\n }\n return out;\n}\nexports.randomString = randomString;\n/**\n * Returns uniform random string containing at least the given\n * number of bits of entropy.\n *\n * For example, randomStringForEntropy(128) will return a 22-character\n * alphanumeric string, while randomStringForEntropy(128, \"0123456789\")\n * will return a 39-character numeric string, both will contain at\n * least 128 bits of entropy.\n *\n * Default charset generates case-sensitive alphanumeric\n * strings (0-9, A-Z, a-z).\n */\nfunction randomStringForEntropy(bits, charset = ALPHANUMERIC, prng = exports.defaultRandomSource) {\n const length = Math.ceil(bits / (Math.log(charset.length) / Math.LN2));\n return randomString(length, charset, prng);\n}\nexports.randomStringForEntropy = randomStringForEntropy;\n//# sourceMappingURL=random.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar binary_1 = require(\"@stablelib/binary\");\nvar wipe_1 = require(\"@stablelib/wipe\");\nexports.DIGEST_LENGTH = 32;\nexports.BLOCK_SIZE = 64;\n/**\n * SHA2-256 cryptographic hash algorithm.\n */\nvar SHA256 = /** @class */ (function () {\n function SHA256() {\n /** Length of hash output */\n this.digestLength = exports.DIGEST_LENGTH;\n /** Block size */\n this.blockSize = exports.BLOCK_SIZE;\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this._state = new Int32Array(8); // hash state\n this._temp = new Int32Array(64); // temporary state\n this._buffer = new Uint8Array(128); // buffer for data to hash\n this._bufferLength = 0; // number of bytes in buffer\n this._bytesHashed = 0; // number of total bytes hashed\n this._finished = false; // indicates whether the hash was finalized\n this.reset();\n }\n SHA256.prototype._initState = function () {\n this._state[0] = 0x6a09e667;\n this._state[1] = 0xbb67ae85;\n this._state[2] = 0x3c6ef372;\n this._state[3] = 0xa54ff53a;\n this._state[4] = 0x510e527f;\n this._state[5] = 0x9b05688c;\n this._state[6] = 0x1f83d9ab;\n this._state[7] = 0x5be0cd19;\n };\n /**\n * Resets hash state making it possible\n * to re-use this instance to hash other data.\n */\n SHA256.prototype.reset = function () {\n this._initState();\n this._bufferLength = 0;\n this._bytesHashed = 0;\n this._finished = false;\n return this;\n };\n /**\n * Cleans internal buffers and resets hash state.\n */\n SHA256.prototype.clean = function () {\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._temp);\n this.reset();\n };\n /**\n * Updates hash state with the given data.\n *\n * Throws error when trying to update already finalized hash:\n * instance must be reset to update it again.\n */\n SHA256.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length; }\n if (this._finished) {\n throw new Error(\"SHA256: can't update because hash was finished.\");\n }\n var dataPos = 0;\n this._bytesHashed += dataLength;\n if (this._bufferLength > 0) {\n while (this._bufferLength < this.blockSize && dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n if (this._bufferLength === this.blockSize) {\n hashBlocks(this._temp, this._state, this._buffer, 0, this.blockSize);\n this._bufferLength = 0;\n }\n }\n if (dataLength >= this.blockSize) {\n dataPos = hashBlocks(this._temp, this._state, data, dataPos, dataLength);\n dataLength %= this.blockSize;\n }\n while (dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n return this;\n };\n /**\n * Finalizes hash state and puts hash into out.\n * If hash was already finalized, puts the same value.\n */\n SHA256.prototype.finish = function (out) {\n if (!this._finished) {\n var bytesHashed = this._bytesHashed;\n var left = this._bufferLength;\n var bitLenHi = (bytesHashed / 0x20000000) | 0;\n var bitLenLo = bytesHashed << 3;\n var padLength = (bytesHashed % 64 < 56) ? 64 : 128;\n this._buffer[left] = 0x80;\n for (var i = left + 1; i < padLength - 8; i++) {\n this._buffer[i] = 0;\n }\n binary_1.writeUint32BE(bitLenHi, this._buffer, padLength - 8);\n binary_1.writeUint32BE(bitLenLo, this._buffer, padLength - 4);\n hashBlocks(this._temp, this._state, this._buffer, 0, padLength);\n this._finished = true;\n }\n for (var i = 0; i < this.digestLength / 4; i++) {\n binary_1.writeUint32BE(this._state[i], out, i * 4);\n }\n return this;\n };\n /**\n * Returns the final hash digest.\n */\n SHA256.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization.\n * Returns hash state to be used with restoreState().\n * Only chain value is saved, not buffers or other\n * state variables.\n */\n SHA256.prototype.saveState = function () {\n if (this._finished) {\n throw new Error(\"SHA256: cannot save finished state\");\n }\n return {\n state: new Int32Array(this._state),\n buffer: this._bufferLength > 0 ? new Uint8Array(this._buffer) : undefined,\n bufferLength: this._bufferLength,\n bytesHashed: this._bytesHashed\n };\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization.\n * Restores state saved by saveState() and sets bytesHashed\n * to the given value.\n */\n SHA256.prototype.restoreState = function (savedState) {\n this._state.set(savedState.state);\n this._bufferLength = savedState.bufferLength;\n if (savedState.buffer) {\n this._buffer.set(savedState.buffer);\n }\n this._bytesHashed = savedState.bytesHashed;\n this._finished = false;\n return this;\n };\n /**\n * Cleans state returned by saveState().\n */\n SHA256.prototype.cleanSavedState = function (savedState) {\n wipe_1.wipe(savedState.state);\n if (savedState.buffer) {\n wipe_1.wipe(savedState.buffer);\n }\n savedState.bufferLength = 0;\n savedState.bytesHashed = 0;\n };\n return SHA256;\n}());\nexports.SHA256 = SHA256;\n// Constants\nvar K = new Int32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\nfunction hashBlocks(w, v, p, pos, len) {\n while (len >= 64) {\n var a = v[0];\n var b = v[1];\n var c = v[2];\n var d = v[3];\n var e = v[4];\n var f = v[5];\n var g = v[6];\n var h = v[7];\n for (var i = 0; i < 16; i++) {\n var j = pos + i * 4;\n w[i] = binary_1.readUint32BE(p, j);\n }\n for (var i = 16; i < 64; i++) {\n var u = w[i - 2];\n var t1 = (u >>> 17 | u << (32 - 17)) ^ (u >>> 19 | u << (32 - 19)) ^ (u >>> 10);\n u = w[i - 15];\n var t2 = (u >>> 7 | u << (32 - 7)) ^ (u >>> 18 | u << (32 - 18)) ^ (u >>> 3);\n w[i] = (t1 + w[i - 7] | 0) + (t2 + w[i - 16] | 0);\n }\n for (var i = 0; i < 64; i++) {\n var t1 = (((((e >>> 6 | e << (32 - 6)) ^ (e >>> 11 | e << (32 - 11)) ^\n (e >>> 25 | e << (32 - 25))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n var t2 = (((a >>> 2 | a << (32 - 2)) ^ (a >>> 13 | a << (32 - 13)) ^\n (a >>> 22 | a << (32 - 22))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n v[0] += a;\n v[1] += b;\n v[2] += c;\n v[3] += d;\n v[4] += e;\n v[5] += f;\n v[6] += g;\n v[7] += h;\n pos += 64;\n len -= 64;\n }\n return pos;\n}\nfunction hash(data) {\n var h = new SHA256();\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hash = hash;\n//# sourceMappingURL=sha256.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sharedKey = exports.generateKeyPair = exports.generateKeyPairFromSeed = exports.scalarMultBase = exports.scalarMult = exports.SHARED_KEY_LENGTH = exports.SECRET_KEY_LENGTH = exports.PUBLIC_KEY_LENGTH = void 0;\n/**\n * Package x25519 implements X25519 key agreement.\n */\nconst random_1 = require(\"@stablelib/random\");\nconst wipe_1 = require(\"@stablelib/wipe\");\nexports.PUBLIC_KEY_LENGTH = 32;\nexports.SECRET_KEY_LENGTH = 32;\nexports.SHARED_KEY_LENGTH = 32;\n// Returns new zero-filled 16-element GF (Float64Array).\n// If passed an array of numbers, prefills the returned\n// array with them.\n//\n// We use Float64Array, because we need 48-bit numbers\n// for this implementation.\nfunction gf(init) {\n const r = new Float64Array(16);\n if (init) {\n for (let i = 0; i < init.length; i++) {\n r[i] = init[i];\n }\n }\n return r;\n}\n// Base point.\nconst _9 = new Uint8Array(32);\n_9[0] = 9;\nconst _121665 = gf([0xdb41, 1]);\nfunction car25519(o) {\n let c = 1;\n for (let i = 0; i < 16; i++) {\n let v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c - 1 + 37 * (c - 1);\n}\nfunction sel25519(p, q, b) {\n const c = ~(b - 1);\n for (let i = 0; i < 16; i++) {\n const t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\nfunction pack25519(o, n) {\n const m = gf();\n const t = gf();\n for (let i = 0; i < 16; i++) {\n t[i] = n[i];\n }\n car25519(t);\n car25519(t);\n car25519(t);\n for (let j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (let i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i - 1] >> 16) & 1);\n m[i - 1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14] >> 16) & 1);\n const b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (let i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\nfunction unpack25519(o, n) {\n for (let i = 0; i < 16; i++) {\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n }\n o[15] &= 0x7fff;\n}\nfunction add(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] + b[i];\n }\n}\nfunction sub(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] - b[i];\n }\n}\nfunction mul(o, a, b) {\n let v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n // first car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n // second car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n o[0] = t0;\n o[1] = t1;\n o[2] = t2;\n o[3] = t3;\n o[4] = t4;\n o[5] = t5;\n o[6] = t6;\n o[7] = t7;\n o[8] = t8;\n o[9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\nfunction square(o, a) {\n mul(o, a, a);\n}\nfunction inv25519(o, inp) {\n const c = gf();\n for (let i = 0; i < 16; i++) {\n c[i] = inp[i];\n }\n for (let i = 253; i >= 0; i--) {\n square(c, c);\n if (i !== 2 && i !== 4) {\n mul(c, c, inp);\n }\n }\n for (let i = 0; i < 16; i++) {\n o[i] = c[i];\n }\n}\nfunction scalarMult(n, p) {\n const z = new Uint8Array(32);\n const x = new Float64Array(80);\n const a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf();\n for (let i = 0; i < 31; i++) {\n z[i] = n[i];\n }\n z[31] = (n[31] & 127) | 64;\n z[0] &= 248;\n unpack25519(x, p);\n for (let i = 0; i < 16; i++) {\n b[i] = x[i];\n }\n a[0] = d[0] = 1;\n for (let i = 254; i >= 0; --i) {\n const r = (z[i >>> 3] >>> (i & 7)) & 1;\n sel25519(a, b, r);\n sel25519(c, d, r);\n add(e, a, c);\n sub(a, a, c);\n add(c, b, d);\n sub(b, b, d);\n square(d, e);\n square(f, a);\n mul(a, c, a);\n mul(c, b, e);\n add(e, a, c);\n sub(a, a, c);\n square(b, a);\n sub(c, d, f);\n mul(a, c, _121665);\n add(a, a, d);\n mul(c, c, a);\n mul(a, d, f);\n mul(d, b, x);\n square(b, e);\n sel25519(a, b, r);\n sel25519(c, d, r);\n }\n for (let i = 0; i < 16; i++) {\n x[i + 16] = a[i];\n x[i + 32] = c[i];\n x[i + 48] = b[i];\n x[i + 64] = d[i];\n }\n const x32 = x.subarray(32);\n const x16 = x.subarray(16);\n inv25519(x32, x32);\n mul(x16, x16, x32);\n const q = new Uint8Array(32);\n pack25519(q, x16);\n return q;\n}\nexports.scalarMult = scalarMult;\nfunction scalarMultBase(n) {\n return scalarMult(n, _9);\n}\nexports.scalarMultBase = scalarMultBase;\nfunction generateKeyPairFromSeed(seed) {\n if (seed.length !== exports.SECRET_KEY_LENGTH) {\n throw new Error(`x25519: seed must be ${exports.SECRET_KEY_LENGTH} bytes`);\n }\n const secretKey = new Uint8Array(seed);\n const publicKey = scalarMultBase(secretKey);\n return {\n publicKey,\n secretKey\n };\n}\nexports.generateKeyPairFromSeed = generateKeyPairFromSeed;\nfunction generateKeyPair(prng) {\n const seed = (0, random_1.randomBytes)(32, prng);\n const result = generateKeyPairFromSeed(seed);\n (0, wipe_1.wipe)(seed);\n return result;\n}\nexports.generateKeyPair = generateKeyPair;\n/**\n * Returns a shared key between our secret key and a peer's public key.\n *\n * Throws an error if the given keys are of wrong length.\n *\n * If rejectZero is true throws if the calculated shared key is all-zero.\n * From RFC 7748:\n *\n * > Protocol designers using Diffie-Hellman over the curves defined in\n * > this document must not assume \"contributory behavior\". Specially,\n * > contributory behavior means that both parties' private keys\n * > contribute to the resulting shared key. Since curve25519 and\n * > curve448 have cofactors of 8 and 4 (respectively), an input point of\n * > small order will eliminate any contribution from the other party's\n * > private key. This situation can be detected by checking for the all-\n * > zero output, which implementations MAY do, as specified in Section 6.\n * > However, a large number of existing implementations do not do this.\n *\n * IMPORTANT: the returned key is a raw result of scalar multiplication.\n * To use it as a key material, hash it with a cryptographic hash function.\n */\nfunction sharedKey(mySecretKey, theirPublicKey, rejectZero = false) {\n if (mySecretKey.length !== exports.PUBLIC_KEY_LENGTH) {\n throw new Error(\"X25519: incorrect secret key length\");\n }\n if (theirPublicKey.length !== exports.PUBLIC_KEY_LENGTH) {\n throw new Error(\"X25519: incorrect public key length\");\n }\n const result = scalarMult(mySecretKey, theirPublicKey);\n if (rejectZero) {\n let zeros = 0;\n for (let i = 0; i < result.length; i++) {\n zeros |= result[i];\n }\n if (zeros === 0) {\n throw new Error(\"X25519: invalid shared key\");\n }\n }\n return result;\n}\nexports.sharedKey = sharedKey;\n//# sourceMappingURL=x25519.js.map","export function alloc(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) {\n return globalThis.Buffer.alloc(size);\n }\n return new Uint8Array(size);\n}\nexport function allocUnsafe(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) {\n return globalThis.Buffer.allocUnsafe(size);\n }\n return new Uint8Array(size);\n}","import { allocUnsafe } from './alloc.js';\nexport function concat(arrays, length) {\n if (!length) {\n length = arrays.reduce((acc, curr) => acc + curr.length, 0);\n }\n const output = allocUnsafe(length);\n let offset = 0;\n for (const arr of arrays) {\n output.set(arr, offset);\n offset += arr.length;\n }\n return output;\n}","function base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256);\n var iFACTOR = Math.log(256) / Math.log(BASE);\n function encode(source) {\n if (source instanceof Uint8Array);\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n var size = (pend - pbegin) * iFACTOR + 1 >>> 0;\n var b58 = new Uint8Array(size);\n while (pbegin !== pend) {\n var carry = source[pbegin];\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && it1 !== -1; it1--, i++) {\n carry += 256 * b58[it1] >>> 0;\n b58[it1] = carry % BASE >>> 0;\n carry = carry / BASE >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n if (source[psz] === ' ') {\n return;\n }\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n var size = (source.length - psz) * FACTOR + 1 >>> 0;\n var b256 = new Uint8Array(size);\n while (source[psz]) {\n var carry = BASE_MAP[source.charCodeAt(psz)];\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && it3 !== -1; it3--, i++) {\n carry += BASE * b256[it3] >>> 0;\n b256[it3] = carry % 256 >>> 0;\n carry = carry / 256 >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n if (source[psz] === ' ') {\n return;\n }\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${ name } character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;","const empty = new Uint8Array(0);\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\nconst fromHex = hex => {\n const hexes = hex.match(/../g);\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n};\nconst equals = (aa, bb) => {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n};\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n};\nconst isBinary = o => o instanceof ArrayBuffer || ArrayBuffer.isView(o);\nconst fromString = str => new TextEncoder().encode(str);\nconst toString = b => new TextDecoder().decode(b);\nexport {\n equals,\n coerce,\n isBinary,\n fromHex,\n toHex,\n fromString,\n toString,\n empty\n};","import basex from '../../vendor/base-x.js';\nimport { coerce } from '../bytes.js';\nclass Encoder {\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${ this.prefix }${ this.baseEncode(bytes) }`;\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\nclass Decoder {\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${ JSON.stringify(text) }, ${ this.name } decoder only supports inputs prefixed with ${ this.prefix }`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n } else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder) {\n return decoder.decode(input);\n } else {\n throw RangeError(`Unable to decode multibase string ${ JSON.stringify(input) }, only inputs prefixed with ${ Object.keys(this.decoders) } are supported`);\n }\n }\n}\nexport const or = (left, right) => new ComposedDecoder({\n ...left.decoders || { [left.prefix]: left },\n ...right.decoders || { [right.prefix]: right }\n});\nexport class Codec {\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport const from = ({name, prefix, encode, decode}) => new Codec(name, prefix, encode, decode);\nexport const baseX = ({prefix, name, alphabet}) => {\n const {encode, decode} = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: text => coerce(decode(text))\n });\n};\nconst decode = (string, alphabet, bitsPerChar, name) => {\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n const out = new Uint8Array(end * bitsPerChar / 8 | 0);\n let bits = 0;\n let buffer = 0;\n let written = 0;\n for (let i = 0; i < end; ++i) {\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${ name } character`);\n }\n buffer = buffer << bitsPerChar | value;\n bits += bitsPerChar;\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 255 & buffer >> bits;\n }\n }\n if (bits >= bitsPerChar || 255 & buffer << 8 - bits) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n};\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0;\n let buffer = 0;\n for (let i = 0; i < data.length; ++i) {\n buffer = buffer << 8 | data[i];\n bits += 8;\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & buffer >> bits];\n }\n }\n if (bits) {\n out += alphabet[mask & buffer << bitsPerChar - bits];\n }\n if (pad) {\n while (out.length * bitsPerChar & 7) {\n out += '=';\n }\n }\n return out;\n};\nexport const rfc4648 = ({name, prefix, bitsPerChar, alphabet}) => {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n};","import { from } from './base.js';\nimport {\n fromString,\n toString\n} from '../bytes.js';\nexport const identity = from({\n prefix: '\\0',\n name: 'identity',\n encode: buf => toString(buf),\n decode: str => fromString(str)\n});","import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n});","import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n});","import { baseX } from './base.js';\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n});","import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n});","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});","import { baseX } from './base.js';\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});","import { from } from './base.js';\nconst alphabet = Array.from('\\uD83D\\uDE80\\uD83E\\uDE90\\u2604\\uD83D\\uDEF0\\uD83C\\uDF0C\\uD83C\\uDF11\\uD83C\\uDF12\\uD83C\\uDF13\\uD83C\\uDF14\\uD83C\\uDF15\\uD83C\\uDF16\\uD83C\\uDF17\\uD83C\\uDF18\\uD83C\\uDF0D\\uD83C\\uDF0F\\uD83C\\uDF0E\\uD83D\\uDC09\\u2600\\uD83D\\uDCBB\\uD83D\\uDDA5\\uD83D\\uDCBE\\uD83D\\uDCBF\\uD83D\\uDE02\\u2764\\uD83D\\uDE0D\\uD83E\\uDD23\\uD83D\\uDE0A\\uD83D\\uDE4F\\uD83D\\uDC95\\uD83D\\uDE2D\\uD83D\\uDE18\\uD83D\\uDC4D\\uD83D\\uDE05\\uD83D\\uDC4F\\uD83D\\uDE01\\uD83D\\uDD25\\uD83E\\uDD70\\uD83D\\uDC94\\uD83D\\uDC96\\uD83D\\uDC99\\uD83D\\uDE22\\uD83E\\uDD14\\uD83D\\uDE06\\uD83D\\uDE44\\uD83D\\uDCAA\\uD83D\\uDE09\\u263A\\uD83D\\uDC4C\\uD83E\\uDD17\\uD83D\\uDC9C\\uD83D\\uDE14\\uD83D\\uDE0E\\uD83D\\uDE07\\uD83C\\uDF39\\uD83E\\uDD26\\uD83C\\uDF89\\uD83D\\uDC9E\\u270C\\u2728\\uD83E\\uDD37\\uD83D\\uDE31\\uD83D\\uDE0C\\uD83C\\uDF38\\uD83D\\uDE4C\\uD83D\\uDE0B\\uD83D\\uDC97\\uD83D\\uDC9A\\uD83D\\uDE0F\\uD83D\\uDC9B\\uD83D\\uDE42\\uD83D\\uDC93\\uD83E\\uDD29\\uD83D\\uDE04\\uD83D\\uDE00\\uD83D\\uDDA4\\uD83D\\uDE03\\uD83D\\uDCAF\\uD83D\\uDE48\\uD83D\\uDC47\\uD83C\\uDFB6\\uD83D\\uDE12\\uD83E\\uDD2D\\u2763\\uD83D\\uDE1C\\uD83D\\uDC8B\\uD83D\\uDC40\\uD83D\\uDE2A\\uD83D\\uDE11\\uD83D\\uDCA5\\uD83D\\uDE4B\\uD83D\\uDE1E\\uD83D\\uDE29\\uD83D\\uDE21\\uD83E\\uDD2A\\uD83D\\uDC4A\\uD83E\\uDD73\\uD83D\\uDE25\\uD83E\\uDD24\\uD83D\\uDC49\\uD83D\\uDC83\\uD83D\\uDE33\\u270B\\uD83D\\uDE1A\\uD83D\\uDE1D\\uD83D\\uDE34\\uD83C\\uDF1F\\uD83D\\uDE2C\\uD83D\\uDE43\\uD83C\\uDF40\\uD83C\\uDF37\\uD83D\\uDE3B\\uD83D\\uDE13\\u2B50\\u2705\\uD83E\\uDD7A\\uD83C\\uDF08\\uD83D\\uDE08\\uD83E\\uDD18\\uD83D\\uDCA6\\u2714\\uD83D\\uDE23\\uD83C\\uDFC3\\uD83D\\uDC90\\u2639\\uD83C\\uDF8A\\uD83D\\uDC98\\uD83D\\uDE20\\u261D\\uD83D\\uDE15\\uD83C\\uDF3A\\uD83C\\uDF82\\uD83C\\uDF3B\\uD83D\\uDE10\\uD83D\\uDD95\\uD83D\\uDC9D\\uD83D\\uDE4A\\uD83D\\uDE39\\uD83D\\uDDE3\\uD83D\\uDCAB\\uD83D\\uDC80\\uD83D\\uDC51\\uD83C\\uDFB5\\uD83E\\uDD1E\\uD83D\\uDE1B\\uD83D\\uDD34\\uD83D\\uDE24\\uD83C\\uDF3C\\uD83D\\uDE2B\\u26BD\\uD83E\\uDD19\\u2615\\uD83C\\uDFC6\\uD83E\\uDD2B\\uD83D\\uDC48\\uD83D\\uDE2E\\uD83D\\uDE46\\uD83C\\uDF7B\\uD83C\\uDF43\\uD83D\\uDC36\\uD83D\\uDC81\\uD83D\\uDE32\\uD83C\\uDF3F\\uD83E\\uDDE1\\uD83C\\uDF81\\u26A1\\uD83C\\uDF1E\\uD83C\\uDF88\\u274C\\u270A\\uD83D\\uDC4B\\uD83D\\uDE30\\uD83E\\uDD28\\uD83D\\uDE36\\uD83E\\uDD1D\\uD83D\\uDEB6\\uD83D\\uDCB0\\uD83C\\uDF53\\uD83D\\uDCA2\\uD83E\\uDD1F\\uD83D\\uDE41\\uD83D\\uDEA8\\uD83D\\uDCA8\\uD83E\\uDD2C\\u2708\\uD83C\\uDF80\\uD83C\\uDF7A\\uD83E\\uDD13\\uD83D\\uDE19\\uD83D\\uDC9F\\uD83C\\uDF31\\uD83D\\uDE16\\uD83D\\uDC76\\uD83E\\uDD74\\u25B6\\u27A1\\u2753\\uD83D\\uDC8E\\uD83D\\uDCB8\\u2B07\\uD83D\\uDE28\\uD83C\\uDF1A\\uD83E\\uDD8B\\uD83D\\uDE37\\uD83D\\uDD7A\\u26A0\\uD83D\\uDE45\\uD83D\\uDE1F\\uD83D\\uDE35\\uD83D\\uDC4E\\uD83E\\uDD32\\uD83E\\uDD20\\uD83E\\uDD27\\uD83D\\uDCCC\\uD83D\\uDD35\\uD83D\\uDC85\\uD83E\\uDDD0\\uD83D\\uDC3E\\uD83C\\uDF52\\uD83D\\uDE17\\uD83E\\uDD11\\uD83C\\uDF0A\\uD83E\\uDD2F\\uD83D\\uDC37\\u260E\\uD83D\\uDCA7\\uD83D\\uDE2F\\uD83D\\uDC86\\uD83D\\uDC46\\uD83C\\uDFA4\\uD83D\\uDE47\\uD83C\\uDF51\\u2744\\uD83C\\uDF34\\uD83D\\uDCA3\\uD83D\\uDC38\\uD83D\\uDC8C\\uD83D\\uDCCD\\uD83E\\uDD40\\uD83E\\uDD22\\uD83D\\uDC45\\uD83D\\uDCA1\\uD83D\\uDCA9\\uD83D\\uDC50\\uD83D\\uDCF8\\uD83D\\uDC7B\\uD83E\\uDD10\\uD83E\\uDD2E\\uD83C\\uDFBC\\uD83E\\uDD75\\uD83D\\uDEA9\\uD83C\\uDF4E\\uD83C\\uDF4A\\uD83D\\uDC7C\\uD83D\\uDC8D\\uD83D\\uDCE3\\uD83E\\uDD42');\nconst alphabetBytesToChars = alphabet.reduce((p, c, i) => {\n p[i] = c;\n return p;\n}, []);\nconst alphabetCharsToBytes = alphabet.reduce((p, c, i) => {\n p[c.codePointAt(0)] = i;\n return p;\n}, []);\nfunction encode(data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c];\n return p;\n }, '');\n}\nfunction decode(str) {\n const byts = [];\n for (const char of str) {\n const byt = alphabetCharsToBytes[char.codePointAt(0)];\n if (byt === undefined) {\n throw new Error(`Non-base256emoji character: ${ char }`);\n }\n byts.push(byt);\n }\n return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n prefix: '\\uD83D\\uDE80',\n name: 'base256emoji',\n encode,\n decode\n});","var encode_1 = encode;\nvar MSB = 128, REST = 127, MSBALL = ~REST, INT = Math.pow(2, 31);\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = num & 255 | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = num & 255 | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 128, REST$1 = 127;\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28 ? (b & REST$1) << shift : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (value) {\n return value < N1 ? 1 : value < N2 ? 2 : value < N3 ? 3 : value < N4 ? 4 : value < N5 ? 5 : value < N6 ? 6 : value < N7 ? 7 : value < N8 ? 8 : value < N9 ? 9 : 10;\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;","import varint from '../vendor/varint.js';\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset);\n return [\n code,\n varint.decode.bytes\n ];\n};\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset);\n return target;\n};\nexport const encodingLength = int => {\n return varint.encodingLength(int);\n};","import {\n coerce,\n equals as equalBytes\n} from '../bytes.js';\nimport * as varint from '../varint.js';\nexport const create = (code, digest) => {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n};\nexport const decode = multihash => {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n};\nexport const equals = (a, b) => {\n if (a === b) {\n return true;\n } else {\n return a.code === b.code && a.size === b.size && equalBytes(a.bytes, b.bytes);\n }\n};\nexport class Digest {\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}","import * as Digest from './digest.js';\nexport const from = ({name, code, encode}) => new Hasher(name, code, encode);\nexport class Hasher {\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array ? Digest.create(this.code, result) : result.then(digest => Digest.create(this.code, digest));\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}","import { from } from './hasher.js';\nconst sha = name => async data => new Uint8Array(await crypto.subtle.digest(name, data));\nexport const sha256 = from({\n name: 'sha2-256',\n code: 18,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 19,\n encode: sha('SHA-512')\n});","import { coerce } from '../bytes.js';\nimport * as Digest from './digest.js';\nconst code = 0;\nconst name = 'identity';\nconst encode = coerce;\nconst digest = input => Digest.create(code, encode(input));\nexport const identity = {\n code,\n name,\n encode,\n digest\n};","const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 512;\nexport const encode = node => textEncoder.encode(JSON.stringify(node));\nexport const decode = data => JSON.parse(textDecoder.decode(data));","import * as identityBase from './bases/identity.js';\nimport * as base2 from './bases/base2.js';\nimport * as base8 from './bases/base8.js';\nimport * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as sha2 from './hashes/sha2.js';\nimport * as identity from './hashes/identity.js';\nimport * as raw from './codecs/raw.js';\nimport * as json from './codecs/json.js';\nimport {\n CID,\n hasher,\n digest,\n varint,\n bytes\n} from './index.js';\nconst bases = {\n ...identityBase,\n ...base2,\n ...base8,\n ...base10,\n ...base16,\n ...base32,\n ...base36,\n ...base58,\n ...base64,\n ...base256emoji\n};\nconst hashes = {\n ...sha2,\n ...identity\n};\nconst codecs = {\n raw,\n json\n};\nexport {\n CID,\n hasher,\n digest,\n varint,\n bytes,\n hashes,\n bases,\n codecs\n};","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '../alloc.js';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: { decode }\n };\n}\nconst string = createCodec('utf8', 'u', buf => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, str => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', buf => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, str => {\n str = str.substring(1);\n const buf = allocUnsafe(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii: ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;","import bases from './util/bases.js';\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return globalThis.Buffer.from(string, 'utf8');\n }\n return base.decoder.decode(`${ base.prefix }${ string }`);\n}","import bases from './util/bases.js';\nexport function toString(array, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8');\n }\n return base.encoder.encode(array).substring(1);\n}","import { ChaCha20Poly1305 } from \"@stablelib/chacha20poly1305\";\nimport { HKDF } from \"@stablelib/hkdf\";\nimport { randomBytes } from \"@stablelib/random\";\nimport { hash, SHA256 } from \"@stablelib/sha256\";\nimport * as x25519 from \"@stablelib/x25519\";\nimport { concat, fromString, toString } from \"uint8arrays\";\nexport const BASE10 = \"base10\";\nexport const BASE16 = \"base16\";\nexport const BASE64 = \"base64pad\";\nexport const UTF8 = \"utf8\";\nexport const TYPE_0 = 0;\nexport const TYPE_1 = 1;\nconst ZERO_INDEX = 0;\nconst TYPE_LENGTH = 1;\nconst IV_LENGTH = 12;\nconst KEY_LENGTH = 32;\nexport function generateKeyPair() {\n const keyPair = x25519.generateKeyPair();\n return {\n privateKey: toString(keyPair.secretKey, BASE16),\n publicKey: toString(keyPair.publicKey, BASE16),\n };\n}\nexport function generateRandomBytes32() {\n const random = randomBytes(KEY_LENGTH);\n return toString(random, BASE16);\n}\nexport function deriveSymKey(privateKeyA, publicKeyB) {\n const sharedKey = x25519.sharedKey(fromString(privateKeyA, BASE16), fromString(publicKeyB, BASE16), true);\n const hkdf = new HKDF(SHA256, sharedKey);\n const symKey = hkdf.expand(KEY_LENGTH);\n return toString(symKey, BASE16);\n}\nexport function hashKey(key) {\n const result = hash(fromString(key, BASE16));\n return toString(result, BASE16);\n}\nexport function hashMessage(message) {\n const result = hash(fromString(message, UTF8));\n return toString(result, BASE16);\n}\nexport function encodeTypeByte(type) {\n return fromString(`${type}`, BASE10);\n}\nexport function decodeTypeByte(byte) {\n return Number(toString(byte, BASE10));\n}\nexport function encrypt(params) {\n const type = encodeTypeByte(typeof params.type !== \"undefined\" ? params.type : TYPE_0);\n if (decodeTypeByte(type) === TYPE_1 && typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n const senderPublicKey = typeof params.senderPublicKey !== \"undefined\"\n ? fromString(params.senderPublicKey, BASE16)\n : undefined;\n const iv = typeof params.iv !== \"undefined\" ? fromString(params.iv, BASE16) : randomBytes(IV_LENGTH);\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const sealed = box.seal(iv, fromString(params.message, UTF8));\n return serialize({ type, sealed, iv, senderPublicKey });\n}\nexport function decrypt(params) {\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const { sealed, iv } = deserialize(params.encoded);\n const message = box.open(iv, sealed);\n if (message === null)\n throw new Error(\"Failed to decrypt\");\n return toString(message, UTF8);\n}\nexport function serialize(params) {\n if (decodeTypeByte(params.type) === TYPE_1) {\n if (typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n return toString(concat([params.type, params.senderPublicKey, params.iv, params.sealed]), BASE64);\n }\n return toString(concat([params.type, params.iv, params.sealed]), BASE64);\n}\nexport function deserialize(encoded) {\n const bytes = fromString(encoded, BASE64);\n const type = bytes.slice(ZERO_INDEX, TYPE_LENGTH);\n const slice1 = TYPE_LENGTH;\n if (decodeTypeByte(type) === TYPE_1) {\n const slice2 = slice1 + KEY_LENGTH;\n const slice3 = slice2 + IV_LENGTH;\n const senderPublicKey = bytes.slice(slice1, slice2);\n const iv = bytes.slice(slice2, slice3);\n const sealed = bytes.slice(slice3);\n return { type, sealed, iv, senderPublicKey };\n }\n const slice2 = slice1 + IV_LENGTH;\n const iv = bytes.slice(slice1, slice2);\n const sealed = bytes.slice(slice2);\n return { type, sealed, iv };\n}\nexport function validateDecoding(encoded, opts) {\n const deserialized = deserialize(encoded);\n return validateEncoding({\n type: decodeTypeByte(deserialized.type),\n senderPublicKey: typeof deserialized.senderPublicKey !== \"undefined\"\n ? toString(deserialized.senderPublicKey, BASE16)\n : undefined,\n receiverPublicKey: opts?.receiverPublicKey,\n });\n}\nexport function validateEncoding(opts) {\n const type = opts?.type || TYPE_0;\n if (type === TYPE_1) {\n if (typeof opts?.senderPublicKey === \"undefined\") {\n throw new Error(\"missing sender public key\");\n }\n if (typeof opts?.receiverPublicKey === \"undefined\") {\n throw new Error(\"missing receiver public key\");\n }\n }\n return {\n type,\n senderPublicKey: opts?.senderPublicKey,\n receiverPublicKey: opts?.receiverPublicKey,\n };\n}\nexport function isTypeOneEnvelope(result) {\n return (result.type === TYPE_1 &&\n typeof result.senderPublicKey === \"string\" &&\n typeof result.receiverPublicKey === \"string\");\n}\n//# sourceMappingURL=crypto.js.map","function e(s,r,i=\"string\"){if(!s[r]||typeof s[r]!==i)throw new Error(`Missing or invalid \"${r}\" param`)}function l(s,r){let i=!0;return r.forEach(t=>{t in s||(i=!1)}),i}function f(s,r){return Array.isArray(s)?s.length===r:Object.keys(s).length===r}function w(s,r){return Array.isArray(s)?s.length>=r:Object.keys(s).length>=r}function u(s,r,i){return(i.length?w(s,r.length):f(s,r.length))?l(s,r):!1}function n(s,r,i=\"_\"){const t=s.split(i);return t[t.length-1].trim().toLowerCase()===r.trim().toLowerCase()}function R(s){return b(s.method)&&a(s.params)}function b(s){return n(s,\"subscribe\")}function a(s){return u(s,[\"topic\"],[])}function P(s){return c(s.method)&&h(s.params)}function c(s){return n(s,\"publish\")}function h(s){return u(s,[\"message\",\"topic\",\"ttl\"],[\"prompt\",\"tag\"])}function _(s){return o(s.method)&&p(s.params)}function o(s){return n(s,\"unsubscribe\")}function p(s){return u(s,[\"id\",\"topic\"],[])}function S(s){return m(s.method)&&d(s.params)}function m(s){return n(s,\"subscription\")}function d(s){return u(s,[\"id\",\"data\"],[])}function g(s){if(!b(s.method))throw new Error(\"JSON-RPC Request has invalid subscribe method\");if(!a(s.params))throw new Error(\"JSON-RPC Request has invalid subscribe params\");const r=s.params;return e(r,\"topic\"),r}function q(s){if(!c(s.method))throw new Error(\"JSON-RPC Request has invalid publish method\");if(!h(s.params))throw new Error(\"JSON-RPC Request has invalid publish params\");const r=s.params;return e(r,\"topic\"),e(r,\"message\"),e(r,\"ttl\",\"number\"),r}function E(s){if(!o(s.method))throw new Error(\"JSON-RPC Request has invalid unsubscribe method\");if(!p(s.params))throw new Error(\"JSON-RPC Request has invalid unsubscribe params\");const r=s.params;return e(r,\"id\"),r}function k(s){if(!m(s.method))throw new Error(\"JSON-RPC Request has invalid subscription method\");if(!d(s.params))throw new Error(\"JSON-RPC Request has invalid subscription params\");const r=s.params;return e(r,\"id\"),e(r,\"data\"),r}const C={waku:{publish:\"waku_publish\",batchPublish:\"waku_batchPublish\",subscribe:\"waku_subscribe\",batchSubscribe:\"waku_batchSubscribe\",subscription:\"waku_subscription\",unsubscribe:\"waku_unsubscribe\",batchUnsubscribe:\"waku_batchUnsubscribe\",batchFetchMessages:\"waku_batchFetchMessages\"},irn:{publish:\"irn_publish\",batchPublish:\"irn_batchPublish\",subscribe:\"irn_subscribe\",batchSubscribe:\"irn_batchSubscribe\",subscription:\"irn_subscription\",unsubscribe:\"irn_unsubscribe\",batchUnsubscribe:\"irn_batchUnsubscribe\",batchFetchMessages:\"irn_batchFetchMessages\"},iridium:{publish:\"iridium_publish\",batchPublish:\"iridium_batchPublish\",subscribe:\"iridium_subscribe\",batchSubscribe:\"iridium_batchSubscribe\",subscription:\"iridium_subscription\",unsubscribe:\"iridium_unsubscribe\",batchUnsubscribe:\"iridium_batchUnsubscribe\",batchFetchMessages:\"iridium_batchFetchMessages\"}};export{C as RELAY_JSONRPC,c as isPublishMethod,h as isPublishParams,P as isPublishRequest,b as isSubscribeMethod,a as isSubscribeParams,R as isSubscribeRequest,m as isSubscriptionMethod,d as isSubscriptionParams,S as isSubscriptionRequest,o as isUnsubscribeMethod,p as isUnsubscribeParams,_ as isUnsubscribeRequest,q as parsePublishRequest,g as parseSubscribeRequest,k as parseSubscriptionRequest,E as parseUnsubscribeRequest};\n//# sourceMappingURL=index.es.js.map\n","import { RELAY_JSONRPC } from \"@walletconnect/relay-api\";\nexport const RELAYER_DEFAULT_PROTOCOL = \"irn\";\nexport function getRelayProtocolName(opts) {\n return opts?.relay || { protocol: RELAYER_DEFAULT_PROTOCOL };\n}\nexport function getRelayProtocolApi(protocol) {\n const jsonrpc = RELAY_JSONRPC[protocol];\n if (typeof jsonrpc === \"undefined\") {\n throw new Error(`Relay Protocol not supported: ${protocol}`);\n }\n return jsonrpc;\n}\n//# sourceMappingURL=relay.js.map","import * as qs from \"query-string\";\nexport function parseRelayParams(params, delimiter = \"-\") {\n const relay = {};\n const prefix = \"relay\" + delimiter;\n Object.keys(params).forEach((key) => {\n if (key.startsWith(prefix)) {\n const name = key.replace(prefix, \"\");\n const value = params[key];\n relay[name] = value;\n }\n });\n return relay;\n}\nexport function parseUri(str) {\n str = str.includes(\"wc://\") ? str.replace(\"wc://\", \"\") : str;\n str = str.includes(\"wc:\") ? str.replace(\"wc:\", \"\") : str;\n const pathStart = str.indexOf(\":\");\n const pathEnd = str.indexOf(\"?\") !== -1 ? str.indexOf(\"?\") : undefined;\n const protocol = str.substring(0, pathStart);\n const path = str.substring(pathStart + 1, pathEnd);\n const requiredValues = path.split(\"@\");\n const queryString = typeof pathEnd !== \"undefined\" ? str.substring(pathEnd) : \"\";\n const queryParams = qs.parse(queryString);\n const methods = typeof queryParams.methods === \"string\" ? queryParams.methods.split(\",\") : undefined;\n const result = {\n protocol,\n topic: parseTopic(requiredValues[0]),\n version: parseInt(requiredValues[1], 10),\n symKey: queryParams.symKey,\n relay: parseRelayParams(queryParams),\n methods,\n expiryTimestamp: queryParams.expiryTimestamp\n ? parseInt(queryParams.expiryTimestamp, 10)\n : undefined,\n };\n return result;\n}\nexport function parseTopic(topic) {\n return topic.startsWith(\"//\") ? topic.substring(2) : topic;\n}\nexport function formatRelayParams(relay, delimiter = \"-\") {\n const prefix = \"relay\";\n const params = {};\n Object.keys(relay).forEach((key) => {\n const k = prefix + delimiter + key;\n if (relay[key]) {\n params[k] = relay[key];\n }\n });\n return params;\n}\nexport function formatUri(params) {\n return (`${params.protocol}:${params.topic}@${params.version}?` +\n qs.stringify({\n symKey: params.symKey,\n ...formatRelayParams(params.relay),\n expiryTimestamp: params.expiryTimestamp,\n ...(params.methods ? { methods: params.methods.join(\",\") } : {}),\n }));\n}\n//# sourceMappingURL=uri.js.map","import { mergeArrays } from \"./misc\";\nimport { isConformingNamespaces, isValidNamespaces, isValidObject } from \"./validators\";\nexport function getAccountsChains(accounts) {\n const chains = [];\n accounts.forEach((account) => {\n const [chain, chainId] = account.split(\":\");\n chains.push(`${chain}:${chainId}`);\n });\n return chains;\n}\nexport function getNamespacesChains(namespaces) {\n const chains = [];\n Object.values(namespaces).forEach((namespace) => {\n chains.push(...getAccountsChains(namespace.accounts));\n });\n return chains;\n}\nexport function getNamespacesMethodsForChainId(namespaces, chainId) {\n const methods = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId))\n methods.push(...namespace.methods);\n });\n return methods;\n}\nexport function getNamespacesEventsForChainId(namespaces, chainId) {\n const events = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId))\n events.push(...namespace.events);\n });\n return events;\n}\nexport function getRequiredNamespacesFromNamespaces(namespaces, caller) {\n const validNamespacesError = isValidNamespaces(namespaces, caller);\n if (validNamespacesError)\n throw new Error(validNamespacesError.message);\n const required = {};\n for (const [namespace, values] of Object.entries(namespaces)) {\n required[namespace] = {\n methods: values.methods,\n events: values.events,\n chains: values.accounts.map((account) => `${account.split(\":\")[0]}:${account.split(\":\")[1]}`),\n };\n }\n return required;\n}\nexport function buildApprovedNamespaces(params) {\n const { proposal: { requiredNamespaces, optionalNamespaces = {} }, supportedNamespaces, } = params;\n const normalizedRequired = normalizeNamespaces(requiredNamespaces);\n const normalizedOptional = normalizeNamespaces(optionalNamespaces);\n const namespaces = {};\n Object.keys(supportedNamespaces).forEach((namespace) => {\n const supportedChains = supportedNamespaces[namespace].chains;\n const supportedMethods = supportedNamespaces[namespace].methods;\n const supportedEvents = supportedNamespaces[namespace].events;\n const supportedAccounts = supportedNamespaces[namespace].accounts;\n supportedChains.forEach((chain) => {\n if (!supportedAccounts.some((account) => account.includes(chain))) {\n throw new Error(`No accounts provided for chain ${chain} in namespace ${namespace}`);\n }\n });\n namespaces[namespace] = {\n chains: supportedChains,\n methods: supportedMethods,\n events: supportedEvents,\n accounts: supportedAccounts,\n };\n });\n const err = isConformingNamespaces(requiredNamespaces, namespaces, \"approve()\");\n if (err)\n throw new Error(err.message);\n const approvedNamespaces = {};\n if (!Object.keys(requiredNamespaces).length && !Object.keys(optionalNamespaces).length)\n return namespaces;\n Object.keys(normalizedRequired).forEach((requiredNamespace) => {\n const chains = supportedNamespaces[requiredNamespace].chains.filter((chain) => normalizedRequired[requiredNamespace]?.chains?.includes(chain));\n const methods = supportedNamespaces[requiredNamespace].methods.filter((method) => normalizedRequired[requiredNamespace]?.methods?.includes(method));\n const events = supportedNamespaces[requiredNamespace].events.filter((event) => normalizedRequired[requiredNamespace]?.events?.includes(event));\n const accounts = chains\n .map((chain) => supportedNamespaces[requiredNamespace].accounts.filter((account) => account.includes(`${chain}:`)))\n .flat();\n approvedNamespaces[requiredNamespace] = {\n chains,\n methods,\n events,\n accounts,\n };\n });\n Object.keys(normalizedOptional).forEach((optionalNamespace) => {\n if (!supportedNamespaces[optionalNamespace])\n return;\n const chainsToAdd = normalizedOptional[optionalNamespace]?.chains?.filter((chain) => supportedNamespaces[optionalNamespace].chains.includes(chain));\n const methodsToAdd = supportedNamespaces[optionalNamespace].methods.filter((method) => normalizedOptional[optionalNamespace]?.methods?.includes(method));\n const eventsToAdd = supportedNamespaces[optionalNamespace].events.filter((event) => normalizedOptional[optionalNamespace]?.events?.includes(event));\n const accountsToAdd = chainsToAdd\n ?.map((chain) => supportedNamespaces[optionalNamespace].accounts.filter((account) => account.includes(`${chain}:`)))\n .flat();\n approvedNamespaces[optionalNamespace] = {\n chains: mergeArrays(approvedNamespaces[optionalNamespace]?.chains, chainsToAdd),\n methods: mergeArrays(approvedNamespaces[optionalNamespace]?.methods, methodsToAdd),\n events: mergeArrays(approvedNamespaces[optionalNamespace]?.events, eventsToAdd),\n accounts: mergeArrays(approvedNamespaces[optionalNamespace]?.accounts, accountsToAdd),\n };\n });\n return approvedNamespaces;\n}\nexport function isCaipNamespace(namespace) {\n return namespace.includes(\":\");\n}\nexport function parseNamespaceKey(namespace) {\n return isCaipNamespace(namespace) ? namespace.split(\":\")[0] : namespace;\n}\nexport function normalizeNamespaces(namespaces) {\n const normalizedNamespaces = {};\n if (!isValidObject(namespaces))\n return normalizedNamespaces;\n for (const [key, values] of Object.entries(namespaces)) {\n const chains = isCaipNamespace(key) ? [key] : values.chains;\n const methods = values.methods || [];\n const events = values.events || [];\n const normalizedKey = parseNamespaceKey(key);\n normalizedNamespaces[normalizedKey] = {\n ...normalizedNamespaces[normalizedKey],\n chains: mergeArrays(chains, normalizedNamespaces[normalizedKey]?.chains),\n methods: mergeArrays(methods, normalizedNamespaces[normalizedKey]?.methods),\n events: mergeArrays(events, normalizedNamespaces[normalizedKey]?.events),\n };\n }\n return normalizedNamespaces;\n}\nexport function getNamespacesFromAccounts(accounts) {\n const namespaces = {};\n accounts?.forEach((account) => {\n const [namespace, chainId] = account.split(\":\");\n if (!namespaces[namespace]) {\n namespaces[namespace] = {\n accounts: [],\n chains: [],\n events: [],\n };\n }\n namespaces[namespace].accounts.push(account);\n namespaces[namespace].chains.push(`${namespace}:${chainId}`);\n });\n return namespaces;\n}\nexport function buildNamespacesFromAuth(methods, accounts) {\n accounts = accounts.map((account) => account.replace(\"did:pkh:\", \"\"));\n const namespaces = getNamespacesFromAccounts(accounts);\n for (const [_, values] of Object.entries(namespaces)) {\n if (!values.methods) {\n values.methods = methods;\n }\n else {\n values.methods = mergeArrays(values.methods, methods);\n }\n values.events = [\"chainChanged\", \"accountsChanged\"];\n }\n return namespaces;\n}\n//# sourceMappingURL=namespaces.js.map","export const SDK_ERRORS = {\n INVALID_METHOD: {\n message: \"Invalid method.\",\n code: 1001,\n },\n INVALID_EVENT: {\n message: \"Invalid event.\",\n code: 1002,\n },\n INVALID_UPDATE_REQUEST: {\n message: \"Invalid update request.\",\n code: 1003,\n },\n INVALID_EXTEND_REQUEST: {\n message: \"Invalid extend request.\",\n code: 1004,\n },\n INVALID_SESSION_SETTLE_REQUEST: {\n message: \"Invalid session settle request.\",\n code: 1005,\n },\n UNAUTHORIZED_METHOD: {\n message: \"Unauthorized method.\",\n code: 3001,\n },\n UNAUTHORIZED_EVENT: {\n message: \"Unauthorized event.\",\n code: 3002,\n },\n UNAUTHORIZED_UPDATE_REQUEST: {\n message: \"Unauthorized update request.\",\n code: 3003,\n },\n UNAUTHORIZED_EXTEND_REQUEST: {\n message: \"Unauthorized extend request.\",\n code: 3004,\n },\n USER_REJECTED: {\n message: \"User rejected.\",\n code: 5000,\n },\n USER_REJECTED_CHAINS: {\n message: \"User rejected chains.\",\n code: 5001,\n },\n USER_REJECTED_METHODS: {\n message: \"User rejected methods.\",\n code: 5002,\n },\n USER_REJECTED_EVENTS: {\n message: \"User rejected events.\",\n code: 5003,\n },\n UNSUPPORTED_CHAINS: {\n message: \"Unsupported chains.\",\n code: 5100,\n },\n UNSUPPORTED_METHODS: {\n message: \"Unsupported methods.\",\n code: 5101,\n },\n UNSUPPORTED_EVENTS: {\n message: \"Unsupported events.\",\n code: 5102,\n },\n UNSUPPORTED_ACCOUNTS: {\n message: \"Unsupported accounts.\",\n code: 5103,\n },\n UNSUPPORTED_NAMESPACE_KEY: {\n message: \"Unsupported namespace key.\",\n code: 5104,\n },\n USER_DISCONNECTED: {\n message: \"User disconnected.\",\n code: 6000,\n },\n SESSION_SETTLEMENT_FAILED: {\n message: \"Session settlement failed.\",\n code: 7000,\n },\n WC_METHOD_UNSUPPORTED: {\n message: \"Unsupported wc_ method.\",\n code: 10001,\n },\n};\nexport const INTERNAL_ERRORS = {\n NOT_INITIALIZED: {\n message: \"Not initialized.\",\n code: 1,\n },\n NO_MATCHING_KEY: {\n message: \"No matching key.\",\n code: 2,\n },\n RESTORE_WILL_OVERRIDE: {\n message: \"Restore will override.\",\n code: 3,\n },\n RESUBSCRIBED: {\n message: \"Resubscribed.\",\n code: 4,\n },\n MISSING_OR_INVALID: {\n message: \"Missing or invalid.\",\n code: 5,\n },\n EXPIRED: {\n message: \"Expired.\",\n code: 6,\n },\n UNKNOWN_TYPE: {\n message: \"Unknown type.\",\n code: 7,\n },\n MISMATCHED_TOPIC: {\n message: \"Mismatched topic.\",\n code: 8,\n },\n NON_CONFORMING_NAMESPACES: {\n message: \"Non conforming namespaces.\",\n code: 9,\n },\n};\nexport function getInternalError(key, context) {\n const { message, code } = INTERNAL_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\nexport function getSdkError(key, context) {\n const { message, code } = SDK_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n//# sourceMappingURL=errors.js.map","import { getNamespacesChains, getNamespacesMethodsForChainId, getNamespacesEventsForChainId, getAccountsChains, } from \"./namespaces\";\nimport { getSdkError, getInternalError } from \"./errors\";\nimport { hasOverlap } from \"./misc\";\nimport { getChainsFromNamespace } from \"./caip\";\nexport function isValidArray(arr, itemCondition) {\n if (Array.isArray(arr)) {\n if (typeof itemCondition !== \"undefined\" && arr.length) {\n return arr.every(itemCondition);\n }\n else {\n return true;\n }\n }\n return false;\n}\nexport function isValidObject(obj) {\n return Object.getPrototypeOf(obj) === Object.prototype && Object.keys(obj).length;\n}\nexport function isUndefined(input) {\n return typeof input === \"undefined\";\n}\nexport function isValidString(input, optional) {\n if (optional && isUndefined(input))\n return true;\n return typeof input === \"string\" && Boolean(input.trim().length);\n}\nexport function isValidNumber(input, optional) {\n if (optional && isUndefined(input))\n return true;\n return typeof input === \"number\" && !isNaN(input);\n}\nexport function isSessionCompatible(session, params) {\n const { requiredNamespaces } = params;\n const sessionKeys = Object.keys(session.namespaces);\n const paramsKeys = Object.keys(requiredNamespaces);\n let compatible = true;\n if (!hasOverlap(paramsKeys, sessionKeys))\n return false;\n sessionKeys.forEach((key) => {\n const { accounts, methods, events } = session.namespaces[key];\n const chains = getAccountsChains(accounts);\n const requiredNamespace = requiredNamespaces[key];\n if (!hasOverlap(getChainsFromNamespace(key, requiredNamespace), chains) ||\n !hasOverlap(requiredNamespace.methods, methods) ||\n !hasOverlap(requiredNamespace.events, events)) {\n compatible = false;\n }\n });\n return compatible;\n}\nexport function isValidChainId(value) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n return split.length === 2;\n }\n return false;\n}\nexport function isValidAccountId(value) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n if (split.length === 3) {\n const chainId = split[0] + \":\" + split[1];\n return !!split[2] && isValidChainId(chainId);\n }\n }\n return false;\n}\nexport function isValidUrl(value) {\n if (isValidString(value, false)) {\n try {\n const url = new URL(value);\n return typeof url !== \"undefined\";\n }\n catch (e) {\n return false;\n }\n }\n return false;\n}\nexport function isProposalStruct(input) {\n return input?.proposer?.publicKey;\n}\nexport function isSessionStruct(input) {\n return input?.topic;\n}\nexport function isValidController(input, method) {\n let error = null;\n if (!isValidString(input?.publicKey, false)) {\n error = getInternalError(\"MISSING_OR_INVALID\", `${method} controller public key should be a string`);\n }\n return error;\n}\nexport function isValidNamespaceMethodsOrEvents(input) {\n let valid = true;\n if (isValidArray(input)) {\n if (input.length) {\n valid = input.every((item) => isValidString(item, false));\n }\n }\n else {\n valid = false;\n }\n return valid;\n}\nexport function isValidChains(key, chains, context) {\n let error = null;\n if (isValidArray(chains) && chains.length) {\n chains.forEach((chain) => {\n if (error)\n return;\n if (!isValidChainId(chain)) {\n error = getSdkError(\"UNSUPPORTED_CHAINS\", `${context}, chain ${chain} should be a string and conform to \"namespace:chainId\" format`);\n }\n });\n }\n else if (!isValidChainId(key)) {\n error = getSdkError(\"UNSUPPORTED_CHAINS\", `${context}, chains must be defined as \"namespace:chainId\" e.g. \"eip155:1\": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: [\"eip155:1\", \"eip155:5\"] }`);\n }\n return error;\n}\nexport function isValidNamespaceChains(namespaces, method, type) {\n let error = null;\n Object.entries(namespaces).forEach(([key, namespace]) => {\n if (error)\n return;\n const validChainsError = isValidChains(key, getChainsFromNamespace(key, namespace), `${method} ${type}`);\n if (validChainsError) {\n error = validChainsError;\n }\n });\n return error;\n}\nexport function isValidAccounts(accounts, context) {\n let error = null;\n if (isValidArray(accounts)) {\n accounts.forEach((account) => {\n if (error)\n return;\n if (!isValidAccountId(account)) {\n error = getSdkError(\"UNSUPPORTED_ACCOUNTS\", `${context}, account ${account} should be a string and conform to \"namespace:chainId:address\" format`);\n }\n });\n }\n else {\n error = getSdkError(\"UNSUPPORTED_ACCOUNTS\", `${context}, accounts should be an array of strings conforming to \"namespace:chainId:address\" format`);\n }\n return error;\n}\nexport function isValidNamespaceAccounts(input, method) {\n let error = null;\n Object.values(input).forEach((namespace) => {\n if (error)\n return;\n const validAccountsError = isValidAccounts(namespace?.accounts, `${method} namespace`);\n if (validAccountsError) {\n error = validAccountsError;\n }\n });\n return error;\n}\nexport function isValidActions(namespace, context) {\n let error = null;\n if (!isValidNamespaceMethodsOrEvents(namespace?.methods)) {\n error = getSdkError(\"UNSUPPORTED_METHODS\", `${context}, methods should be an array of strings or empty array for no methods`);\n }\n else if (!isValidNamespaceMethodsOrEvents(namespace?.events)) {\n error = getSdkError(\"UNSUPPORTED_EVENTS\", `${context}, events should be an array of strings or empty array for no events`);\n }\n return error;\n}\nexport function isValidNamespaceActions(input, method) {\n let error = null;\n Object.values(input).forEach((namespace) => {\n if (error)\n return;\n const validActionsError = isValidActions(namespace, `${method}, namespace`);\n if (validActionsError) {\n error = validActionsError;\n }\n });\n return error;\n}\nexport function isValidRequiredNamespaces(input, method, type) {\n let error = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validChainsError = isValidNamespaceChains(input, method, type);\n if (validChainsError) {\n error = validChainsError;\n }\n }\n else {\n error = getInternalError(\"MISSING_OR_INVALID\", `${method}, ${type} should be an object with data`);\n }\n return error;\n}\nexport function isValidNamespaces(input, method) {\n let error = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validAccountsError = isValidNamespaceAccounts(input, method);\n if (validAccountsError) {\n error = validAccountsError;\n }\n }\n else {\n error = getInternalError(\"MISSING_OR_INVALID\", `${method}, namespaces should be an object with data`);\n }\n return error;\n}\nexport function isValidRelay(input) {\n return isValidString(input.protocol, true);\n}\nexport function isValidRelays(input, optional) {\n let valid = false;\n if (optional && !input)\n valid = true;\n else if (input && isValidArray(input) && input.length) {\n input.forEach((relay) => {\n valid = isValidRelay(relay);\n });\n }\n return valid;\n}\nexport function isValidId(input) {\n return typeof input === \"number\";\n}\nexport function isValidParams(input) {\n return typeof input !== \"undefined\" && typeof input !== null;\n}\nexport function isValidErrorReason(input) {\n if (!input)\n return false;\n if (typeof input !== \"object\")\n return false;\n if (!input.code || !isValidNumber(input.code, false))\n return false;\n if (!input.message || !isValidString(input.message, false))\n return false;\n return true;\n}\nexport function isValidRequest(request) {\n if (isUndefined(request))\n return false;\n if (!isValidString(request.method, false))\n return false;\n return true;\n}\nexport function isValidResponse(response) {\n if (isUndefined(response))\n return false;\n if (isUndefined(response.result) && isUndefined(response.error))\n return false;\n if (!isValidNumber(response.id, false))\n return false;\n if (!isValidString(response.jsonrpc, false))\n return false;\n return true;\n}\nexport function isValidEvent(event) {\n if (isUndefined(event))\n return false;\n if (!isValidString(event.name, false))\n return false;\n return true;\n}\nexport function isValidNamespacesChainId(namespaces, chainId) {\n if (!isValidChainId(chainId))\n return false;\n const chains = getNamespacesChains(namespaces);\n if (!chains.includes(chainId))\n return false;\n return true;\n}\nexport function isValidNamespacesRequest(namespaces, chainId, method) {\n if (!isValidString(method, false))\n return false;\n const methods = getNamespacesMethodsForChainId(namespaces, chainId);\n return methods.includes(method);\n}\nexport function isValidNamespacesEvent(namespaces, chainId, eventName) {\n if (!isValidString(eventName, false))\n return false;\n const events = getNamespacesEventsForChainId(namespaces, chainId);\n return events.includes(eventName);\n}\nexport function isConformingNamespaces(requiredNamespaces, namespaces, context) {\n let error = null;\n const parsedRequired = parseNamespaces(requiredNamespaces);\n const parsedApproved = parseApprovedNamespaces(namespaces);\n const requiredChains = Object.keys(parsedRequired);\n const approvedChains = Object.keys(parsedApproved);\n const uniqueRequired = filterDuplicateNamespaces(Object.keys(requiredNamespaces));\n const uniqueApproved = filterDuplicateNamespaces(Object.keys(namespaces));\n const missingRequiredNamespaces = uniqueRequired.filter((namespace) => !uniqueApproved.includes(namespace));\n if (missingRequiredNamespaces.length) {\n error = getInternalError(\"NON_CONFORMING_NAMESPACES\", `${context} namespaces keys don't satisfy requiredNamespaces.\n Required: ${missingRequiredNamespaces.toString()}\n Received: ${Object.keys(namespaces).toString()}`);\n }\n if (!hasOverlap(requiredChains, approvedChains)) {\n error = getInternalError(\"NON_CONFORMING_NAMESPACES\", `${context} namespaces chains don't satisfy required namespaces.\n Required: ${requiredChains.toString()}\n Approved: ${approvedChains.toString()}`);\n }\n Object.keys(namespaces).forEach((chain) => {\n if (!chain.includes(\":\"))\n return;\n if (error)\n return;\n const chains = getAccountsChains(namespaces[chain].accounts);\n if (!chains.includes(chain)) {\n error = getInternalError(\"NON_CONFORMING_NAMESPACES\", `${context} namespaces accounts don't satisfy namespace accounts for ${chain}\n Required: ${chain}\n Approved: ${chains.toString()}`);\n }\n });\n requiredChains.forEach((chain) => {\n if (error)\n return;\n if (!hasOverlap(parsedRequired[chain].methods, parsedApproved[chain].methods)) {\n error = getInternalError(\"NON_CONFORMING_NAMESPACES\", `${context} namespaces methods don't satisfy namespace methods for ${chain}`);\n }\n else if (!hasOverlap(parsedRequired[chain].events, parsedApproved[chain].events)) {\n error = getInternalError(\"NON_CONFORMING_NAMESPACES\", `${context} namespaces events don't satisfy namespace events for ${chain}`);\n }\n });\n return error;\n}\nfunction parseNamespaces(namespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n const isInlineChainDefinition = key.includes(\":\");\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n }\n else {\n namespaces[key].chains?.forEach((chain) => {\n parsed[chain] = {\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\nfunction filterDuplicateNamespaces(namespaces) {\n return [\n ...new Set(namespaces.map((namespace) => namespace.includes(\":\") ? namespace.split(\":\")[0] : namespace)),\n ];\n}\nfunction parseApprovedNamespaces(namespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n const isInlineChainDefinition = key.includes(\":\");\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n }\n else {\n const chains = getAccountsChains(namespaces[key].accounts);\n chains?.forEach((chain) => {\n parsed[chain] = {\n accounts: namespaces[key].accounts.filter((account) => account.includes(`${chain}:`)),\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\nexport function isValidRequestExpiry(expiry, boundaries) {\n return isValidNumber(expiry, false) && expiry <= boundaries.max && expiry >= boundaries.min;\n}\n//# sourceMappingURL=validators.js.map","import { getEnvironment, ENV_MAP, isBrowser, isReactNative } from \"./misc\";\nexport function isOnline() {\n const env = getEnvironment();\n return new Promise((resolve) => {\n switch (env) {\n case ENV_MAP.browser:\n resolve(getBrowserOnlineStatus());\n break;\n case ENV_MAP.reactNative:\n resolve(getReactNativeOnlineStatus());\n break;\n case ENV_MAP.node:\n resolve(getNodeOnlineStatus());\n break;\n default:\n resolve(true);\n }\n });\n}\nexport function getBrowserOnlineStatus() {\n return isBrowser() && navigator?.onLine;\n}\nexport async function getReactNativeOnlineStatus() {\n if (isReactNative() && typeof global !== \"undefined\" && global?.NetInfo) {\n const state = await global?.NetInfo.fetch();\n return state?.isConnected;\n }\n return true;\n}\nexport function getNodeOnlineStatus() {\n return true;\n}\nexport function subscribeToNetworkChange(callbackHandler) {\n const env = getEnvironment();\n switch (env) {\n case ENV_MAP.browser:\n subscribeToBrowserNetworkChange(callbackHandler);\n break;\n case ENV_MAP.reactNative:\n subscribeToReactNativeNetworkChange(callbackHandler);\n break;\n case ENV_MAP.node:\n break;\n default:\n break;\n }\n}\nexport function subscribeToBrowserNetworkChange(callbackHandler) {\n if (!isReactNative() && isBrowser()) {\n window.addEventListener(\"online\", () => callbackHandler(true));\n window.addEventListener(\"offline\", () => callbackHandler(false));\n }\n}\nexport function subscribeToReactNativeNetworkChange(callbackHandler) {\n if (isReactNative() && typeof global !== \"undefined\" && global?.NetInfo) {\n global?.NetInfo.addEventListener((state) => callbackHandler(state?.isConnected));\n }\n}\n//# sourceMappingURL=network.js.map","const memoryStore = {};\nexport class MemoryStore {\n static get(key) {\n return memoryStore[key];\n }\n static set(key, value) {\n memoryStore[key] = value;\n }\n static delete(key) {\n delete memoryStore[key];\n }\n}\n//# sourceMappingURL=memoryStore.js.map"],"names":["this","delay_1","delay","require$$1","require$$2","require$$0","watch","require$$3","require$$4","cjs","decode","strictUriEncode","splitOnFirst","E","d","u","x","h","y.parse","y.stringify","j","w","N","g","f","P","global","version","logger","concat","_BN","_constructorGuard","throwFault","toHex","Zero","r","hashMessage","minimalisticAssert","assert","inherits_browserModule","utils","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","BlockHash","common","ft_1","ch32","maj32","s0_256","s1_256","g0_256","g1_256","shaCommon","SHA256","SHA512","sha","K","s","hmac","commonjsRequire","BN","base","hash","EC","y","c","l","A","R","wipe_1","hmac_1","require","fromString","toString","from","basex","encode","identity","varint","varint.encodingLength","varint.encodeTo","Digest.create","base2","base8","base10","base16","base32","base36","base64","base256emoji","bases","a","p","P.generateKeyPair","i","P.sharedKey","t","T","b","C","e","d.parse","d.stringify","I","M","O","S","o"],"mappings":"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C,CAAC,CAAC,IAAI,CAAC,CAAC;IAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB;IACA,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAChB,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAChB,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACxC,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C;IACA,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAA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IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SAClD,EAAE,IAAI,SAAS,CAAC;IACpB;SACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SAClD,EAAE,IAAI,SAAS,CAAC;IACpB;SACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SAClD,EAAE,IAAI,SAAS,CAAC;IACpB;SACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SAClD,EAAE,IAAI,SAAS,CAAC;IACpB;SACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SAClD,EAAE,IAAI,SAAS,CAAC;IACpB;SACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SAClD,EAAE,IAAI,SAAS,CAAC;IACpB;SACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACnD,GAAG,IAAI,SAAS,CAAC;IACrB;SACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACnD,GAAG,IAAI,SAAS,CAAC;IACrB;SACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACnD,GAAG,IAAI,SAAS,CAAC;IACrB;SACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACnD,GAAG,IAAI,SAAS,CAAC;IACrB;SACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACnD,GAAG,IAAI,SAAS,CAAC;IACrB;SACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACnD,GAAG,IAAI,SAAS,CAAC;IACrB;SACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACnD,GAAG,IAAI,SAAS,CAAC;IACrB;SACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACnD,GAAG,IAAI,SAAS,CAAC;IACrB;SACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;SACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACzB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;SACnD,GAAG,IAAI,SAAS,CAAC;IACrB,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACd,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IAChB,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;IACjB,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAChB,OAAM,GAAG,CAAC,MAAM,EAAE,CAAC;UACd;SACD,OAAO,GAAG,CAAC;IACf,IAAG,CAAC;AACJ;IACA;IACA,GAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;SACd,WAAW,GAAG,UAAU,CAAC;QAC1B;AACH;OACE,SAAS,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;SACjC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC5C,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAC1C;IACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;IAClB,KAAI,IAAI,OAAO,GAAG,CAAC,CAAC;IACpB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IAC7C;IACA;IACA,OAAM,IAAI,MAAM,GAAG,OAAO,CAAC;WACrB,OAAO,GAAG,CAAC,CAAC;IAClB,OAAM,IAAI,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;IACpC,OAAM,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;WACvC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE;IACrE,SAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACd,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aAC1B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACjC,SAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB;IACA,SAAQ,IAAI,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;IAC/B,SAAQ,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;aAC9C,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;IAC9B,SAAQ,KAAK,GAAG,EAAE,GAAG,SAAS,CAAC;aACvB,MAAM,GAAG,CAAC,MAAM,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5C;IACA,SAAQ,OAAO,IAAI,MAAM,KAAK,EAAE,CAAC;aACzB,MAAM,IAAI,SAAS,CAAC;YACrB;WACD,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;WACrB,KAAK,GAAG,MAAM,CAAC;WACf,MAAM,GAAG,OAAO,CAAC;UAClB;IACL,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;WACf,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IAC3B,MAAK,MAAM;IACX,OAAM,GAAG,CAAC,MAAM,EAAE,CAAC;UACd;AACL;IACA,KAAI,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC;QACrB;AACH;OACE,SAAS,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;IACvC;IACA;IACA;SACI,OAAO,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACjC;AACH;IACA,GAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;SAC7C,IAAI,GAAG,CAAC;SACR,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IACvC,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE;WAC3C,GAAG,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,MAAK,MAAM,IAAI,GAAG,GAAG,EAAE,EAAE;WACnB,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACvC,MAAK,MAAM,IAAI,GAAG,GAAG,IAAI,EAAE;WACrB,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACrC,MAAK,MAAM;WACL,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;UAClC;AACL;SACI,OAAO,GAAG,CAAC;IACf,IAAG,CAAC;AAqMJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;SACpC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3B,KAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;SAChD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAChC,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;SACtC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3B,KAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;SAChD,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACtC,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;IAC1C,KAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzC,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;IAC5C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3B,KAAI,IAAI,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;AAC7B;IACA,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;IACpC,KAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;AAC5B;IACA;IACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;IAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC1C,OAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;IACxC,OAAM,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,KAAK,KAAK,GAAG,SAAS,CAAC,CAAC;WAC/C,KAAK,KAAK,EAAE,CAAC;WACb,KAAK,IAAI,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;IACnC;IACA,OAAM,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC;WACnB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;UAChC;AACL;IACA,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;WACf,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IAC5B,OAAM,IAAI,CAAC,MAAM,EAAE,CAAC;UACf;AACL;SACI,OAAO,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;IACzC,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;SACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;IACrC,KAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;SACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACnC,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;IACxC,KAAI,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC5B,KAAI,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC;IACA;IACA,KAAI,IAAI,GAAG,GAAG,IAAI,CAAC;SACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE;WAClD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM;UACvB;AACL;IACA,KAAI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;WAClB,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;aACtD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS;AACjC;aACQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAClB;UACF;AACL;SACI,OAAO,GAAG,CAAC;IACf,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;SAC3C,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;IAClD,KAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;SAClB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;IAC5B,KAAI,IAAI,SAAS,GAAG,CAAC,SAAS,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;SACrD,IAAI,CAAC,CAAC;AACV;IACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;IACjB,OAAM,IAAI,KAAK,GAAG,CAAC,CAAC;AACpB;IACA,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;aAChC,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACjD,SAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC;aAC9C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aAC1B,KAAK,GAAG,QAAQ,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;YAC/B;AACP;WACM,IAAI,KAAK,EAAE;aACT,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IAC9B,SAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;YACf;UACF;AACL;IACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;IACjB,OAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;IAC7C,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACnC;AACP;WACM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;aACtB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACnB;AACP;IACA,OAAM,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;UAClB;AACL;IACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACzB,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;IAC7C;SACI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;IAChC,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAG,CAAC;AACJ;IACA;IACA;IACA;IACA,GAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC3D,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;SAC9C,IAAI,CAAC,CAAC;SACN,IAAI,IAAI,EAAE;WACR,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;IACpC,MAAK,MAAM;WACL,CAAC,GAAG,CAAC,CAAC;UACP;AACL;IACA,KAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;IACtB,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnD,KAAI,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACpD,KAAI,IAAI,WAAW,GAAG,QAAQ,CAAC;AAC/B;SACI,CAAC,IAAI,CAAC,CAAC;SACP,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB;IACA;SACI,IAAI,WAAW,EAAE;IACrB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IAClC,SAAQ,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACtC;IACP,OAAM,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;UACxB;AACL;IACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAEZ,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;IAChC,OAAM,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACvB,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACxC,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACnC;IACP,MAAK,MAAM;WACL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxB,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;UACjB;AACL;IACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;SACd,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;WAChE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACnC,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACzD,OAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;UACrB;AACL;IACA;IACA,KAAI,IAAI,WAAW,IAAI,KAAK,KAAK,CAAC,EAAE;WAC9B,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC;UACjD;AACL;IACA,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;WACrB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxB,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;UACjB;AACL;IACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACzB,IAAG,CAAC;AACJ;IACA,GAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC7D;SACI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;SAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7C,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;SACvC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;SACzC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrC,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;SACvC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;SACzC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrC,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;SACxC,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;IAChD,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;SACjB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnB;IACA;SACI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,OAAO,KAAK,CAAC;AACvC;IACA;SACI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B;IACA,KAAI,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;SAC3C,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;IAClD,KAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;SAClB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;AAC5B;SACI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,yCAAyC,CAAC,CAAC;AAC3E;IACA,KAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;WACpB,OAAO,IAAI,CAAC;UACb;AACL;IACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;WACX,CAAC,EAAE,CAAC;UACL;IACL,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3C;IACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;IACjB,OAAM,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,OAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;UACrC;AACL;IACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACzB,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;SACzC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrC,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;IAC5C,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;IACpC,KAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;IAC5B,KAAI,IAAI,GAAG,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC;IACA;IACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;IAC7B,OAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE;IAC3D,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,SAAQ,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;aAClB,OAAO,IAAI,CAAC;YACb;AACP;IACA,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACxB,OAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtB,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;WAClB,OAAO,IAAI,CAAC;UACb;AACL;IACA;IACA,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;SAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AACzB;IACA;SACI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE;WAClE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;WAC3B,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;aACzB,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9B,QAAO,MAAM;aACL,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACrB;UACF;IACL,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C;SACI,OAAO,IAAI,CAAC;IAChB,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;IAC5C,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;IACpC,KAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;IAC5B,KAAI,IAAI,GAAG,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC;IACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;IAC7B,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACxB,OAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtB,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;WAClB,OAAO,IAAI,CAAC;UACb;AACL;SACI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AACzB;IACA,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;IAChD,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrC,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACxB,MAAK,MAAM;IACX;WACM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;aACzD,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;aAC3B,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;YACxB;UACF;AACL;IACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACzB,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;SACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;SACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;IACvC,KAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB;SACI,OAAO,IAAI,CAAC;IAChB,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;SACjC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAG,CAAC;AACJ;IACA,GAAE,EAAE,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;SAClE,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;SAC7B,IAAI,CAAC,CAAC;AACV;IACA,KAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACtB;SACI,IAAI,CAAC,CAAC;IACV,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;IAClB,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACrC,OAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;IAC9C,OAAM,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;IAC3C,OAAM,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC;IAC7B,OAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC;IACpD,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;UACvC;SACD,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;IACzC,OAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;IAC9C,OAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;IACtB,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;UACvC;AACL;SACI,IAAI,KAAK,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AAC1C;IACA;IACA,KAAI,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;SACrB,KAAK,GAAG,CAAC,CAAC;IACd,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACtC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;IACvC,OAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;WAChB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;UAC/B;IACL,KAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB;IACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACzB,IAAG,CAAC;AACJ;IACA,GAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE;SACpD,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AACzC;IACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IACzB,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC;AAChB;IACA;IACA,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;SACpC,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACvC,KAAI,KAAK,GAAG,EAAE,GAAG,OAAO,CAAC;IACzB,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;WACf,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzB,OAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,OAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;UACjC;AACL;IACA;SACI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;SAC5B,IAAI,CAAC,CAAC;AACV;IACA,KAAI,IAAI,IAAI,KAAK,KAAK,EAAE;IACxB,OAAM,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;IACvB,OAAM,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;WACjB,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACpC,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;aACjC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChB;UACF;AACL;IACA,KAAI,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/C,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;WACvB,CAAC,GAAG,IAAI,CAAC;WACT,IAAI,CAAC,EAAE;aACL,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChB;UACF;AACL;IACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;IACrC,OAAM,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS;IACtD,UAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC;IACA;IACA;IACA,OAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAC/C;WACM,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/B,OAAM,OAAO,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;aACvB,EAAE,EAAE,CAAC;IACb,SAAQ,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;aACf,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,SAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;IACzB,WAAU,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC;cACjB;YACF;WACD,IAAI,CAAC,EAAE;aACL,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YACjB;UACF;SACD,IAAI,CAAC,EAAE;IACX,OAAM,CAAC,CAAC,MAAM,EAAE,CAAC;UACZ;IACL,KAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AACf;IACA;SACI,IAAI,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE;IACvC,OAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;UACjB;AACL;IACA,KAAI,OAAO;IACX,OAAM,GAAG,EAAE,CAAC,IAAI,IAAI;WACd,GAAG,EAAE,CAAC;IACZ,MAAK,CAAC;IACN,IAAG,CAAC;AACJ;IACA;IACA;IACA;IACA;IACA,GAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC1D,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAC1B;IACA,KAAI,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;IACvB,OAAM,OAAO;IACb,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACtB,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACtB,QAAO,CAAC;UACH;AACL;IACA,KAAI,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACtB,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;IACnD,OAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACzC;IACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;aAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACrB;AACP;IACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;aAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;aACpB,IAAI,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;IAC5C,WAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;cACf;YACF;AACP;IACA,OAAM,OAAO;aACL,GAAG,EAAE,GAAG;aACR,GAAG,EAAE,GAAG;IAChB,QAAO,CAAC;UACH;AACL;IACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;IACnD,OAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AACzC;IACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;aAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACrB;AACP;IACA,OAAM,OAAO;aACL,GAAG,EAAE,GAAG;IAChB,SAAQ,GAAG,EAAE,GAAG,CAAC,GAAG;IACpB,QAAO,CAAC;UACH;AACL;SACI,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,MAAM,CAAC,EAAE;IAC9C,OAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AAC/C;IACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;aAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;aACpB,IAAI,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;IAC5C,WAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;cACf;YACF;AACP;IACA,OAAM,OAAO;IACb,SAAQ,GAAG,EAAE,GAAG,CAAC,GAAG;aACZ,GAAG,EAAE,GAAG;IAChB,QAAO,CAAC;UACH;AACL;IACA;AACA;IACA;IACA,KAAI,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;IACvD,OAAM,OAAO;IACb,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;aACd,GAAG,EAAE,IAAI;IACjB,QAAO,CAAC;UACH;AACL;IACA;IACA,KAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;IAC1B,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;IAC1B,SAAQ,OAAO;IACf,WAAU,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;eAC5B,GAAG,EAAE,IAAI;IACnB,UAAS,CAAC;YACH;AACP;IACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;IAC1B,SAAQ,OAAO;eACL,GAAG,EAAE,IAAI;IACnB,WAAU,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,UAAS,CAAC;YACH;AACP;IACA,OAAM,OAAO;IACb,SAAQ,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpC,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,QAAO,CAAC;UACH;AACL;SACI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACpC,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;IACxC,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC;IAC9C,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;IACxC,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC;IAC9C,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;IAC1C,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;IAC7C,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE;SAC9C,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B;IACA;IACA,KAAI,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC;AACvC;SACI,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;AAChE;SACI,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACxB,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACtB,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B;IACA;IACA,KAAI,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC;AAC1D;IACA;SACI,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrE,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;IAC5C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3B,KAAI,IAAI,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;AAC7B;IACA,KAAI,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;SACzB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;AAC5B;IACA,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;IAChB,KAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;IAC/C,OAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;UAC7C;AACL;IACA,KAAI,OAAO,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;IACjC,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;IAC1C,KAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;IAC5C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3B,KAAI,IAAI,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;AAC7B;IACA,KAAI,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;AAC7B;IACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;IAClB,KAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;IAC/C,OAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC;IACtD,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;IACpC,OAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC;UACjB;AACL;IACA,KAAI,IAAI,CAAC,MAAM,EAAE,CAAC;SACd,OAAO,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;IACzC,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;SACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;SACpC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;SACzB,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;IACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC;IACjB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACtB;IACA,KAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;WACpB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,MAAK,MAAM;IACX,OAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;UACf;AACL;IACA;SACI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;SAClB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB;IACA;SACI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;SAClB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB;IACA,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd;SACI,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;IACrC,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClB,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;WACZ,EAAE,CAAC,CAAC;UACL;AACL;IACA,KAAI,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACvB,KAAI,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACvB;IACA,KAAI,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;IACxB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;IACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;eACd,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;IACtC,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvB,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACZ;AACX;IACA,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACtB,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;cACb;YACF;AACP;IACA,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;IACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;eACd,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;IACtC,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvB,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACZ;AACX;IACA,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACtB,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;cACb;YACF;AACP;WACM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;IACzB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,QAAO,MAAM;IACb,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACX;UACF;AACL;IACA,KAAI,OAAO;WACL,CAAC,EAAE,CAAC;WACJ,CAAC,EAAE,CAAC;IACV,OAAM,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACtB,MAAK,CAAC;IACN,IAAG,CAAC;AACJ;IACA;IACA;IACA;OACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,EAAE;SACxC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;SACzB,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;IACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC;IACjB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACtB;IACA,KAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;WACpB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,MAAK,MAAM;IACX,OAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;UACf;AACL;SACI,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;SACnB,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACvB;IACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AAC1B;IACA,KAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;IAC3C,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;IACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;IACxB,WAAU,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;IAC1B,aAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChB;AACX;IACA,WAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;cACd;YACF;AACP;IACA,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;IACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;IACxB,WAAU,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;IAC1B,aAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChB;AACX;IACA,WAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;cACd;YACF;AACP;WACM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;IACzB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,SAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,QAAO,MAAM;IACb,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,SAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACb;UACF;AACL;SACI,IAAI,GAAG,CAAC;SACR,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;WACnB,GAAG,GAAG,EAAE,CAAC;IACf,MAAK,MAAM;WACL,GAAG,GAAG,EAAE,CAAC;UACV;AACL;SACI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;IACzB,OAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;UACb;AACL;SACI,OAAO,GAAG,CAAC;IACf,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;SACpC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC;SACpC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACxC;IACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IACzB,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;IACxB,KAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;IACnB,KAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;AACnB;IACA;IACA,KAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE;IAC3D,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClB,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACb;AACL;IACA,KAAI,GAAG;IACP,OAAM,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;IACzB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACb;IACP,OAAM,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;IACzB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACb;AACP;WACM,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvB,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;IACjB;IACA,SAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;aACV,CAAC,GAAG,CAAC,CAAC;aACN,CAAC,GAAG,CAAC,CAAC;IACd,QAAO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;IAC7C,SAAQ,MAAM;YACP;AACP;IACA,OAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;UACX,QAAQ,IAAI,EAAE;AACnB;IACA,KAAI,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;IAC1C,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;IAC3C,KAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,IAAI;IACzC,KAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;SACxC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC/B,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;IAC5C,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;IACpC,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;SACjB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnB;IACA;IACA,KAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;WACpB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;WACpB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;WACnB,OAAO,IAAI,CAAC;UACb;AACL;IACA;IACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;IAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;WACnD,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;WAC1B,CAAC,IAAI,KAAK,CAAC;IACjB,OAAM,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;WACjB,CAAC,IAAI,SAAS,CAAC;WACf,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;UACnB;IACL,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;WACf,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IAC5B,OAAM,IAAI,CAAC,MAAM,EAAE,CAAC;UACf;SACD,OAAO,IAAI,CAAC;IAChB,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;IAC3C,KAAI,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACpD,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;IAC1C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3B;IACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;SAChD,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClD;IACA,KAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB;SACI,IAAI,GAAG,CAAC;IACZ,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;WACnB,GAAG,GAAG,CAAC,CAAC;IACd,MAAK,MAAM;WACL,IAAI,QAAQ,EAAE;IACpB,SAAQ,GAAG,GAAG,CAAC,GAAG,CAAC;YACZ;AACP;WACM,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,mBAAmB,CAAC,CAAC;AACpD;WACM,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChC,OAAM,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;UACxC;IACL,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;SACzC,OAAO,GAAG,CAAC;IACf,IAAG,CAAC;AACJ;IACA;IACA;IACA;IACA;OACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;IACxC,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7D,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5D;SACI,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;SACzC,OAAO,GAAG,CAAC;IACf,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;IAC1C;SACI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5C;IACA,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;IAChB,KAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;WACzC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;WAC1B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/B;IACA,OAAM,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS;IAC5B,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;IACjB,SAAQ,GAAG,GAAG,CAAC,CAAC,CAAC;IACjB,QAAO,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;aAChB,GAAG,GAAG,CAAC,CAAC;YACT;IACP,OAAM,MAAM;UACP;SACD,OAAO,GAAG,CAAC;IACf,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;SACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChC,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;SAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;SACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;SACpC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;SACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACjC,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;SAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAChC,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;SACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;SACpC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;SACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChC,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;SAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAG,CAAC;AACJ;IACA;IACA;IACA;IACA;OACE,EAAE,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;IAC9B,KAAI,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;SACxC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC;SAC3D,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,+BAA+B,CAAC,CAAC;IACjE,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC9C,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;SACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,sDAAsD,CAAC,CAAC;SACzE,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACtC,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;IACpD,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;SACf,OAAO,IAAI,CAAC;IAChB,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE;SAC9C,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC;IAC/D,KAAI,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;SAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;SACvD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACnC,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;SAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;SACxD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpC,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;SAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;SACvD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACnC,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;SAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;SACxD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpC,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;SAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;SACvD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACnC,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;SAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;SACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;SAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACnC,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;SAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;SACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;SAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpC,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;SACvC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;SACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACxB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;SACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;SACxD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;SACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;SACxD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;SACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;SACxD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;SACvC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;SACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACxB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAG,CAAC;AACJ;OACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;IAC9C,KAAI,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;SAClD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACxB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACnC,IAAG,CAAC;AACJ;IACA;OACE,IAAI,MAAM,GAAG;SACX,IAAI,EAAE,IAAI;SACV,IAAI,EAAE,IAAI;SACV,IAAI,EAAE,IAAI;SACV,MAAM,EAAE,IAAI;IAChB,IAAG,CAAC;AACJ;IACA;IACA,GAAE,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;IAC5B;IACA,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SACjB,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SACvB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;SAC5B,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnD;SACI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACxB;AACH;OACE,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;SACvC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3B,KAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;SAC9C,OAAO,GAAG,CAAC;IACf,IAAG,CAAC;AACJ;OACE,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;IACpD;IACA;IACA,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC;SACZ,IAAI,IAAI,CAAC;AACb;IACA,KAAI,GAAG;WACD,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;WACxB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;WAClB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAM,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;IAC3B,MAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE;AAC5B;SACI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClD,KAAI,IAAI,GAAG,KAAK,CAAC,EAAE;WACb,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACrB,OAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACnB,MAAK,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE;WAClB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,MAAK,MAAM;IACX,OAAM,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE;IACjC;IACA,SAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;IAClB,QAAO,MAAM;IACb;IACA,SAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;YACZ;UACF;AACL;SACI,OAAO,CAAC,CAAC;IACb,IAAG,CAAC;AACJ;IACA,GAAE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;IACvD,KAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACjC,IAAG,CAAC;AACJ;OACE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;SAC5C,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAG,CAAC;AACJ;OACE,SAAS,IAAI,IAAI;SACf,MAAM,CAAC,IAAI;IACf,OAAM,IAAI;IACV,OAAM,MAAM;WACN,yEAAyE,CAAC,CAAC;QAC9E;IACH,GAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;IACA,GAAE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;IACxD;IACA,KAAI,IAAI,IAAI,GAAG,QAAQ,CAAC;AACxB;IACA,KAAI,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3C,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;IACrC,OAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;UAClC;IACL,KAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAC3B;IACA,KAAI,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;WACrB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzB,OAAM,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACvB,OAAM,OAAO;UACR;AACL;IACA;SACI,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,KAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAChD;IACA,KAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;WAClC,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;WAC9B,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;WAC3D,IAAI,GAAG,IAAI,CAAC;UACb;SACD,IAAI,MAAM,EAAE,CAAC;SACb,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;SAC3B,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE;IACzC,OAAM,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;IACzB,MAAK,MAAM;IACX,OAAM,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;UACnB;IACL,IAAG,CAAC;AACJ;OACE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;IAC9C;SACI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9B,KAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAClC,KAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AACpB;IACA;IACA,KAAI,IAAI,EAAE,GAAG,CAAC,CAAC;IACf,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;WACnC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAM,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;WAChB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACpC,OAAM,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC;UACxC;AACL;IACA;IACA,KAAI,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;IACzC,OAAM,GAAG,CAAC,MAAM,EAAE,CAAC;IACnB,OAAM,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;IAC3C,SAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;YACd;UACF;SACD,OAAO,GAAG,CAAC;IACf,IAAG,CAAC;AACJ;OACE,SAAS,IAAI,IAAI;SACf,MAAM,CAAC,IAAI;IACf,OAAM,IAAI;IACV,OAAM,MAAM;WACN,gEAAgE,CAAC,CAAC;QACrE;IACH,GAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;OACE,SAAS,IAAI,IAAI;SACf,MAAM,CAAC,IAAI;IACf,OAAM,IAAI;IACV,OAAM,MAAM;WACN,uDAAuD,CAAC,CAAC;QAC5D;IACH,GAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;OACE,SAAS,MAAM,IAAI;IACrB;SACI,MAAM,CAAC,IAAI;IACf,OAAM,IAAI;IACV,OAAM,OAAO;WACP,qEAAqE,CAAC,CAAC;QAC1E;IACH,GAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC3B;OACE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;IAChD;IACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;IAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACzC,OAAM,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC;IACjD,OAAM,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;WACxB,EAAE,MAAM,EAAE,CAAC;AACjB;WACM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;WAClB,KAAK,GAAG,EAAE,CAAC;UACZ;IACL,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;WACf,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC;UACjC;SACD,OAAO,GAAG,CAAC;IACf,IAAG,CAAC;AACJ;IACA;OACE,EAAE,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;IACpC;SACI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1C;SACI,IAAI,KAAK,CAAC;IACd,KAAI,IAAI,IAAI,KAAK,MAAM,EAAE;IACzB,OAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;IACzB,MAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;IAChC,OAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;IACzB,MAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;IAChC,OAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;IACzB,MAAK,MAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;IAClC,OAAM,KAAK,GAAG,IAAI,MAAM,EAAE,CAAC;IAC3B,MAAK,MAAM;WACL,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;UAC1C;IACL,KAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AACzB;SACI,OAAO,KAAK,CAAC;IACjB,IAAG,CAAC;AACJ;IACA;IACA;IACA;IACA,GAAE,SAAS,GAAG,EAAE,CAAC,EAAE;IACnB,KAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;WACzB,IAAI,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/B,OAAM,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACvB,OAAM,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACzB,MAAK,MAAM;WACL,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,gCAAgC,CAAC,CAAC;IACzD,OAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACjB,OAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;UACnB;QACF;AACH;OACE,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,CAAC,EAAE;SAC7C,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE,+BAA+B,CAAC,CAAC;SAC1D,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,iCAAiC,CAAC,CAAC;IACrD,IAAG,CAAC;AACJ;IACA,GAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE;IACpD,KAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,MAAM,CAAC,EAAE,+BAA+B,CAAC,CAAC;IAC7E,KAAI,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG;WAC7B,iCAAiC,CAAC,CAAC;IACzC,IAAG,CAAC;AACJ;OACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;IACzC,KAAI,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACjE;IACA,KAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;SACxC,OAAO,CAAC,CAAC;IACb,IAAG,CAAC;AACJ;OACE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE;IACvC,KAAI,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;IACpB,OAAM,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;UAClB;AACL;IACA,KAAI,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACzC,IAAG,CAAC;AACJ;IACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;SACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;SACI,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACnB,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;WACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;UAClB;IACL,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAG,CAAC;AACJ;IACA,GAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;SACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;SACI,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACpB,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;WACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;UAClB;SACD,OAAO,GAAG,CAAC;IACf,IAAG,CAAC;AACJ;IACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;SACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;SACI,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACnB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;WACnB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;UAClB;IACL,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAG,CAAC;AACJ;IACA,GAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;SACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;SACI,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACpB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;WACnB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;UAClB;SACD,OAAO,GAAG,CAAC;IACf,IAAG,CAAC;AACJ;IACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;IAC5C,KAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,IAAG,CAAC;AACJ;IACA,GAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;SACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,IAAG,CAAC;AACJ;IACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;SACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAG,CAAC;AACJ;OACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;IACzC,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACnC,IAAG,CAAC;AACJ;OACE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE;SACnC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1B,IAAG,CAAC;AACJ;OACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;SACrC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AACrC;SACI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3B,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B;IACA;IACA,KAAI,IAAI,IAAI,KAAK,CAAC,EAAE;WACd,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;WAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;UACzB;AACL;IACA;IACA;IACA;SACI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IACd,KAAI,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;WACtC,CAAC,EAAE,CAAC;IACV,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACb;SACD,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;IACA,KAAI,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,KAAI,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;AAC5B;IACA;IACA;IACA,KAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACpC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAC/B,KAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACtC;IACA,KAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IAC9C,OAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;UACjB;AACL;SACI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACvB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;SACzC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;SACV,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;IAC7B,OAAM,IAAI,GAAG,GAAG,CAAC,CAAC;IAClB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE;IAC/C,SAAQ,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;YACpB;IACP,OAAM,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;WACd,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvD;WACM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACtB,OAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;WACf,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;WAChB,CAAC,GAAG,CAAC,CAAC;UACP;AACL;SACI,OAAO,CAAC,CAAC;IACb,IAAG,CAAC;AACJ;OACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;SACrC,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,KAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;IAC5B,OAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;WACjB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;IACrC,MAAK,MAAM;IACX,OAAM,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;UACvB;IACL,IAAG,CAAC;AACJ;IACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;IAC5C,KAAI,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnD,KAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AAC5C;IACA,KAAI,IAAI,UAAU,GAAG,CAAC,CAAC;SACnB,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC;IACzC,KAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,KAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACf,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACzC,OAAM,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;UAClC;AACL;IACA,KAAI,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,KAAI,IAAI,OAAO,GAAG,CAAC,CAAC;IACpB,KAAI,IAAI,UAAU,GAAG,CAAC,CAAC;SACnB,IAAI,KAAK,GAAG,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC;IACrC,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;WACf,KAAK,GAAG,EAAE,CAAC;UACZ;AACL;IACA,KAAI,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;WACpC,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,OAAM,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;aACnC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,SAAQ,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;eAClB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;cACrB;AACT;aACQ,IAAI,GAAG,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE;eAC9B,UAAU,GAAG,CAAC,CAAC;IACzB,WAAU,SAAS;cACV;AACT;aACQ,OAAO,KAAK,CAAC,CAAC;aACd,OAAO,IAAI,GAAG,CAAC;aACf,UAAU,EAAE,CAAC;IACrB,SAAQ,IAAI,UAAU,KAAK,UAAU,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS;AACxE;IACA,SAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;aAClC,UAAU,GAAG,CAAC,CAAC;aACf,OAAO,GAAG,CAAC,CAAC;YACb;WACD,KAAK,GAAG,EAAE,CAAC;UACZ;AACL;SACI,OAAO,GAAG,CAAC;IACf,IAAG,CAAC;AACJ;OACE,GAAG,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;SACjD,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B;SACI,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACrC,IAAG,CAAC;AACJ;OACE,GAAG,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,GAAG,EAAE;IACzD,KAAI,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;IAC1B,KAAI,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC;SACf,OAAO,GAAG,CAAC;IACf,IAAG,CAAC;AACJ;IACA;IACA;IACA;AACA;OACE,EAAE,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;IAChC,KAAI,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,IAAG,CAAC;AACJ;IACA,GAAE,SAAS,IAAI,EAAE,CAAC,EAAE;SAChB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACtB;SACI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;SAChC,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,KAAK,CAAC,EAAE;IAC/B,OAAM,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;UACtC;AACL;IACA,KAAI,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,KAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACtC,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC;SACI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3D,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvC,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC;IACH,GAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB;OACE,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;IACtD,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5C,IAAG,CAAC;AACJ;OACE,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,GAAG,EAAE;IAC1D,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,KAAI,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;SACb,OAAO,CAAC,CAAC;IACb,IAAG,CAAC;AACJ;IACA,GAAE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;SACzC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;WAC5B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACrB,OAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;WACb,OAAO,CAAC,CAAC;UACV;AACL;SACI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9E,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB;SACI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;WACtB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;UACtB,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;WACxB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;UACtB;AACL;IACA,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAG,CAAC;AACJ;IACA,GAAE,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;SACvC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACnE;SACI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9E,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;SACZ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;WACtB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;UACtB,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;WACxB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;UACtB;AACL;IACA,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAG,CAAC;AACJ;OACE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;IAC1C;SACI,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACvD,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAG,CAAC;MACH,EAAmC,MAAM,EAAEL,cAAI,CAAC,CAAA;;;;;IC19G1C,MAAM2B,SAAO,GAAG,iBAAiB;;ICSxC,IAAI,EAAE,GAAGG,IAAG,CAAC,EAAE,CAAC;IAIhB,MAAMF,QAAM,GAAG,IAAI,MAAM,CAACD,SAAO,CAAC,CAAC;IACnC,MAAMI,mBAAiB,GAAG,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,gBAAgB,CAAC;IAC3B,SAAS,cAAc,CAAC,KAAK,EAAE;IACtC,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,MAAM,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;IAC3D,SAAS,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1D,SAAS,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACpE,QAAQ,WAAW,CAAC,KAAK,CAAC;IAC1B,SAAS,QAAQ,KAAK,CAAC,KAAK,QAAQ,CAAC;IACrC,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACxB,CAAC;IACD;IACA,IAAI,oBAAoB,GAAG,KAAK,CAAC;IAC1B,MAAM,SAAS,CAAC;IACvB,IAAI,WAAW,CAAC,gBAAgB,EAAE,GAAG,EAAE;IACvC,QAAQ,IAAI,gBAAgB,KAAKA,mBAAiB,EAAE;IACpD,YAAYH,QAAM,CAAC,UAAU,CAAC,sDAAsD,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;IAC3H,gBAAgB,SAAS,EAAE,iBAAiB;IAC5C,aAAa,CAAC,CAAC;IACf,SAAS;IACT,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IACxB,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IACjC,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK;IACL,IAAI,QAAQ,CAAC,KAAK,EAAE;IACpB,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,KAAK;IACL,IAAI,MAAM,CAAC,KAAK,EAAE;IAClB,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,KAAK;IACL,IAAI,GAAG,GAAG;IACV,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IAClC,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,SAAS;IACT,QAAQ,OAAO,IAAI,CAAC;IACpB,KAAK;IACL,IAAI,GAAG,CAAC,KAAK,EAAE;IACf,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxD,KAAK;IACL,IAAI,GAAG,CAAC,KAAK,EAAE;IACf,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxD,KAAK;IACL,IAAI,GAAG,CAAC,KAAK,EAAE;IACf,QAAQ,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;IACxB,YAAYI,YAAU,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IAClD,SAAS;IACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxD,KAAK;IACL,IAAI,GAAG,CAAC,KAAK,EAAE;IACf,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxD,KAAK;IACL,IAAI,GAAG,CAAC,KAAK,EAAE;IACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;IAC3B,YAAYA,YAAU,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IAClD,SAAS;IACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,KAAK;IACL,IAAI,GAAG,CAAC,KAAK,EAAE;IACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;IAC3B,YAAYA,YAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAChD,SAAS;IACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,KAAK;IACL,IAAI,GAAG,CAAC,KAAK,EAAE;IACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;IAChD,YAAYA,YAAU,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;IACxD,SAAS;IACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,KAAK;IACL,IAAI,EAAE,CAAC,KAAK,EAAE;IACd,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;IAChD,YAAYA,YAAU,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;IACvD,SAAS;IACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,KAAK;IACL,IAAI,GAAG,CAAC,KAAK,EAAE;IACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;IAChD,YAAYA,YAAU,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;IACxD,SAAS;IACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,KAAK;IACL,IAAI,IAAI,CAAC,KAAK,EAAE;IAChB,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;IAC5C,YAAYA,YAAU,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACjD,SAAS;IACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACpD,KAAK;IACL,IAAI,GAAG,CAAC,KAAK,EAAE;IACf,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;IAC5C,YAAYA,YAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAChD,SAAS;IACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,KAAK;IACL,IAAI,GAAG,CAAC,KAAK,EAAE;IACf,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;IAC5C,YAAYA,YAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAChD,SAAS;IACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,KAAK;IACL,IAAI,EAAE,CAAC,KAAK,EAAE;IACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,KAAK;IACL,IAAI,EAAE,CAAC,KAAK,EAAE;IACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,KAAK;IACL,IAAI,GAAG,CAAC,KAAK,EAAE;IACf,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,KAAK;IACL,IAAI,EAAE,CAAC,KAAK,EAAE;IACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,KAAK;IACL,IAAI,GAAG,CAAC,KAAK,EAAE;IACf,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,KAAK;IACL,IAAI,UAAU,GAAG;IACjB,QAAQ,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACtC,KAAK;IACL,IAAI,MAAM,GAAG;IACb,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;IACnC,KAAK;IACL,IAAI,QAAQ,GAAG;IACf,QAAQ,IAAI;IACZ,YAAY,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzC,SAAS;IACT,QAAQ,OAAO,KAAK,EAAE;IACtB,YAAYA,YAAU,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChE,SAAS;IACT,QAAQ,OAAO,IAAI,CAAC;IACpB,KAAK;IACL,IAAI,QAAQ,GAAG;IACf,QAAQ,IAAI;IACZ,YAAY,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3C,SAAS;IACT,QAAQ,OAAO,CAAC,EAAE,GAAG;IACrB,QAAQ,OAAOJ,QAAM,CAAC,UAAU,CAAC,uCAAuC,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;IAC/G,YAAY,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;IAClC,SAAS,CAAC,CAAC;IACX,KAAK;IACL,IAAI,QAAQ,GAAG;IACf;IACA,QAAQ,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;IAClC,YAAY,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;IACrC,gBAAgB,IAAI,CAAC,oBAAoB,EAAE;IAC3C,oBAAoB,oBAAoB,GAAG,IAAI,CAAC;IAChD,oBAAoBA,QAAM,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;IACzG,iBAAiB;IACjB,aAAa;IACb,iBAAiB,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;IAC1C,gBAAgBA,QAAM,CAAC,UAAU,CAAC,gFAAgF,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAC3J,aAAa;IACb,iBAAiB;IACjB,gBAAgBA,QAAM,CAAC,UAAU,CAAC,+CAA+C,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAC1H,aAAa;IACb,SAAS;IACT,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,KAAK;IACL,IAAI,WAAW,GAAG;IAClB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;IACzB,KAAK;IACL,IAAI,MAAM,CAAC,GAAG,EAAE;IAChB,QAAQ,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;IAC9D,KAAK;IACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE;IACvB,QAAQ,IAAI,KAAK,YAAY,SAAS,EAAE;IACxC,YAAY,OAAO,KAAK,CAAC;IACzB,SAAS;IACT,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;IACzC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE;IACjD,gBAAgB,OAAO,IAAI,SAAS,CAACG,mBAAiB,EAAEE,OAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,aAAa;IACb,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;IAC3C,gBAAgB,OAAO,IAAI,SAAS,CAACF,mBAAiB,EAAEE,OAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9E,aAAa;IACb,YAAY,OAAOL,QAAM,CAAC,kBAAkB,CAAC,0BAA0B,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACzF,SAAS;IACT,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;IACzC,YAAY,IAAI,KAAK,GAAG,CAAC,EAAE;IAC3B,gBAAgBI,YAAU,CAAC,WAAW,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;IACjE,aAAa;IACb,YAAY,IAAI,KAAK,IAAI,QAAQ,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE;IACzD,gBAAgBA,YAAU,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAChE,aAAa;IACb,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,SAAS;IACT,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC;IAC/B,QAAQ,IAAI,QAAQ,QAAQ,CAAC,KAAK,QAAQ,EAAE;IAC5C,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvD,SAAS;IACT,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;IAC/B,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrD,SAAS;IACT,QAAQ,IAAI,QAAQ,EAAE;IACtB;IACA,YAAY,IAAI,QAAQ,CAAC,WAAW,EAAE;IACtC,gBAAgB,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACnD,gBAAgB,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;IAC/C,oBAAoB,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,iBAAiB;IACjB,aAAa;IACb,iBAAiB;IACjB;IACA,gBAAgB,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC;IACxC;IACA,gBAAgB,IAAI,GAAG,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE;IAClE,oBAAoB,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;IACvC,iBAAiB;IACjB,gBAAgB,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;IAC/C,oBAAoB,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;IAC/F,wBAAwB,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnD,qBAAqB;IACrB,iBAAiB;IACjB,aAAa;IACb,SAAS;IACT,QAAQ,OAAOJ,QAAM,CAAC,kBAAkB,CAAC,yBAAyB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACpF,KAAK;IACL,IAAI,OAAO,WAAW,CAAC,KAAK,EAAE;IAC9B,QAAQ,OAAO,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAC/C,KAAK;IACL,CAAC;IACD;IACA,SAASK,OAAK,CAAC,KAAK,EAAE;IACtB;IACA,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;IACrC,QAAQ,OAAOA,OAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACzC,KAAK;IACL;IACA,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IAC1B;IACA,QAAQ,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACnC;IACA,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IAC9B,YAAYL,QAAM,CAAC,kBAAkB,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACrE,SAAS;IACT;IACA,QAAQ,KAAK,GAAGK,OAAK,CAAC,KAAK,CAAC,CAAC;IAC7B;IACA,QAAQ,IAAI,KAAK,KAAK,MAAM,EAAE;IAC9B,YAAY,OAAO,KAAK,CAAC;IACzB,SAAS;IACT;IACA,QAAQ,OAAO,GAAG,GAAG,KAAK,CAAC;IAC3B,KAAK;IACL;IACA,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;IACxC,QAAQ,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;IAC7B,KAAK;IACL;IACA,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE;IACxB,QAAQ,OAAO,MAAM,CAAC;IACtB,KAAK;IACL;IACA,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;IAC1B,QAAQ,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3C,KAAK;IACL;IACA,IAAI,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,EAAE;IACjE,QAAQ,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1C,KAAK;IACL,IAAI,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,SAAS,WAAW,CAAC,KAAK,EAAE;IAC5B,IAAI,OAAO,SAAS,CAAC,IAAI,CAACA,OAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,SAAS,IAAI,CAAC,KAAK,EAAE;IACrB,IAAI,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACpD,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACxB,QAAQ,QAAQ,IAAI,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;IACpD,KAAK;IACL,IAAI,OAAO,IAAI,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,SAASD,YAAU,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;IAC7C,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IAC1D,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;IACvB,QAAQ,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IAC7B,KAAK;IACL,IAAI,OAAOJ,QAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;IACD;IACO,SAAS,WAAW,CAAC,KAAK,EAAE;IACnC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC5C;;ICvSA,MAAMA,QAAM,GAAG,IAAI,MAAM,CAACD,SAAO,CAAC,CAAC;IAEnC,MAAM,iBAAiB,GAAG,EAAE,CAAC;IAC7B,MAAMO,MAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,SAAS,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;IACtD,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IAC1D,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;IAC7B,QAAQ,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IAC7B,KAAK;IACL,IAAI,OAAON,QAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC3E,CAAC;IACD;IACA,IAAI,KAAK,GAAG,GAAG,CAAC;IAChB,OAAO,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE;IAC3B,IAAI,KAAK,IAAI,KAAK,CAAC;IACnB,CAAC;IACD;IACA,SAAS,aAAa,CAAC,QAAQ,EAAE;IACjC,IAAI,IAAI,QAAQ,QAAQ,CAAC,KAAK,QAAQ,EAAE;IACxC,QAAQ,IAAI;IACZ,YAAY,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC3D,SAAS;IACT,QAAQ,OAAO,CAAC,EAAE,GAAG;IACrB,KAAK;IACL,IAAI,IAAI,QAAQ,QAAQ,CAAC,KAAK,QAAQ,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,IAAI,GAAG,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE;IAC/F,QAAQ,QAAQ,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE;IACpD,KAAK;IACL,IAAI,OAAOA,QAAM,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IACnF,CAAC;IACM,SAAS,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE;IAC7C,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE;IAC1B,QAAQ,QAAQ,GAAG,CAAC,CAAC;IACrB,KAAK;IACL,IAAI,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC/C;IACA,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,CAACM,MAAI,CAAC,CAAC;IACpC,IAAI,IAAI,QAAQ,EAAE;IAClB,QAAQ,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACvC,KAAK;IACL,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;IACpD,IAAI,OAAO,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;IACpD,QAAQ,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC;IAClC,KAAK;IACL;IACA,IAAI,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;IACnD,IAAI,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;IACjC,QAAQ,KAAK,GAAG,KAAK,CAAC;IACtB,KAAK;IACL,SAAS;IACT,QAAQ,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,QAAQ,CAAC;IACvC,KAAK;IACL,IAAI,IAAI,QAAQ,EAAE;IAClB,QAAQ,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;IAC5B,KAAK;IACL,IAAI,OAAO,KAAK,CAAC;IACjB,CAAC;IACM,SAAS,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE;IAC5C,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE;IAC1B,QAAQ,QAAQ,GAAG,CAAC,CAAC;IACrB,KAAK;IACL,IAAI,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;IACpE,QAAQN,QAAM,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3E,KAAK;IACL;IACA,IAAI,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;IACrD,IAAI,IAAI,QAAQ,EAAE;IAClB,QAAQ,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACnC,KAAK;IACL,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE;IACvB,QAAQA,QAAM,CAAC,kBAAkB,CAAC,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACnE,KAAK;IACL;IACA,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;IAC1B,QAAQA,QAAM,CAAC,kBAAkB,CAAC,yBAAyB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7E,KAAK;IACL,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,IAAI,CAAC,KAAK,EAAE;IAChB,QAAQ,KAAK,GAAG,GAAG,CAAC;IACpB,KAAK;IACL,IAAI,IAAI,CAAC,QAAQ,EAAE;IACnB,QAAQ,QAAQ,GAAG,GAAG,CAAC;IACvB,KAAK;IACL;IACA,IAAI,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;IAClD,QAAQ,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9D,KAAK;IACL;IACA,IAAI,IAAI,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;IACjD,QAAQ,UAAU,CAAC,uCAAuC,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IACvF,KAAK;IACL;IACA,IAAI,IAAI,QAAQ,KAAK,EAAE,EAAE;IACzB,QAAQ,QAAQ,GAAG,GAAG,CAAC;IACvB,KAAK;IACL;IACA,IAAI,OAAO,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;IACpD,QAAQ,QAAQ,IAAI,GAAG,CAAC;IACxB,KAAK;IACL,IAAI,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,IAAI,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;IAC9D,IAAI,IAAI,QAAQ,EAAE;IAClB,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACnC,KAAK;IACL,IAAI,OAAO,GAAG,CAAC;IACf,CAAC;IACM,MAAM,WAAW,CAAC;IACzB,IAAI,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC3D,QAAQ,IAAI,gBAAgB,KAAK,iBAAiB,EAAE;IACpD,YAAYA,QAAM,CAAC,UAAU,CAAC,0DAA0D,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;IAC/H,gBAAgB,SAAS,EAAE,iBAAiB;IAC5C,aAAa,CAAC,CAAC;IACf,SAAS;IACT,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAC3B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACjC,QAAQ,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,GAAG,GAAG,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3F,QAAQ,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnD,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK;IACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE;IACvB,QAAQ,IAAI,KAAK,YAAY,WAAW,EAAE;IAC1C,YAAY,OAAO,KAAK,CAAC;IACzB,SAAS;IACT,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;IACzC,YAAY,KAAK,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACxC,SAAS;IACT,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,IAAI,KAAK,GAAG,GAAG,CAAC;IACxB,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;IAC1B,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;IACzC,YAAY,IAAI,KAAK,KAAK,OAAO,EAAE,CAEtB;IACb,iBAAiB,IAAI,KAAK,KAAK,QAAQ,EAAE;IACzC,gBAAgB,MAAM,GAAG,KAAK,CAAC;IAC/B,aAAa;IACb,iBAAiB;IACjB,gBAAgB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC1E,gBAAgB,IAAI,CAAC,KAAK,EAAE;IAC5B,oBAAoBA,QAAM,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACvF,iBAAiB;IACjB,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;IAC5C,gBAAgB,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,gBAAgB,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,aAAa;IACb,SAAS;IACT,aAAa,IAAI,KAAK,EAAE;IACxB,YAAY,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,KAAK;IACvD,gBAAgB,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;IACxC,oBAAoB,OAAO,YAAY,CAAC;IACxC,iBAAiB;IACjB,gBAAgB,IAAI,QAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;IAClD,oBAAoBA,QAAM,CAAC,kBAAkB,CAAC,wBAAwB,GAAG,GAAG,GAAG,OAAO,GAAG,IAAI,GAAG,GAAG,EAAE,SAAS,GAAG,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAClI,iBAAiB;IACjB,gBAAgB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,aAAa,CAAC;IACd,YAAY,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACxD,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACpD,YAAY,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7D,SAAS;IACT,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE;IACvB,YAAYA,QAAM,CAAC,kBAAkB,CAAC,+CAA+C,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;IAC9G,SAAS;IACT,QAAQ,IAAI,QAAQ,GAAG,EAAE,EAAE;IAC3B,YAAYA,QAAM,CAAC,kBAAkB,CAAC,2CAA2C,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAChH,SAAS;IACT,QAAQ,OAAO,IAAI,WAAW,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC3E,KAAK;IACL,CAAC;IACM,MAAM,WAAW,CAAC;IACzB,IAAI,WAAW,CAAC,gBAAgB,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;IACtD,QAAQ,IAAI,gBAAgB,KAAK,iBAAiB,EAAE;IACpD,YAAYA,QAAM,CAAC,UAAU,CAAC,0DAA0D,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;IAC/H,gBAAgB,SAAS,EAAE,iBAAiB;IAC5C,aAAa,CAAC,CAAC;IACf,SAAS;IACT,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IACxB,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IAC5B,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IACnC,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK;IACL,IAAI,YAAY,CAAC,KAAK,EAAE;IACxB,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;IACpD,YAAYA,QAAM,CAAC,kBAAkB,CAAC,+CAA+C,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACvG,SAAS;IACT,KAAK;IACL,IAAI,SAAS,CAAC,KAAK,EAAE;IACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClF,KAAK;IACL,IAAI,SAAS,CAAC,KAAK,EAAE;IACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClF,KAAK;IACL,IAAI,SAAS,CAAC,KAAK,EAAE;IACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/G,KAAK;IACL,IAAI,SAAS,CAAC,KAAK,EAAE;IACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/G,KAAK;IACL,IAAI,KAAK,GAAG;IACZ,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjD,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;IAChC,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,SAAS;IACT,QAAQ,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7D,QAAQ,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACtD,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,WAAW,EAAE;IAC9C,YAAY,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACnE,SAAS;IACT,QAAQ,OAAO,MAAM,CAAC;IACtB,KAAK;IACL,IAAI,OAAO,GAAG;IACd,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjD,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;IAChC,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,SAAS;IACT,QAAQ,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7D,QAAQ,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACtD,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,WAAW,EAAE;IAC/C,YAAY,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACnE,SAAS;IACT,QAAQ,OAAO,MAAM,CAAC;IACtB,KAAK;IACL;IACA,IAAI,KAAK,CAAC,QAAQ,EAAE;IACpB,QAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;IAC9B,YAAY,QAAQ,GAAG,CAAC,CAAC;IACzB,SAAS;IACT;IACA,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjD,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;IAChC,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,SAAS;IACT,QAAQ,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,EAAE,KAAK,QAAQ,GAAG,CAAC,CAAC,EAAE;IAC7D,YAAYA,QAAM,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IACrF,SAAS;IACT,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,QAAQ,EAAE;IACzC,YAAY,OAAO,IAAI,CAAC;IACxB,SAAS;IACT,QAAQ,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACzF,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChF,KAAK;IACL,IAAI,MAAM,GAAG;IACb,QAAQ,QAAQ,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE;IAC9D,KAAK;IACL,IAAI,UAAU,GAAG;IACjB,QAAQ,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACxC,KAAK;IACL,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;IACtC,IAAI,WAAW,CAAC,KAAK,EAAE;IACvB,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;IAC3B,YAAY,OAAO,IAAI,CAAC,IAAI,CAAC;IAC7B,SAAS;IACT,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE;IACvB,YAAYA,QAAM,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5E,SAAS;IACT,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACtG,QAAQ,OAAO,UAAU,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAC1C,KAAK;IACL,IAAI,aAAa,GAAG,EAAE,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE;IAC3D,IAAI,QAAQ,CAAC,MAAM,EAAE;IACrB,QAAQ,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3D,KAAK;IACL,IAAI,OAAO,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC9C;IACA,QAAQ,IAAI,MAAM,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;IAC7E,YAAY,MAAM,GAAG,QAAQ,CAAC;IAC9B,YAAY,QAAQ,GAAG,IAAI,CAAC;IAC5B,SAAS;IACT,QAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;IAC9B,YAAY,QAAQ,GAAG,CAAC,CAAC;IACzB,SAAS;IACT,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;IAC5B,YAAY,MAAM,GAAG,OAAO,CAAC;IAC7B,SAAS;IACT,QAAQ,OAAO,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9F,KAAK;IACL,IAAI,OAAO,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE;IACrC,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;IAC5B,YAAY,MAAM,GAAG,OAAO,CAAC;IAC7B,SAAS;IACT,QAAQ,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrD,QAAQ,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAChE,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,OAAO,CAAC,EAAE,CAACM,MAAI,CAAC,EAAE;IACrD,YAAY,UAAU,CAAC,mCAAmC,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACxF,SAAS;IACT,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC;IACvB,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE;IAChC,YAAY,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IAClE,SAAS;IACT,aAAa;IACb,YAAY,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACxC,YAAY,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACzD,SAAS;IACT,QAAQ,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IACnE,QAAQ,OAAO,IAAI,WAAW,CAAC,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAC7E,KAAK;IACL,IAAI,OAAO,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE;IACpC,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;IAC5B,YAAY,MAAM,GAAG,OAAO,CAAC;IAC7B,SAAS;IACT,QAAQ,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrD,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE;IAC5D,YAAY,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;IACxC,SAAS;IACT,QAAQ,IAAI,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE;IAChC,YAAY,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC1D,SAAS;IACT,QAAQ,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACnG,QAAQ,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IACnE,QAAQ,OAAO,IAAI,WAAW,CAAC,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAC7E,KAAK;IACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;IAC/B,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;IACzC,YAAY,OAAO,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACzD,SAAS;IACT,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;IAC5B,YAAY,OAAO,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxD,SAAS;IACT,QAAQ,IAAI;IACZ,YAAY,OAAO,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3D,SAAS;IACT,QAAQ,OAAO,KAAK,EAAE;IACtB;IACA,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;IAC/D,gBAAgB,MAAM,KAAK,CAAC;IAC5B,aAAa;IACb,SAAS;IACT,QAAQ,OAAON,QAAM,CAAC,kBAAkB,CAAC,2BAA2B,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACtF,KAAK;IACL,IAAI,OAAO,aAAa,CAAC,KAAK,EAAE;IAChC,QAAQ,OAAO,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IACjD,KAAK;IACL,CAAC;IACD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;ICvW7B,MAAMD,SAAO,GAAG,eAAe;;ICItC,MAAMC,QAAM,GAAG,IAAI,MAAM,CAACD,SAAO,CAAC,CAAC;IACnC;IACO,IAAI,wBAAwB,CAAC;IACpC,CAAC,UAAU,wBAAwB,EAAE;IACrC,IAAI,wBAAwB,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;IAC7C,IAAI,wBAAwB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IAC5C,IAAI,wBAAwB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IAC5C,IAAI,wBAAwB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAC9C,IAAI,wBAAwB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAC9C,CAAC,EAAE,wBAAwB,KAAK,wBAAwB,GAAG,EAAE,CAAC,CAAC,CAAC;IAEzD,IAAI,eAAe,CAAC;IAC3B,CAAC,UAAU,eAAe,EAAE;IAC5B;IACA;IACA,IAAI,eAAe,CAAC,qBAAqB,CAAC,GAAG,8BAA8B,CAAC;IAC5E;IACA;IACA,IAAI,eAAe,CAAC,YAAY,CAAC,GAAG,sBAAsB,CAAC;IAC3D;IACA;IACA,IAAI,eAAe,CAAC,SAAS,CAAC,GAAG,gBAAgB,CAAC;IAClD;IACA;IACA,IAAI,eAAe,CAAC,kBAAkB,CAAC,GAAG,2BAA2B,CAAC;IACtE;IACA;IACA;IACA,IAAI,eAAe,CAAC,cAAc,CAAC,GAAG,oBAAoB,CAAC;IAC3D;IACA;IACA;IACA,IAAI,eAAe,CAAC,iBAAiB,CAAC,GAAG,kBAAkB,CAAC;IAC5D;IACA;IACA;IACA,IAAI,eAAe,CAAC,UAAU,CAAC,GAAG,yBAAyB,CAAC;IAC5D,CAAC,EAAE,eAAe,KAAK,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC;IAE9C,SAAS,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;IAChE,IAAI,OAAOC,QAAM,CAAC,kBAAkB,CAAC,CAAC,4BAA4B,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACzG,CAAC;IACD,SAAS,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;IACjE;IACA,IAAI,IAAI,MAAM,KAAK,eAAe,CAAC,UAAU,IAAI,MAAM,KAAK,eAAe,CAAC,mBAAmB,EAAE;IACjG,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,QAAQ,KAAK,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACxD,YAAY,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;IACxC,gBAAgB,MAAM;IACtB,aAAa;IACb,YAAY,CAAC,EAAE,CAAC;IAChB,SAAS;IACT,QAAQ,OAAO,CAAC,CAAC;IACjB,KAAK;IACL;IACA;IACA,IAAI,IAAI,MAAM,KAAK,eAAe,CAAC,OAAO,EAAE;IAC5C,QAAQ,OAAO,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;IACzC,KAAK;IACL;IACA,IAAI,OAAO,CAAC,CAAC;IACb,CAAC;IACD,SAAS,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;IAClE;IACA,IAAI,IAAI,MAAM,KAAK,eAAe,CAAC,QAAQ,EAAE;IAC7C,QAAQ,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAClC,QAAQ,OAAO,CAAC,CAAC;IACjB,KAAK;IACL;IACA,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxB;IACA,IAAI,OAAO,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAA2B,CAAC,CAAC;IACnE,CAAC;IACD;IAC8B,MAAM,CAAC,MAAM,CAAC;IAC5C,IAAI,KAAK,EAAE,SAAS;IACpB,IAAI,MAAM,EAAE,UAAU;IACtB,IAAI,OAAO,EAAE,WAAW;IACxB,CAAC,EAAE;IAsFH;IACO,SAAS,WAAW,CAAC,GAAG,EAAE,IAAI,GAAG,wBAAwB,CAAC,OAAO,EAAE;IAC1E,IAAI,IAAI,IAAI,IAAI,wBAAwB,CAAC,OAAO,EAAE;IAClD,QAAQA,QAAM,CAAC,cAAc,EAAE,CAAC;IAChC,QAAQ,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,KAAK;IACL,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;IACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACzC,QAAQ,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACpC,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE;IACtB,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,SAAS;IACT,aAAa,IAAI,CAAC,GAAG,KAAK,EAAE;IAC5B,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IACzC,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC;IAC3C,SAAS;IACT,aAAa,IAAI,CAAC,CAAC,GAAG,MAAM,KAAK,MAAM,EAAE;IACzC,YAAY,CAAC,EAAE,CAAC;IAChB,YAAY,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACzC,YAAY,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,GAAG,MAAM,MAAM,MAAM,EAAE;IAC7D,gBAAgB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACxD,aAAa;IACb;IACA,YAAY,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,CAAC,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC;IACxE,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IAC7C,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;IACtD,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;IACrD,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC;IAC9C,SAAS;IACT,aAAa;IACb,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IAC1C,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;IAClD,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC;IAC3C,SAAS;IACT,KAAK;IACL,IAAI,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5B;;IC1MA,SAAS,MAAM,CAAC,IAAI,EAAE;IACtB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE;IACjC,QAAQ,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;IACpC,KAAK;IACL,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;IACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;IAC7C,QAAQ,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5D,KAAK;IACL,IAAI,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,SAAS,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE;IACjC,IAAI,IAAI,CAAC,IAAI,EAAE;IACf,QAAQ,IAAI,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,KAAK;IACL,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;IACf,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;IACpB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;IACtC,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,QAAQ,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrC,QAAQ,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,KAAK,CAAC,CAAC;IACP,IAAI,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,SAAS,gBAAgB,CAAC,IAAI,EAAE;IAChC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;IACtC,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;IAChC,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC3B,SAAS;IACT,aAAa,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;IAClC,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC3B,SAAS;IACT,QAAQ,IAAI,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7C,QAAQ,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpC,QAAQ,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;IAChC,KAAK,CAAC,CAAC;IACP,CAAC;IAewB,gBAAgB,CAAC,87CAA87C,EAAE;IAC1+C;IACwB,qDAAqD,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;IA6C3F,WAAW,CAAC,ufAAuf,EAAE;IACrgB,WAAW,CAAC,wdAAwd,EAAE;IACte,WAAW,CAAC,w3DAAw3D,EAAE,MAAM,EAAE;IACj5D,gBAAgB,CAAC,yLAAyL;;ICxG1N,MAAMD,SAAO,GAAG,YAAY;;ICE5B,SAASjB,QAAM,CAAC,QAAQ,EAAE;IACjC,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;IACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC9C,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,KAAK;IACL,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1B;;ICTA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE;IAC5B,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;IACvB,QAAQ,KAAK,GAAG,CAAC,CAAC;IAClB,KAAK;IACL,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;IACtB,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IACnC,IAAI,MAAM,QAAQ,GAAG,UAAU,GAAG,EAAE,KAAK,EAAE;IAC3C,QAAQ,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,EAAE;IACzC,YAAY,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;IACjD,gBAAgB,QAAQ,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IACzC,aAAa;IACb,iBAAiB;IACjB,gBAAgB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,aAAa;IACb,SAAS,CAAC,CAAC;IACX,KAAK,CAAC;IACN,IAAI,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3B,IAAI,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,SAAS,WAAW,CAAC,KAAK,EAAE;IAC5B,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;IACtB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC3C,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACpC,KAAK;IACL,IAAI,OAAO,MAAM,CAAC;IAClB,CAAC;IACM,SAAS,iBAAiB,CAAC,KAAK,EAAE;IACzC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;IAChB,IAAI,SAAS,GAAG,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;IACjE;IACA,IAAI,IAAI,YAAY,GAAG,GAAG,EAAE,CAAC;IAC7B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;IAClB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;IAC3C,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;IACjC,KAAK;IACL;IACA,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;IACrB,IAAI,IAAI,WAAW,GAAG,GAAG,CAAC;IAC1B,IAAI,GAAG,IAAI,IAAI,CAAC;IAChB,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;IACvB,IAAI,IAAI,WAAW,GAAG,CAAC,CAAC;IACxB,IAAI,SAAS,QAAQ,GAAG;IACxB,QAAQ,IAAI,UAAU,IAAI,CAAC,EAAE;IAC7B;IACA;IACA,YAAY,WAAW,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5D,YAAY,UAAU,GAAG,CAAC,CAAC;IAC3B,SAAS;IACT,QAAQ,OAAO,CAAC,WAAW,IAAI,EAAE,UAAU,IAAI,CAAC,CAAC;IACjD,KAAK;IACL,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;IACjB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,IAAI,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC;IAC5B,IAAI,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;IAC3B,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;IAC1B;IACA,IAAI,IAAI,QAAQ,GAAG,CAAC,CAAC;IACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;IAC9B,QAAQ,QAAQ,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;IAChD,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC;IACrB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;IAChB,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC;IACrB,IAAI,OAAO,IAAI,EAAE;IACjB,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;IAC7E,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;IACtB,QAAQ,IAAI,GAAG,GAAG,YAAY,CAAC;IAC/B,QAAQ,OAAO,GAAG,GAAG,KAAK,GAAG,CAAC,EAAE;IAChC,YAAY,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,MAAM,CAAC,CAAC;IAC1C,YAAY,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE;IAClC,gBAAgB,GAAG,GAAG,GAAG,CAAC;IAC1B,aAAa;IACb,iBAAiB;IACjB,gBAAgB,KAAK,GAAG,GAAG,CAAC;IAC5B,aAAa;IACb,SAAS;IACT,QAAQ,IAAI,KAAK,IAAI,CAAC;IACtB,YAAY,MAAM;IAClB,QAAQ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;IAC7D,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACrE,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE;IACtC,YAAY,QAAQ,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC;IAC3D,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAChC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;IACpC,SAAS;IACT,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE;IAC9B,YAAY,QAAQ,GAAG,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC;IACzF,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAChC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;IAC7C,SAAS;IACT,QAAQ,GAAG,GAAG,CAAC,CAAC;IAChB,QAAQ,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,KAAK;IACL,IAAI,IAAI,MAAM,GAAG,YAAY,GAAG,CAAC,CAAC;IAClC,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI;IAC5B,QAAQ,QAAQ,CAAC,GAAG,MAAM;IAC1B,YAAY,KAAK,CAAC,EAAE,OAAO,MAAM,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAClI,YAAY,KAAK,CAAC,EAAE,OAAO,MAAM,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACjG,YAAY,KAAK,CAAC,EAAE,OAAO,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IACzD,YAAY,SAAS,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,SAAS;IACT,KAAK,CAAC,CAAC;IACP,CAAC;IACD;IACO,SAAS,YAAY,CAAC,CAAC,EAAE;IAChC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1B,CAAC;IACM,SAAS,uBAAuB,CAAC,KAAK,EAAE;IAC/C,IAAI,OAAO,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,CAAC;IACD;IACO,SAAS,MAAM,CAAC,CAAC,EAAE;IAC1B,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,SAAS,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE;IAC9B,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;IAC9B,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAC1B,IAAI,OAAO,CAAC,CAAC;IACb,CAAC;IACD,SAAS,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE;IACjC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;IACtC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;IAC/B,IAAI,OAAO,CAAC,CAAC;IACb,CAAC;IACD,SAAS,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE;IAC9B,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;IACrC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACnC,IAAI,OAAO,CAAC,CAAC;IACb,CAAC;IACM,SAAS,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE;IAChD,IAAI,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IACzC,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;IACnB,IAAI,IAAI,EAAE,GAAG,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACrC,IAAI,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAClC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IAChC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;IACxC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,SAAS;IACT,KAAK;IACL,IAAI,OAAO,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD;IACA;IACA;IACO,SAAS,eAAe,CAAC,IAAI,EAAE;IACtC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;IACjB,IAAI,OAAO,IAAI,EAAE;IACjB,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;IACvB,QAAQ,IAAI,CAAC,IAAI,CAAC;IAClB,YAAY,MAAM;IAClB,QAAQ,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7C,KAAK;IACL,IAAI,OAAO,IAAI,EAAE;IACjB,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;IAC3B,QAAQ,IAAI,CAAC,GAAG,CAAC;IACjB,YAAY,MAAM;IAClB,QAAQ,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAClD,KAAK;IACL,IAAI,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,CAAC;IACM,SAAS,0BAA0B,CAAC,IAAI,EAAE;IACjD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,IAAI,OAAO,IAAI,EAAE;IACjB,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;IACvB,QAAQ,IAAI,CAAC,IAAI,CAAC;IAClB,YAAY,MAAM;IAClB,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,KAAK;IACL,IAAI,OAAO,CAAC,CAAC;IACb,CAAC;IACD,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;IACrC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACnD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IAChC,QAAQ,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,KAAK;IACL,IAAI,OAAO,CAAC,CAAC;IACb,CAAC;IACD,SAAS,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE;IACpC,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IACxB,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;IACpB,IAAI,IAAI,EAAE,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,IAAI,CAAC,GAAG,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACpD,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;IAChC,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxC;IACA;IACA,QAAQ,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;IAC1D,YAAY,IAAI,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;IAC9B,YAAY,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACvD,SAAS,CAAC,CAAC;IACX,KAAK,CAAC,CAAC,CAAC;IACR,CAAC;IACD,SAAS,sBAAsB,CAAC,CAAC,EAAE,IAAI,EAAE;IACzC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IACvB,IAAI,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5C,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IACM,SAAS,eAAe,CAAC,IAAI,EAAE;IACtC,IAAI,IAAI,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,IAAI,OAAO,IAAI,EAAE,CAAC;IAClB,IAAI,SAAS,IAAI,GAAG;IACpB,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;IAC1B,QAAQ,OAAO,IAAI,EAAE;IACrB,YAAY,IAAI,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvD,YAAY,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;IAChC,gBAAgB,MAAM;IACtB,YAAY,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAChE,SAAS;IACT,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzD,QAAQ,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;IAC1B,QAAQ,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC;IAC7B,QAAQ,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,QAAQ,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;IAChC,QAAQ,IAAI,KAAK,CAAC,CAAC;IACnB,QAAQ,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;IAC7B,QAAQ,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC;IAC9B,QAAQ,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACtD,KAAK;IACL;;IC7PA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAGO,SAAS,OAAO,GAAG;IAC1B,IAAI,OAAO,uBAAuB,CAACA,QAAM,CAAC,k6cAAk6c,CAAC,CAAC,CAAC;IAC/8c;;IChCA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAGA,MAAMyB,GAAC,GAAG,OAAO,EAAE,CAAC;IAEpB;IACc,IAAI,GAAG,CAAC,iBAAiB,CAACA,GAAC,CAAC,EAAE;IAC5B,IAAI,GAAG,CAAC,iBAAiB,CAACA,GAAC,CAAC,EAAE;IAC/B,eAAe,CAACA,GAAC,EAAE;IACf,eAAe,CAACA,GAAC;;IC/BrB,IAAI,MAAM,CAACR,SAAO,EAAE;IAEnC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;;ICLN,MAAM,aAAa,GAAG,gCAAgC,CAAC;IACvD,SAASS,aAAW,CAAC,OAAO,EAAE;IACrC,IAAI,IAAI,QAAQ,OAAO,CAAC,KAAK,QAAQ,EAAE;IACvC,QAAQ,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACvC,KAAK;IACL,IAAI,OAAO,SAAS,CAACP,QAAM,CAAC;IAC5B,QAAQ,WAAW,CAAC,aAAa,CAAC;IAClC,QAAQ,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,QAAQ,OAAO;IACf,KAAK,CAAC,CAAC,CAAC;IACR;;ICbO,MAAMF,SAAO,GAAG,WAAW;;ICKnB,IAAI,MAAM,CAACA,SAAO;;ICL1B,MAAMA,SAAO,GAAG,eAAe;;ICOtC,MAAMC,QAAM,GAAG,IAAI,MAAM,CAACD,SAAO,CAAC,CAAC;IACnC,SAAS,kBAAkB,CAAC,OAAO,EAAE;IACrC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;IACnC,QAAQC,QAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACzE,KAAK;IACL,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjD,IAAI,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACxC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;IACjC,QAAQ,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7C,KAAK;IACL,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;IACpC,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IACxC,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9C,SAAS;IACT,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE;IAC1C,YAAY,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACtD,SAAS;IACT,KAAK;IACL,IAAI,OAAO,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IACD;IACA,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;IAC1C,SAAS,KAAK,CAAC,CAAC,EAAE;IAClB,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;IACpB,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,KAAK;IACL,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;IACnC,CAAC;IACD;IACA;IACA,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;IAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;IAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD;IACA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACvD,SAAS,YAAY,CAAC,OAAO,EAAE;IAC/B,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,IAAI,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACpE,IAAI,IAAI,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpF;IACA,IAAI,OAAO,QAAQ,CAAC,MAAM,IAAI,UAAU,EAAE;IAC1C,QAAQ,IAAI,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IACtD,QAAQ,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/E,KAAK;IACL,IAAI,IAAI,QAAQ,GAAG,MAAM,CAAC,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC9D,IAAI,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;IAChC,QAAQ,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC;IAClC,KAAK;IACL,IAAI,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEM,SAAS,UAAU,CAAC,OAAO,EAAE;IACpC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,IAAI,QAAQ,OAAO,CAAC,KAAK,QAAQ,EAAE;IACvC,QAAQA,QAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACzE,KAAK;IACL,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE;IACjD;IACA,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;IAC9C,YAAY,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC;IACrC,SAAS;IACT,QAAQ,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC7C;IACA,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,IAAI,MAAM,KAAK,OAAO,EAAE;IAClF,YAAYA,QAAM,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAClF,SAAS;IACT;IACA,KAAK;IACL,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,EAAE;IAC9D;IACA,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,EAAE;IAC/D,YAAYA,QAAM,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/E,SAAS;IACT,QAAQ,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,QAAQ,OAAO,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE;IACnC,YAAY,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;IAClC,SAAS;IACT,QAAQ,MAAM,GAAG,kBAAkB,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;IACnD,KAAK;IACL,SAAS;IACT,QAAQA,QAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACzE,KAAK;IACL,IAAI,OAAO,MAAM,CAAC;IAClB;;IChGO,MAAMD,SAAO,GAAG,kBAAkB;;ICCzB,CAAC3B,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,UAAU,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;IACzF,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;IAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;IACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;IACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;IACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,KAAK,CAAC,CAAC;IACP,EAAE;IAGa,IAAI,MAAM,CAAC2B,SAAO,EAAE;IAC5B,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;IACpD,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;IACxC,QAAQ,UAAU,EAAE,IAAI;IACxB,QAAQ,KAAK,EAAE,KAAK;IACpB,QAAQ,QAAQ,EAAE,KAAK;IACvB,KAAK,CAAC,CAAC;IACP;;ICnBgB,CAAC3B,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,UAAU,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;IACzF,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;IAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;IACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;IACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;IACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,KAAK,CAAC,CAAC;IACP,EAAE;IAQa,IAAI,MAAM,CAAC2B,SAAO,EAAE;IAEnC,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;IACvC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACX,SAAS,CAAC,IAAI,CAAC,oEAAoE,EAAE;IASxF,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE;IACjC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE;;;;;;QCjClDU,oBAAc,GAAGC,QAAM,CAAC;AACxB;IACA,SAASA,QAAM,CAAC,GAAG,EAAE,GAAG,EAAE;IAC1B,EAAE,IAAI,CAAC,GAAG;IACV,IAAI,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kBAAkB,CAAC,CAAC;IAC/C,CAAC;AACD;AACAA,YAAM,CAAC,KAAK,GAAG,SAAS,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE;IAC/C,EAAE,IAAI,CAAC,IAAI,CAAC;IACZ,IAAI,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;;;;ICVD,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;IACzC;IACA,EAAEC,kBAAA,CAAA,OAAc,GAAG,SAAS,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE;IACtD,IAAI,IAAI,SAAS,EAAE;IACnB,MAAM,IAAI,CAAC,MAAM,GAAG,UAAS;IAC7B,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;IAC1D,QAAQ,WAAW,EAAE;IACrB,UAAU,KAAK,EAAE,IAAI;IACrB,UAAU,UAAU,EAAE,KAAK;IAC3B,UAAU,QAAQ,EAAE,IAAI;IACxB,UAAU,YAAY,EAAE,IAAI;IAC5B,SAAS;IACT,OAAO,EAAC;IACR,KAAK;IACL,GAAG,CAAC;IACJ,CAAC,MAAM;IACP;IACA,EAAEA,kBAAA,CAAA,OAAc,GAAG,SAAS,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE;IACtD,IAAI,IAAI,SAAS,EAAE;IACnB,MAAM,IAAI,CAAC,MAAM,GAAG,UAAS;IAC7B,MAAM,IAAI,QAAQ,GAAG,YAAY,GAAE;IACnC,MAAM,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC,UAAS;IAC9C,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,GAAE;IACrC,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,KAAI;IACvC,KAAK;IACL,IAAG;IACH;;ICxBA,IAAID,QAAM,GAAGjC,oBAA8B,CAAC;IAC5C,IAAI,QAAQ,GAAGF,0BAAmB,CAAC;AACnC;AACgBqC,WAAA,CAAA,QAAA,GAAG,SAAS;AAC5B;IACA,SAAS,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE;IACjC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,MAAM,MAAM,EAAE;IAC/C,IAAI,OAAO,KAAK,CAAC;IACjB,GAAG;IACH,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE;IACpC,IAAI,OAAO,KAAK,CAAC;IACjB,GAAG;IACH,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,MAAM,MAAM,CAAC;IACrD,CAAC;AACD;IACA,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;IAC3B,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;IACxB,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC;IACvB,EAAE,IAAI,CAAC,GAAG;IACV,IAAI,OAAO,EAAE,CAAC;IACd,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;IACf,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;IAC/B,IAAI,IAAI,CAAC,GAAG,EAAE;IACd;IACA;IACA;IACA;IACA,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC3C,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAClC,QAAQ,IAAI,CAAC,GAAG,GAAG,EAAE;IACrB,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACvB,SAAS,MAAM,IAAI,CAAC,GAAG,IAAI,EAAE;IAC7B,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;IACpC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;IACpC,SAAS,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;IAC5C,UAAU,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IAC9E,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;IACrC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC;IAC5C,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;IAC3C,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;IACpC,SAAS,MAAM;IACf,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;IACrC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;IAC3C,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;IACpC,SAAS;IACT,OAAO;IACP,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;IAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;IAC9B,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACxB,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;IACxC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACpD,KAAK;IACL,GAAG,MAAM;IACT,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;IACnC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1B,GAAG;IACH,EAAE,OAAO,GAAG,CAAC;IACb,CAAC;AACcA,WAAA,CAAA,OAAA,GAAG,QAAQ;AAC1B;IACA,SAAS,KAAK,CAAC,GAAG,EAAE;IACpB,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;IACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;IACrC,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACtC,EAAE,OAAO,GAAG,CAAC;IACb,CAAC;AACYA,WAAA,CAAA,KAAA,GAAG,MAAM;AACtB;IACA,SAAS,KAAK,CAAC,CAAC,EAAE;IAClB,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE;IACrB,aAAa,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;IAChC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;IACjC,aAAa,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;IAC/B,EAAE,OAAO,GAAG,KAAK,CAAC,CAAC;IACnB,CAAC;AACYA,WAAA,CAAA,KAAA,GAAG,MAAM;AACtB;IACA,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE;IAC9B,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;IACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACvC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACnB,IAAI,IAAI,MAAM,KAAK,QAAQ;IAC3B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACnB,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,GAAG;IACH,EAAE,OAAO,GAAG,CAAC;IACb,CAAC;AACcA,WAAA,CAAA,OAAA,GAAG,QAAQ;AAC1B;IACA,SAAS,KAAK,CAAC,IAAI,EAAE;IACrB,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;IACvB,IAAI,OAAO,GAAG,GAAG,IAAI,CAAC;IACtB;IACA,IAAI,OAAO,IAAI,CAAC;IAChB,CAAC;AACYA,WAAA,CAAA,KAAA,GAAG,MAAM;AACtB;IACA,SAAS,KAAK,CAAC,IAAI,EAAE;IACrB,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;IACvB,IAAI,OAAO,GAAG,GAAG,IAAI,CAAC;IACtB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;IAC5B,IAAI,OAAO,IAAI,GAAG,IAAI,CAAC;IACvB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;IAC5B,IAAI,OAAO,KAAK,GAAG,IAAI,CAAC;IACxB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;IAC5B,IAAI,OAAO,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;IAC5B,IAAI,OAAO,OAAO,GAAG,IAAI,CAAC;IAC1B,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;IAC5B,IAAI,OAAO,QAAQ,GAAG,IAAI,CAAC;IAC3B,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;IAC5B,IAAI,OAAO,SAAS,GAAG,IAAI,CAAC;IAC5B;IACA,IAAI,OAAO,IAAI,CAAC;IAChB,CAAC;AACYA,WAAA,CAAA,KAAA,GAAG,MAAM;AACtB;IACA,SAAS,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE;IACzC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC;IACxB,EAAEF,QAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACxB,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC/B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;IAC1D,IAAI,IAAI,CAAC,CAAC;IACV,IAAI,IAAI,MAAM,KAAK,KAAK;IACxB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/E;IACA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/E,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrB,GAAG;IACH,EAAE,OAAO,GAAG,CAAC;IACb,CAAC;AACaE,WAAA,CAAA,MAAA,GAAG,OAAO;AACxB;IACA,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE;IAC9B,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;IACtD,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACnB,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE;IAC1B,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACxB,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;IACrC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;IACpC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAC5B,KAAK,MAAM;IACX,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAC5B,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;IACrC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;IACpC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACxB,KAAK;IACL,GAAG;IACH,EAAE,OAAO,GAAG,CAAC;IACb,CAAC;AACcA,WAAA,CAAA,OAAA,GAAG,QAAQ;AAC1B;IACA,SAASC,QAAM,CAAC,CAAC,EAAE,CAAC,EAAE;IACtB,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;AACaD,WAAA,CAAA,MAAA,GAAGC,SAAO;AACxB;IACA,SAASC,QAAM,CAAC,CAAC,EAAE,CAAC,EAAE;IACtB,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;AACaF,WAAA,CAAA,MAAA,GAAGE,SAAO;AACxB;IACA,SAASC,OAAK,CAAC,CAAC,EAAE,CAAC,EAAE;IACrB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;AACYH,WAAA,CAAA,KAAA,GAAGG,QAAM;AACtB;IACA,SAASC,SAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC1B,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;AACcJ,WAAA,CAAA,OAAA,GAAGI,UAAQ;AAC1B;IACA,SAASC,SAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC7B,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;AACcL,WAAA,CAAA,OAAA,GAAGK,UAAQ;AAC1B;IACA,SAASC,SAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAChC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;AACcN,WAAA,CAAA,OAAA,GAAGM,UAAQ;AAC1B;IACA,SAASC,OAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;IACjC,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACxB;IACA,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3B,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;IACvC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtB,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;AACYP,WAAA,CAAA,KAAA,GAAGO,QAAM;AACtB;IACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAClC,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3B,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;IACvC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAClB,CAAC;AACeR,WAAA,CAAA,QAAA,GAAGQ,WAAS;AAC5B;IACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAClC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACnB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAClB,CAAC;AACeT,WAAA,CAAA,QAAA,GAAGS,WAAS;AAC5B;IACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACpD,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;IAChB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACd,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B;IACA,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IACrC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAClB,CAAC;AACiBV,WAAA,CAAA,UAAA,GAAGU,aAAW;AAChC;IACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACpD,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC7B,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAClB,CAAC;AACiBX,WAAA,CAAA,UAAA,GAAGW,aAAW;AAChC;IACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC5D,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;IAChB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACd,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B;IACA,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IAC1C,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAClB,CAAC;AACiBZ,WAAA,CAAA,UAAA,GAAGY,aAAW;AAChC;IACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC5D,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAClC;IACA,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAClB,CAAC;AACiBb,WAAA,CAAA,UAAA,GAAGa,aAAW;AAChC;IACA,SAASC,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;IAChC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;IAC5C,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;AACgBd,WAAA,CAAA,SAAA,GAAGc,YAAU;AAC9B;IACA,SAASC,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;IAChC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;IAC5C,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;AACgBf,WAAA,CAAA,SAAA,GAAGe,YAAU;AAC9B;IACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;IAC/B,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC;IACpB,CAAC;AACehB,WAAA,CAAA,QAAA,GAAGgB,WAAS;AAC5B;IACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;IAC/B,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;IAC5C,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;AACDjB,WAAA,CAAA,QAAgB,GAAGiB;;;;ICnRnB,IAAIjB,OAAK,GAAGnC,OAAkB,CAAC;IAC/B,IAAIiC,QAAM,GAAGnC,oBAA8B,CAAC;AAC5C;IACA,SAASuD,WAAS,GAAG;IACrB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;IACxB,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;IAC9C,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;IAC1C,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;IACpD,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;IAClD,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB;IACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACpC,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtC,CAAC;AACgBC,YAAA,CAAA,SAAA,GAAGD,YAAU;AAC9B;AACAA,eAAS,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;IACvD;IACA,EAAE,GAAG,GAAGlB,OAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAChC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;IACnB,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;IACvB;IACA,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5C,EAAE,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC;AAClC;IACA;IACA,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;IAC3C,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;AACvB;IACA;IACA,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;IACtC,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;IACjC,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAC1B;IACA,IAAI,GAAG,GAAGA,OAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5D,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ;IACtD,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,GAAG;AACH;IACA,EAAE,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACF;AACAkB,eAAS,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;IAClD,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3B,EAAEpB,QAAM,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;AAChC;IACA,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CAAC;AACF;AACAoB,eAAS,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,GAAG,GAAG;IAC1C,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;IAC9B,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;IAC3B,EAAE,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;IACnD,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAChB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;IAC5B,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACf;IACA;IACA,EAAE,GAAG,KAAK,CAAC,CAAC;IACZ,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;IAC7B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;IAC3C,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACnB;IACA,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;IACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;IACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC;IAClC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;IAC1B,GAAG,MAAM;IACT,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;IAC1B,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC;IAClC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;IACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;IACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB;IACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;IACvC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACnB,GAAG;AACH;IACA,EAAE,OAAO,GAAG,CAAC;IACb,CAAC;;;;;;ICzFD,IAAIlB,OAAK,GAAGnC,OAAmB,CAAC;IAChC,IAAI,MAAM,GAAGmC,OAAK,CAAC,MAAM,CAAC;AAC1B;IACA,SAASoB,MAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC1B,EAAE,IAAI,CAAC,KAAK,CAAC;IACb,IAAI,OAAOC,MAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IACxB,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,EAAE,IAAI,CAAC,KAAK,CAAC;IACb,IAAI,OAAOC,OAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1B,CAAC;AACWH,YAAA,CAAA,IAAA,GAAGC,OAAK;AACpB;IACA,SAASC,MAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IACvB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9B,CAAC;AACWF,YAAA,CAAA,IAAA,GAAGE,OAAK;AACpB;IACA,SAASC,OAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IACxB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,CAAC;AACYH,YAAA,CAAA,KAAA,GAAGG,QAAM;AACtB;IACA,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IACtB,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACUH,YAAA,CAAA,GAAA,GAAG,IAAI;AAClB;IACA,SAASI,QAAM,CAAC,CAAC,EAAE;IACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC;AACaJ,YAAA,CAAA,MAAA,GAAGI,SAAO;AACxB;IACA,SAASC,QAAM,CAAC,CAAC,EAAE;IACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC;AACaL,YAAA,CAAA,MAAA,GAAGK,SAAO;AACxB;IACA,SAASC,QAAM,CAAC,CAAC,EAAE;IACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,CAAC;AACaN,YAAA,CAAA,MAAA,GAAGM,SAAO;AACxB;IACA,SAASC,QAAM,CAAC,CAAC,EAAE;IACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACpD,CAAC;AACDP,YAAA,CAAA,MAAc,GAAGO;;IC9CjB,IAAI1B,OAAK,GAAGnC,OAAmB,CAAC;IAChC,IAAIsD,QAAM,GAAGxD,QAAoB,CAAC;IAClC,IAAIgE,WAAS,GAAG/D,QAAmB,CAAC;AACpC;IACA,IAAIsC,QAAM,GAAGF,OAAK,CAAC,MAAM,CAAC;IAC1B,IAAIG,OAAK,GAAGH,OAAK,CAAC,KAAK,CAAC;IACxB,IAAIM,SAAO,GAAGN,OAAK,CAAC,OAAO,CAAC;IAC5B,IAAI,IAAI,GAAG2B,WAAS,CAAC,IAAI,CAAC;IAC1B,IAAIT,WAAS,GAAGC,QAAM,CAAC,SAAS,CAAC;AACjC;IACA,IAAI,MAAM,GAAG;IACb,EAAE,UAAU,EAAE,UAAU;IACxB,EAAE,UAAU,EAAE,UAAU;IACxB,CAAC,CAAC;AACF;IACA,SAAS,IAAI,GAAG;IAChB,EAAE,IAAI,EAAE,IAAI,YAAY,IAAI,CAAC;IAC7B,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;AACtB;IACA,EAAED,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,EAAE,IAAI,CAAC,CAAC,GAAG;IACX,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU;IACtC,IAAI,UAAU,EAAE,UAAU,EAAE,CAAC;IAC7B,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;AACD;AACAlB,WAAK,CAAC,QAAQ,CAAC,IAAI,EAAEkB,WAAS,CAAC,CAAC;QAChC,EAAc,GAAG,IAAI,CAAC;AACtB;IACA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;IACrB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;IACnB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;IACvB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACpB;IACA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;IACtD,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB;IACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;IAC7B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC1B;IACA,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;IACzB,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGhB,QAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClE;IACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB;IACA,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACjC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IACvB,IAAI,IAAI,CAAC,GAAGI,SAAO,CAACJ,QAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAGA,QAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,GAAG;AACH;IACA,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC;AACF;IACA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;IAC9C,EAAE,IAAI,GAAG,KAAK,KAAK;IACnB,IAAI,OAAOH,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACxC;IACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;;ICvED,IAAIA,OAAK,GAAGnC,OAAmB,CAAC;IAChC,IAAIsD,QAAM,GAAGxD,QAAoB,CAAC;IAClC,IAAI,SAAS,GAAGC,QAAmB,CAAC;IACpC,IAAIkC,QAAM,GAAG/B,oBAA8B,CAAC;AAC5C;IACA,IAAIoC,OAAK,GAAGH,OAAK,CAAC,KAAK,CAAC;IACxB,IAAIK,SAAO,GAAGL,OAAK,CAAC,OAAO,CAAC;IAC5B,IAAI,OAAO,GAAGA,OAAK,CAAC,OAAO,CAAC;IAC5B,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;IAC1B,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;IAC5B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAC9B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAC9B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAC9B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B;IACA,IAAIkB,WAAS,GAAGC,QAAM,CAAC,SAAS,CAAC;AACjC;IACA,IAAI,QAAQ,GAAG;IACf,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,CAAC,CAAC;AACF;IACA,SAASS,QAAM,GAAG;IAClB,EAAE,IAAI,EAAE,IAAI,YAAYA,QAAM,CAAC;IAC/B,IAAI,OAAO,IAAIA,QAAM,EAAE,CAAC;AACxB;IACA,EAAEV,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,EAAE,IAAI,CAAC,CAAC,GAAG;IACX,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAClD,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAClD,GAAG,CAAC;IACJ,EAAE,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC;IACpB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;AACDlB,WAAK,CAAC,QAAQ,CAAC4B,QAAM,EAAEV,WAAS,CAAC,CAAC;QAClC,IAAc,GAAGU,QAAM,CAAC;AACxB;AACAA,YAAM,CAAC,SAAS,GAAG,GAAG,CAAC;AACvBA,YAAM,CAAC,OAAO,GAAG,GAAG,CAAC;AACrBA,YAAM,CAAC,YAAY,GAAG,GAAG,CAAC;AAC1BA,YAAM,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB;AACAA,YAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;IACxD,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB;IACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;IAC7B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC1B,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;IAC1B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGvB,SAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC7E;IACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB;IACA,EAAEP,QAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;IACrC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACjC,IAAI,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,IAAI,IAAI,EAAE,GAAGK,OAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAGA,OAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAGA,OAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACtB,GAAG;AACH;IACA,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC;AACF;AACAyB,YAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;IAChD,EAAE,IAAI,GAAG,KAAK,KAAK;IACnB,IAAI,OAAO5B,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACxC;IACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;;ICtGD,IAAIA,OAAK,GAAGnC,OAAmB,CAAC;IAChC,IAAI,MAAM,GAAGF,IAAgB,CAAC;AAC9B;IACA,SAAS,MAAM,GAAG;IAClB,EAAE,IAAI,EAAE,IAAI,YAAY,MAAM,CAAC;IAC/B,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;AACxB;IACA,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,EAAE,IAAI,CAAC,CAAC,GAAG;IACX,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAClD,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;IACrD,CAAC;AACDqC,WAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,IAAc,GAAG,MAAM,CAAC;AACxB;IACA,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;IACvB,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;IACrB,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC;IAC1B,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB;IACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;IAChD;IACA,EAAE,IAAI,GAAG,KAAK,KAAK;IACnB,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACpD;IACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;;IC1BD,IAAIA,OAAK,GAAGnC,OAAmB,CAAC;IAChC,IAAIsD,QAAM,GAAGxD,QAAoB,CAAC;IAClC,IAAImC,QAAM,GAAGlC,oBAA8B,CAAC;AAC5C;IACA,IAAI,SAAS,GAAGoC,OAAK,CAAC,SAAS,CAAC;IAChC,IAAI,SAAS,GAAGA,OAAK,CAAC,SAAS,CAAC;IAChC,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;IAC9B,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;IAC9B,IAAI,KAAK,GAAGA,OAAK,CAAC,KAAK,CAAC;IACxB,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;IAC9B,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;IAC9B,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;IAClC,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;IAClC,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;IAClC,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;AAClC;IACA,IAAIkB,WAAS,GAAGC,QAAM,CAAC,SAAS,CAAC;AACjC;IACA,IAAI,QAAQ,GAAG;IACf,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAChD,CAAC,CAAC;AACF;IACA,SAASU,QAAM,GAAG;IAClB,EAAE,IAAI,EAAE,IAAI,YAAYA,QAAM,CAAC;IAC/B,IAAI,OAAO,IAAIA,QAAM,EAAE,CAAC;AACxB;IACA,EAAEX,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,EAAE,IAAI,CAAC,CAAC,GAAG;IACX,IAAI,UAAU,EAAE,UAAU;IAC1B,IAAI,UAAU,EAAE,UAAU;IAC1B,IAAI,UAAU,EAAE,UAAU;IAC1B,IAAI,UAAU,EAAE,UAAU;IAC1B,IAAI,UAAU,EAAE,UAAU;IAC1B,IAAI,UAAU,EAAE,UAAU;IAC1B,IAAI,UAAU,EAAE,UAAU;IAC1B,IAAI,UAAU,EAAE,UAAU,EAAE,CAAC;IAC7B,EAAE,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC;IACpB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;AACDlB,WAAK,CAAC,QAAQ,CAAC6B,QAAM,EAAEX,WAAS,CAAC,CAAC;QAClC,IAAc,GAAGW,QAAM,CAAC;AACxB;AACAA,YAAM,CAAC,SAAS,GAAG,IAAI,CAAC;AACxBA,YAAM,CAAC,OAAO,GAAG,GAAG,CAAC;AACrBA,YAAM,CAAC,YAAY,GAAG,GAAG,CAAC;AAC1BA,YAAM,CAAC,SAAS,GAAG,GAAG,CAAC;AACvB;AACAA,YAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE;IACpE,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB;IACA;IACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;IAC7B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC1B,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;IAC/B,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1B,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAChD,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAChD,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1B;IACA,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU;IACrB,MAAM,KAAK,EAAE,KAAK;IAClB,MAAM,KAAK,EAAE,KAAK;IAClB,MAAM,KAAK,EAAE,KAAK;IAClB,MAAM,KAAK,EAAE,KAAK,CAAC,CAAC;IACpB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU;IACzB,MAAM,KAAK,EAAE,KAAK;IAClB,MAAM,KAAK,EAAE,KAAK;IAClB,MAAM,KAAK,EAAE,KAAK;IAClB,MAAM,KAAK,EAAE,KAAK,CAAC,CAAC;IACpB,GAAG;IACH,CAAC,CAAC;AACF;AACAA,YAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;IACxD,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACjC;IACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB;IACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtB;IACA,EAAE/B,QAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;IACrC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;IACxC,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;IACnB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;IACnB,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAClC,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAClC,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAM,CAAC,CAAC;IAChD,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAChD,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzB;IACA,IAAI,IAAI,KAAK,GAAG,UAAU;IAC1B,MAAM,KAAK,EAAE,KAAK;IAClB,MAAM,KAAK,EAAE,KAAK;IAClB,MAAM,KAAK,EAAE,KAAK;IAClB,MAAM,KAAK,EAAE,KAAK;IAClB,MAAM,KAAK,EAAE,KAAK,CAAC,CAAC;IACpB,IAAI,IAAI,KAAK,GAAG,UAAU;IAC1B,MAAM,KAAK,EAAE,KAAK;IAClB,MAAM,KAAK,EAAE,KAAK;IAClB,MAAM,KAAK,EAAE,KAAK;IAClB,MAAM,KAAK,EAAE,KAAK;IAClB,MAAM,KAAK,EAAE,KAAK,CAAC,CAAC;AACpB;IACA,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9B,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9B,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAM,CAAC,CAAC;IAC7C,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7C;IACA,IAAI,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACrD,IAAI,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACrD;IACA,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;IACA,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;IACA,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;IACA,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACxC,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACxC;IACA,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;IACA,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;IACA,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;IACA,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9C,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9C,GAAG;AACH;IACA,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC,CAAC;AACF;AACA+B,YAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;IAChD,EAAE,IAAI,GAAG,KAAK,KAAK;IACnB,IAAI,OAAO7B,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACxC;IACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC;AACF;IACA,SAAS,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACrC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACnC,EAAE,IAAI,CAAC,GAAG,CAAC;IACX,IAAI,CAAC,IAAI,WAAW,CAAC;IACrB,EAAE,OAAO,CAAC,CAAC;IACX,CAAC;AACD;IACA,SAAS,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACzC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACnC,EAAE,IAAI,CAAC,GAAG,CAAC;IACX,IAAI,CAAC,IAAI,WAAW,CAAC;IACrB,EAAE,OAAO,CAAC,CAAC;IACX,CAAC;AACD;IACA,SAAS,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACtC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5C,EAAE,IAAI,CAAC,GAAG,CAAC;IACX,IAAI,CAAC,IAAI,WAAW,CAAC;IACrB,EAAE,OAAO,CAAC,CAAC;IACX,CAAC;AACD;IACA,SAAS,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC1C,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5C,EAAE,IAAI,CAAC,GAAG,CAAC;IACX,IAAI,CAAC,IAAI,WAAW,CAAC;IACrB,EAAE,OAAO,CAAC,CAAC;IACX,CAAC;AACD;IACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;IAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACnC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC;IACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAChC,EAAE,IAAI,CAAC,GAAG,CAAC;IACX,IAAI,CAAC,IAAI,WAAW,CAAC;IACrB,EAAE,OAAO,CAAC,CAAC;IACX,CAAC;AACD;IACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;IAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACnC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC;IACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAChC,EAAE,IAAI,CAAC,GAAG,CAAC;IACX,IAAI,CAAC,IAAI,WAAW,CAAC;IACrB,EAAE,OAAO,CAAC,CAAC;IACX,CAAC;AACD;IACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;IAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC;IACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAChC,EAAE,IAAI,CAAC,GAAG,CAAC;IACX,IAAI,CAAC,IAAI,WAAW,CAAC;IACrB,EAAE,OAAO,CAAC,CAAC;IACX,CAAC;AACD;IACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;IAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC;IACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAChC,EAAE,IAAI,CAAC,GAAG,CAAC;IACX,IAAI,CAAC,IAAI,WAAW,CAAC;IACrB,EAAE,OAAO,CAAC,CAAC;IACX,CAAC;AACD;IACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;IAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACnC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACnC,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAClC;IACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAChC,EAAE,IAAI,CAAC,GAAG,CAAC;IACX,IAAI,CAAC,IAAI,WAAW,CAAC;IACrB,EAAE,OAAO,CAAC,CAAC;IACX,CAAC;AACD;IACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;IAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACnC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACnC,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAClC;IACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAChC,EAAE,IAAI,CAAC,GAAG,CAAC;IACX,IAAI,CAAC,IAAI,WAAW,CAAC;IACrB,EAAE,OAAO,CAAC,CAAC;IACX,CAAC;AACD;IACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;IAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACpC,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAClC;IACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAChC,EAAE,IAAI,CAAC,GAAG,CAAC;IACX,IAAI,CAAC,IAAI,WAAW,CAAC;IACrB,EAAE,OAAO,CAAC,CAAC;IACX,CAAC;AACD;IACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;IAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACpC,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAClC;IACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAChC,EAAE,IAAI,CAAC,GAAG,CAAC;IACX,IAAI,CAAC,IAAI,WAAW,CAAC;IACrB,EAAE,OAAO,CAAC,CAAC;IACX;;ICvUA,IAAIA,OAAK,GAAGnC,OAAmB,CAAC;AAChC;IACA,IAAI,MAAM,GAAGF,IAAgB,CAAC;AAC9B;IACA,SAAS,MAAM,GAAG;IAClB,EAAE,IAAI,EAAE,IAAI,YAAY,MAAM,CAAC;IAC/B,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;AACxB;IACA,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,EAAE,IAAI,CAAC,CAAC,GAAG;IACX,IAAI,UAAU,EAAE,UAAU;IAC1B,IAAI,UAAU,EAAE,UAAU;IAC1B,IAAI,UAAU,EAAE,UAAU;IAC1B,IAAI,UAAU,EAAE,UAAU;IAC1B,IAAI,UAAU,EAAE,UAAU;IAC1B,IAAI,UAAU,EAAE,UAAU;IAC1B,IAAI,UAAU,EAAE,UAAU;IAC1B,IAAI,UAAU,EAAE,UAAU,EAAE,CAAC;IAC7B,CAAC;AACDqC,WAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,IAAc,GAAG,MAAM,CAAC;AACxB;IACA,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;IACrB,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC;IAC1B,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;AACvB;IACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;IAChD,EAAE,IAAI,GAAG,KAAK,KAAK;IACnB,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACrD;IACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;;AChCW8B,SAAA,CAAA,IAAA,GAAGjE,GAAmB;AACpBiE,SAAA,CAAA,MAAA,GAAGnE,KAAqB;AACxBmE,SAAA,CAAA,MAAA,GAAGlE,KAAqB;AACxBkE,SAAA,CAAA,MAAA,GAAG/D,KAAqB;AACtC+D,SAAA,CAAA,MAAc,GAAG9D;;;;ICJjB,IAAIgC,OAAK,GAAGnC,OAAkB,CAAC;IAC/B,IAAI,MAAM,GAAGF,QAAmB,CAAC;AACjC;IACA,IAAI,MAAM,GAAGqC,OAAK,CAAC,MAAM,CAAC;IAC1B,IAAI,KAAK,GAAGA,OAAK,CAAC,KAAK,CAAC;IACxB,IAAI,OAAO,GAAGA,OAAK,CAAC,OAAO,CAAC;IAC5B,IAAI,OAAO,GAAGA,OAAK,CAAC,OAAO,CAAC;IAC5B,IAAI,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACjC;IACA,SAAS,SAAS,GAAG;IACrB,EAAE,IAAI,EAAE,IAAI,YAAY,SAAS,CAAC;IAClC,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;AAC3B;IACA,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB;IACA,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;IAC1E,EAAE,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;IACzB,CAAC;AACDA,WAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACpB,MAAA,CAAA,SAAA,GAAG,UAAU;AAC9B;IACA,SAAS,CAAC,SAAS,GAAG,GAAG,CAAC;IAC1B,SAAS,CAAC,OAAO,GAAG,GAAG,CAAC;IACxB,SAAS,CAAC,YAAY,GAAG,GAAG,CAAC;IAC7B,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;AACzB;IACA,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE;IAC1D,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACb,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACb,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACb,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACb,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACb,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;IAC/B,IAAI,IAAI,CAAC,GAAG,KAAK;IACjB,MAAM,MAAM;IACZ,QAAQ,OAAO,CAAC,CAAC,EAAEhB,GAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE+C,GAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,QAAQC,GAAC,CAAC,CAAC,CAAC,CAAC;IACb,MAAM,CAAC,CAAC,CAAC;IACT,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,KAAK;IACb,MAAM,MAAM;IACZ,QAAQ,OAAO,CAAC,EAAE,EAAEhD,GAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACrE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;IACd,MAAM,EAAE,CAAC,CAAC;IACV,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACxB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,GAAG;IACH,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAChC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC,CAAC;AACF;IACA,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;IACnD,EAAE,IAAI,GAAG,KAAK,KAAK;IACnB,IAAI,OAAOgB,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC3C;IACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC,CAAC;AACF;IACA,SAAShB,GAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IACvB,EAAE,IAAI,CAAC,IAAI,EAAE;IACb,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,OAAO,IAAI,CAAC,IAAI,EAAE;IAClB,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC,IAAI,EAAE;IAClB,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1B,OAAO,IAAI,CAAC,IAAI,EAAE;IAClB,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC;IACA,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;AACD;IACA,SAAS+C,GAAC,CAAC,CAAC,EAAE;IACd,EAAE,IAAI,CAAC,IAAI,EAAE;IACb,IAAI,OAAO,UAAU,CAAC;IACtB,OAAO,IAAI,CAAC,IAAI,EAAE;IAClB,IAAI,OAAO,UAAU,CAAC;IACtB,OAAO,IAAI,CAAC,IAAI,EAAE;IAClB,IAAI,OAAO,UAAU,CAAC;IACtB,OAAO,IAAI,CAAC,IAAI,EAAE;IAClB,IAAI,OAAO,UAAU,CAAC;IACtB;IACA,IAAI,OAAO,UAAU,CAAC;IACtB,CAAC;AACD;IACA,SAAS,EAAE,CAAC,CAAC,EAAE;IACf,EAAE,IAAI,CAAC,IAAI,EAAE;IACb,IAAI,OAAO,UAAU,CAAC;IACtB,OAAO,IAAI,CAAC,IAAI,EAAE;IAClB,IAAI,OAAO,UAAU,CAAC;IACtB,OAAO,IAAI,CAAC,IAAI,EAAE;IAClB,IAAI,OAAO,UAAU,CAAC;IACtB,OAAO,IAAI,CAAC,IAAI,EAAE;IAClB,IAAI,OAAO,UAAU,CAAC;IACtB;IACA,IAAI,OAAO,UAAU,CAAC;IACtB,CAAC;AACD;IACA,IAAI,CAAC,GAAG;IACR,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;IACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;IACtD,CAAC,CAAC;AACF;IACA,IAAI,EAAE,GAAG;IACT,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;IACtD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACtD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;IACtD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACtD,CAAC,CAAC;AACF;IACA,IAAIC,GAAC,GAAG;IACR,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACxD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;IACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACxD,CAAC,CAAC;AACF;IACA,IAAI,EAAE,GAAG;IACT,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACxD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACxD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EA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CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACtE,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACxE,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1E,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1E,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1E,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3E,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3E,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAA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AE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACtd,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;IACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;IACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;IACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;IACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;IACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;IACnB,KAAI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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/tsconfig.tsbuildinfo b/node_modules/@walletconnect/utils/dist/tsconfig.tsbuildinfo +index 78a597c..2230183 100644 +--- a/node_modules/@walletconnect/utils/dist/tsconfig.tsbuildinfo ++++ b/node_modules/@walletconnect/utils/dist/tsconfig.tsbuildinfo +@@ -1 +1 @@ +-{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@walletconnect/events/dist/cjs/events.d.ts","../../../node_modules/@walletconnect/events/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/types/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/types/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/constants/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/constants/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/types.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/utils.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/node-js/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/index.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/jsonrpc.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/misc.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/provider.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/validator.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/index.d.ts","../../../node_modules/pino-std-serializers/index.d.ts","../../../node_modules/sonic-boom/types/index.d.ts","../../../node_modules/pino/pino.d.ts","../../../node_modules/@walletconnect/logger/dist/types/constants.d.ts","../../../node_modules/@walletconnect/logger/dist/types/linkedlist.d.ts","../../../node_modules/@walletconnect/logger/dist/types/clientchunklogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/serverchunklogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/basechunklogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/utils.d.ts","../../../node_modules/@walletconnect/logger/dist/types/index.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/keychain.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/crypto.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/messages.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/publisher.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/relayer.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/history.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/expirer.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/store.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/pairing.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/verify.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/echo.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/core.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/index.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/pendingrequest.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts","../../../node_modules/@walletconnect/types/dist/types/index.d.ts","../../../node_modules/detect-browser/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/utils/delay.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/utils/convert.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/utils/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/types/watch.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/types/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/watch.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/constants/misc.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/constants/time.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/constants/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/window-getters/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/window-metadata/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/constants.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/types.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/error.d.ts","../../../node_modules/@walletconnect/environment/dist/cjs/crypto.d.ts","../../../node_modules/@walletconnect/environment/dist/cjs/env.d.ts","../../../node_modules/@walletconnect/environment/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/env.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/format.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/routing.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/url.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/validators.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/index.d.ts","../../../node_modules/query-string/index.d.ts","../src/misc.ts","../../../node_modules/@ethersproject/hash/lib/id.d.ts","../../../node_modules/@ethersproject/hash/lib/namehash.d.ts","../../../node_modules/@ethersproject/bytes/lib/index.d.ts","../../../node_modules/@ethersproject/hash/lib/message.d.ts","../../../node_modules/@ethersproject/bignumber/lib/bignumber.d.ts","../../../node_modules/@ethersproject/bignumber/lib/fixednumber.d.ts","../../../node_modules/@ethersproject/bignumber/lib/index.d.ts","../../../node_modules/@ethersproject/networks/lib/types.d.ts","../../../node_modules/@ethersproject/networks/lib/index.d.ts","../../../node_modules/@ethersproject/properties/lib/index.d.ts","../../../node_modules/@ethersproject/transactions/lib/index.d.ts","../../../node_modules/@ethersproject/web/lib/index.d.ts","../../../node_modules/@ethersproject/abstract-provider/lib/index.d.ts","../../../node_modules/@ethersproject/abstract-signer/lib/index.d.ts","../../../node_modules/@ethersproject/hash/lib/typed-data.d.ts","../../../node_modules/@ethersproject/hash/lib/index.d.ts","../src/signatures.ts","../src/cacao.ts","../src/caip.ts","../../../node_modules/@stablelib/aead/lib/aead.d.ts","../../../node_modules/@stablelib/chacha20poly1305/lib/chacha20poly1305.d.ts","../../../node_modules/@stablelib/hash/lib/hash.d.ts","../../../node_modules/@stablelib/hkdf/lib/hkdf.d.ts","../../../node_modules/@stablelib/random/lib/source/index.d.ts","../../../node_modules/@stablelib/random/lib/source/system.d.ts","../../../node_modules/@stablelib/random/lib/random.d.ts","../../../node_modules/@stablelib/sha256/lib/sha256.d.ts","../../../node_modules/@stablelib/x25519/lib/x25519.d.ts","../node_modules/uint8arrays/types/src/compare.d.ts","../node_modules/uint8arrays/types/src/concat.d.ts","../node_modules/uint8arrays/types/src/equals.d.ts","../../../node_modules/multiformats/types/src/bases/interface.d.ts","../../../node_modules/multiformats/types/src/bases/base.d.ts","../node_modules/uint8arrays/types/src/util/bases.d.ts","../node_modules/uint8arrays/types/src/from-string.d.ts","../node_modules/uint8arrays/types/src/to-string.d.ts","../node_modules/uint8arrays/types/src/xor.d.ts","../node_modules/uint8arrays/types/src/index.d.ts","../src/crypto.ts","../src/errors.ts","../../../node_modules/@walletconnect/relay-api/dist/types/types.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/parsers.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/jsonrpc.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/validators.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/index.d.ts","../src/relay.ts","../src/uri.ts","../src/namespaces.ts","../src/validators.ts","../src/network.ts","../src/memorystore.ts","../src/index.ts","../../../node_modules/@types/bn.js/index.d.ts","../../../node_modules/keyv/src/index.d.ts","../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../node_modules/@types/responselike/index.d.ts","../../../node_modules/@types/cacheable-request/index.d.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@types/chai-subset/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/keyv/index.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../../node_modules/@types/lodash.isequal/index.d.ts","../../../node_modules/@types/long/index.d.ts","../../../node_modules/@types/lru-cache/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/pbkdf2/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/secp256k1/index.d.ts","../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../node_modules/@types/sinon/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/trusted-types/lib/index.d.ts","../../../node_modules/@types/trusted-types/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"f5c28122bee592cfaf5c72ed7bcc47f453b79778ffa6e301f45d21a0970719d4","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"3f149f903dd20dfeb7c80e228b659f0e436532de772469980dbd00702cc05cc1","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"cd483c056da900716879771893a3c9772b66c3c88f8943b4205aec738a94b1d0","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"c37f8a49593a0030eecb51bbfa270e709bec9d79a6cc3bb851ef348d4e6b26f8","affectsGlobalScope":true},"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","9122ed7070e054b73ebab37c2373a196def2d90e7d1a9a7fcd9d46b0e51fae78","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"77f0b5c6a193a699c9f7d7fb0578e64e562d271afa740783665d2a827104a873","affectsGlobalScope":true},"21a167fec8f933752fb8157f06d28fab6817af3ad9b0bdb1908a10762391eab9",{"version":"002d6d5f044365b3fbfba0ba9be3bb57cac09b81547c8df4b0795755d2081d90","affectsGlobalScope":true},"0c0cee62cb619aed81133b904f644515ba3064487002a7da83fd8aa07b1b4abd","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","34ec1daf3566f26c43dbab380af0de1aac29166e57e4f9ef379a2f154e0cb290","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","75ecef44f126e2ae018b4abbd85b6e8a2e2ba1638ebec56cc64274643ce3567b","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"bae4ea23beb8397755b935cb84d3cdc6cdb0b1b4a329b90de9fc6c8774d71994","affectsGlobalScope":true},"cec36af22f514322f870e81d30675c78df82ae8bf4863f5fd4e4424c040c678d","c57870f6664fd657ec2cf096bbb043b9556b0228ec0c12dd54193361ca563ea1","aeee0090b38de0dd47ca9a79ad5c2d156e3e09d92306719b0b45a3e96098e564","acfbb5aaef964e1d441f961a1846197f03241dba3c63b1e4d1903684888ef465","09416dd69576b03a3f485adf329a02f043e4a481e060ef5b208194e488d31fd9","8acf99b1c8682276a63ea5bb68433782715892726b97e4604a415e4e56bce41c",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"9499ba4dcd1ee0596d8c98d01341bc874840c5291156513bda667fecad54d5be","a907bf91df26df2400858ef75f749498fb5cf00062bf90a737ac3949cc07978d","cb92bc2e42b261e4299025756f1beb826b3d9666a3f0d46f8a7254ca512f57e4","e795a96de48dd2fbf83b1e29ecfae8e1dd428b99aa3508962c98679862e129a0",{"version":"59104b2e80c588b813d03d3a45f57117ca4601ae3fc216c5ffbcbafc4effc1c5","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","d1a78a3c5708807e8de3e399f91df4797c62e44b02195eefc2209b2e713e54ee","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","556bf5c36deb62cffa1bf697c1789fe008ec82db0273025001db66732714e9d9","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","653968fc1b35c5eb3d273d36fac1c1dc66f9537edf28f33485b8776bd956e23d",{"version":"970a90f76d4d219ad60819d61f5994514087ba94c985647a3474a5a3d12714ed","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","a381f079c4804442f179d742fdb2e495fe28d67a47cac673485f75ae2e77aeca","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"bfe39beb986d2a2e512c091cbe924f1c415bc65de54de0e2f6a0dc6f84c183d9","affectsGlobalScope":true},"2d526e6f21d8cc66ac11ada32874e95ae88d870c6c9d3d9d4e03b1d1f9ad7b8e","06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","ec4bd1b200670fb567920db572d6701ed42a9641d09c4ff6869768c8f81b404c","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa","d2ec52f565f0570e90b659811347bd689f8c6039b11eaaccd0f243759d46da6e","8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"a12806a1bde5e9f137bb79728d87a4ceaedf04e95efc9967d3288a3c252d9a7b","d14570d22f887cabca718688bae3927448a81eb1236eb4c172a8d107fbcf345a","e810cf9afcb9399bdd904986e82a68560ae6d8b797c241f8b124f8e3e4a10082","de99a0d33f351eae6b79104bce22f1b6ab939e93b1cf79784a08691894c25dc4","592200d0fda21eed2f9aacf65cb7ec1b21ea093202ac84ef725e3098b07310a4","4e33f3865f0774df5c73a8a82015d1d81ab5014cb24265666c5e522ea4bce0e1","33c509291c65b0b1a32c0be34e5e2fe3dadfce23413b8ac1e3da15cab1217b73","592200d0fda21eed2f9aacf65cb7ec1b21ea093202ac84ef725e3098b07310a4","41a70f8d09d0d37307e53b582b839dde158543926d246d5a021b28449d5d1cc2","c0a8732b08567bd92624b09f5bb98a08af642b96df881eeda39912df4f511975","c349cd698e0b7154d4550183a76350edaee36b7cde9b3e5aa60e2f1ee7fdb425","09f8b50c8da72c66a720cf1866e07302e944c0140abe7c8349bcfbe70726ec85","15eb95d253d5c1ba00097e9ca52b307b55dbd633397f83c198037877d0afd849","ed0cdc2d4ad21f32c2c1b0e012523683983be598a402821b26112acbf173fa0a","5df7eff2735bdd6c382b1647a84d7cec56af468d72fc32c7c9e143bd1407504b","4b627d5cf853d831a19b7dfcf2c28cdbf65730c38d8ac1d1bb87ebebc8ffb359","32ca4b9524e5720c7b1a700f16a1c9bd812316cace01d86d4733e83f9fb15885","7a35c48e1b4c1c6ca6a63610f76a7321c0480dae108430307694c2ca18de7be0","2d87c7263363c8fd82e91e10c56396ed5d144967fdadb0f4d92ffc73841a9e56","679d7df22bf42d8761ef3f8acdac6d305384fa11df7d222de32c939405abda22","172f31b538f6e3f70c2d001d665d5a46c4b043f707ba822b4d906d59bd9c229d","7af025cf1b7afde27e5deb448d9517a5f1ba47a02523b7ab93501a218695b5c6","e8c5e97646fbd53f30bfc0a680510a9edaec0fc1fcccba2c8732b59e9a81f049","9386858a8741582435bec3a815e9fd42902d65f0f2b1b51b831d842a14391a24","74af40d49190c96cb4cdd86bfc1dddca9c9a240033cd24c8fcdef9df13e061b7","aa4bd634de651f7d2876052205619032749d86b2b22142ea806711cda6d0dc52","531dae7ef22ab7e15c663caef4506aba0c5f258c729f965331068590ebe97ab5","5d71a7134ac10cc6c92cf78dd9e0a48eef665c254e3f0afe7bf9ba4418861b9f","9508f941e41dfff0c366dd1a1f41a702697b91ae5fbbaa414881fcee4fb9119d","01b86d49aad113300499cf05f714c17ca971ffe25240124bd619e690f75a8b55","72115336881f8a49257898188bef76c708cc3f5f118cae673579010fccbd709b","dfbd08d79c0ed94d7563e818229b1f9ac27c6b29099431de81be9fb2334a1c42","4a61d1b0121d1863062b1fda7cf6c0b9604c9ccb647ed6f25c9a279b3e9d7089","200650e1ed5d5b2bee679e079619d1b6d162df822b31af327dbd61ff95689562","1e8e79d498845a658a11828516711ffe3963337e1a16efb083a95f81b3ccf79f","5b0594c3b261f6eb7e54bbf17588e679abc03e3693ec5076dea9f1cee0bbcf13","101602942b03c24915c706a82361b45cf66fe055f8627f7347fa6bbc0d4811e2","9c6b34ba69cd25457b0a5b27db15705ab7eba470af085e89c37d1d3d6e21c977","08738129f88b31dea5f0588e6e62b78789be2dbb938a88f1f826c03368d8ee4a","7d38fcce49204e8bdadb8c81fc2dd46bffd6b6a312d6443563f2e10f73d1513c","8f34f8fc1952d8e3987ccb39ccff1a4bc4eb0f04221e3d854529302d56e87226","724e9e277027ec7f277389ea2cbbc4e87abe889b904da617f85d8b331e1021b4","7599482dcf9010904d648dead34782cb395fbe93b23ed2be8055164deeab3bd6","f0fe1e6ca80532a63a6482b69a40c0ef7117f7148beee8e588c7f1528209dc71","d171d5fca45c692096772b997173cbf4a2e995a283d2a2a69bf1e13ab92091a3","10a939cc6b62c510cba080039bcaeb23c32c381a9ef1cb3e8424a5015c99e9e6","9d93daff82e921f6ddf56c6d207fdbf76b8f51566cd04d4fe8b34d1d72bad8ed","3d73320d9491b16adfd29d3177af35611cc98a09f4c632b39014bbec165862e2","7fcb9fe316ccefb8772afb1b5861395bace8e4059fd6aa8e3da716f9aef75fc4","5e5c3060805c8de0bfde5b45239ddaa43001afdf64fd9563347e9f68e430ff57","1e4f096ec42477fa7881f58c52d9e6bf9fa7e71ba01f562d734c3bb6c6bee24d","87ed59b6a8df8efc3f0eaa35c8da0bf788f5510a128d3f62936f6af57edc7e41","15cb254c8108860af77bbc6458f764c66d081ac500e397f3cb8acb9d2b158402","1fbc0aa2bf8e019b2aae8567022e7b55f59b144714d6d1aa6c96b8acf15151a8","10fa6a67f237e9d803110d9f7b29b5edded4adb47809ea3d4355a6d3b644f978","24766e27ffabe6d258cfc54643f841782672a0e63e1d912ba23138deaf40e401","b76f79b98bd953ee71bba656b761f4ba26034ff3f8687c7c65edfc2d9604670f","d9548e5e333b64e6da237002a469401735722ea45caf86bff02db69213e96e31","66682da81646c807fbbb0999fc6d49ad41d10a32880b5803a7dea07fa251d1b9","7902c9ca40697c65549f9a41ab8cd711eab57143ac0d6202af73c18bcd63ca4c","d6536cdf16f68971c9a7f20bc2c353e0655bc3ac6ee742ec9d6da8b48cb89aa9","beea0bd57334b5d3f296eb255a99d6bb4c081faed7b09b8c5d2d7d3666ecb26c","d15bc6928c895f44e02a86f60c0e72d6d09ba7812d5ace831dc7f6c2600317d0","f3285db89f2ab44bb19e8a4e107d8542543a64ceb5a244339a348e36a3ebc938","223c35d0032d2ce91977eb3bced9e74dfbc5ff54d17ace3f471069e8e0935dfa","3f19b01b25d8152c3f023a55b958071c39f29aecc3206d8b953ce22ed1afe2a7","cc8a7843f4b9f96ac5179ec3ee1ecd428dea0caa35c455cab1b3e7a73c740306","776084ff5d871a19ffe2992bc1f7318d0187e34e5a4a7da4eeb78bdf9501e621","612e990e85f99aa8f2329d6d4d755713a44bd5c2041b02baae19c3ed1523f1de","4a259c19075fb64b9c302da22c51feb14fb8ad0775a780fccbef6a9e6c082c63","54223032d8849dd76ec6087684f361e9973c8de9c643b6a9ace67c136b13a326","0ae96d34bca21bb9118f2a8269a625ba4eee909c5d14d475a2eef33cea431552","a38c5518309b0e8f832f6fd53641ac69eeee77b66a03864a2688438e5402d3e5","d8931c54a30eea4ecc0afec72a4c81af8ddfebbec5c424b58c30bc7d5cbacd6c","6ff08c4d0269c9df488ab989923859d733cc35ba0eb65ce146d80f0487445088","2e1cd25ab4b887717e27b7013d9b5f1ee1e21406f3bc60f6db06383839e6d35a","84b504a59014d3e72dd4113089825b496620eb0647c47d2e56eeb105319f95f2","27975250d16d95779140c1c2231e2f7b9d7764f4bb716b19880c01eeea715452",{"version":"c77c490ac006f4b7063f25ff04de0978263e3fa5a4012478f4d0a47bd662b493","signature":"183076ec97be4e60b065add630f4a04734be0c2c7b2064c699883542c6d7f191"},"45a910666b455daf042c0a0cfa610c20ea59a0aaf702f93d3b467a05f9a27e20","5580ff53b5f6f1ecdb68ecb61327e63112f97660912c15444c1f8a08f69c19dc","1fcb8b15db812281d69a3090d488903f9e93033004aef9d8889ca3ad0753a96f","84fb7c52fc116ddcbd1b34535e387053f2a0134d11c5e39b193f4c1328fb1fb5","bdf5a95eb0a2dd1d39805bdf51b46ba012bb9b92b2ddaae16219595bba7678a5","9f794a0e8550a03baff865a3961cc22afbd85bc4ba9672bdda036971928f85f4","66a697d1e4cdbf25cdce4644a8085a8563041fa8c7731d4d9f5e8f22e66ba72c","4f1ae3f24125216cf07c5211a3f00d2bb4782d7cc76c0681603f8249f9232ff0","d3fb92a5640f83f7844d60b35317a0f95c27e3658a749d76d218c461ad091668","8bc2cad630da1033c1fd8d7df2bffb18af0da6113bd086a8bbec04a2471a1e00","d1f8bfcd91b284657ef8187c55ace7db91a3c43e642c3f14e54364154932f7e4","f54c92bfcae54f360fe79514746efce4870e4ddabc064e95d406bba291e9f672","175fd7186fa6a70f9db9b270a04a503cae23cf01cb77e3905bac115c38424cf7","c993f7ed1b8e1023c1f2ee5b262dbc3b70b27475674e40a53a58591f9972dacc","fd3cd8bf3c90ef4694195a617a5daaac561d8be52ba33c607f170c11f3c50154","6852fc2f309e330e38694bad95bde670c384d1498bf4fbe3a751761b43279934",{"version":"fc46b90ef00ea80de64313ca101e3377e82c7de5b2b8cc82ec324ef64062dfd2","signature":"51d71dbcbf7dfc9fa475d1d2db8c744fc93cb91fb8b4e6e3724377066008e745"},{"version":"0dc23f34b6ab3196dc8551971ea9066e4a8807f812506007189b1010d7025e9d","signature":"04130e865406d542194f0ca04c131174c7b7230b4c7b1ffe6deb723b411e5122"},{"version":"f287cf1ae78dadca66f0fff910164af2e66d7e1ee1ef4aa53e8bf9ac364d086a","signature":"ca2cd04f36686a52bf72f3a75f34f09d496abefb9410c13d609c968956d23fa8"},"91bdb91e83ad82b3a68955033c35413e11158a56448534cc11dae2734cab0d8f","fc8ed8a75b39d372ea11553e253c763a75b8447f6a5a3b0c3509b21803ce4783","6562fc4b9b470ee474add192278b9ad7d863b1096f57c7aeb26e6b15a86e51a7","19109153165b1279adbddfac3f9182ef2274cacc9dd2dbadbff7983332343348","b7b4da95464f11da1b8de59ed34f6deb740d14fcdd54065fdbbe850741ae958c","64d7747acb1d36374e9c884773b6dbede826dd9684cecad3c7fb4ce7960f90d7","47e62f697f75c990750842294e175977588557f15a9731625e7e3c882b4b1d24","ef5a427017c481641f81327b63c13c810eaf49bf770986ae959de10c12242dff","c633deeb89a5a7142bce011d097bc4d354533c6f51a5b25404355a968414f29a","90cf3b12cd05d01c42193be1cd25af2c8dbef608ae143e5eaacf73cdb99840d2","4e37a214f2cd5a350affba5580d1d7c01ca83da6393ef2c13a66d74fc7b95eac","3157fa89ebde7e5d5499da49d8ae13e523c1de12d5c1285251c17b7672887b1e","930446bf32192f698b78f8ea4b309d8c2cfe02ab5ad78e4db907417405ebf5e7","729b819a6779d842c3a6908ba4ed93d9fe50e2533d989f05f55a4811b3dd9910","c6591dc2b834e9be50f97edb393c4673e9b66f5689c90d69a71c7da962a0563a","0841c3aed9354ad025302d5c7cde53916825047646e559d918b62a31500aebe7","7c515715da56f17e695e2c3611cf073d2cebfd417497652b35f9042b7235d5b2","a4942fc385f0368be5a50d7e7280c5c6ad47b082a9eaa0284042c89ce2df9e08","91072b0ddd41ce84a3c85f36cf927f2e7b1724f7ce71accf16715d99bafc113a",{"version":"983b13f3704a32ddb36798a309baa3275f1833424dfd199268bc104c344015da","signature":"9ee9fb6931cbcd7cdf487aa2322bc5a1608cef1dd36ea4e8f0ac5e4500fb4574"},{"version":"efe026cccf176ebb4989defd182b1402ad6b432248f85efec8adfdcd1914ef7a","signature":"66fdfd3fb3a180a39b3a465a45c2682e1123505d6bda88f2cd13707806955f0e"},"a53c6611a7061c8a193f28158a0d8b444ee39595d11d1708643222dce3c88449","cc703e7df0457b35086d815d6ff33cd3452317d7a8d7f152597f8dbc6459c5f9","e24b93132bafb120fa11f2454152834abfe47179a2dd96abdbbc57734ed6472b","82bd382cdf173bc58e91d1e25c7acf91ff443983e5c68978082ad5f2877f9af9","f488ac0001e44c0038e04b5134ff153e6bd666e2eba11bb884543a708be88a95",{"version":"b0cd303641a5575deb48407b2a64c83fdcaa35d4cc4965167b167f13c0564104","signature":"090ea064f7de7b504d1168af39eaf9fd59920450ab581dfd5f7458d1bf3554a0"},{"version":"7cbbf54792b9ac0ce2743af6e41cb475bf08254d26864105169d0ec596267ba4","signature":"9df2a6860b73b9b44d63bfaf3938d3f29abb37b5d391420b6def8f54eee17c5a"},{"version":"b115b8d6869fe7704e4f658b35520f7a8e20089977d6af2497c4afadc7092cbe","signature":"8738ff26cb6ed57db7a193f0d0dc9dde271aef5abc8c0d75693f230876594d43"},{"version":"429495125cb6cb7b4819c396b535e5aa057730e92ef6ab96d9f0b709f6460c2d","signature":"04eafb317a7fe2573471ce70d5955e03527d1597c120f2483aae6b5815127df9"},{"version":"6b3875e799fc477088fe196fe847e7ee1e56d535abf5ff98056e20c2ad92f939","signature":"ebb66422766f0304bd7a4d53ab79034921277fe632062c464d4227629e1f833d"},{"version":"e02e0d426e98a3c1ba7c2588d7a490afec59d602f861080ca33cfcd5c6dc0a9d","signature":"adbeb36efd0d65689eddce562811b5aaf8d46c2719be7d669e86607f56acfa74"},"45d4c0b459175dd8a78fec4c0597bbb02d7b6a708c2a1400c4575618d717da13","bc6dd50ac2fc9a7ca6488811b116bd0ddd606338db0bb97852c8fcf757e2d7f5","92edb6e257fa64d3baae647490e041912684f5dc1f243d0aedd60b4b383ff50b","cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562",{"version":"b9734142a4b241cfb505be4a2eb0261d211647df7c73043f817f4fdd8d96c846","affectsGlobalScope":true},{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},"89ccbe04e737ce613f5f04990271cfa84901446350b8551b0555ddf19319723b","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","d70c026dd2eeaa974f430ea229230a1897fdb897dc74659deebe2afd4feeb08f","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","98f9d826db9cd99d27a01a59ee5f22863df00ccf1aaf43e1d7db80ebf716f7c3","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3cf0d343c2276842a5b617f22ba82af6322c7cfe8bb52238ffc0c491a3c21019","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9",{"version":"f2eff8704452659641164876c1ef0df4174659ce7311b0665798ea3f556fa9ad","affectsGlobalScope":true},"6bb8d7433a29fbd33df8e9693f1788a273a9eb90b96c8f99c745678c7db623f1","0e60e0cbf2283adfd5a15430ae548cd2f662d581b5da6ecd98220203e7067c70","6d727c1f6a7122c04e4f7c164c5e6f460c21ada618856894cdaa6ac25e95f38c","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","a73a445c1e0a6d0f8b48e8eb22dc9d647896783a7f8991cbbc31c0d94bf1f5a2","8a19491eba2108d5c333c249699f40aff05ad312c04a17504573b27d91f0aede","3dce33e7eb25594863b8e615f14a45ab98190d85953436750644212d8a18c066","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e",{"version":"2c3b8be03577c98530ef9cb1a76e2c812636a871f367e9edf4c5f3ce702b77f8","affectsGlobalScope":true},"70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","e9eb1b173aa166892f3eddab182e49cfe59aa2e14d33aedb6b49d175ed6a3750"],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"downlevelIteration":true,"emitDeclarationOnly":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"module":6,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./types","removeComments":true,"rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"strictNullChecks":true,"strictPropertyInitialization":true,"suppressImplicitAnyIndexErrors":true,"target":7},"fileIdsList":[[88,176,180,182,183,184,185],[88,176,180,183,186],[88,176],[88,176,178],[88,178,179],[88],[88,174,175,177,188],[88,187],[88,181],[88,176,180],[88,193],[88,195],[88,197,198],[88,197],[88,199],[88,95],[58,61,87,88,95,227,228,229],[88,231],[88,234],[88,235],[58,88,95],[88,252],[88,240,242,243,244,245,246,247,248,249,250,251,252],[88,240,241,243,244,245,246,247,248,249,250,251,252],[88,241,242,243,244,245,246,247,248,249,250,251,252],[88,240,241,242,244,245,246,247,248,249,250,251,252],[88,240,241,242,243,245,246,247,248,249,250,251,252],[88,240,241,242,243,244,246,247,248,249,250,251,252],[88,240,241,242,243,244,245,247,248,249,250,251,252],[88,240,241,242,243,244,245,246,248,249,250,251,252],[88,240,241,242,243,244,245,246,247,249,250,251,252],[88,240,241,242,243,244,245,246,247,248,250,251,252],[88,240,241,242,243,244,245,246,247,248,249,251,252],[88,240,241,242,243,244,245,246,247,248,249,250,252],[88,240,241,242,243,244,245,246,247,248,249,250,251],[43,88],[46,88],[47,52,88],[48,58,59,66,76,87,88],[48,49,58,66,88],[50,88],[51,52,59,67,88],[52,76,84,88],[53,55,58,66,88],[54,88],[55,56,88],[57,58,88],[58,88],[58,59,60,76,87,88],[58,59,60,76,79,88],[88,92],[61,66,76,87,88],[58,59,61,62,66,76,84,87,88],[61,63,76,84,87,88],[43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94],[58,64,88],[65,87,88],[55,58,66,76,88],[67,88],[68,88],[46,69,88],[70,86,88,92],[71,88],[72,88],[58,73,74,88],[73,75,88,90],[58,76,77,78,79,88],[76,78,88],[76,77,88],[79,88],[80,88],[58,82,83,88],[82,83,88],[52,66,76,84,88],[85,88],[66,86,88],[47,61,72,87,88],[52,88],[76,88,89],[88,90],[88,91],[47,52,58,60,69,76,87,88,90,92],[76,88,93],[61,76,88,95],[88,262],[88,265],[88,267],[88,163,164],[88,96],[88,101],[58,88,95,99],[88,99,100,102],[88,97],[88,98],[88,109,110,111,112],[88,109,110],[88,165],[88,113,161],[88,161],[88,160,161,162,166,167,168,169,170],[88,113],[88,106,107],[88,106],[88,104,105],[88,116,118],[88,116,117,122],[88,116,119,120,121],[88,214,215,216,217],[88,214],[88,113,214],[88,154,155],[88,150,152,153,156],[88,151],[88,148,149],[88,152],[88,97,103,108,123,124,125,129,130,131,133,134,135],[88,113,123,124,136],[88,123],[88,97,123,136],[88,97,113,123,136],[88,124,125,126,127,128,129,130,131,132,133,134,135,136],[88,123,136],[58,88,95,113,123,129,132,136],[88,97,123,129],[88,97,113,123,126,127,128,136],[88,113,123,136],[88,97,113,123,129],[88,137,145],[88,113,137,140],[58,88,95,123,134,136,138,139,140,142,143],[58,88,95,113,129,133,137,138,139,140,141,142,144],[88,138,139,140,141,142,143,144],[88,113,129,138,140,144,145],[88,129,132,144],[88,129,132,138,139,144],[88,205],[61,88,95],[58,88,92,114,115],[88,207],[88,202,203,204,208,209,210],[88,205,206],[42,88,146,173,190],[42,88,146],[42,88,146,194,196,199,200,201,211],[42,88],[42,88,173,190,191,192,212,213,219,220,221,222,223,224],[42,88,108,146,147,157,158,159,171,172],[42,88,146,173,222],[42,88,173],[42,88,146,218],[42,88,146,184,189],[42,88,146,172],[42,88,113,146,173,192,213,221],[146],[108,146,171],[146,218],[113,146]],"referencedMap":[[186,1],[187,2],[178,3],[179,4],[180,5],[176,6],[174,6],[189,7],[177,3],[175,6],[188,8],[182,9],[181,6],[183,6],[184,10],[185,6],[193,6],[194,11],[195,6],[196,12],[199,13],[197,6],[198,14],[200,12],[201,15],[226,16],[230,17],[232,18],[231,6],[233,6],[228,6],[234,6],[235,19],[236,20],[237,6],[238,6],[239,21],[253,22],[241,23],[242,24],[240,25],[243,26],[244,27],[245,28],[246,29],[247,30],[248,31],[249,32],[250,33],[251,34],[252,35],[254,6],[255,6],[256,6],[257,6],[43,36],[44,36],[46,37],[47,38],[48,39],[49,40],[50,41],[51,42],[52,43],[53,44],[54,45],[55,46],[56,46],[57,47],[58,48],[59,49],[60,50],[45,51],[94,6],[61,52],[62,53],[63,54],[95,55],[64,56],[65,57],[66,58],[67,59],[68,60],[69,61],[70,62],[71,63],[72,64],[73,65],[74,65],[75,66],[76,67],[78,68],[77,69],[79,70],[80,71],[81,6],[82,72],[83,73],[84,74],[85,75],[86,76],[87,77],[88,78],[89,79],[90,80],[91,81],[92,82],[93,83],[258,6],[259,16],[260,16],[229,84],[261,16],[263,85],[262,6],[264,6],[266,86],[265,6],[267,6],[268,87],[163,6],[164,6],[165,88],[96,21],[97,89],[101,6],[102,90],[100,91],[103,92],[98,93],[99,94],[113,95],[109,6],[110,21],[111,96],[112,6],[160,6],[166,97],[162,98],[167,99],[171,100],[168,6],[161,101],[169,6],[170,99],[108,102],[107,103],[106,104],[104,6],[105,6],[121,105],[119,105],[117,6],[123,106],[118,6],[120,105],[122,107],[218,108],[216,109],[215,110],[214,6],[217,110],[156,111],[154,6],[155,6],[157,112],[152,113],[151,6],[149,6],[148,6],[150,114],[153,115],[136,116],[125,117],[135,118],[131,119],[130,120],[137,121],[124,122],[126,122],[133,123],[127,124],[129,125],[132,126],[128,127],[134,118],[146,128],[139,129],[144,130],[143,131],[145,132],[141,133],[142,128],[138,134],[140,135],[158,6],[159,6],[147,16],[227,48],[206,136],[205,6],[114,137],[116,138],[172,6],[115,21],[42,6],[8,6],[10,6],[9,6],[2,6],[11,6],[12,6],[13,6],[14,6],[15,6],[16,6],[17,6],[18,6],[3,6],[4,6],[22,6],[19,6],[20,6],[21,6],[23,6],[24,6],[25,6],[5,6],[26,6],[27,6],[28,6],[29,6],[6,6],[30,6],[31,6],[32,6],[33,6],[7,6],[34,6],[39,6],[40,6],[35,6],[36,6],[37,6],[38,6],[1,6],[41,6],[202,6],[203,6],[204,6],[208,139],[211,140],[209,139],[207,141],[210,6],[191,142],[192,143],[212,144],[213,145],[225,146],[224,145],[173,147],[221,148],[223,149],[219,150],[190,151],[220,152],[222,153]],"exportedModulesMap":[[186,1],[187,2],[178,3],[179,4],[180,5],[176,6],[174,6],[189,7],[177,3],[175,6],[188,8],[182,9],[181,6],[183,6],[184,10],[185,6],[193,6],[194,11],[195,6],[196,12],[199,13],[197,6],[198,14],[200,12],[201,15],[226,16],[230,17],[232,18],[231,6],[233,6],[228,6],[234,6],[235,19],[236,20],[237,6],[238,6],[239,21],[253,22],[241,23],[242,24],[240,25],[243,26],[244,27],[245,28],[246,29],[247,30],[248,31],[249,32],[250,33],[251,34],[252,35],[254,6],[255,6],[256,6],[257,6],[43,36],[44,36],[46,37],[47,38],[48,39],[49,40],[50,41],[51,42],[52,43],[53,44],[54,45],[55,46],[56,46],[57,47],[58,48],[59,49],[60,50],[45,51],[94,6],[61,52],[62,53],[63,54],[95,55],[64,56],[65,57],[66,58],[67,59],[68,60],[69,61],[70,62],[71,63],[72,64],[73,65],[74,65],[75,66],[76,67],[78,68],[77,69],[79,70],[80,71],[81,6],[82,72],[83,73],[84,74],[85,75],[86,76],[87,77],[88,78],[89,79],[90,80],[91,81],[92,82],[93,83],[258,6],[259,16],[260,16],[229,84],[261,16],[263,85],[262,6],[264,6],[266,86],[265,6],[267,6],[268,87],[163,6],[164,6],[165,88],[96,21],[97,89],[101,6],[102,90],[100,91],[103,92],[98,93],[99,94],[113,95],[109,6],[110,21],[111,96],[112,6],[160,6],[166,97],[162,98],[167,99],[171,100],[168,6],[161,101],[169,6],[170,99],[108,102],[107,103],[106,104],[104,6],[105,6],[121,105],[119,105],[117,6],[123,106],[118,6],[120,105],[122,107],[218,108],[216,109],[215,110],[214,6],[217,110],[156,111],[154,6],[155,6],[157,112],[152,113],[151,6],[149,6],[148,6],[150,114],[153,115],[136,116],[125,117],[135,118],[131,119],[130,120],[137,121],[124,122],[126,122],[133,123],[127,124],[129,125],[132,126],[128,127],[134,118],[146,128],[139,129],[144,130],[143,131],[145,132],[141,133],[142,128],[138,134],[140,135],[158,6],[159,6],[147,16],[227,48],[206,136],[205,6],[114,137],[116,138],[172,6],[115,21],[42,6],[8,6],[10,6],[9,6],[2,6],[11,6],[12,6],[13,6],[14,6],[15,6],[16,6],[17,6],[18,6],[3,6],[4,6],[22,6],[19,6],[20,6],[21,6],[23,6],[24,6],[25,6],[5,6],[26,6],[27,6],[28,6],[29,6],[6,6],[30,6],[31,6],[32,6],[33,6],[7,6],[34,6],[39,6],[40,6],[35,6],[36,6],[37,6],[38,6],[1,6],[41,6],[202,6],[203,6],[204,6],[208,139],[211,140],[209,139],[207,141],[210,6],[191,154],[192,154],[212,154],[225,146],[173,155],[221,154],[219,156],[190,154],[220,154],[222,157]],"semanticDiagnosticsPerFile":[186,187,178,179,180,176,174,189,177,175,188,182,181,183,184,185,193,194,195,196,199,197,198,200,201,226,230,232,231,233,228,234,235,236,237,238,239,253,241,242,240,243,244,245,246,247,248,249,250,251,252,254,255,256,257,43,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,45,94,61,62,63,95,64,65,66,67,68,69,70,71,72,73,74,75,76,78,77,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,258,259,260,229,261,263,262,264,266,265,267,268,163,164,165,96,97,101,102,100,103,98,99,113,109,110,111,112,160,166,162,167,171,168,161,169,170,108,107,106,104,105,121,119,117,123,118,120,122,218,216,215,214,217,156,154,155,157,152,151,149,148,150,153,136,125,135,131,130,137,124,126,133,127,129,132,128,134,146,139,144,143,145,141,142,138,140,158,159,147,227,206,205,114,116,172,115,42,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,30,31,32,33,7,34,39,40,35,36,37,38,1,41,202,203,204,208,211,209,207,210,191,192,212,213,225,224,173,221,223,219,190,220,222]},"version":"4.7.4"} +\ No newline at end of file ++{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@walletconnect/events/dist/cjs/events.d.ts","../../../node_modules/@walletconnect/events/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/types/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/types/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/constants/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/constants/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/types.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/utils.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/node-js/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/index.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/jsonrpc.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/misc.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/provider.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/validator.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/index.d.ts","../../../node_modules/pino-std-serializers/index.d.ts","../../../node_modules/sonic-boom/types/index.d.ts","../../../node_modules/pino/pino.d.ts","../../../node_modules/@walletconnect/logger/dist/types/constants.d.ts","../../../node_modules/@walletconnect/logger/dist/types/linkedlist.d.ts","../../../node_modules/@walletconnect/logger/dist/types/clientchunklogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/serverchunklogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/basechunklogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/utils.d.ts","../../../node_modules/@walletconnect/logger/dist/types/index.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/keychain.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/crypto.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/messages.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/publisher.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/relayer.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/history.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/expirer.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/store.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/pairing.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/verify.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/echo.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/core.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/index.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/pendingrequest.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts","../../../node_modules/@walletconnect/types/dist/types/index.d.ts","../../../node_modules/detect-browser/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/utils/delay.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/utils/convert.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/utils/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/types/watch.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/types/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/watch.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/constants/misc.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/constants/time.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/constants/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/window-getters/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/window-metadata/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/constants.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/types.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/error.d.ts","../../../node_modules/@walletconnect/environment/dist/cjs/crypto.d.ts","../../../node_modules/@walletconnect/environment/dist/cjs/env.d.ts","../../../node_modules/@walletconnect/environment/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/env.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/format.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/routing.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/url.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/validators.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/index.d.ts","../../../node_modules/query-string/index.d.ts","../src/misc.ts","../../../node_modules/@ethersproject/hash/lib/id.d.ts","../../../node_modules/@ethersproject/hash/lib/namehash.d.ts","../../../node_modules/@ethersproject/bytes/lib/index.d.ts","../../../node_modules/@ethersproject/hash/lib/message.d.ts","../../../node_modules/@ethersproject/bignumber/lib/bignumber.d.ts","../../../node_modules/@ethersproject/bignumber/lib/fixednumber.d.ts","../../../node_modules/@ethersproject/bignumber/lib/index.d.ts","../../../node_modules/@ethersproject/networks/lib/types.d.ts","../../../node_modules/@ethersproject/networks/lib/index.d.ts","../../../node_modules/@ethersproject/properties/lib/index.d.ts","../../../node_modules/@ethersproject/transactions/lib/index.d.ts","../../../node_modules/@ethersproject/web/lib/index.d.ts","../../../node_modules/@ethersproject/abstract-provider/lib/index.d.ts","../../../node_modules/@ethersproject/abstract-signer/lib/index.d.ts","../../../node_modules/@ethersproject/hash/lib/typed-data.d.ts","../../../node_modules/@ethersproject/hash/lib/index.d.ts","../src/signatures.ts","../src/cacao.ts","../src/caip.ts","../../../node_modules/@stablelib/aead/lib/aead.d.ts","../../../node_modules/@stablelib/chacha20poly1305/lib/chacha20poly1305.d.ts","../../../node_modules/@stablelib/hash/lib/hash.d.ts","../../../node_modules/@stablelib/hkdf/lib/hkdf.d.ts","../../../node_modules/@stablelib/random/lib/source/index.d.ts","../../../node_modules/@stablelib/random/lib/source/system.d.ts","../../../node_modules/@stablelib/random/lib/random.d.ts","../../../node_modules/@stablelib/sha256/lib/sha256.d.ts","../../../node_modules/@stablelib/x25519/lib/x25519.d.ts","../node_modules/uint8arrays/types/src/compare.d.ts","../node_modules/uint8arrays/types/src/concat.d.ts","../node_modules/uint8arrays/types/src/equals.d.ts","../../../node_modules/multiformats/types/src/bases/interface.d.ts","../../../node_modules/multiformats/types/src/bases/base.d.ts","../node_modules/uint8arrays/types/src/util/bases.d.ts","../node_modules/uint8arrays/types/src/from-string.d.ts","../node_modules/uint8arrays/types/src/to-string.d.ts","../node_modules/uint8arrays/types/src/xor.d.ts","../node_modules/uint8arrays/types/src/index.d.ts","../src/crypto.ts","../src/errors.ts","../../../node_modules/@walletconnect/relay-api/dist/types/types.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/parsers.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/jsonrpc.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/validators.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/index.d.ts","../src/relay.ts","../src/uri.ts","../src/namespaces.ts","../src/validators.ts","../src/network.ts","../src/memorystore.ts","../src/index.ts","../../../node_modules/@types/bn.js/index.d.ts","../../../node_modules/keyv/src/index.d.ts","../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../node_modules/@types/responselike/index.d.ts","../../../node_modules/@types/cacheable-request/index.d.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@types/chai-subset/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/keyv/index.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../../node_modules/@types/lodash.isequal/index.d.ts","../../../node_modules/@types/long/index.d.ts","../../../node_modules/@types/lru-cache/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/pbkdf2/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/secp256k1/index.d.ts","../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../node_modules/@types/sinon/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/trusted-types/lib/index.d.ts","../../../node_modules/@types/trusted-types/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"f5c28122bee592cfaf5c72ed7bcc47f453b79778ffa6e301f45d21a0970719d4","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"3f149f903dd20dfeb7c80e228b659f0e436532de772469980dbd00702cc05cc1","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"cd483c056da900716879771893a3c9772b66c3c88f8943b4205aec738a94b1d0","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"c37f8a49593a0030eecb51bbfa270e709bec9d79a6cc3bb851ef348d4e6b26f8","affectsGlobalScope":true},"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","9122ed7070e054b73ebab37c2373a196def2d90e7d1a9a7fcd9d46b0e51fae78","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"77f0b5c6a193a699c9f7d7fb0578e64e562d271afa740783665d2a827104a873","affectsGlobalScope":true},"21a167fec8f933752fb8157f06d28fab6817af3ad9b0bdb1908a10762391eab9",{"version":"002d6d5f044365b3fbfba0ba9be3bb57cac09b81547c8df4b0795755d2081d90","affectsGlobalScope":true},"0c0cee62cb619aed81133b904f644515ba3064487002a7da83fd8aa07b1b4abd","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","34ec1daf3566f26c43dbab380af0de1aac29166e57e4f9ef379a2f154e0cb290","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","75ecef44f126e2ae018b4abbd85b6e8a2e2ba1638ebec56cc64274643ce3567b","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"bae4ea23beb8397755b935cb84d3cdc6cdb0b1b4a329b90de9fc6c8774d71994","affectsGlobalScope":true},"cec36af22f514322f870e81d30675c78df82ae8bf4863f5fd4e4424c040c678d","c57870f6664fd657ec2cf096bbb043b9556b0228ec0c12dd54193361ca563ea1","aeee0090b38de0dd47ca9a79ad5c2d156e3e09d92306719b0b45a3e96098e564","acfbb5aaef964e1d441f961a1846197f03241dba3c63b1e4d1903684888ef465","09416dd69576b03a3f485adf329a02f043e4a481e060ef5b208194e488d31fd9","8acf99b1c8682276a63ea5bb68433782715892726b97e4604a415e4e56bce41c",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"9499ba4dcd1ee0596d8c98d01341bc874840c5291156513bda667fecad54d5be","a907bf91df26df2400858ef75f749498fb5cf00062bf90a737ac3949cc07978d","cb92bc2e42b261e4299025756f1beb826b3d9666a3f0d46f8a7254ca512f57e4","e795a96de48dd2fbf83b1e29ecfae8e1dd428b99aa3508962c98679862e129a0",{"version":"59104b2e80c588b813d03d3a45f57117ca4601ae3fc216c5ffbcbafc4effc1c5","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","d1a78a3c5708807e8de3e399f91df4797c62e44b02195eefc2209b2e713e54ee","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","556bf5c36deb62cffa1bf697c1789fe008ec82db0273025001db66732714e9d9","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","653968fc1b35c5eb3d273d36fac1c1dc66f9537edf28f33485b8776bd956e23d",{"version":"970a90f76d4d219ad60819d61f5994514087ba94c985647a3474a5a3d12714ed","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","a381f079c4804442f179d742fdb2e495fe28d67a47cac673485f75ae2e77aeca","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"bfe39beb986d2a2e512c091cbe924f1c415bc65de54de0e2f6a0dc6f84c183d9","affectsGlobalScope":true},"2d526e6f21d8cc66ac11ada32874e95ae88d870c6c9d3d9d4e03b1d1f9ad7b8e","06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","ec4bd1b200670fb567920db572d6701ed42a9641d09c4ff6869768c8f81b404c","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa","d2ec52f565f0570e90b659811347bd689f8c6039b11eaaccd0f243759d46da6e","8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"a12806a1bde5e9f137bb79728d87a4ceaedf04e95efc9967d3288a3c252d9a7b","d14570d22f887cabca718688bae3927448a81eb1236eb4c172a8d107fbcf345a","e810cf9afcb9399bdd904986e82a68560ae6d8b797c241f8b124f8e3e4a10082","de99a0d33f351eae6b79104bce22f1b6ab939e93b1cf79784a08691894c25dc4","592200d0fda21eed2f9aacf65cb7ec1b21ea093202ac84ef725e3098b07310a4","4e33f3865f0774df5c73a8a82015d1d81ab5014cb24265666c5e522ea4bce0e1","33c509291c65b0b1a32c0be34e5e2fe3dadfce23413b8ac1e3da15cab1217b73","592200d0fda21eed2f9aacf65cb7ec1b21ea093202ac84ef725e3098b07310a4","41a70f8d09d0d37307e53b582b839dde158543926d246d5a021b28449d5d1cc2","c0a8732b08567bd92624b09f5bb98a08af642b96df881eeda39912df4f511975","c349cd698e0b7154d4550183a76350edaee36b7cde9b3e5aa60e2f1ee7fdb425","09f8b50c8da72c66a720cf1866e07302e944c0140abe7c8349bcfbe70726ec85","15eb95d253d5c1ba00097e9ca52b307b55dbd633397f83c198037877d0afd849","ed0cdc2d4ad21f32c2c1b0e012523683983be598a402821b26112acbf173fa0a","5df7eff2735bdd6c382b1647a84d7cec56af468d72fc32c7c9e143bd1407504b","4b627d5cf853d831a19b7dfcf2c28cdbf65730c38d8ac1d1bb87ebebc8ffb359","32ca4b9524e5720c7b1a700f16a1c9bd812316cace01d86d4733e83f9fb15885","7a35c48e1b4c1c6ca6a63610f76a7321c0480dae108430307694c2ca18de7be0","2d87c7263363c8fd82e91e10c56396ed5d144967fdadb0f4d92ffc73841a9e56","679d7df22bf42d8761ef3f8acdac6d305384fa11df7d222de32c939405abda22","172f31b538f6e3f70c2d001d665d5a46c4b043f707ba822b4d906d59bd9c229d","7af025cf1b7afde27e5deb448d9517a5f1ba47a02523b7ab93501a218695b5c6","e8c5e97646fbd53f30bfc0a680510a9edaec0fc1fcccba2c8732b59e9a81f049","9386858a8741582435bec3a815e9fd42902d65f0f2b1b51b831d842a14391a24","74af40d49190c96cb4cdd86bfc1dddca9c9a240033cd24c8fcdef9df13e061b7","aa4bd634de651f7d2876052205619032749d86b2b22142ea806711cda6d0dc52","531dae7ef22ab7e15c663caef4506aba0c5f258c729f965331068590ebe97ab5","5d71a7134ac10cc6c92cf78dd9e0a48eef665c254e3f0afe7bf9ba4418861b9f","9508f941e41dfff0c366dd1a1f41a702697b91ae5fbbaa414881fcee4fb9119d","01b86d49aad113300499cf05f714c17ca971ffe25240124bd619e690f75a8b55","72115336881f8a49257898188bef76c708cc3f5f118cae673579010fccbd709b","dfbd08d79c0ed94d7563e818229b1f9ac27c6b29099431de81be9fb2334a1c42","4a61d1b0121d1863062b1fda7cf6c0b9604c9ccb647ed6f25c9a279b3e9d7089","200650e1ed5d5b2bee679e079619d1b6d162df822b31af327dbd61ff95689562","1e8e79d498845a658a11828516711ffe3963337e1a16efb083a95f81b3ccf79f","5b0594c3b261f6eb7e54bbf17588e679abc03e3693ec5076dea9f1cee0bbcf13","101602942b03c24915c706a82361b45cf66fe055f8627f7347fa6bbc0d4811e2","9c6b34ba69cd25457b0a5b27db15705ab7eba470af085e89c37d1d3d6e21c977","08738129f88b31dea5f0588e6e62b78789be2dbb938a88f1f826c03368d8ee4a","7d38fcce49204e8bdadb8c81fc2dd46bffd6b6a312d6443563f2e10f73d1513c","8f34f8fc1952d8e3987ccb39ccff1a4bc4eb0f04221e3d854529302d56e87226","724e9e277027ec7f277389ea2cbbc4e87abe889b904da617f85d8b331e1021b4","7599482dcf9010904d648dead34782cb395fbe93b23ed2be8055164deeab3bd6","18a5cdf201b5eaf65a4bfdba3fcfad7b010732c012114c13c98f06149d45c714","d171d5fca45c692096772b997173cbf4a2e995a283d2a2a69bf1e13ab92091a3","10a939cc6b62c510cba080039bcaeb23c32c381a9ef1cb3e8424a5015c99e9e6","e4e5a0827e2a026403e949712b51596b0891e21844f7e2be2e7f40f7e74aba87","3d73320d9491b16adfd29d3177af35611cc98a09f4c632b39014bbec165862e2","7fcb9fe316ccefb8772afb1b5861395bace8e4059fd6aa8e3da716f9aef75fc4","963415db3e4ad0939cb4dd18339ef6a874065ad2360df6b3437b51bba51d44cb","1e4f096ec42477fa7881f58c52d9e6bf9fa7e71ba01f562d734c3bb6c6bee24d","87ed59b6a8df8efc3f0eaa35c8da0bf788f5510a128d3f62936f6af57edc7e41","15cb254c8108860af77bbc6458f764c66d081ac500e397f3cb8acb9d2b158402","1fbc0aa2bf8e019b2aae8567022e7b55f59b144714d6d1aa6c96b8acf15151a8","10fa6a67f237e9d803110d9f7b29b5edded4adb47809ea3d4355a6d3b644f978","24766e27ffabe6d258cfc54643f841782672a0e63e1d912ba23138deaf40e401","b76f79b98bd953ee71bba656b761f4ba26034ff3f8687c7c65edfc2d9604670f","d9548e5e333b64e6da237002a469401735722ea45caf86bff02db69213e96e31","66682da81646c807fbbb0999fc6d49ad41d10a32880b5803a7dea07fa251d1b9","7902c9ca40697c65549f9a41ab8cd711eab57143ac0d6202af73c18bcd63ca4c","d6536cdf16f68971c9a7f20bc2c353e0655bc3ac6ee742ec9d6da8b48cb89aa9","beea0bd57334b5d3f296eb255a99d6bb4c081faed7b09b8c5d2d7d3666ecb26c","d15bc6928c895f44e02a86f60c0e72d6d09ba7812d5ace831dc7f6c2600317d0","f3285db89f2ab44bb19e8a4e107d8542543a64ceb5a244339a348e36a3ebc938","223c35d0032d2ce91977eb3bced9e74dfbc5ff54d17ace3f471069e8e0935dfa","3f19b01b25d8152c3f023a55b958071c39f29aecc3206d8b953ce22ed1afe2a7","cc8a7843f4b9f96ac5179ec3ee1ecd428dea0caa35c455cab1b3e7a73c740306","776084ff5d871a19ffe2992bc1f7318d0187e34e5a4a7da4eeb78bdf9501e621","612e990e85f99aa8f2329d6d4d755713a44bd5c2041b02baae19c3ed1523f1de","4a259c19075fb64b9c302da22c51feb14fb8ad0775a780fccbef6a9e6c082c63","54223032d8849dd76ec6087684f361e9973c8de9c643b6a9ace67c136b13a326","0ae96d34bca21bb9118f2a8269a625ba4eee909c5d14d475a2eef33cea431552","a38c5518309b0e8f832f6fd53641ac69eeee77b66a03864a2688438e5402d3e5","d8931c54a30eea4ecc0afec72a4c81af8ddfebbec5c424b58c30bc7d5cbacd6c","6ff08c4d0269c9df488ab989923859d733cc35ba0eb65ce146d80f0487445088","2e1cd25ab4b887717e27b7013d9b5f1ee1e21406f3bc60f6db06383839e6d35a","84b504a59014d3e72dd4113089825b496620eb0647c47d2e56eeb105319f95f2","27975250d16d95779140c1c2231e2f7b9d7764f4bb716b19880c01eeea715452",{"version":"d3f8baceaadeaacb12a4648ac31f1d1dc9b63b495681ab521823332d2554cbee","signature":"e57b10197b1246167ee0c033432ed4556d05f1e674c9b828a37c79d3bc2f3c80"},"45a910666b455daf042c0a0cfa610c20ea59a0aaf702f93d3b467a05f9a27e20","5580ff53b5f6f1ecdb68ecb61327e63112f97660912c15444c1f8a08f69c19dc","1fcb8b15db812281d69a3090d488903f9e93033004aef9d8889ca3ad0753a96f","84fb7c52fc116ddcbd1b34535e387053f2a0134d11c5e39b193f4c1328fb1fb5","bdf5a95eb0a2dd1d39805bdf51b46ba012bb9b92b2ddaae16219595bba7678a5","9f794a0e8550a03baff865a3961cc22afbd85bc4ba9672bdda036971928f85f4","66a697d1e4cdbf25cdce4644a8085a8563041fa8c7731d4d9f5e8f22e66ba72c","4f1ae3f24125216cf07c5211a3f00d2bb4782d7cc76c0681603f8249f9232ff0","d3fb92a5640f83f7844d60b35317a0f95c27e3658a749d76d218c461ad091668","8bc2cad630da1033c1fd8d7df2bffb18af0da6113bd086a8bbec04a2471a1e00","d1f8bfcd91b284657ef8187c55ace7db91a3c43e642c3f14e54364154932f7e4","f54c92bfcae54f360fe79514746efce4870e4ddabc064e95d406bba291e9f672","175fd7186fa6a70f9db9b270a04a503cae23cf01cb77e3905bac115c38424cf7","c993f7ed1b8e1023c1f2ee5b262dbc3b70b27475674e40a53a58591f9972dacc","fd3cd8bf3c90ef4694195a617a5daaac561d8be52ba33c607f170c11f3c50154","6852fc2f309e330e38694bad95bde670c384d1498bf4fbe3a751761b43279934",{"version":"fc46b90ef00ea80de64313ca101e3377e82c7de5b2b8cc82ec324ef64062dfd2","signature":"51d71dbcbf7dfc9fa475d1d2db8c744fc93cb91fb8b4e6e3724377066008e745"},{"version":"0dc23f34b6ab3196dc8551971ea9066e4a8807f812506007189b1010d7025e9d","signature":"04130e865406d542194f0ca04c131174c7b7230b4c7b1ffe6deb723b411e5122"},{"version":"f287cf1ae78dadca66f0fff910164af2e66d7e1ee1ef4aa53e8bf9ac364d086a","signature":"ca2cd04f36686a52bf72f3a75f34f09d496abefb9410c13d609c968956d23fa8"},"91bdb91e83ad82b3a68955033c35413e11158a56448534cc11dae2734cab0d8f","fc8ed8a75b39d372ea11553e253c763a75b8447f6a5a3b0c3509b21803ce4783","6562fc4b9b470ee474add192278b9ad7d863b1096f57c7aeb26e6b15a86e51a7","19109153165b1279adbddfac3f9182ef2274cacc9dd2dbadbff7983332343348","b7b4da95464f11da1b8de59ed34f6deb740d14fcdd54065fdbbe850741ae958c","64d7747acb1d36374e9c884773b6dbede826dd9684cecad3c7fb4ce7960f90d7","47e62f697f75c990750842294e175977588557f15a9731625e7e3c882b4b1d24","ef5a427017c481641f81327b63c13c810eaf49bf770986ae959de10c12242dff","c633deeb89a5a7142bce011d097bc4d354533c6f51a5b25404355a968414f29a","90cf3b12cd05d01c42193be1cd25af2c8dbef608ae143e5eaacf73cdb99840d2","4e37a214f2cd5a350affba5580d1d7c01ca83da6393ef2c13a66d74fc7b95eac","3157fa89ebde7e5d5499da49d8ae13e523c1de12d5c1285251c17b7672887b1e","930446bf32192f698b78f8ea4b309d8c2cfe02ab5ad78e4db907417405ebf5e7","729b819a6779d842c3a6908ba4ed93d9fe50e2533d989f05f55a4811b3dd9910","c6591dc2b834e9be50f97edb393c4673e9b66f5689c90d69a71c7da962a0563a","0841c3aed9354ad025302d5c7cde53916825047646e559d918b62a31500aebe7","7c515715da56f17e695e2c3611cf073d2cebfd417497652b35f9042b7235d5b2","a4942fc385f0368be5a50d7e7280c5c6ad47b082a9eaa0284042c89ce2df9e08","91072b0ddd41ce84a3c85f36cf927f2e7b1724f7ce71accf16715d99bafc113a",{"version":"983b13f3704a32ddb36798a309baa3275f1833424dfd199268bc104c344015da","signature":"9ee9fb6931cbcd7cdf487aa2322bc5a1608cef1dd36ea4e8f0ac5e4500fb4574"},{"version":"efe026cccf176ebb4989defd182b1402ad6b432248f85efec8adfdcd1914ef7a","signature":"66fdfd3fb3a180a39b3a465a45c2682e1123505d6bda88f2cd13707806955f0e"},"a53c6611a7061c8a193f28158a0d8b444ee39595d11d1708643222dce3c88449","cc703e7df0457b35086d815d6ff33cd3452317d7a8d7f152597f8dbc6459c5f9","e24b93132bafb120fa11f2454152834abfe47179a2dd96abdbbc57734ed6472b","82bd382cdf173bc58e91d1e25c7acf91ff443983e5c68978082ad5f2877f9af9","f488ac0001e44c0038e04b5134ff153e6bd666e2eba11bb884543a708be88a95",{"version":"b0cd303641a5575deb48407b2a64c83fdcaa35d4cc4965167b167f13c0564104","signature":"090ea064f7de7b504d1168af39eaf9fd59920450ab581dfd5f7458d1bf3554a0"},{"version":"7cbbf54792b9ac0ce2743af6e41cb475bf08254d26864105169d0ec596267ba4","signature":"9df2a6860b73b9b44d63bfaf3938d3f29abb37b5d391420b6def8f54eee17c5a"},{"version":"b115b8d6869fe7704e4f658b35520f7a8e20089977d6af2497c4afadc7092cbe","signature":"8738ff26cb6ed57db7a193f0d0dc9dde271aef5abc8c0d75693f230876594d43"},{"version":"429495125cb6cb7b4819c396b535e5aa057730e92ef6ab96d9f0b709f6460c2d","signature":"04eafb317a7fe2573471ce70d5955e03527d1597c120f2483aae6b5815127df9"},{"version":"6b3875e799fc477088fe196fe847e7ee1e56d535abf5ff98056e20c2ad92f939","signature":"ebb66422766f0304bd7a4d53ab79034921277fe632062c464d4227629e1f833d"},{"version":"e02e0d426e98a3c1ba7c2588d7a490afec59d602f861080ca33cfcd5c6dc0a9d","signature":"adbeb36efd0d65689eddce562811b5aaf8d46c2719be7d669e86607f56acfa74"},"45d4c0b459175dd8a78fec4c0597bbb02d7b6a708c2a1400c4575618d717da13","bc6dd50ac2fc9a7ca6488811b116bd0ddd606338db0bb97852c8fcf757e2d7f5","92edb6e257fa64d3baae647490e041912684f5dc1f243d0aedd60b4b383ff50b","cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562",{"version":"b9734142a4b241cfb505be4a2eb0261d211647df7c73043f817f4fdd8d96c846","affectsGlobalScope":true},{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},"89ccbe04e737ce613f5f04990271cfa84901446350b8551b0555ddf19319723b","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","d70c026dd2eeaa974f430ea229230a1897fdb897dc74659deebe2afd4feeb08f","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","98f9d826db9cd99d27a01a59ee5f22863df00ccf1aaf43e1d7db80ebf716f7c3","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3cf0d343c2276842a5b617f22ba82af6322c7cfe8bb52238ffc0c491a3c21019","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9",{"version":"f2eff8704452659641164876c1ef0df4174659ce7311b0665798ea3f556fa9ad","affectsGlobalScope":true},"6bb8d7433a29fbd33df8e9693f1788a273a9eb90b96c8f99c745678c7db623f1","0e60e0cbf2283adfd5a15430ae548cd2f662d581b5da6ecd98220203e7067c70","6d727c1f6a7122c04e4f7c164c5e6f460c21ada618856894cdaa6ac25e95f38c","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","a73a445c1e0a6d0f8b48e8eb22dc9d647896783a7f8991cbbc31c0d94bf1f5a2","8a19491eba2108d5c333c249699f40aff05ad312c04a17504573b27d91f0aede","3dce33e7eb25594863b8e615f14a45ab98190d85953436750644212d8a18c066","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e",{"version":"2c3b8be03577c98530ef9cb1a76e2c812636a871f367e9edf4c5f3ce702b77f8","affectsGlobalScope":true},"70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","e9eb1b173aa166892f3eddab182e49cfe59aa2e14d33aedb6b49d175ed6a3750"],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"downlevelIteration":true,"emitDeclarationOnly":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"module":6,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./types","removeComments":true,"rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"strictNullChecks":true,"strictPropertyInitialization":true,"suppressImplicitAnyIndexErrors":true,"target":7},"fileIdsList":[[88,176,180,182,183,184,185],[88,176,180,183,186],[88,176],[88,176,178],[88,178,179],[88],[88,174,175,177,188],[88,187],[88,181],[88,176,180],[88,193],[88,195],[88,197,198],[88,197],[88,199],[88,95],[58,61,87,88,95,227,228,229],[88,231],[88,234],[88,235],[58,88,95],[88,252],[88,240,242,243,244,245,246,247,248,249,250,251,252],[88,240,241,243,244,245,246,247,248,249,250,251,252],[88,241,242,243,244,245,246,247,248,249,250,251,252],[88,240,241,242,244,245,246,247,248,249,250,251,252],[88,240,241,242,243,245,246,247,248,249,250,251,252],[88,240,241,242,243,244,246,247,248,249,250,251,252],[88,240,241,242,243,244,245,247,248,249,250,251,252],[88,240,241,242,243,244,245,246,248,249,250,251,252],[88,240,241,242,243,244,245,246,247,249,250,251,252],[88,240,241,242,243,244,245,246,247,248,250,251,252],[88,240,241,242,243,244,245,246,247,248,249,251,252],[88,240,241,242,243,244,245,246,247,248,249,250,252],[88,240,241,242,243,244,245,246,247,248,249,250,251],[43,88],[46,88],[47,52,88],[48,58,59,66,76,87,88],[48,49,58,66,88],[50,88],[51,52,59,67,88],[52,76,84,88],[53,55,58,66,88],[54,88],[55,56,88],[57,58,88],[58,88],[58,59,60,76,87,88],[58,59,60,76,79,88],[88,92],[61,66,76,87,88],[58,59,61,62,66,76,84,87,88],[61,63,76,84,87,88],[43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94],[58,64,88],[65,87,88],[55,58,66,76,88],[67,88],[68,88],[46,69,88],[70,86,88,92],[71,88],[72,88],[58,73,74,88],[73,75,88,90],[58,76,77,78,79,88],[76,78,88],[76,77,88],[79,88],[80,88],[58,82,83,88],[82,83,88],[52,66,76,84,88],[85,88],[66,86,88],[47,61,72,87,88],[52,88],[76,88,89],[88,90],[88,91],[47,52,58,60,69,76,87,88,90,92],[76,88,93],[61,76,88,95],[88,262],[88,265],[88,267],[88,163,164],[88,96],[88,101],[58,88,95,99],[88,99,100,102],[88,97],[88,98],[88,109,110,111,112],[88,109,110],[88,165],[88,113,161],[88,161],[88,160,161,162,166,167,168,169,170],[88,113],[88,106,107],[88,106],[88,104,105],[88,116,118],[88,116,117,122],[88,116,119,120,121],[88,214,215,216,217],[88,214],[88,113,214],[88,154,155],[88,150,152,153,156],[88,151],[88,148,149],[88,152],[88,97,103,108,123,124,125,129,130,131,133,134,135],[88,113,123,124,136],[88,123],[88,97,123,136],[88,97,113,123,136],[88,124,125,126,127,128,129,130,131,132,133,134,135,136],[88,123,136],[58,88,95,113,123,129,132,136],[88,97,123,129],[88,97,113,123,126,127,128,136],[88,113,123,136],[88,97,113,123,129],[88,137,145],[88,113,137,140],[58,88,95,123,134,136,138,139,140,142,143],[58,88,95,113,129,133,137,138,139,140,141,142,144],[88,138,139,140,141,142,143,144],[88,113,129,138,140,144,145],[88,129,132,144],[88,129,132,138,139,144],[88,205],[61,88,95],[58,88,92,114,115],[88,207],[88,202,203,204,208,209,210],[88,205,206],[42,88,146,173,190],[42,88,146],[42,88,146,194,196,199,200,201,211],[42,88],[42,88,173,190,191,192,212,213,219,220,221,222,223,224],[42,88,108,146,147,157,158,159,171,172],[42,88,146,173,222],[42,88,173],[42,88,146,218],[42,88,146,184,189],[42,88,146,172],[42,88,113,146,173,192,213,221],[146],[108,146,171],[146,218],[113,146]],"referencedMap":[[186,1],[187,2],[178,3],[179,4],[180,5],[176,6],[174,6],[189,7],[177,3],[175,6],[188,8],[182,9],[181,6],[183,6],[184,10],[185,6],[193,6],[194,11],[195,6],[196,12],[199,13],[197,6],[198,14],[200,12],[201,15],[226,16],[230,17],[232,18],[231,6],[233,6],[228,6],[234,6],[235,19],[236,20],[237,6],[238,6],[239,21],[253,22],[241,23],[242,24],[240,25],[243,26],[244,27],[245,28],[246,29],[247,30],[248,31],[249,32],[250,33],[251,34],[252,35],[254,6],[255,6],[256,6],[257,6],[43,36],[44,36],[46,37],[47,38],[48,39],[49,40],[50,41],[51,42],[52,43],[53,44],[54,45],[55,46],[56,46],[57,47],[58,48],[59,49],[60,50],[45,51],[94,6],[61,52],[62,53],[63,54],[95,55],[64,56],[65,57],[66,58],[67,59],[68,60],[69,61],[70,62],[71,63],[72,64],[73,65],[74,65],[75,66],[76,67],[78,68],[77,69],[79,70],[80,71],[81,6],[82,72],[83,73],[84,74],[85,75],[86,76],[87,77],[88,78],[89,79],[90,80],[91,81],[92,82],[93,83],[258,6],[259,16],[260,16],[229,84],[261,16],[263,85],[262,6],[264,6],[266,86],[265,6],[267,6],[268,87],[163,6],[164,6],[165,88],[96,21],[97,89],[101,6],[102,90],[100,91],[103,92],[98,93],[99,94],[113,95],[109,6],[110,21],[111,96],[112,6],[160,6],[166,97],[162,98],[167,99],[171,100],[168,6],[161,101],[169,6],[170,99],[108,102],[107,103],[106,104],[104,6],[105,6],[121,105],[119,105],[117,6],[123,106],[118,6],[120,105],[122,107],[218,108],[216,109],[215,110],[214,6],[217,110],[156,111],[154,6],[155,6],[157,112],[152,113],[151,6],[149,6],[148,6],[150,114],[153,115],[136,116],[125,117],[135,118],[131,119],[130,120],[137,121],[124,122],[126,122],[133,123],[127,124],[129,125],[132,126],[128,127],[134,118],[146,128],[139,129],[144,130],[143,131],[145,132],[141,133],[142,128],[138,134],[140,135],[158,6],[159,6],[147,16],[227,48],[206,136],[205,6],[114,137],[116,138],[172,6],[115,21],[42,6],[8,6],[10,6],[9,6],[2,6],[11,6],[12,6],[13,6],[14,6],[15,6],[16,6],[17,6],[18,6],[3,6],[4,6],[22,6],[19,6],[20,6],[21,6],[23,6],[24,6],[25,6],[5,6],[26,6],[27,6],[28,6],[29,6],[6,6],[30,6],[31,6],[32,6],[33,6],[7,6],[34,6],[39,6],[40,6],[35,6],[36,6],[37,6],[38,6],[1,6],[41,6],[202,6],[203,6],[204,6],[208,139],[211,140],[209,139],[207,141],[210,6],[191,142],[192,143],[212,144],[213,145],[225,146],[224,145],[173,147],[221,148],[223,149],[219,150],[190,151],[220,152],[222,153]],"exportedModulesMap":[[186,1],[187,2],[178,3],[179,4],[180,5],[176,6],[174,6],[189,7],[177,3],[175,6],[188,8],[182,9],[181,6],[183,6],[184,10],[185,6],[193,6],[194,11],[195,6],[196,12],[199,13],[197,6],[198,14],[200,12],[201,15],[226,16],[230,17],[232,18],[231,6],[233,6],[228,6],[234,6],[235,19],[236,20],[237,6],[238,6],[239,21],[253,22],[241,23],[242,24],[240,25],[243,26],[244,27],[245,28],[246,29],[247,30],[248,31],[249,32],[250,33],[251,34],[252,35],[254,6],[255,6],[256,6],[257,6],[43,36],[44,36],[46,37],[47,38],[48,39],[49,40],[50,41],[51,42],[52,43],[53,44],[54,45],[55,46],[56,46],[57,47],[58,48],[59,49],[60,50],[45,51],[94,6],[61,52],[62,53],[63,54],[95,55],[64,56],[65,57],[66,58],[67,59],[68,60],[69,61],[70,62],[71,63],[72,64],[73,65],[74,65],[75,66],[76,67],[78,68],[77,69],[79,70],[80,71],[81,6],[82,72],[83,73],[84,74],[85,75],[86,76],[87,77],[88,78],[89,79],[90,80],[91,81],[92,82],[93,83],[258,6],[259,16],[260,16],[229,84],[261,16],[263,85],[262,6],[264,6],[266,86],[265,6],[267,6],[268,87],[163,6],[164,6],[165,88],[96,21],[97,89],[101,6],[102,90],[100,91],[103,92],[98,93],[99,94],[113,95],[109,6],[110,21],[111,96],[112,6],[160,6],[166,97],[162,98],[167,99],[171,100],[168,6],[161,101],[169,6],[170,99],[108,102],[107,103],[106,104],[104,6],[105,6],[121,105],[119,105],[117,6],[123,106],[118,6],[120,105],[122,107],[218,108],[216,109],[215,110],[214,6],[217,110],[156,111],[154,6],[155,6],[157,112],[152,113],[151,6],[149,6],[148,6],[150,114],[153,115],[136,116],[125,117],[135,118],[131,119],[130,120],[137,121],[124,122],[126,122],[133,123],[127,124],[129,125],[132,126],[128,127],[134,118],[146,128],[139,129],[144,130],[143,131],[145,132],[141,133],[142,128],[138,134],[140,135],[158,6],[159,6],[147,16],[227,48],[206,136],[205,6],[114,137],[116,138],[172,6],[115,21],[42,6],[8,6],[10,6],[9,6],[2,6],[11,6],[12,6],[13,6],[14,6],[15,6],[16,6],[17,6],[18,6],[3,6],[4,6],[22,6],[19,6],[20,6],[21,6],[23,6],[24,6],[25,6],[5,6],[26,6],[27,6],[28,6],[29,6],[6,6],[30,6],[31,6],[32,6],[33,6],[7,6],[34,6],[39,6],[40,6],[35,6],[36,6],[37,6],[38,6],[1,6],[41,6],[202,6],[203,6],[204,6],[208,139],[211,140],[209,139],[207,141],[210,6],[191,154],[192,154],[212,154],[225,146],[173,155],[221,154],[219,156],[190,154],[220,154],[222,157]],"semanticDiagnosticsPerFile":[186,187,178,179,180,176,174,189,177,175,188,182,181,183,184,185,193,194,195,196,199,197,198,200,201,226,230,232,231,233,228,234,235,236,237,238,239,253,241,242,240,243,244,245,246,247,248,249,250,251,252,254,255,256,257,43,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,45,94,61,62,63,95,64,65,66,67,68,69,70,71,72,73,74,75,76,78,77,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,258,259,260,229,261,263,262,264,266,265,267,268,163,164,165,96,97,101,102,100,103,98,99,113,109,110,111,112,160,166,162,167,171,168,161,169,170,108,107,106,104,105,121,119,117,123,118,120,122,218,216,215,214,217,156,154,155,157,152,151,149,148,150,153,136,125,135,131,130,137,124,126,133,127,129,132,128,134,146,139,144,143,145,141,142,138,140,158,159,147,227,206,205,114,116,172,115,42,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,30,31,32,33,7,34,39,40,35,36,37,38,1,41,202,203,204,208,211,209,207,210,191,192,212,213,225,224,173,221,223,219,190,220,222]},"version":"4.7.4"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/misc.d.ts b/node_modules/@walletconnect/utils/dist/types/misc.d.ts +index 3ed4463..2f16884 100644 +--- a/node_modules/@walletconnect/utils/dist/types/misc.d.ts ++++ b/node_modules/@walletconnect/utils/dist/types/misc.d.ts +@@ -57,6 +57,7 @@ export declare function calcExpiry(ttl: number, now?: number): number; + export declare function isExpired(expiry: number): boolean; + export declare function engineEvent(event: EngineTypes.Event, id?: number | string | undefined): string; + export declare function mergeArrays(a?: T[], b?: T[]): T[]; ++export declare function isTelegram(): boolean; + export declare function handleDeeplinkRedirect({ id, topic, wcDeepLink, }: { + id: number; + topic: string; +diff --git a/node_modules/@walletconnect/utils/dist/types/misc.d.ts.map b/node_modules/@walletconnect/utils/dist/types/misc.d.ts.map +index ceee81e..89f03a6 100644 +--- a/node_modules/@walletconnect/utils/dist/types/misc.d.ts.map ++++ b/node_modules/@walletconnect/utils/dist/types/misc.d.ts.map +@@ -1 +1 @@ +-{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../src/misc.ts"],"names":[],"mappings":"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"} +\ No newline at end of file ++{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../src/misc.ts"],"names":[],"mappings":"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"} +\ No newline at end of file