@wormhole-foundation/wormhole-connect 2.2.0 → 2.3.0-beta.1-development

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/README.md +0 -1
  2. package/dist/main.js +108 -108
  3. package/dist/src/config/tokens.d.ts +1 -1
  4. package/dist/src/config/tokens.d.ts.map +1 -1
  5. package/dist/src/consts/wallet.d.ts.map +1 -1
  6. package/dist/src/hooks/useConfirmTransaction.d.ts +12 -0
  7. package/dist/src/hooks/useConfirmTransaction.d.ts.map +1 -0
  8. package/dist/src/hooks/useGasSlider.d.ts +1 -2
  9. package/dist/src/hooks/useGasSlider.d.ts.map +1 -1
  10. package/dist/src/hooks/useWalletCompatibility.d.ts.map +1 -1
  11. package/dist/src/index.d.ts +2 -2
  12. package/dist/src/index.d.ts.map +1 -1
  13. package/dist/src/routes/operator.d.ts +0 -1
  14. package/dist/src/routes/operator.d.ts.map +1 -1
  15. package/dist/src/routes/sdkv2/route.d.ts +0 -1
  16. package/dist/src/routes/sdkv2/route.d.ts.map +1 -1
  17. package/dist/src/store/transferInput.d.ts +2 -4
  18. package/dist/src/store/transferInput.d.ts.map +1 -1
  19. package/dist/src/telemetry/index.d.ts +1 -0
  20. package/dist/src/telemetry/index.d.ts.map +1 -1
  21. package/dist/src/utils/wallet/index.d.ts +1 -1
  22. package/dist/src/utils/wallet/index.d.ts.map +1 -1
  23. package/dist/src/views/v2/Bridge/AmountInput/index.d.ts.map +1 -1
  24. package/dist/src/views/v2/Bridge/AssetPicker/SearchableList/index.d.ts.map +1 -1
  25. package/dist/src/views/v2/Bridge/AssetPicker/index.d.ts +1 -0
  26. package/dist/src/views/v2/Bridge/AssetPicker/index.d.ts.map +1 -1
  27. package/dist/src/views/v2/Bridge/{ReviewTransaction/GasSlider.d.ts → GasSlider/index.d.ts} +1 -1
  28. package/dist/src/views/v2/Bridge/GasSlider/index.d.ts.map +1 -0
  29. package/dist/src/views/v2/Bridge/Routes/SingleRoute.d.ts.map +1 -1
  30. package/dist/src/views/v2/Bridge/SwapInputs/index.d.ts.map +1 -1
  31. package/dist/src/views/v2/Bridge/WalletConnector/Controller.d.ts.map +1 -1
  32. package/dist/src/views/v2/Bridge/index.d.ts.map +1 -1
  33. package/dist/src/views/v2/TxHistory/Item/index.d.ts.map +1 -1
  34. package/dist/src/views/v2/TxHistory/Widget/Item.d.ts +1 -0
  35. package/dist/src/views/v2/TxHistory/Widget/Item.d.ts.map +1 -1
  36. package/dist/src/views/v2/TxHistory/Widget/index.d.ts +3 -1
  37. package/dist/src/views/v2/TxHistory/Widget/index.d.ts.map +1 -1
  38. package/lib/{aptos-CWfp2v_P.js → aptos-CVrk2e8x.js} +2 -2
  39. package/lib/{aptos-7dMQQEIW.mjs → aptos-Cd2RxmTX.mjs} +5 -5
  40. package/lib/{aptos-umg2ncs_.js → aptos-D9RWCwaG.js} +1 -1
  41. package/lib/{aptos-BUemveTM.mjs → aptos-DqQeHeWd.mjs} +2 -2
  42. package/lib/{base64-BlOlyzUY.js → base64-D7N0XEtt.js} +1 -1
  43. package/lib/{base64-CIH-T7Pn.mjs → base64-DOdqKfyo.mjs} +1 -1
  44. package/lib/{ccip-BhU7SDb9.mjs → ccip-B1d8Cfcc.mjs} +1 -1
  45. package/lib/{ccip-CdkU-__S.js → ccip-C4FhwB7R.js} +1 -1
  46. package/lib/{chunk-IMTC3J2M-Bm_KxGLU.mjs → chunk-IMTC3J2M-B2ra0Z4c.mjs} +3 -3
  47. package/lib/{chunk-IMTC3J2M-CG7LPkYt.js → chunk-IMTC3J2M-DtuxbHq9.js} +1 -1
  48. package/lib/{events-jQ_Do8B1.js → events-BC1Svub2.js} +1 -1
  49. package/lib/{events-hPS-mKjU.mjs → events-BrouOFcp.mjs} +1 -1
  50. package/lib/{evm-Ck-LC8K1.js → evm-BXku4GNW.js} +3 -3
  51. package/lib/{evm-AFZ_po3U.mjs → evm-Ccy4JfF6.mjs} +17 -17
  52. package/lib/{evm-DvlAO_-c.mjs → evm-CfS9xq5t.mjs} +5 -5
  53. package/lib/{evm-D4OaAvxv.js → evm-DT_W87u-.js} +1 -1
  54. package/lib/{index-DyvLFo_F.mjs → index--0DQj_F2.mjs} +2 -2
  55. package/lib/{index-CdrPNIu_.js → index-1EgmRX-a.js} +1 -1
  56. package/lib/{index-BUDas0Q7.mjs → index-1LP1mA3c.mjs} +1 -1
  57. package/lib/{index-BchoBDpT.mjs → index-B4hbI0dp.mjs} +2 -2
  58. package/lib/{index-D5fAF0iQ.js → index-B58a-RHd.js} +1 -1
  59. package/lib/{index-B3nUhqKI.mjs → index-BCjWPjhx.mjs} +2 -2
  60. package/lib/{index-B9WBHQFN.js → index-BFFNnNKW.js} +1 -1
  61. package/lib/{index-MxqIZiRX.mjs → index-BODYDhXF.mjs} +2 -2
  62. package/lib/{index-ihbUzPuY.mjs → index-BcJBEeFA.mjs} +1 -1
  63. package/lib/{index-Dhyj87bh.mjs → index-BdodDbVS.mjs} +1 -1
  64. package/lib/{index-D0QNNKvo.mjs → index-Bdopcy73.mjs} +4 -4
  65. package/lib/{index-WPYOQdpa.js → index-Br4Igv20.js} +1 -1
  66. package/lib/{index-NWE7RRiw.mjs → index-BuGFh8C7.mjs} +2 -2
  67. package/lib/{index-KdiLn9Rj.js → index-C-nWxaLg.js} +1 -1
  68. package/lib/{index-DTfWrGt3.mjs → index-C0IvEwkt.mjs} +1 -1
  69. package/lib/{index-Df5E8ttw.js → index-CCWEM47k.js} +1 -1
  70. package/lib/{index-Bd3pCFb1.js → index-CSKbEqQP.js} +1 -1
  71. package/lib/{index-CaNzAG1x.mjs → index-CU9KzHgH.mjs} +7625 -7691
  72. package/lib/{index-D9o7O_OT.js → index-CUm6qdjR.js} +1 -1
  73. package/lib/{index-PNYcH9VB.js → index-Camctzsh.js} +1 -1
  74. package/lib/{index-DV2Mc1nu.js → index-CdB9Qj-M.js} +1 -1
  75. package/lib/{index-CUR8Z8Cf.js → index-CgISt_Up.js} +1 -1
  76. package/lib/{index-C0ecUbom.mjs → index-Cmmxyf4Y.mjs} +2 -2
  77. package/lib/{index-CHWND-D1.mjs → index-CnkeKt9s.mjs} +3 -3
  78. package/lib/{index-BWsfR9uT.mjs → index-CpQ7f1YB.mjs} +1 -1
  79. package/lib/{index-BbSC7v8g.js → index-D3Mg9Eh4.js} +1 -1
  80. package/lib/{index-BFXBE_Mo.js → index-D5qBrm4q.js} +1 -1
  81. package/lib/{index-wHDS4NqS.js → index-DB5xCELT.js} +1 -1
  82. package/lib/{index-AVSrA-i6.js → index-DSTC1VGB.js} +1 -1
  83. package/lib/{index-Derjp7Zu.mjs → index-DX-wGKTH.mjs} +2 -2
  84. package/lib/{index-hus1Sl4S.js → index-DihlIPlD.js} +1 -1
  85. package/lib/{index-D1q2O2Av.mjs → index-Dk29guyA.mjs} +3 -3
  86. package/lib/{index-Bu1PkKLG.js → index-DqO3qLPG.js} +1 -1
  87. package/lib/{index-CtS6jcgq.js → index-Dsd09IV6.js} +1 -1
  88. package/lib/{index-BZs20N4K.mjs → index-DxslawxO.mjs} +2 -2
  89. package/lib/{index-DirgoiOD.js → index-DyqHtpmj.js} +1 -1
  90. package/lib/{index-BEhe2aRM.js → index-RFgTGgbk.js} +99 -99
  91. package/lib/{index-nWaQESZp.mjs → index-Y5ArJjKr.mjs} +1 -1
  92. package/lib/{index-JVwNffKI.mjs → index-s53oBunM.mjs} +2 -2
  93. package/lib/{index-BKBGPzmc.mjs → index-s7S0StCX.mjs} +1 -1
  94. package/lib/{index-BNe7LUKU.mjs → index-vEkD7kom.mjs} +5 -5
  95. package/lib/{index-Bi5J2r-k.js → index-xeYB5lOA.js} +1 -1
  96. package/lib/{index.es-D6eM34wK.mjs → index.es-DD7lO_GM.mjs} +6 -6
  97. package/lib/{index.es-CJrTwrY5.js → index.es-PJjmKf_k.js} +2 -2
  98. package/lib/index.js +1 -1
  99. package/lib/index.mjs +32 -19
  100. package/lib/{signer-C1hgiPI9.js → signer-Bs70WVKc.js} +1 -1
  101. package/lib/{signer-CXxUSLSd.mjs → signer-dwfhV60M.mjs} +1 -1
  102. package/lib/solana-B1Wsl1Pg.js +1 -0
  103. package/lib/solana-BDUnTuLS.mjs +16 -0
  104. package/lib/{solana-D4eoBu_Q.mjs → solana-D8IW8eXX.mjs} +4 -4
  105. package/lib/{solana-XXmHFxEb.js → solana-DK3yyz37.js} +1 -1
  106. package/lib/{solanaEmbed.esm-CBSm6nV9.js → solanaEmbed.esm-DjNz5swk.js} +1 -1
  107. package/lib/{solanaEmbed.esm-dce8g5AQ.mjs → solanaEmbed.esm-DlyRzA6N.mjs} +2 -2
  108. package/lib/src/config/tokens.d.ts +1 -1
  109. package/lib/src/config/tokens.d.ts.map +1 -1
  110. package/lib/src/consts/wallet.d.ts.map +1 -1
  111. package/lib/src/hooks/useConfirmTransaction.d.ts +12 -0
  112. package/lib/src/hooks/useConfirmTransaction.d.ts.map +1 -0
  113. package/lib/src/hooks/useGasSlider.d.ts +1 -2
  114. package/lib/src/hooks/useGasSlider.d.ts.map +1 -1
  115. package/lib/src/hooks/useWalletCompatibility.d.ts.map +1 -1
  116. package/lib/src/index.d.ts +2 -2
  117. package/lib/src/index.d.ts.map +1 -1
  118. package/lib/src/routes/operator.d.ts +0 -1
  119. package/lib/src/routes/operator.d.ts.map +1 -1
  120. package/lib/src/routes/sdkv2/route.d.ts +0 -1
  121. package/lib/src/routes/sdkv2/route.d.ts.map +1 -1
  122. package/lib/src/store/transferInput.d.ts +2 -4
  123. package/lib/src/store/transferInput.d.ts.map +1 -1
  124. package/lib/src/telemetry/index.d.ts +1 -0
  125. package/lib/src/telemetry/index.d.ts.map +1 -1
  126. package/lib/src/utils/wallet/index.d.ts +1 -1
  127. package/lib/src/utils/wallet/index.d.ts.map +1 -1
  128. package/lib/src/views/v2/Bridge/AmountInput/index.d.ts.map +1 -1
  129. package/lib/src/views/v2/Bridge/AssetPicker/SearchableList/index.d.ts.map +1 -1
  130. package/lib/src/views/v2/Bridge/AssetPicker/index.d.ts +1 -0
  131. package/lib/src/views/v2/Bridge/AssetPicker/index.d.ts.map +1 -1
  132. package/lib/src/views/v2/Bridge/{ReviewTransaction/GasSlider.d.ts → GasSlider/index.d.ts} +1 -1
  133. package/lib/src/views/v2/Bridge/GasSlider/index.d.ts.map +1 -0
  134. package/lib/src/views/v2/Bridge/Routes/SingleRoute.d.ts.map +1 -1
  135. package/lib/src/views/v2/Bridge/SwapInputs/index.d.ts.map +1 -1
  136. package/lib/src/views/v2/Bridge/WalletConnector/Controller.d.ts.map +1 -1
  137. package/lib/src/views/v2/Bridge/index.d.ts.map +1 -1
  138. package/lib/src/views/v2/TxHistory/Item/index.d.ts.map +1 -1
  139. package/lib/src/views/v2/TxHistory/Widget/Item.d.ts +1 -0
  140. package/lib/src/views/v2/TxHistory/Widget/Item.d.ts.map +1 -1
  141. package/lib/src/views/v2/TxHistory/Widget/index.d.ts +3 -1
  142. package/lib/src/views/v2/TxHistory/Widget/index.d.ts.map +1 -1
  143. package/lib/{sui-BEvt3G9o.mjs → sui-BN9_xkve.mjs} +1 -1
  144. package/lib/{sui-BDZkyTVG.js → sui-BRZ30Let.js} +1 -1
  145. package/lib/{sui-CrYGHvcd.js → sui-BSr1lx4J.js} +2 -2
  146. package/lib/{sui-D8i87rc-.mjs → sui-CIYeuWco.mjs} +5 -5
  147. package/package.json +18 -18
  148. package/dist/src/hooks/useComputeSourceTokens.d.ts +0 -15
  149. package/dist/src/hooks/useComputeSourceTokens.d.ts.map +0 -1
  150. package/dist/src/views/v2/Bridge/ReviewTransaction/GasSlider.d.ts.map +0 -1
  151. package/dist/src/views/v2/Bridge/ReviewTransaction/SendError.d.ts +0 -8
  152. package/dist/src/views/v2/Bridge/ReviewTransaction/SendError.d.ts.map +0 -1
  153. package/dist/src/views/v2/Bridge/ReviewTransaction/index.d.ts +0 -9
  154. package/dist/src/views/v2/Bridge/ReviewTransaction/index.d.ts.map +0 -1
  155. package/lib/solana-B0ZJBh57.js +0 -1
  156. package/lib/solana-C06kaujM.mjs +0 -16
  157. package/lib/src/hooks/useComputeSourceTokens.d.ts +0 -15
  158. package/lib/src/hooks/useComputeSourceTokens.d.ts.map +0 -1
  159. package/lib/src/views/v2/Bridge/ReviewTransaction/GasSlider.d.ts.map +0 -1
  160. package/lib/src/views/v2/Bridge/ReviewTransaction/SendError.d.ts +0 -8
  161. package/lib/src/views/v2/Bridge/ReviewTransaction/SendError.d.ts.map +0 -1
  162. package/lib/src/views/v2/Bridge/ReviewTransaction/index.d.ts +0 -9
  163. package/lib/src/views/v2/Bridge/ReviewTransaction/index.d.ts.map +0 -1
@@ -1 +1 @@
1
- "use strict";var B=Object.defineProperty;var O=(d,f,e)=>f in d?B(d,f,{enumerable:!0,configurable:!0,writable:!0,value:e}):d[f]=e;var c=(d,f,e)=>O(d,typeof f!="symbol"?f+"":f,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./index-BEhe2aRM.js");require("./index-KdiLn9Rj.js");const D=new RegExp("^bytes([0-9]+)$"),F=new RegExp("^(u?int)([0-9]*)$"),P=new RegExp("^(.*)\\[([0-9]*)\\]$");function I(d,f,e){switch(d){case"address":return e?a.getBytes(a.zeroPadValue(f,32)):a.getBytes(a.getAddress(f));case"string":return a.toUtf8Bytes(f);case"bytes":return a.getBytes(f);case"bool":return f=f?"0x01":"0x00",e?a.getBytes(a.zeroPadValue(f,32)):a.getBytes(f)}let t=d.match(F);if(t){let b=t[1]==="int",n=parseInt(t[2]||"256");return a.assertArgument((!t[2]||t[2]===String(n))&&n%8===0&&n!==0&&n<=256,"invalid number type","type",d),e&&(n=256),b&&(f=a.toTwos(f,n)),a.getBytes(a.zeroPadValue(a.toBeArray(f),n/8))}if(t=d.match(D),t){const b=parseInt(t[1]);return a.assertArgument(String(b)===t[1]&&b!==0&&b<=32,"invalid bytes type","type",d),a.assertArgument(a.dataLength(f)===b,`invalid value for ${d}`,"value",f),e?a.getBytes(a.zeroPadBytes(f,32)):f}if(t=d.match(P),t&&Array.isArray(f)){const b=t[1],n=parseInt(t[2]||String(f.length));a.assertArgument(n===f.length,`invalid array length for ${d}`,"value",f);const s=[];return f.forEach(function(i){s.push(I(b,i,!0))}),a.getBytes(a.concat(s))}a.assertArgument(!1,"invalid type","type",d)}function U(d,f){a.assertArgument(d.length===f.length,"wrong number of values; expected ${ types.length }","values",f);const e=[];return d.forEach(function(t,b){e.push(I(t,f[b]))}),a.hexlify(a.concat(e))}class x{constructor(f,e,t,b){c(this,"network");c(this,"chain");c(this,"provider");c(this,"contracts");c(this,"chainId");c(this,"circleChainId");c(this,"msgTransmitter");c(this,"tokenMessenger");c(this,"tokenEventHash");c(this,"messageSentEventHash");c(this,"messageReceivedEventHash");var r,p;if(this.network=f,this.chain=e,this.provider=t,this.contracts=b,f==="Devnet")throw new Error("CircleBridge not supported on Devnet");this.chainId=a.networkChainToNativeChainId.get(f,e);const n=a.circleChainId.get(f,e);if(n===void 0)throw new Error(`Circle chain id not found for ${f} ${e}`);this.circleChainId=n;const s=(r=b.cctp)==null?void 0:r.messageTransmitter;if(!s)throw new Error(`Circle Messenge Transmitter contract for domain ${e} not found`);this.msgTransmitter=v.connect(s,t);const i=(p=b.cctp)==null?void 0:p.tokenMessenger;if(!i)throw new Error(`Circle Token Messenger contract for domain ${e} not found`);this.tokenMessenger=M.connect(i,t),this.tokenEventHash=this.tokenMessenger.getEvent("DepositForBurn").fragment.topicHash,this.messageSentEventHash=this.msgTransmitter.getEvent("MessageSent").fragment.topicHash,this.messageReceivedEventHash=this.msgTransmitter.getEvent("MessageReceived").fragment.topicHash}static async fromRpc(f,e){const[t,b]=await a.EvmPlatform.chainFromRpc(f),n=e[b];if(n.network!==t)throw new Error(`Network mismatch: ${n.network} != ${t}`);return new x(t,b,f,n.contracts)}async*redeem(f,e,t){const b=new a.EvmAddress(f).toString(),n=await this.msgTransmitter.receiveMessage.populateTransaction(a.CircleBridge.serialize(e),a.hex.decode(t));yield this.createUnsignedTx(a.addFrom(n,b),"CircleBridge.redeem")}async*transfer(f,e,t){const b=new a.EvmAddress(f).toString(),n=e.address.toUniversalAddress().toUint8Array(),s=a.usdcContract.get(this.network,this.chain),i=a.EvmPlatform.getTokenImplementation(this.provider,s);if(await i.allowance(b,this.tokenMessenger.target)<t){const l=await i.approve.populateTransaction(this.tokenMessenger.target,t);yield this.createUnsignedTx(a.addFrom(l,b),"ERC20.approve of CircleBridge",!1)}const p=await this.tokenMessenger.depositForBurn.populateTransaction(t,a.circleChainId.get(this.network,e.chain),n,s);yield this.createUnsignedTx(a.addFrom(p,b),"CircleBridge.transfer")}async isTransferCompleted(f){const e=a.keccak256(U(["uint32","uint64"],[f.sourceDomain,f.nonce]));return(await this.msgTransmitter.usedNonces.staticCall(e)).toString()==="1"}async parseTransactionDetails(f){const e=await this.provider.getTransactionReceipt(f);if(!e)throw new Error(`No receipt for ${f} on ${this.chain}`);const t=e.logs.filter(o=>o.topics[0]===this.messageSentEventHash).map(o=>{const{topics:E,data:$}=o;return this.msgTransmitter.interface.parseLog({topics:E.slice(),data:$})}).filter(o=>!!o);if(t.length===0)throw new Error(`No log message for message transmitter found in ${f}`);t.length>1&&console.error(`Expected 1 event to be found for transaction, got>${t.length}}`);const[b]=t,{message:n}=b.args,[s,i]=a.CircleBridge.deserialize(a.hex.decode(n)),{payload:r}=s,p=r.messageSender,l=r.mintRecipient,m=a.toCircleChain(this.network,s.sourceDomain),k=a.toCircleChain(this.network,s.destinationDomain),S={chain:m,address:r.burnToken};return{from:{chain:m,address:p},to:{chain:k,address:l},token:S,amount:r.amount,message:s,id:{hash:i}}}createUnsignedTx(f,e,t=!1){return new a.EvmUnsignedTransaction(a.addChainId(f,this.chainId),this.network,this.chain,e,t)}}class R{constructor(f,e,t,b){c(this,"network");c(this,"chain");c(this,"provider");c(this,"contracts");c(this,"circleRelayer");c(this,"chainId");c(this,"tokenAddr");var i;if(this.network=f,this.chain=e,this.provider=t,this.contracts=b,f==="Devnet")throw new Error("AutomaticCircleBridge not supported on Devnet");this.chainId=a.networkChainToNativeChainId.get(f,e);const n=(i=this.contracts.cctp)==null?void 0:i.wormholeRelayer;if(!n)throw new Error(`Wormhole Circle relayer contract for domain ${e} not found`);this.circleRelayer=w.connect(n,t);const s=a.usdcContract.get(this.network,this.chain);if(!s)throw new Error(`USDC contract not found for ${this.network} ${this.chain}`);this.tokenAddr=s}static async fromRpc(f,e){const[t,b]=await a.EvmPlatform.chainFromRpc(f),n=e[b];if(n.network!==t)throw new Error(`Network mismatch: ${n.network} != ${t}`);return new R(t,b,f,n.contracts)}async getRelayerFee(f){return this.circleRelayer.relayerFee(a.toChainId(f),this.tokenAddr)}async*transfer(f,e,t,b){const n=new a.EvmAddress(f).toString(),s=a.chainToChainId(e.chain),i=e.address.toUniversalAddress().toUint8Array(),r=b||0n,p=a.EvmPlatform.getTokenImplementation(this.provider,this.tokenAddr);if(await p.allowance(n,this.circleRelayer.target)<t){const k=await p.approve.populateTransaction(this.circleRelayer.target,t);yield this.createUnsignedTx(a.addFrom(k,n),"ERC20.approve of CircleRelayer")}const m=await this.circleRelayer.transferTokensWithRelay.populateTransaction(this.tokenAddr,t,r,s,i);yield this.createUnsignedTx(a.addFrom(m,n),"CircleRelayer.transfer")}createUnsignedTx(f,e,t=!1){return new a.EvmUnsignedTransaction(a.addChainId(f,this.chainId),this.network,this.chain,e,t)}async nativeTokenAmount(f){return await this.circleRelayer.calculateNativeSwapAmountOut(this.tokenAddr,f)}async maxSwapAmount(){return await this.circleRelayer.calculateMaxSwapAmountIn(this.tokenAddr)}}const T=[{inputs:[{internalType:"address",name:"circleIntegration_",type:"address"},{internalType:"uint8",name:"nativeTokenDecimals_",type:"uint8"},{internalType:"address",name:"feeRecipient_",type:"address"},{internalType:"address",name:"ownerAssistant_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldRecipient",type:"address"},{indexed:!0,internalType:"address",name:"newRecipient",type:"address"}],name:"FeeRecipientUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransfered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!0,internalType:"address",name:"relayer",type:"address"},{indexed:!0,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"tokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"nativeAmount",type:"uint256"}],name:"SwapExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"token",type:"address"},{indexed:!0,internalType:"uint256",name:"swapRate",type:"uint256"}],name:"SwapRateUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{inputs:[],name:"VERSION",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"address_",type:"bytes32"}],name:"bytes32ToAddress",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"contract IERC20Metadata",name:"token",type:"address"}],name:"calculateMaxSwapAmountIn",outputs:[{internalType:"uint256",name:"maxAllowed",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20Metadata",name:"token",type:"address"},{internalType:"uint256",name:"toNativeAmount",type:"uint256"}],name:"calculateNativeSwapAmountOut",outputs:[{internalType:"uint256",name:"nativeAmount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint16",name:"chainId_",type:"uint16"}],name:"cancelOwnershipTransferRequest",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[],name:"circleIntegration",outputs:[{internalType:"contract ICircleIntegration",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"confirmOwnershipTransferRequest",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"encoded",type:"bytes"}],name:"decodeTransferTokensWithRelay",outputs:[{components:[{internalType:"uint8",name:"payloadId",type:"uint8"},{internalType:"uint256",name:"targetRelayerFee",type:"uint256"},{internalType:"uint256",name:"toNativeTokenAmount",type:"uint256"},{internalType:"bytes32",name:"targetRecipientWallet",type:"bytes32"}],internalType:"struct CircleRelayerStructs.TransferTokensWithRelay",name:"transfer",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{components:[{internalType:"uint8",name:"payloadId",type:"uint8"},{internalType:"uint256",name:"targetRelayerFee",type:"uint256"},{internalType:"uint256",name:"toNativeTokenAmount",type:"uint256"},{internalType:"bytes32",name:"targetRecipientWallet",type:"bytes32"}],internalType:"struct CircleRelayerStructs.TransferTokensWithRelay",name:"transfer",type:"tuple"}],name:"encodeTransferTokensWithRelay",outputs:[{internalType:"bytes",name:"encoded",type:"bytes"}],stateMutability:"pure",type:"function"},{inputs:[],name:"feeRecipient",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPaused",outputs:[{internalType:"bool",name:"paused",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint16",name:"emitterChainId",type:"uint16"}],name:"getRegisteredContract",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"}],name:"maxNativeSwapAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"}],name:"nativeSwapRate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"nativeSwapRatePrecision",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"nativeTokenDecimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"ownerAssistant",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pendingOwner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"bytes",name:"encodedWormholeMessage",type:"bytes"},{internalType:"bytes",name:"circleBridgeMessage",type:"bytes"},{internalType:"bytes",name:"circleAttestation",type:"bytes"}],internalType:"struct ICircleIntegration.RedeemParameters",name:"redeemParams",type:"tuple"}],name:"redeemTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint16",name:"chainId_",type:"uint16"},{internalType:"bytes32",name:"contractAddress",type:"bytes32"}],name:"registerContract",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"chainId_",type:"uint16"},{internalType:"address",name:"token",type:"address"}],name:"relayerFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint16",name:"chainId_",type:"uint16"},{internalType:"bool",name:"paused",type:"bool"}],name:"setPauseForTransfers",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"chainId_",type:"uint16"},{internalType:"address",name:"newOwner",type:"address"}],name:"submitOwnershipTransferRequest",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20Metadata",name:"token",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"toNativeTokenAmount",type:"uint256"},{internalType:"uint16",name:"targetChain",type:"uint16"},{internalType:"bytes32",name:"targetRecipientWallet",type:"bytes32"}],name:"transferTokensWithRelay",outputs:[{internalType:"uint64",name:"messageSequence",type:"uint64"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint16",name:"chainId_",type:"uint16"},{internalType:"address",name:"newFeeRecipient",type:"address"}],name:"updateFeeRecipient",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"chainId_",type:"uint16"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"maxAmount",type:"uint256"}],name:"updateMaxNativeSwapAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"chainId_",type:"uint16"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"swapRate",type:"uint256"}],name:"updateNativeSwapRate",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"chainId_",type:"uint16"},{internalType:"uint256",name:"nativeSwapRatePrecision_",type:"uint256"}],name:"updateNativeSwapRatePrecision",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"chainId_",type:"uint16"},{internalType:"address",name:"newAssistant",type:"address"}],name:"updateOwnerAssistant",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"chainId_",type:"uint16"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"updateRelayerFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"wormhole",outputs:[{internalType:"contract IWormhole",name:"",type:"address"}],stateMutability:"view",type:"function"}],A="0x6080604090808252346200034a5760808162002baa80380380916200002582856200034f565b8339810103126200034a576200003b8162000389565b6020808301519260ff84168085036200034a576200006960606200006188850162000389565b930162000389565b6001600b556001600160a01b03949092908516918215620002fb5715620002b7578416918215620002735784169081156200022f57600092835490640100000000600160c01b0333871b169362ff000060018060a01b031999858b600554161760055560101b1691828663ff010000600160c01b0319861617178755896003541617600355886002541617600255885193634d4502c960e11b85528685600481875afa94851562000225579087949392918796620001d5575b5061ffff600496169263ff000001600160c01b03191617171784558751928380926384acd1bb60e01b82525afa928315620001cb57829362000182575b505050169060045416176004556305f5e1006006555161280b90816200039f8239f35b9080929350813d8311620001c3575b6200019d81836200034f565b81010312620001bf5751908282168203620001bc57503880806200015f565b80fd5b5080fd5b503d62000191565b86513d84823e3d90fd5b8092949650859193953d83116200021d575b620001f381836200034f565b8101031262000219575161ffff8116810362000219579386939092909161ffff62000122565b8580fd5b503d620001e7565b8a513d88823e3d90fd5b865162461bcd60e51b815260048101859052601760248201527f696e76616c6964206f776e657220617373697374616e740000000000000000006044820152606490fd5b865162461bcd60e51b815260048101859052601d60248201527f696e76616c69642066656520726563697069656e7420616464726573730000006044820152606490fd5b865162461bcd60e51b815260048101859052601760248201527f696e76616c6964206e617469766520646563696d616c730000000000000000006044820152606490fd5b875162461bcd60e51b815260048101869052602260248201527f696e76616c696420636972636c6520696e746567726174696f6e206164647265604482015261737360f01b6064820152608490fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200037357604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200034a5756fe60806040526004361015610013575b600080fd5b60003560e01c8063038c0b66146102a7578063086049851461029e5780630a55d735146102955780630e1c863e1461028c57806313d8900b1461028357806316fb440a1461027a5780631a28219514610271578063203c5095146102685780632a88b4251461025f5780632efe4f421461025657806332d9965a1461024d5780633d62cca014610244578063469048401461023b57806351e2d7b51461023257806359b87d8e146102295780635ced058e146102205780636805b84b1461021757806368aa9ef41461020e5780636ddbaff31461020557806384acd1bb146101fc5780638da5cb5b146101f35780638e151dd1146101ea57806394cc743d146101e15780639a8a0592146101d8578063a2f32c8f146101cf578063ad48cb5e146101c6578063b5419523146101bd578063cd601c78146101b4578063dd6522aa146101ab578063e30c3978146101a2578063ea1d2e4a14610199578063ffa1ad74146101905763fff982a81461018857600080fd5b61000e6112e4565b5061000e61129d565b5061000e6111f7565b5061000e6111cd565b5061000e6111a3565b5061000e61117b565b5061000e61113d565b5061000e611118565b5061000e6110c9565b5061000e6110a6565b5061000e61100d565b5061000e610fd9565b5061000e610faf565b5061000e610f85565b5061000e610f22565b5061000e610e94565b5061000e610e6d565b5061000e610e45565b5061000e610bc6565b5061000e610aec565b5061000e610ac2565b5061000e610a88565b5061000e610a69565b5061000e610a2b565b5061000e610943565b5061000e61086b565b5061000e6107f8565b5061000e6107a9565b5061000e6106d3565b5061000e6104a1565b5061000e61042a565b5061000e610392565b503461000e57600080600319360112610383576001546001600160a01b03908116903382900361033e57825460201c6001600160a01b031660008054640100000000600160c01b031916602085901b640100000000600160c01b0316179055600180546001600160a01b0319169055167f0d18b5fd22306e373229b9439188228edca81207d1667f604daf6cef8aa3ee678380a380f35b60405162461bcd60e51b815260206004820152601b60248201527f63616c6c6572206d7573742062652070656e64696e674f776e657200000000006044820152606490fd5b80fd5b61ffff81160361000e57565b503461000e57604036600319011261000e576004356103b081610386565b600054602435916103e291906103d4602083901c6001600160a01b031633146122e6565b61ffff809116911614612329565b80156103ed57600655005b60405162461bcd60e51b81526020600482015260156024820152740707265636973696f6e206d757374206265203e203605c1b6044820152606490fd5b5060031960203682011261000e57600435906001600160401b03821161000e57606090823603011261000e5761046290600401611b89565b005b6001600160a01b0381160361000e57565b606090600319011261000e5760043561048d81610386565b9060243561049a81610464565b9060443590565b503461000e576104626104b336610475565b916104e96000546104da60018060a01b0333818460201c16149081156105d6575b506123bf565b61ffff83811691161415612415565b61050c6105048261ffff16600052600a602052604060002090565b541515612451565b6005546105729061053390610527906001600160a01b031681565b6001600160a01b031690565b604051633b6e750f60e01b81526001600160a01b038516600482015290602090829060249082905afa9081156105c9575b60009161059b575b50612496565b61ffff1660009081526007602090815260408083206001600160a01b0390941683529290522055565b6105bc915060203d81116105c2575b6105b48183610659565b8101906116ff565b3861056c565b503d6105aa565b6105d161158c565b610564565b6002541633149050386104d4565b50634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b0382111761061657604052565b61061e6105e4565b604052565b604081019081106001600160401b0382111761061657604052565b60a081019081106001600160401b0382111761061657604052565b90601f801991011681019081106001600160401b0382111761061657604052565b60405190610687826105fb565b565b6040519061010082018281106001600160401b0382111761061657604052565b6020906001600160401b0381116106c6575b601f01601f19160190565b6106ce6105e4565b6106bb565b503461000e57602036600319011261000e576004356001600160401b03811161000e573660238201121561000e57806004013590610710826106a9565b61071d6040519182610659565b828152366024848401011161000e57600060208461077d95602461074996018386013783010152612664565b60405191829182919091606080608083019460ff815116845260208101516020850152604081015160408501520151910152565b0390f35b604090600319011261000e5760043561079981610386565b906024356107a681610464565b90565b503461000e5760206107e561ffff6107c036610781565b91166000526007835260406000209060018060a01b0316600052602052604060002090565b54604051908152f35b8015150361000e57565b503461000e57604036600319011261000e5760043561081681610386565b63ff000000602435610827816107ee565b6000549261085590610847602086901c6001600160a01b031633146122e6565b61ffff858116911614612329565b63ff0000001990921691151560181b1617600055005b503461000e5761087a36610781565b60005490916001600160a01b039161089d916103d4602083901c851633146122e6565b8082169182156108ee57600380546001600160a01b031981166001600160a01b039384161790915516167faaebcf1bfa00580e41d966056b48521fa9f202645c86d4ddf28113e617c1b1d3600080a3005b60405162461bcd60e51b815260206004820152602760248201527f6e6577466565526563697069656e742063616e6e6f7420657175616c206164646044820152667265737328302960c81b6064820152608490fd5b503461000e5761095236610475565b909160009261097c845460018060a01b039333858360201c16148015610a1e575b6103d4906123bf565b600554604051633b6e750f60e01b81526001600160a01b0383811660048301526109c392602091839160249183918916165afa908115610a11575b869161059b5750612496565b6109ce8315156124d7565b6001600160a01b0381166000908152600860205260409020839055167fc6eb9fb936b61b402d503deeffc822f46492e15c2c8f079815cc4850ad7b02b08380a380f35b610a1961158c565b6109b7565b5060025485163314610973565b503461000e57602036600319011261000e57600435610a4981610464565b60018060a01b031660005260096020526020604060002054604051908152f35b503461000e57600036600319011261000e576020600654604051908152f35b503461000e57602036600319011261000e5761ffff600435610aa981610386565b16600052600a6020526020604060002054604051908152f35b503461000e57600036600319011261000e576003546040516001600160a01b039091168152602090f35b503461000e57604036600319011261000e57600435610b0a81610386565b6000549060243590610b2a602084901c6001600160a01b031633146122e6565b8115610b7157610b506104629361ffff808416908115159283610b64575b505050612363565b61ffff16600052600a602052604060002055565b1614159050388080610b48565b60405162461bcd60e51b815260206004820152602760248201527f636f6e7472616374416464726573732063616e6e6f7420657175616c206279746044820152666573333228302960c81b6064820152608490fd5b5060a036600319011261000e57600435610bdf81610464565b6024359060443560643591610bf383610386565b608435926002600b5414610e00576002600b5560ff60005460181c16610dc757610c1e851515611370565b610c298415156113b1565b6001600160a01b038281169590610c418715156113fd565b610c598361ffff16600052600a602052604060002090565b549382610c67861515611449565b610c70916121a5565b9587610c8a8561ffff166000526007602052604060002090565b6001600160a01b039091166000908152602091909152604090205495610cb081886114ba565b8811610cbb906114cf565b610cc361067a565b6001815296602088015260408701526060860152600554166001600160a01b03166001600160a01b031694610cf9908688611613565b610d0161067a565b6001600160a01b039096168652602086015261ffff1660408501526060840152610d2a90612523565b6040516328a87c1360e21b81529283918291610d4a919060048401611543565b03815a602094600091f161077d918115610dba575b600091610d8c575b50610d726001600b55565b6040516001600160401b0390911681529081906020820190565b610dad915060203d8111610db3575b610da58183610659565b81019061152f565b38610d67565b503d610d9b565b610dc261158c565b610d5f565b60405162461bcd60e51b81526020600482015260116024820152701c995b185e595c881a5cc81c185d5cd959607a1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b503461000e57602036600319011261000e576040516004356001600160a01b03168152602090f35b503461000e57600036600319011261000e57602060ff60005460181c166040519015158152f35b503461000e57600036600319011261000e576002546040516001600160a01b039091168152602090f35b60ff81160361000e57565b60005b838110610edc5750506000910152565b8181015183820152602001610ecc565b90602091610f0581518092818552858086019101610ec9565b601f01601f1916010190565b9060206107a6928181520190610eec565b503461000e57608036600319011261000e5761077d610f71604051610f46816105fb565b600435610f5281610ebe565b8152602435602082015260443560408201526064356060820152612523565b604051918291602083526020830190610eec565b503461000e57600036600319011261000e576004546040516001600160a01b039091168152602090f35b503461000e57600036600319011261000e57600054604051602091821c6001600160a01b03168152f35b503461000e57604036600319011261000e576020611005600435610ffc81610464565b602435906120d2565b604051908152f35b503461000e5761101c36610781565b6000546001600160a01b039261103e91906103d4602083901c861633146122e6565b168015611062576bffffffffffffffffffffffff60a01b6001541617600155600080f35b606460405162461bcd60e51b815260206004820152602060248201527f6e65774f776e65722063616e6e6f7420657175616c20616464726573732830296044820152fd5b503461000e57600036600319011261000e57602061ffff60005416604051908152f35b503461000e57602036600319011261000e576111066004356110ea81610386565b600054906103d4602083901c6001600160a01b031633146122e6565b600180546001600160a01b0319169055005b503461000e57600036600319011261000e57602060ff60005460101c16604051908152f35b503461000e57602036600319011261000e5760043561115b81610464565b60018060a01b031660005260086020526020604060002054604051908152f35b503461000e57602036600319011261000e57602061100560043561119e81610464565b611fa2565b503461000e57600036600319011261000e576005546040516001600160a01b039091168152602090f35b503461000e57600036600319011261000e576001546040516001600160a01b039091168152602090f35b503461000e5761120636610781565b6000546001600160a01b039261122891906103d4602083901c861633146122e6565b16801561124c576bffffffffffffffffffffffff60a01b6002541617600255600080f35b60405162461bcd60e51b8152602060048201526024808201527f6e6577417373697374616e742063616e6e6f7420657175616c206164647265736044820152637328302960e01b6064820152608490fd5b503461000e57600036600319011261000e5761077d6040516112be81610623565b60058152640302e322e360dc1b6020820152604051918291602083526020830190610eec565b503461000e576104626113566112f936610475565b600054909391926001600160a01b039161131e916103d4602083901c851633146122e6565b6020816005541691602460405180948193633b6e750f60e01b8352881660048301525afa9081156105c95760009161059b5750612496565b6001600160a01b0316600090815260096020526040902055565b1561137757565b60405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b6044820152606490fd5b156113b857565b60405162461bcd60e51b815260206004820152601860248201527f696e76616c69642074617267657420726563697069656e7400000000000000006044820152606490fd5b1561140457565b60405162461bcd60e51b815260206004820152601d60248201527f746f6b656e2063616e6e6f7420657175616c20616464726573732830290000006044820152606490fd5b1561145057565b60405162461bcd60e51b815260206004820152602560248201527f434952434c452d52454c415945523a20746172676574206e6f742072656769736044820152641d195c995960da1b6064820152608490fd5b50634e487b7160e01b600052601160045260246000fd5b919082018092116114c757565b6106876114a3565b156114d657565b60405162461bcd60e51b815260206004820152601b60248201527f696e73756666696369656e7420616d6f756e74526563656976656400000000006044820152606490fd5b51906001600160401b038216820361000e57565b9081602091031261000e576107a69061151b565b60c09060606107a6949360018060a01b0381511683526020810151602084015261ffff604082015116604084015201516060820152600060808201528160a08201520190610eec565b506040513d6000823e3d90fd5b9081602091031261000e575190565b156115af57565b60405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608490fd5b61166961068793928315801561166e575b61162d906115a8565b60405163095ea7b360e01b60208201526001600160a01b039091166024820152604481019390935282606481015b03601f198101845283610659565b611714565b50604051636eb1769f60e11b81523060048201526001600160a01b038216602482015261162d90602081806044810103816001600160a01b0389165afa9081156116f2575b6000916116c4575b50159050611624565b6116e5915060203d81116116eb575b6116dd8183610659565b810190611599565b386116bb565b503d6116d3565b6116fa61158c565b6116b3565b9081602091031261000e57516107a6816107ee565b604051611791916001600160a01b031661172d82610623565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af13d15611819573d91611775836106a9565b926117836040519485610659565b83523d60008785013e61181d565b805190828215928315611801575b505050156117aa5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b61181193508201810191016116ff565b38828161179f565b6060915b9192901561187f5750815115611831575090565b3b1561183a5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156118925750805190602001fd5b60405162461bcd60e51b81529081906118ae9060048301610f11565b0390fd5b519063ffffffff8216820361000e57565b81601f8201121561000e5780516118d9816106a9565b926118e76040519485610659565b8184526020828401011161000e576107a69160208085019101610ec9565b9060208282031261000e5781516001600160401b039283821161000e5701906101008282031261000e57611937610689565b928251845260208301516020850152611952604084016118b2565b6040850152611963606084016118b2565b60608501526119746080840161151b565b608085015260a083015160a085015260c083015160c085015260e083015190811161000e576119a392016118c3565b60e082015290565b9035601e198236030181121561000e5701602081359101916001600160401b03821161000e57813603831361000e57565b908060209392818452848401376000828201840152601f01601f1916010190565b9060606107a69260208152611a25611a1584806119ab565b84602085015260808401916119dc565b90611a58611a4d611a3960208701876119ab565b601f198587038101604087015295916119dc565b9460408101906119ab565b939092828603019101526119dc565b9081602091031261000e57516107a681610386565b15611a8357565b60405162461bcd60e51b815260206004820152602860248201527f66726f6d41646472657373206973206e6f74206120726567697374657265642060448201526718dbdb9d1c9858dd60c21b6064820152608490fd5b15611ae057565b60405162461bcd60e51b815260206004820152602360248201527f726563697069656e742063616e6e6f742073776170206e61746976652061737360448201526265747360e81b6064820152608490fd5b15611b3857565b606460405162461bcd60e51b815260206004820152602060248201527f696e73756666696369656e74206e617469766520617373657420616d6f756e746044820152fd5b919082039182116114c757565b600554611bc3906001600160a01b0390611ba4908216610527565b90604051936357bf927b60e01b855284806000958693600483016119fd565b038183865af1938415611ea1575b8394611e7d575b50611c33611c62611bec60e0870151612664565b93611c5b60a088015191611c0760408a015163ffffffff1690565b6040518092638cf67ba960e01b825281806020998a956004830191909163ffffffff6020820193169052565b03915afa908115611e70575b8891611e43575b5061ffff16600052600a602052604060002090565b5414611a7c565b8451611c76906001600160a01b0316610527565b60608401519094906001600160a01b03169383851691823314611e295761068797928483611cbc938a6040611cca999701948551611ce7575b50505001519051906114ba565b9182611cd1575b0151611b7c565b9216611eae565b611ce2838660035416878a16611eae565b611cc3565b611cf082611fa2565b80875111611e21575b50611d058651836120d2565b92831580611dd557828291611d1c87341015611b31565b82611d278834611b7c565b8015908115611da1575b5050879091611d97575b83928392f115611d8a575b8551604080519182526020820194909452918b169233927f764f0dc063c06f32d89a3f3af80c0db4be8a090901f589a478b447e0a51f09f19190a45b388a81611caf565b611d9261158c565b611d46565b6108fc9150611d3b565b8280929181928290611dcc575b3390f115611dbf575b823880611d31565b611dc761158c565b611db7565b506108fc611dae565b509250505080845234158015611ded575b5050611d82565b81908190611e18575b81809134903390f115611e0b575b3880611de6565b611e1361158c565b611e04565b506108fc611df6565b865238611cf9565b50505061068794611e3a3415611ad9565b01519216611eae565b611e639150853d8711611e69575b611e5b8183610659565b810190611a67565b38611c46565b503d611e51565b611e7861158c565b611c3f565b611e9a9194503d8085833e611e928183610659565b810190611905565b9238611bd8565b611ea961158c565b611bd1565b60405163a9059cbb60e01b60208201526001600160a01b039092166024830152604482019290925261068791611669826064810161165b565b15611eee57565b60405162461bcd60e51b81526020600482015260116024820152701cddd85c081c985d19481b9bdd081cd95d607a1b6044820152606490fd5b9081602091031261000e57516107a681610ebe565b818102929181159184041417156114c757565b9060ff8091169116039060ff82116114c757565b60ff16604d8111611f75575b600a0a90565b611f7d6114a3565b611f6f565b8115611f8c570490565b634e487b7160e01b600052601260045260246000fd5b6001600160a01b031660008181526008602052604090205490611fc6821515611ee7565b60405163313ce56760e01b815291602083600481855afa9283156120c5575b600093612095575b5060ff60005460101c16918260ff8516116000146120535761203f61204a936120396107a696946120336120449560018060a01b03166000526009602052604060002090565b54611f3c565b93611f4f565b611f63565b90611f3c565b60065490611f82565b61203f6107a69461208061208f946120336120869560018060a01b03166000526009602052604060002090565b94611f4f565b60065490611f3c565b90611f82565b6120b791935060203d81116120be575b6120af8183610659565b810190611f27565b9138611fed565b503d6120a5565b6120cd61158c565b611fe5565b6001600160a01b03166000818152600860209081526040909120600492919054916120fe831515611ee7565b60405163313ce56760e01b815293849182905afa918215612198575b600092612178575b5060ff60005460101c168060ff841611600014612159579061204461203f61208f936121536107a697600654611f3c565b95611f4f565b61204461203f61217393946120396107a697600654611f3c565b611f82565b61219191925060203d81116120be576120af8183610659565b9038612122565b6121a061158c565b61211a565b6040516370a0823160e01b8082523060048301526107a69391926020926001600160a01b0390911691908385602481865afa948515612274575b60009561224d575b50906121f68492303386612281565b60405190815230600482015291829060249082905afa918215612240575b600092612223575b5050611b7c565b6122399250803d106116eb576116dd8183610659565b388061221c565b61224861158c565b612214565b849291955061226b6121f691843d86116116eb576116dd8183610659565b959192506121e7565b61227c61158c565b6121df565b6040516323b872dd60e01b60208201526001600160a01b0392831660248201529290911660448301526064808301939093529181526106879160a082018281106001600160401b038211176122d9575b604052611714565b6122e16105e4565b6122d1565b156122ed57565b60405162461bcd60e51b815260206004820152601460248201527331b0b63632b9103737ba103a34329037bbb732b960611b6044820152606490fd5b1561233057565b60405162461bcd60e51b815260206004820152600b60248201526a3bb937b7339031b430b4b760a91b6044820152606490fd5b1561236a57565b60405162461bcd60e51b815260206004820152602760248201527f636861696e49645f2063616e6e6f7420657175616c2030206f7220746869732060448201526618da185a5b925960ca1b6064820152608490fd5b156123c657565b60405162461bcd60e51b815260206004820152602160248201527f63616c6c6572206e6f7420746865206f776e6572206f7220617373697374616e6044820152601d60fa1b6064820152608490fd5b1561241c57565b60405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b21031b430b4b760991b6044820152606490fd5b1561245857565b60405162461bcd60e51b815260206004820152601660248201527518dbdb9d1c9858dd08191bd95cdb89dd08195e1a5cdd60521b6044820152606490fd5b1561249d57565b60405162461bcd60e51b81526020600482015260126024820152711d1bdad95b881b9bdd081858d8d95c1d195960721b6044820152606490fd5b156124de57565b60405162461bcd60e51b815260206004820152601960248201527f737761702072617465206d757374206265206e6f6e7a65726f000000000000006044820152606490fd5b600160ff825116036125725780519060208101519060606040820151910151916040519360ff60f81b9060f81b166020850152602184015260418301526061820152606181526107a68161063e565b60405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081c185e5b1bd8591259607a1b6044820152606490fd5b156125b257565b60405162461bcd60e51b815260206004820152602960248201527f434952434c455f52454c415945523a20696e76616c6964206d657373616765206044820152681c185e5b1bd859125960ba1b6064820152608490fd5b1561261057565b60405162461bcd60e51b815260206004820152602660248201527f434952434c455f52454c415945523a20696e76616c6964206d657373616765206044820152650d8cadccee8d60d31b6064820152608490fd5b90604051612671816105fb565b600081526020810192600084526040820160008152606083019060008252839560018451106126f0576126c6600160ff6126bf610687986126b8848a0151829060ff169052565b5160ff1690565b16146125ab565b6126cf8461272b565b90526126da83612778565b90526126e582612788565b905251606114612609565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b602181511061273b576021015190565b60405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b6044820152606490fd5b604181511061273b576041015190565b6061815110612798576061015190565b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fdfea2646970667358221220ce69d4caa8128b752fcc5b0ad82cfd1a64124612c8555100c2e05c2766faa13f64736f6c63430008110033",N=d=>d.length>1;class w extends a.ContractFactory{constructor(...f){N(f)?super(...f):super(T,A,f[0])}getDeployTransaction(f,e,t,b,n){return super.getDeployTransaction(f,e,t,b,n||{})}deploy(f,e,t,b,n){return super.deploy(f,e,t,b,n||{})}connect(f){return super.connect(f)}static createInterface(){return new a.Interface(T)}static connect(f,e){return new a.Contract(f,T,e)}}c(w,"bytecode",A),c(w,"abi",T);const g=[{inputs:[{internalType:"address",name:"_messageTransmitter",type:"address"},{internalType:"uint32",name:"_messageBodyVersion",type:"uint32"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint64",name:"nonce",type:"uint64"},{indexed:!0,internalType:"address",name:"burnToken",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!0,internalType:"address",name:"depositor",type:"address"},{indexed:!1,internalType:"bytes32",name:"mintRecipient",type:"bytes32"},{indexed:!1,internalType:"uint32",name:"destinationDomain",type:"uint32"},{indexed:!1,internalType:"bytes32",name:"destinationTokenMessenger",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"destinationCaller",type:"bytes32"}],name:"DepositForBurn",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"localMinter",type:"address"}],name:"LocalMinterAdded",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"localMinter",type:"address"}],name:"LocalMinterRemoved",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"mintRecipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!0,internalType:"address",name:"mintToken",type:"address"}],name:"MintAndWithdraw",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferStarted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint32",name:"domain",type:"uint32"},{indexed:!1,internalType:"bytes32",name:"tokenMessenger",type:"bytes32"}],name:"RemoteTokenMessengerAdded",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint32",name:"domain",type:"uint32"},{indexed:!1,internalType:"bytes32",name:"tokenMessenger",type:"bytes32"}],name:"RemoteTokenMessengerRemoved",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newRescuer",type:"address"}],name:"RescuerChanged",type:"event"},{inputs:[],name:"acceptOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newLocalMinter",type:"address"}],name:"addLocalMinter",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint32",name:"domain",type:"uint32"},{internalType:"bytes32",name:"tokenMessenger",type:"bytes32"}],name:"addRemoteTokenMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint32",name:"destinationDomain",type:"uint32"},{internalType:"bytes32",name:"mintRecipient",type:"bytes32"},{internalType:"address",name:"burnToken",type:"address"}],name:"depositForBurn",outputs:[{internalType:"uint64",name:"_nonce",type:"uint64"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint32",name:"destinationDomain",type:"uint32"},{internalType:"bytes32",name:"mintRecipient",type:"bytes32"},{internalType:"address",name:"burnToken",type:"address"},{internalType:"bytes32",name:"destinationCaller",type:"bytes32"}],name:"depositForBurnWithCaller",outputs:[{internalType:"uint64",name:"nonce",type:"uint64"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint32",name:"remoteDomain",type:"uint32"},{internalType:"bytes32",name:"sender",type:"bytes32"},{internalType:"bytes",name:"messageBody",type:"bytes"}],name:"handleReceiveMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"localMessageTransmitter",outputs:[{internalType:"contract IMessageTransmitter",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"localMinter",outputs:[{internalType:"contract ITokenMinter",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"messageBodyVersion",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pendingOwner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32",name:"",type:"uint32"}],name:"remoteTokenMessengers",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"removeLocalMinter",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint32",name:"domain",type:"uint32"}],name:"removeRemoteTokenMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"originalMessage",type:"bytes"},{internalType:"bytes",name:"originalAttestation",type:"bytes"},{internalType:"bytes32",name:"newDestinationCaller",type:"bytes32"},{internalType:"bytes32",name:"newMintRecipient",type:"bytes32"}],name:"replaceDepositForBurn",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"tokenContract",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"rescueERC20",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"rescuer",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newRescuer",type:"address"}],name:"updateRescuer",outputs:[],stateMutability:"nonpayable",type:"function"}],C="0x60c06040523480156200001157600080fd5b506040516200366238038062003662833981810160405260408110156200003757600080fd5b508051602090910151620000546200004e620000d9565b620000dd565b6001600160a01b038216620000b0576040805162461bcd60e51b815260206004820152601a60248201527f4d6573736167655472616e736d6974746572206e6f7420736574000000000000604482015290519081900360640190fd5b60609190911b6001600160601b03191660805260e01b6001600160e01b03191660a05262000157565b3390565b600180546001600160a01b0319169055620001048162000107602090811b6200177c17901c565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60805160601c60a05160e01c6134b9620001a960003980610819528061114e528061133f5280611fda5250806108455280610c4c52806121fc5280612252528061293f5280612a1652506134b96000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806391f17888116100cd578063da87e44811610081578063f2fde38b11610066578063f2fde38b146104a7578063f79fd08e146104da578063f856ddb6146104fd57610151565b8063da87e44814610476578063e30c39781461049f57610151565b80639cdbb181116100b25780639cdbb1811461040a578063b2118a8d1461042b578063cb75c11c1461046e57610151565b806391f178881461036c57806396abeb701461037457610151565b80636fd3504e116101245780638197beb9116101095780638197beb9146102fc57806382a5e6651461032f5780638da5cb5b1461036457610151565b80636fd3504e1461028c57806379ba5097146102f457610151565b806329a78e33146101565780632ab60045146102205780632c1219211461025357806338a6318314610284575b600080fd5b61021e6004803603608081101561016c57600080fd5b81019060208101813564010000000081111561018757600080fd5b82018360208201111561019957600080fd5b803590602001918460018302840111640100000000831117156101bb57600080fd5b9193909290916020810190356401000000008111156101d957600080fd5b8201836020820111156101eb57600080fd5b8035906020019184600183028401116401000000008311171561020d57600080fd5b91935091508035906020013561054e565b005b61021e6004803603602081101561023657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610b67565b61025b610c4a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61025b610c6e565b6102d7600480360360808110156102a257600080fd5b50803590602081013563ffffffff16906040810135906060013573ffffffffffffffffffffffffffffffffffffffff16610c8a565b6040805167ffffffffffffffff9092168252519081900360200190f35b61021e610ca4565b61021e6004803603602081101561031257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d47565b6103526004803603602081101561034557600080fd5b503563ffffffff16610ecf565b60408051918252519081900360200190f35b61025b610ee1565b61021e610efd565b6103f66004803603606081101561038a57600080fd5b63ffffffff823516916020810135918101906060810160408201356401000000008111156103b757600080fd5b8201836020820111156103c957600080fd5b803590602001918460018302840111640100000000831117156103eb57600080fd5b509092509050610ffe565b604080519115158252519081900360200190f35b61041261133d565b6040805163ffffffff9092168252519081900360200190f35b61021e6004803603606081101561044157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135611361565b61025b6113f7565b61021e6004803603604081101561048c57600080fd5b5063ffffffff8135169060200135611413565b61025b61155f565b61021e600480360360208110156104bd57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661157b565b61021e600480360360208110156104f057600080fd5b503563ffffffff16611613565b6102d7600480360360a081101561051357600080fd5b5080359063ffffffff6020820135169060408101359073ffffffffffffffffffffffffffffffffffffffff60608201351690608001356116f7565b6000610594600088888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506117f19050565b90506105c17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216611817565b60006105ee7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316611955565b905061061b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000082166119cc565b60006106487fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316611b09565b905073__$8c977731748aa4504deed57239565df533$__635ced058e826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561069957600080fd5b505af41580156106ad573d6000803e3d6000fd5b505050506040513d60208110156106c357600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16331461074857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e76616c69642073656e64657220666f72206d657373616765000000000000604482015290519081900360640190fd5b836107b457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d696e7420726563697069656e74206d757374206265206e6f6e7a65726f0000604482015290519081900360640190fd5b60006107e17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416611b3a565b905060006108107fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516611b6b565b905060006108417f000000000000000000000000000000000000000000000000000000000000000084898588611b9c565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b857b7748d8d8d8d868e6040518763ffffffff1660e01b81526004018080602001806020018060200185815260200184810384528a8a82818152602001925080828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101858103845288815260200190508888808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018681038452885181528851602091820193918a019250908190849084905b8381101561096757818101518382015260200161094f565b50505050905090810190601f1680156109945780820380516001836020036101000a031916815260200191505b509950505050505050505050600060405180830381600087803b1580156109ba57600080fd5b505af11580156109ce573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff1673__$8c977731748aa4504deed57239565df533$__635ced058e856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610a3857600080fd5b505af4158015610a4c573d6000803e3d6000fd5b505050506040513d6020811015610a6257600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16610aa57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008916611bff565b67ffffffffffffffff167f2fa9ca894982930190727e75500a97d8dc500233a5065e0f3126c48fbe0343c0858b610afd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008d16611c30565b610b287fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008e16611c61565b60408051948552602085019390935263ffffffff909116838301526060830152608082018e9052519081900360a00190a4505050505050505050505050565b610b6f611c92565b73ffffffffffffffffffffffffffffffffffffffff8116610bdb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613335602a913960400191505060405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fe475e580d85111348e40d8ca33cfdd74c30fe1655c2d8537a13abc10065ffa5a90600090a250565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025473ffffffffffffffffffffffffffffffffffffffff1690565b6000610c998585858585611d3c565b90505b949350505050565b6000610cae6121c3565b90508073ffffffffffffffffffffffffffffffffffffffff16610ccf61155f565b73ffffffffffffffffffffffffffffffffffffffff1614610d3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061330c6029913960400191505060405180910390fd5b610d44816121c7565b50565b610d4f611c92565b73ffffffffffffffffffffffffffffffffffffffff8116610dd157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff1615610e5657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4c6f63616c206d696e74657220697320616c7265616479207365742e00000000604482015290519081900360640190fd5b6003805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517f109bb3e70cbf1931e295b49e75c67013b85ff80d64e6f1d321f37157b90c38309181900360200190a150565b60046020526000908152604090205481565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b610f05611c92565b60035473ffffffffffffffffffffffffffffffffffffffff1680610f8a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e6f206c6f63616c206d696e746572206973207365742e000000000000000000604482015290519081900360640190fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556040805173ffffffffffffffffffffffffffffffffffffffff8316815290517f2db49fbf671271826a27b02ebc496209c85fffffb4bccc67430d2a0f22b4d1ac9181900360200190a150565b60006110086121f8565b61107357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e76616c6964206d657373616765207472616e736d69747465720000000000604482015290519081900360640190fd5b848461107f8282612279565b6110d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061335f6021913960400191505060405180910390fd5b600061111a600087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506117f19050565b90506111477fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000082166119cc565b63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166111997fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000083166122a5565b63ffffffff161461120b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496e76616c6964206d65737361676520626f64792076657273696f6e00000000604482015290519081900360640190fd5b60006112387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000083166122d5565b905060006112677fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416611b3a565b905060006112967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516611b6b565b905060006112a2612306565b905061132b818d8573__$8c977731748aa4504deed57239565df533$__635ced058e896040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156112f957600080fd5b505af415801561130d573d6000803e3d6000fd5b505050506040513d602081101561132357600080fd5b5051866123aa565b5060019b9a5050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025473ffffffffffffffffffffffffffffffffffffffff1633146113d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806133c76024913960400191505060405180910390fd5b6113f273ffffffffffffffffffffffffffffffffffffffff841683836124c3565b505050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b61141b611c92565b8061148757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f62797465733332283029206e6f7420616c6c6f77656400000000000000000000604482015290519081900360640190fd5b63ffffffff82166000908152600460205260409020541561150957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f546f6b656e4d657373656e67657220616c726561647920736574000000000000604482015290519081900360640190fd5b63ffffffff82166000818152600460209081526040918290208490558151928352820183905280517f4bba2b08298cf59661b4895e384cc2ac3962ce2d71f1b7c11bca52e1169f95999281900390910190a15050565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b611583611c92565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556115ce610ee1565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b61161b611c92565b63ffffffff811660009081526004602052604090205461169c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f20546f6b656e4d657373656e676572207365740000000000000000000000604482015290519081900360640190fd5b63ffffffff8116600081815260046020908152604080832080549390558051938452908301829052805191927f3dcea012093dbca2bb8ed7fd2b2ff90305ab70bddda8bbb94d4152735a98f0b1929081900390910190a15050565b60008161176557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e76616c69642064657374696e6174696f6e2063616c6c6572000000000000604482015290519081900360640190fd5b6117728686868686611d3c565b9695505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b81516000906020840161180c64ffffffffff85168284612550565b925050505b92915050565b6118427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000082166125af565b6118ad57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d616c666f726d6564206d657373616765000000000000000000000000000000604482015290519081900360640190fd5b60746118da7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000083166125ec565b6bffffffffffffffffffffffff161015610d4457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e76616c6964206d6573736167653a20746f6f2073686f7274000000000000604482015290519081900360640190fd5b60006119c46074806119887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000086166125ec565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000861692916bffffffffffffffffffffffff9103166000612600565b90505b919050565b6119f77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000082166125af565b611a6257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d616c666f726d6564206d657373616765000000000000000000000000000000604482015290519081900360640190fd5b6084611a8f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000083166125ec565b6bffffffffffffffffffffffff1614610d4457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c6964206d657373616765206c656e67746800000000000000000000604482015290519081900360640190fd5b60006119c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660646020612686565b60006119c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660046020612686565b60006119c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660446020612831565b6040805160e09690961b7fffffffff000000000000000000000000000000000000000000000000000000001660208701526024860194909452604485019290925260648401526084808401919091528151808403909101815260a4909201905290565b60006119c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316600c6008612831565b60006119c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660086004612831565b60006119c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660346020612686565b611c9a6121c3565b73ffffffffffffffffffffffffffffffffffffffff16611cb8610ee1565b73ffffffffffffffffffffffffffffffffffffffff1614611d3a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b565b6000808611611dac57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f416d6f756e74206d757374206265206e6f6e7a65726f00000000000000000000604482015290519081900360640190fd5b83611e1857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d696e7420726563697069656e74206d757374206265206e6f6e7a65726f0000604482015290519081900360640190fd5b6000611e2386612852565b90506000611e2f612306565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8084166024830152604482018c905291519293508792918316916323b872dd916064808201926020929091908290030181600087803b158015611eb357600080fd5b505af1158015611ec7573d6000803e3d6000fd5b505050506040513d6020811015611edd57600080fd5b5051611f4a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5472616e73666572206f7065726174696f6e206661696c656400000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff16639dc29fac878b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611fbb57600080fd5b505af1158015611fcf573d6000803e3d6000fd5b5050505060006121297f000000000000000000000000000000000000000000000000000000000000000073__$8c977731748aa4504deed57239565df533$__6382c947b78a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561205e57600080fd5b505af4158015612072573d6000803e3d6000fd5b505050506040513d602081101561208857600080fd5b5051604080517f82c947b700000000000000000000000000000000000000000000000000000000815233600482015290518c918f9173__$8c977731748aa4504deed57239565df533$__916382c947b7916024808301926020929190829003018186803b1580156120f857600080fd5b505af415801561210c573d6000803e3d6000fd5b505050506040513d602081101561212257600080fd5b5051611b9c565b905060006121398a8689856128d4565b604080518d8152602081018c905263ffffffff8d168183015260608101889052608081018a90529051919250339173ffffffffffffffffffffffffffffffffffffffff8b169167ffffffffffffffff8516917f2fa9ca894982930190727e75500a97d8dc500233a5065e0f3126c48fbe0343c09181900360a00190a49a9950505050505050505050565b3390565b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610d448161177c565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161580159061227457503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016145b905090565b6000811580159061229e575063ffffffff831660009081526004602052604090205482145b9392505050565b60006119c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316826004612831565b60006119c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660246020612686565b60035460009073ffffffffffffffffffffffffffffffffffffffff1661238d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c6f63616c206d696e746572206973206e6f7420736574000000000000000000604482015290519081900360640190fd5b5060035473ffffffffffffffffffffffffffffffffffffffff1690565b604080517fd54de06f00000000000000000000000000000000000000000000000000000000815263ffffffff861660048201526024810185905273ffffffffffffffffffffffffffffffffffffffff848116604483015260648201849052915187926000929084169163d54de06f9160848082019260209290919082900301818787803b15801561243a57600080fd5b505af115801561244e573d6000803e3d6000fd5b505050506040513d602081101561246457600080fd5b505160408051858152905191925073ffffffffffffffffffffffffffffffffffffffff80841692908716917f1b2a7ff080b8cb6ff436ce0372e399692bbfb6d4ae5766fd8d58a7b8cc6142e6919081900360200190a350505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526113f2908490612b07565b60008061255d8484612bdf565b905060405181111561256d575060005b8061259b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000091505061229e565b6125a6858585612c51565b95945050505050565b60006125ba82612c64565b64ffffffffff1664ffffffffff14156125d5575060006119c7565b60006125e083612c6a565b60405110199392505050565b60181c6bffffffffffffffffffffffff1690565b60008061260c86612c94565b6bffffffffffffffffffffffff16905061262586612c6a565b612639856126338489612bdf565b90612bdf565b1115612668577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050610c9c565b6126728186612bdf565b90506117728364ffffffffff168286612550565b600060ff82166126985750600061229e565b6126a1846125ec565b6bffffffffffffffffffffffff166126bc8460ff8516612bdf565b111561279b576126fd6126ce85612c94565b6bffffffffffffffffffffffff166126e5866125ec565b6bffffffffffffffffffffffff16858560ff16612ca8565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612760578181015183820152602001612748565b50505050905090810190601f16801561278d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60208260ff1611156127f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806133eb603a913960400191505060405180910390fd5b60088202600061280786612c94565b6bffffffffffffffffffffffff169050600061282283612e03565b91909501511695945050505050565b60008160200360080260ff16612848858585612686565b901c949350505050565b63ffffffff8116600090815260046020526040812054806119c457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4e6f20546f6b656e4d657373656e67657220666f7220646f6d61696e00000000604482015290519081900360640190fd5b600082612a14576040517f0ba469bc00000000000000000000000000000000000000000000000000000000815263ffffffff8616600482019081526024820186905260606044830190815284516064840152845173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001693630ba469bc938a938a93899360840190602085019080838360005b8381101561299357818101518382015260200161297b565b50505050905090810190601f1680156129c05780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b1580156129e157600080fd5b505af11580156129f5573d6000803e3d6000fd5b505050506040513d6020811015612a0b57600080fd5b50519050610c9c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f7259a75868686866040518563ffffffff1660e01b8152600401808563ffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612ab8578181015183820152602001612aa0565b50505050905090810190601f168015612ae55780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156129e157600080fd5b6000612b69826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612e4c9092919063ffffffff16565b8051909150156113f257808060200190516020811015612b8857600080fd5b50516113f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613425602a913960400191505060405180910390fd5b8181018281101561181157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e00000000000000604482015290519081900360640190fd5b606092831b9190911790911b1760181b90565b60d81c90565b6000612c75826125ec565b612c7e83612c94565b016bffffffffffffffffffffffff169050919050565b60781c6bffffffffffffffffffffffff1690565b60606000612cb586612e5b565b9150506000612cc386612e5b565b9150506000612cd186612e5b565b9150506000612cdf86612e5b565b91505083838383604051602001808061344f603591397fffffffffffff000000000000000000000000000000000000000000000000000060d087811b821660358401527f2077697468206c656e6774682030780000000000000000000000000000000000603b84015286901b16604a82015260500160216133a682397fffffffffffff000000000000000000000000000000000000000000000000000060d094851b811660218301527f2077697468206c656e677468203078000000000000000000000000000000000060278301529290931b9091166036830152507f2e00000000000000000000000000000000000000000000000000000000000000603c82015260408051601d818403018152603d90920190529b9a5050505050505050505050565b7f80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091011d90565b6060610c9c8484600085612f2f565b600080601f5b600f8160ff161115612ec35760ff600882021684901c612e80816130e9565b61ffff16841793508160ff16601014612e9b57601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01612e61565b50600f5b60ff8160ff161015612f295760ff600882021684901c612ee6816130e9565b61ffff16831792508160ff16600014612f0157601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01612ec7565b50915091565b606082471015612f8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806133806026913960400191505060405180910390fd5b612f9385613119565b612ffe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831061306757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161302a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091506130de82828661311f565b979650505050505050565b60006130fb60048360ff16901c61319f565b60ff161760081b62ffff00166131108261319f565b60ff1617919050565b3b151590565b6060831561312e57508161229e565b82511561313e5782518084602001fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201818152845160248401528451859391928392604401919085019080838360008315612760578181015183820152602001612748565b600060f08083179060ff821614156131bb5760309150506119c7565b8060ff1660f114156131d15760319150506119c7565b8060ff1660f214156131e75760329150506119c7565b8060ff1660f314156131fd5760339150506119c7565b8060ff1660f414156132135760349150506119c7565b8060ff1660f514156132295760359150506119c7565b8060ff1660f6141561323f5760369150506119c7565b8060ff1660f714156132555760379150506119c7565b8060ff1660f8141561326b5760389150506119c7565b8060ff1660f914156132815760399150506119c7565b8060ff1660fa14156132975760619150506119c7565b8060ff1660fb14156132ad5760629150506119c7565b8060ff1660fc14156132c35760639150506119c7565b8060ff1660fd14156132d95760649150506119c7565b8060ff1660fe14156132ef5760659150506119c7565b8060ff1660ff14156133055760669150506119c7565b5091905056fe4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206e6577206f776e6572526573637561626c653a206e6577207265736375657220697320746865207a65726f206164647265737352656d6f746520546f6b656e4d657373656e67657220756e737570706f72746564416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c2e20417474656d7074656420746f20696e646578206174206f6666736574203078526573637561626c653a2063616c6c6572206973206e6f7420746865207265736375657254797065644d656d566965772f696e646578202d20417474656d7074656420746f20696e646578206d6f7265207468616e2033322062797465735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656454797065644d656d566965772f696e646578202d204f76657272616e2074686520766965772e20536c696365206973206174203078a26469706673582212206b689f34f4e15f499706461beeb293d1cec2381023fbd21a46dcbc1856ad238864736f6c63430007060033",z=d=>typeof d[0]=="string"||Array.isArray(d[0])||"_isInterface"in d[0],y=class y extends a.ContractFactory{constructor(...f){if(z(f))super(...f);else{const[e,t]=f;super(g,y.linkBytecode(e),t)}}static linkBytecode(f){let e=C;return e=e.replace(new RegExp("__\\$8c977731748aa4504deed57239565df533\\$__","g"),f["src/messages/Message.sol:Message"].replace(/^0x/,"").toLowerCase()),e}getDeployTransaction(f,e,t){return super.getDeployTransaction(f,e,t||{})}deploy(f,e,t){return super.deploy(f,e,t||{})}connect(f){return super.connect(f)}static createInterface(){return new a.Interface(g)}static connect(f,e){return new a.Contract(f,g,e)}};c(y,"bytecode",C),c(y,"abi",g);let M=y;const h=[{inputs:[{internalType:"uint32",name:"_localDomain",type:"uint32"},{internalType:"address",name:"_attester",type:"address"},{internalType:"uint32",name:"_maxMessageBodySize",type:"uint32"},{internalType:"uint32",name:"_version",type:"uint32"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"attester",type:"address"}],name:"AttesterDisabled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"attester",type:"address"}],name:"AttesterEnabled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousAttesterManager",type:"address"},{indexed:!0,internalType:"address",name:"newAttesterManager",type:"address"}],name:"AttesterManagerUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"newMaxMessageBodySize",type:"uint256"}],name:"MaxMessageBodySizeUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"uint32",name:"sourceDomain",type:"uint32"},{indexed:!0,internalType:"uint64",name:"nonce",type:"uint64"},{indexed:!1,internalType:"bytes32",name:"sender",type:"bytes32"},{indexed:!1,internalType:"bytes",name:"messageBody",type:"bytes"}],name:"MessageReceived",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes",name:"message",type:"bytes"}],name:"MessageSent",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferStarted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[],name:"Pause",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newAddress",type:"address"}],name:"PauserChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newRescuer",type:"address"}],name:"RescuerChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"oldSignatureThreshold",type:"uint256"},{indexed:!1,internalType:"uint256",name:"newSignatureThreshold",type:"uint256"}],name:"SignatureThresholdUpdated",type:"event"},{anonymous:!1,inputs:[],name:"Unpause",type:"event"},{inputs:[],name:"acceptOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"attesterManager",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"attester",type:"address"}],name:"disableAttester",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAttester",type:"address"}],name:"enableAttester",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"getEnabledAttester",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getNumEnabledAttesters",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"attester",type:"address"}],name:"isEnabledAttester",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"localDomain",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[],name:"maxMessageBodySize",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"nextAvailableNonce",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"pauser",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pendingOwner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"message",type:"bytes"},{internalType:"bytes",name:"attestation",type:"bytes"}],name:"receiveMessage",outputs:[{internalType:"bool",name:"success",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"originalMessage",type:"bytes"},{internalType:"bytes",name:"originalAttestation",type:"bytes"},{internalType:"bytes",name:"newMessageBody",type:"bytes"},{internalType:"bytes32",name:"newDestinationCaller",type:"bytes32"}],name:"replaceMessage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"tokenContract",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"rescueERC20",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"rescuer",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32",name:"destinationDomain",type:"uint32"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes",name:"messageBody",type:"bytes"}],name:"sendMessage",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint32",name:"destinationDomain",type:"uint32"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"destinationCaller",type:"bytes32"},{internalType:"bytes",name:"messageBody",type:"bytes"}],name:"sendMessageWithCaller",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"newMaxMessageBodySize",type:"uint256"}],name:"setMaxMessageBodySize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"newSignatureThreshold",type:"uint256"}],name:"setSignatureThreshold",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"signatureThreshold",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAttesterManager",type:"address"}],name:"updateAttesterManager",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_newPauser",type:"address"}],name:"updatePauser",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newRescuer",type:"address"}],name:"updateRescuer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"usedNonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"version",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"}],_="0x60c06040526002805460ff60a01b191690553480156200001e57600080fd5b506040516200481f3803806200481f833981810160405260808110156200004457600080fd5b508051602082015160408301516060909301519192909182620000706200006a620000bb565b620000bf565b6200007b33620000e9565b60016004556200008b816200010b565b506001600160e01b031960e094851b811660805263ffffffff9290921660085590921b90911660a0525062000342565b3390565b600180546001600160a01b0319169055620000e6816200026b602090811b620024b817901c565b50565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6007546001600160a01b031633146200016b576040805162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206e6f74206174746573746572206d616e616765720000000000604482015290519081900360640190fd5b6001600160a01b038116620001c7576040805162461bcd60e51b815260206004820152601c60248201527f4e6577206174746573746572206d757374206265206e6f6e7a65726f00000000604482015290519081900360640190fd5b620001e2816005620002bb60201b6200252d1790919060201c565b62000234576040805162461bcd60e51b815260206004820152601860248201527f417474657374657220616c726561647920656e61626c65640000000000000000604482015290519081900360640190fd5b6040516001600160a01b038216907f5b99bab45c72ce67e89466dbc47480b9c1fde1400e7268bbf463b8354ee4653f90600090a250565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000620002d2836001600160a01b038416620002db565b90505b92915050565b6000620002e983836200032a565b6200032157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620002d5565b506000620002d5565b60009081526001919091016020526040902054151590565b60805160e01c60a05160e01c61449a6200038560003980610d325280611173528061267e525080610f5052806118805280611c2c528061269f525061449a6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80638da5cb5b1161010f578063bbde5374116100a2578063f2fde38b11610071578063f2fde38b146106da578063f7259a751461070d578063fae3687914610796578063feb61724146107c9576101e5565b8063bbde537414610665578063beb673d814610682578063de7769d41461069f578063e30c3978146106d2576101e5565b8063a82f2e26116100de578063a82f2e26146104fe578063af47b9bb14610506578063b2118a8d1461050e578063b857b77414610551576101e5565b80638da5cb5b146104c957806392492c68146104d15780639b0d94b7146104ee5780639fd0506d146104f6576101e5565b8063554bab3c116101875780637af82f60116101565780637af82f601461047e5780638371744e146104b15780638456cb59146104b95780638d3638f4146104c1576101e5565b8063554bab3c1461036557806357ecfd28146103985780635c975abb1461046e57806379ba509714610476576101e5565b806338a63183116101c357806338a63183146102f15780633f4ba83a1461032257806351079a531461032a57806354fd4d5014610344576101e5565b80630ba469bc146101ea5780632ab60045146102895780632d025080146102be575b600080fd5b61026c6004803603606081101561020057600080fd5b63ffffffff8235169160208101359181019060608101604082013564010000000081111561022d57600080fd5b82018360208201111561023f57600080fd5b8035906020019184600183028401116401000000008311171561026157600080fd5b5090925090506107e6565b6040805167ffffffffffffffff9092168252519081900360200190f35b6102bc6004803603602081101561029f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610931565b005b6102bc600480360360208110156102d457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a14565b6102f9610c40565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102bc610c5c565b610332610d1f565b60408051918252519081900360200190f35b61034c610d30565b6040805163ffffffff9092168252519081900360200190f35b6102bc6004803603602081101561037b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d54565b61045a600480360360408110156103ae57600080fd5b8101906020810181356401000000008111156103c957600080fd5b8201836020820111156103db57600080fd5b803590602001918460018302840111640100000000831117156103fd57600080fd5b91939092909160208101903564010000000081111561041b57600080fd5b82018360208201111561042d57600080fd5b8035906020019184600183028401116401000000008311171561044f57600080fd5b509092509050610e3d565b604080519115158252519081900360200190f35b61045a6116bb565b6102bc6116dc565b61045a6004803603602081101561049457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661177f565b61026c611794565b6102bc6117a4565b61034c61187e565b6102f96118a2565b6102bc600480360360208110156104e757600080fd5b50356118be565b6102f9611901565b6102f961191d565b610332611939565b61033261193f565b6102bc6004803603606081101561052457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135611945565b6102bc6004803603608081101561056757600080fd5b81019060208101813564010000000081111561058257600080fd5b82018360208201111561059457600080fd5b803590602001918460018302840111640100000000831117156105b657600080fd5b9193909290916020810190356401000000008111156105d457600080fd5b8201836020820111156105e657600080fd5b8035906020019184600183028401116401000000008311171561060857600080fd5b91939092909160208101903564010000000081111561062657600080fd5b82018360208201111561063857600080fd5b8035906020019184600183028401116401000000008311171561065a57600080fd5b9193509150356119db565b6102bc6004803603602081101561067b57600080fd5b5035611d59565b6102f96004803603602081101561069857600080fd5b5035611f7b565b6102bc600480360360208110156106b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611f88565b6102f9612092565b6102bc600480360360208110156106f057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166120ae565b61026c6004803603608081101561072357600080fd5b63ffffffff823516916020810135916040820135919081019060808101606082013564010000000081111561075757600080fd5b82018360208201111561076957600080fd5b8035906020019184600183028401116401000000008311171561078b57600080fd5b509092509050612146565b6102bc600480360360208110156107ac57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166122e4565b610332600480360360208110156107df57600080fd5b50356124a6565b60025460009074010000000000000000000000000000000000000000900460ff161561087357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b60008061087e612558565b9050600073__$8c977731748aa4504deed57239565df533$__6382c947b7336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156108e757600080fd5b505af41580156108fb573d6000803e3d6000fd5b505050506040513d602081101561091157600080fd5b5051905061092488888584868b8b61259a565b509150505b949350505050565b6109396127a4565b73ffffffffffffffffffffffffffffffffffffffff81166109a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614231602a913960400191505060405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fe475e580d85111348e40d8ca33cfdd74c30fe1655c2d8537a13abc10065ffa5a90600090a250565b60075473ffffffffffffffffffffffffffffffffffffffff163314610a9a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f43616c6c6572206e6f74206174746573746572206d616e616765720000000000604482015290519081900360640190fd5b6000610aa4610d1f565b905060018111610b1557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f546f6f2066657720656e61626c65642061747465737465727300000000000000604482015290519081900360640190fd5b6004548111610b8557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f5369676e6174757265207468726573686f6c6420697320746f6f206c6f770000604482015290519081900360640190fd5b610b9060058361284e565b610bfb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f417474657374657220616c72656164792064697361626c656400000000000000604482015290519081900360640190fd5b60405173ffffffffffffffffffffffffffffffffffffffff8316907f78e573a18c75957b7cadaab01511aa1c19a659f06ecf53e01de37ed92d3261fc90600090a25050565b60035473ffffffffffffffffffffffffffffffffffffffff1690565b60025473ffffffffffffffffffffffffffffffffffffffff163314610ccc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806143916022913960400191505060405180910390fd5b600280547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b6000610d2b6005612870565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b610d5c6127a4565b73ffffffffffffffffffffffffffffffffffffffff8116610dc8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141be6028913960400191505060405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907fb80482a293ca2e013eda8683c9bd7fc8347cfdaeea5ede58cba46df502c2a60490600090a250565b60025460009074010000000000000000000000000000000000000000900460ff1615610eca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b610ed68585858561287b565b6000610f1c600087878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050612a989050565b9050610f497fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216612abc565b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016610f9b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316612bfa565b63ffffffff161461100d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e76616c69642064657374696e6174696f6e20646f6d61696e000000000000604482015290519081900360640190fd5b600061103a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316612c2b565b1461116c57604080517f82c947b7000000000000000000000000000000000000000000000000000000008152336004820152905173__$8c977731748aa4504deed57239565df533$__916382c947b7916024808301926020929190829003018186803b1580156110a957600080fd5b505af41580156110bd573d6000803e3d6000fd5b505050506040513d60208110156110d357600080fd5b50516111007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316612c2b565b1461116c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e76616c69642063616c6c657220666f72206d657373616765000000000000604482015290519081900360640190fd5b63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166111be7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316612c5c565b63ffffffff161461123057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c6964206d6573736167652076657273696f6e000000000000000000604482015290519081900360640190fd5b600061125d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316612c8c565b9050600061128c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416612cbc565b9050600061129a8383612ced565b6000818152600a60205260409020549091501561131857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e6f6e636520616c726561647920757365640000000000000000000000000000604482015290519081900360640190fd5b6000818152600a60205260408120600190556113557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008616612d68565b905060006113ae6113877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008816612d99565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000016612e08565b905073__$8c977731748aa4504deed57239565df533$__635ced058e6113f57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008916612e4c565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561142957600080fd5b505af415801561143d573d6000803e3d6000fd5b505050506040513d602081101561145357600080fd5b50516040517f96abeb7000000000000000000000000000000000000000000000000000000000815263ffffffff8716600482019081526024820185905260606044830190815284516064840152845173ffffffffffffffffffffffffffffffffffffffff909416936396abeb70938a938893889391929091608490910190602085019080838360005b838110156114f45781810151838201526020016114dc565b50505050905090810190601f1680156115215780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561154257600080fd5b505af1158015611556573d6000803e3d6000fd5b505050506040513d602081101561156c57600080fd5b50516115d957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f68616e646c65526563656976654d6573736167652829206661696c6564000000604482015290519081900360640190fd5b8367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f58200b4c34ae05ee816d710053fff3fb75af4395915d3d2a771b24aa10e3cc5d878585604051808463ffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561166e578181015183820152602001611656565b50505050905090810190601f16801561169b5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a35060019a9950505050505050505050565b60025474010000000000000000000000000000000000000000900460ff1681565b60006116e6612e7d565b90508073ffffffffffffffffffffffffffffffffffffffff16611707612092565b73ffffffffffffffffffffffffffffffffffffffff1614611773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806142086029913960400191505060405180910390fd5b61177c81612e81565b50565b600061178c600583612eb2565b90505b919050565b60095467ffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff163314611814576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806143916022913960400191505060405180910390fd5b600280547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6118c66127a4565b60088190556040805182815290517fb13bf6bebed03d1b318e3ea32e4b2a3ad9f5e2312cdf340a2f4bbfaee39f928d9181900360200190a150565b60075473ffffffffffffffffffffffffffffffffffffffff1690565b60025473ffffffffffffffffffffffffffffffffffffffff1690565b60045481565b60085481565b60035473ffffffffffffffffffffffffffffffffffffffff1633146119b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806143336024913960400191505060405180910390fd5b6119d673ffffffffffffffffffffffffffffffffffffffff84168383612ed4565b505050565b60025474010000000000000000000000000000000000000000900460ff1615611a6557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b611a718787878761287b565b6000611ab7600089898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050612a989050565b9050611ae47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216612abc565b6000611b117fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316612d68565b905073__$8c977731748aa4504deed57239565df533$__635ced058e826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611b6257600080fd5b505af4158015611b76573d6000803e3d6000fd5b505050506040513d6020811015611b8c57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff163314611bfb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806142cf6021913960400191505060405180910390fd5b6000611c287fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416612c8c565b90507f000000000000000000000000000000000000000000000000000000000000000063ffffffff168163ffffffff1614611cae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806142a3602c913960400191505060405180910390fd5b6000611cdb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516612bfa565b90506000611d0a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008616612e4c565b90506000611d397fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008716612cbc565b9050611d4a83838988858e8e61259a565b50505050505050505050505050565b60075473ffffffffffffffffffffffffffffffffffffffff163314611ddf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f43616c6c6572206e6f74206174746573746572206d616e616765720000000000604482015290519081900360640190fd5b80611e4b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e76616c6964207369676e6174757265207468726573686f6c640000000000604482015290519081900360640190fd5b611e556005612870565b811115611ec357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4e6577207369676e6174757265207468726573686f6c6420746f6f2068696768604482015290519081900360640190fd5b600454811415611f3457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5369676e6174757265207468726573686f6c6420616c72656164792073657400604482015290519081900360640190fd5b6004805490829055604080518281526020810184905281517f149153f58b4da003a8cfd4523709a202402182cb5aa335046911277a1be6eede929181900390910190a15050565b600061178c600583612f61565b611f906127a4565b73ffffffffffffffffffffffffffffffffffffffff811661201257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f496e76616c6964206174746573746572206d616e616765722061646472657373604482015290519081900360640190fd5b60075473ffffffffffffffffffffffffffffffffffffffff1661203482612f6d565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f0cee1b7ae04f3c788dd3a46c6fa677eb95b913611ef7ab59524fdc09d346021960405160405180910390a35050565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b6120b66127a4565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556121016118a2565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60025460009074010000000000000000000000000000000000000000900460ff16156121d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b83612229576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806141e66022913960400191505060405180910390fd5b6000612233612558565b9050600073__$8c977731748aa4504deed57239565df533$__6382c947b7336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561229c57600080fd5b505af41580156122b0573d6000803e3d6000fd5b505050506040513d60208110156122c657600080fd5b505190506122d988888884868a8a61259a565b509695505050505050565b60075473ffffffffffffffffffffffffffffffffffffffff16331461236a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f43616c6c6572206e6f74206174746573746572206d616e616765720000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166123ec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4e6577206174746573746572206d757374206265206e6f6e7a65726f00000000604482015290519081900360640190fd5b6123f760058261252d565b61246257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f417474657374657220616c726561647920656e61626c65640000000000000000604482015290519081900360640190fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907f5b99bab45c72ce67e89466dbc47480b9c1fde1400e7268bbf463b8354ee4653f90600090a250565b600a6020526000908152604090205481565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061254f8373ffffffffffffffffffffffffffffffffffffffff8416612fb4565b90505b92915050565b600980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008116600167ffffffffffffffff9283169081019092161790915590565b60085481111561260b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d65737361676520626f64792065786365656473206d61782073697a65000000604482015290519081900360640190fd5b8561267757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f526563697069656e74206d757374206265206e6f6e7a65726f00000000000000604482015290519081900360640190fd5b60006126ff7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008a87898c8c8a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ffe92505050565b90507f8c5261668696ce22758910d05bab8f186d6eb247ceac2af2e82c7dc17669b036816040518080602001828103825283818151815260200191508051906020019080838360005b83811015612760578181015183820152602001612748565b50505050905090810190601f16801561278d5780820380516001836020036101000a031916815260200191505b509250505060405180910390a15050505050505050565b6127ac612e7d565b73ffffffffffffffffffffffffffffffffffffffff166127ca6118a2565b73ffffffffffffffffffffffffffffffffffffffff161461284c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b565b600061254f8373ffffffffffffffffffffffffffffffffffffffff84166130f3565b600061178c826131d7565b60045460410281146128ee57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e76616c6964206174746573746174696f6e206c656e677468000000000000604482015290519081900360640190fd5b60008085856040518083838082843760405192018290039091209450600093505050505b600454811015612a8f5760006129316041838102908101908789614173565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093945061297492508691508490506131db565b90508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611612a1057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f496e76616c6964207369676e6174757265206f72646572206f72206475706500604482015290519081900360640190fd5b612a198161177f565b612a8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f496e76616c6964207369676e61747572653a206e6f7420617474657374657200604482015290519081900360640190fd5b935050600101612912565b50505050505050565b815160009060208401612ab364ffffffffff851682846131e7565b95945050505050565b612ae77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216613248565b612b5257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d616c666f726d6564206d657373616765000000000000000000000000000000604482015290519081900360640190fd5b6074612b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316613285565b6bffffffffffffffffffffffff16101561177c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e76616c6964206d6573736167653a20746f6f2073686f7274000000000000604482015290519081900360640190fd5b600061178c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660086004613299565b600061178c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316605460206132ba565b600061178c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316826004613299565b600061178c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316600480613299565b600061178c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316600c6008613299565b6040805160e09390931b7fffffffff000000000000000000000000000000000000000000000000000000001660208085019190915260c09290921b7fffffffffffffffff0000000000000000000000000000000000000000000000001660248401528051808403600c018152602c9093019052815191012090565b600061178c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316601460206132ba565b600061178c607480612dcc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008616613285565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000861692916bffffffffffffffffffffffff9103166000613465565b6060600080612e1684613285565b6bffffffffffffffffffffffff1690506040519150819250612e3b84836020016134f5565b508181016020016040529052919050565b600061178c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316603460206132ba565b3390565b600180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905561177c816124b8565b600061254f8373ffffffffffffffffffffffffffffffffffffffff8416613621565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526119d6908490613639565b600061254f8383613711565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000612fc08383613621565b612ff657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155612552565b506000612552565b60608888888888888888604051602001808963ffffffff1660e01b81526004018863ffffffff1660e01b81526004018763ffffffff1660e01b81526004018667ffffffffffffffff1660c01b815260080185815260200184815260200183815260200182805190602001908083835b602083106130aa57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161306d565b6001836020036101000a03801982511681845116808217855250505050505090500198505050505050505050604051602081830303815290604052905098975050505050505050565b600081815260018301602052604081205480156131cd5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808301919081019060009087908390811061314457fe5b906000526020600020015490508087600001848154811061316157fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061319157fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050612552565b6000915050612552565b5490565b600061254f838361378f565b6000806131f4848461381f565b9050604051811115613204575060005b80613232577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050613241565b61323d858585613891565b9150505b9392505050565b6000613253826138a4565b64ffffffffff1664ffffffffff141561326e5750600061178f565b6000613279836138aa565b60405110199392505050565b60181c6bffffffffffffffffffffffff1690565b60008160200360080260ff166132b08585856132ba565b901c949350505050565b600060ff82166132cc57506000613241565b6132d584613285565b6bffffffffffffffffffffffff166132f08460ff851661381f565b11156133cf57613331613302856138d4565b6bffffffffffffffffffffffff1661331986613285565b6bffffffffffffffffffffffff16858560ff166138e8565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561339457818101518382015260200161337c565b50505050905090810190601f1680156133c15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60208260ff16111561342c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180614357603a913960400191505060405180910390fd5b60088202600061343b866138d4565b6bffffffffffffffffffffffff169050600061345683613a43565b91909501511695945050505050565b600080613471866138d4565b6bffffffffffffffffffffffff16905061348a866138aa565b61349e85613498848961381f565b9061381f565b11156134cd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050610929565b6134d7818661381f565b90506134eb8364ffffffffff1682866131e7565b9695505050505050565b600061350083613a8c565b613555576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806143dd6028913960400191505060405180910390fd5b61355e83613248565b6135b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180614405602b913960400191505060405180910390fd5b60006135be84613285565b6bffffffffffffffffffffffff16905060006135d9856138d4565b6bffffffffffffffffffffffff16905060006040519050848111156135fe5760206060fd5b8285848460045afa506134eb613613876138a4565b64ffffffffff168685613891565b60009081526001919091016020526040902054151590565b600061369b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613a9e9092919063ffffffff16565b8051909150156119d6578080602001905160208110156136ba57600080fd5b50516119d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806143b3602a913960400191505060405180910390fd5b8154600090821061376d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061419c6022913960400191505060405180910390fd5b82600001828154811061377c57fe5b9060005260206000200154905092915050565b6000815160411461380157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a6134eb86828585613aad565b8181018281101561255257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e00000000000000604482015290519081900360640190fd5b606092831b9190911790911b1760181b90565b60d81c90565b60006138b582613285565b6138be836138d4565b016bffffffffffffffffffffffff169050919050565b60781c6bffffffffffffffffffffffff1690565b606060006138f586613c9b565b915050600061390386613c9b565b915050600061391186613c9b565b915050600061391f86613c9b565b915050838383836040516020018080614430603591397fffffffffffff000000000000000000000000000000000000000000000000000060d087811b821660358401527f2077697468206c656e6774682030780000000000000000000000000000000000603b84015286901b16604a82015260500160216142f082397fffffffffffff000000000000000000000000000000000000000000000000000060d094851b811660218301527f2077697468206c656e677468203078000000000000000000000000000000000060278301529290931b9091166036830152507f2e00000000000000000000000000000000000000000000000000000000000000603c82015260408051601d818403018152603d90920190529b9a5050505050505050505050565b7f80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091011d90565b6000613a9782613d6f565b1592915050565b60606109298484600085613d97565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613b28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061425b6022913960400191505060405180910390fd5b8360ff16601b1480613b3d57508360ff16601c145b613b92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806143116022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613bee573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116612ab357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b600080601f5b600f8160ff161115613d035760ff600882021684901c613cc081613f51565b61ffff16841793508160ff16601014613cdb57601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01613ca1565b50600f5b60ff8160ff161015613d695760ff600882021684901c613d2681613f51565b61ffff16831792508160ff16600014613d4157601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01613d07565b50915091565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009081161490565b606082471015613df2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061427d6026913960400191505060405180910390fd5b613dfb85613f81565b613e6657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310613ecf57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613e92565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613f31576040519150601f19603f3d011682016040523d82523d6000602084013e613f36565b606091505b5091509150613f46828286613f87565b979650505050505050565b6000613f6360048360ff16901c614007565b60ff161760081b62ffff0016613f7882614007565b60ff1617919050565b3b151590565b60608315613f96575081613241565b825115613fa65782518084602001fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815284516024840152845185939192839260440191908501908083836000831561339457818101518382015260200161337c565b600060f08083179060ff8216141561402357603091505061178f565b8060ff1660f1141561403957603191505061178f565b8060ff1660f2141561404f57603291505061178f565b8060ff1660f3141561406557603391505061178f565b8060ff1660f4141561407b57603491505061178f565b8060ff1660f5141561409157603591505061178f565b8060ff1660f614156140a757603691505061178f565b8060ff1660f714156140bd57603791505061178f565b8060ff1660f814156140d357603891505061178f565b8060ff1660f914156140e957603991505061178f565b8060ff1660fa14156140ff57606191505061178f565b8060ff1660fb141561411557606291505061178f565b8060ff1660fc141561412b57606391505061178f565b8060ff1660fd141561414157606491505061178f565b8060ff1660fe141561415757606591505061178f565b8060ff1660ff141561416d57606691505061178f565b50919050565b60008085851115614182578182fd5b8386111561418e578182fd5b505082019391909203915056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64735061757361626c653a206e65772070617573657220697320746865207a65726f206164647265737344657374696e6174696f6e2063616c6c6572206d757374206265206e6f6e7a65726f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206e6577206f776e6572526573637561626c653a206e6577207265736375657220697320746865207a65726f206164647265737345434453413a20696e76616c6964207369676e6174757265202773272076616c7565416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4d657373616765206e6f74206f726967696e616c6c792073656e742066726f6d207468697320646f6d61696e53656e646572206e6f74207065726d697474656420746f20757365206e6f6e63652e20417474656d7074656420746f20696e646578206174206f666673657420307845434453413a20696e76616c6964207369676e6174757265202776272076616c7565526573637561626c653a2063616c6c6572206973206e6f7420746865207265736375657254797065644d656d566965772f696e646578202d20417474656d7074656420746f20696e646578206d6f7265207468616e2033322062797465735061757361626c653a2063616c6c6572206973206e6f7420746865207061757365725361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656454797065644d656d566965772f636f7079546f202d204e756c6c20706f696e74657220646572656654797065644d656d566965772f636f7079546f202d20496e76616c696420706f696e74657220646572656654797065644d656d566965772f696e646578202d204f76657272616e2074686520766965772e20536c696365206973206174203078a2646970667358221220e2eab27571cb9d2ecf49a592b1b78e24c28061c662fef829a376f797fcfcd15864736f6c63430007060033",W=d=>typeof d[0]=="string"||Array.isArray(d[0])||"_isInterface"in d[0],u=class u extends a.ContractFactory{constructor(...f){if(W(f))super(...f);else{const[e,t]=f;super(h,u.linkBytecode(e),t)}}static linkBytecode(f){let e=_;return e=e.replace(new RegExp("__\\$8c977731748aa4504deed57239565df533\\$__","g"),f["src/messages/Message.sol:Message"].replace(/^0x/,"").toLowerCase()),e}getDeployTransaction(f,e,t,b,n){return super.getDeployTransaction(f,e,t,b,n||{})}deploy(f,e,t,b,n){return super.deploy(f,e,t,b,n||{})}connect(f){return super.connect(f)}static createInterface(){return new a.Interface(h)}static connect(f,e){return new a.Contract(f,h,e)}};c(u,"bytecode",_),c(u,"abi",h);let v=u;const L=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),q=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),H=Object.freeze(Object.defineProperty({__proto__:null,CircleRelayer__factory:w,MessageTransmitter:L,MessageTransmitter__factory:v,TokenMessenger:q,TokenMessenger__factory:M},Symbol.toStringTag,{value:"Module"}));a.registerProtocol(a._platform,"CircleBridge",x);a.registerProtocol(a._platform,"AutomaticCircleBridge",R);exports.EvmAutomaticCircleBridge=R;exports.EvmCircleBridge=x;exports.ethers_contracts=H;
1
+ "use strict";var B=Object.defineProperty;var O=(d,f,e)=>f in d?B(d,f,{enumerable:!0,configurable:!0,writable:!0,value:e}):d[f]=e;var c=(d,f,e)=>O(d,typeof f!="symbol"?f+"":f,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./index-RFgTGgbk.js");require("./index-C-nWxaLg.js");const D=new RegExp("^bytes([0-9]+)$"),F=new RegExp("^(u?int)([0-9]*)$"),P=new RegExp("^(.*)\\[([0-9]*)\\]$");function I(d,f,e){switch(d){case"address":return e?a.getBytes(a.zeroPadValue(f,32)):a.getBytes(a.getAddress(f));case"string":return a.toUtf8Bytes(f);case"bytes":return a.getBytes(f);case"bool":return f=f?"0x01":"0x00",e?a.getBytes(a.zeroPadValue(f,32)):a.getBytes(f)}let t=d.match(F);if(t){let b=t[1]==="int",n=parseInt(t[2]||"256");return a.assertArgument((!t[2]||t[2]===String(n))&&n%8===0&&n!==0&&n<=256,"invalid number type","type",d),e&&(n=256),b&&(f=a.toTwos(f,n)),a.getBytes(a.zeroPadValue(a.toBeArray(f),n/8))}if(t=d.match(D),t){const b=parseInt(t[1]);return a.assertArgument(String(b)===t[1]&&b!==0&&b<=32,"invalid bytes type","type",d),a.assertArgument(a.dataLength(f)===b,`invalid value for ${d}`,"value",f),e?a.getBytes(a.zeroPadBytes(f,32)):f}if(t=d.match(P),t&&Array.isArray(f)){const b=t[1],n=parseInt(t[2]||String(f.length));a.assertArgument(n===f.length,`invalid array length for ${d}`,"value",f);const s=[];return f.forEach(function(i){s.push(I(b,i,!0))}),a.getBytes(a.concat(s))}a.assertArgument(!1,"invalid type","type",d)}function U(d,f){a.assertArgument(d.length===f.length,"wrong number of values; expected ${ types.length }","values",f);const e=[];return d.forEach(function(t,b){e.push(I(t,f[b]))}),a.hexlify(a.concat(e))}class x{constructor(f,e,t,b){c(this,"network");c(this,"chain");c(this,"provider");c(this,"contracts");c(this,"chainId");c(this,"circleChainId");c(this,"msgTransmitter");c(this,"tokenMessenger");c(this,"tokenEventHash");c(this,"messageSentEventHash");c(this,"messageReceivedEventHash");var r,p;if(this.network=f,this.chain=e,this.provider=t,this.contracts=b,f==="Devnet")throw new Error("CircleBridge not supported on Devnet");this.chainId=a.networkChainToNativeChainId.get(f,e);const n=a.circleChainId.get(f,e);if(n===void 0)throw new Error(`Circle chain id not found for ${f} ${e}`);this.circleChainId=n;const s=(r=b.cctp)==null?void 0:r.messageTransmitter;if(!s)throw new Error(`Circle Messenge Transmitter contract for domain ${e} not found`);this.msgTransmitter=v.connect(s,t);const i=(p=b.cctp)==null?void 0:p.tokenMessenger;if(!i)throw new Error(`Circle Token Messenger contract for domain ${e} not found`);this.tokenMessenger=M.connect(i,t),this.tokenEventHash=this.tokenMessenger.getEvent("DepositForBurn").fragment.topicHash,this.messageSentEventHash=this.msgTransmitter.getEvent("MessageSent").fragment.topicHash,this.messageReceivedEventHash=this.msgTransmitter.getEvent("MessageReceived").fragment.topicHash}static async fromRpc(f,e){const[t,b]=await a.EvmPlatform.chainFromRpc(f),n=e[b];if(n.network!==t)throw new Error(`Network mismatch: ${n.network} != ${t}`);return new x(t,b,f,n.contracts)}async*redeem(f,e,t){const b=new a.EvmAddress(f).toString(),n=await this.msgTransmitter.receiveMessage.populateTransaction(a.CircleBridge.serialize(e),a.hex.decode(t));yield this.createUnsignedTx(a.addFrom(n,b),"CircleBridge.redeem")}async*transfer(f,e,t){const b=new a.EvmAddress(f).toString(),n=e.address.toUniversalAddress().toUint8Array(),s=a.usdcContract.get(this.network,this.chain),i=a.EvmPlatform.getTokenImplementation(this.provider,s);if(await i.allowance(b,this.tokenMessenger.target)<t){const l=await i.approve.populateTransaction(this.tokenMessenger.target,t);yield this.createUnsignedTx(a.addFrom(l,b),"ERC20.approve of CircleBridge",!1)}const p=await this.tokenMessenger.depositForBurn.populateTransaction(t,a.circleChainId.get(this.network,e.chain),n,s);yield this.createUnsignedTx(a.addFrom(p,b),"CircleBridge.transfer")}async isTransferCompleted(f){const e=a.keccak256(U(["uint32","uint64"],[f.sourceDomain,f.nonce]));return(await this.msgTransmitter.usedNonces.staticCall(e)).toString()==="1"}async parseTransactionDetails(f){const e=await this.provider.getTransactionReceipt(f);if(!e)throw new Error(`No receipt for ${f} on ${this.chain}`);const t=e.logs.filter(o=>o.topics[0]===this.messageSentEventHash).map(o=>{const{topics:E,data:$}=o;return this.msgTransmitter.interface.parseLog({topics:E.slice(),data:$})}).filter(o=>!!o);if(t.length===0)throw new Error(`No log message for message transmitter found in ${f}`);t.length>1&&console.error(`Expected 1 event to be found for transaction, got>${t.length}}`);const[b]=t,{message:n}=b.args,[s,i]=a.CircleBridge.deserialize(a.hex.decode(n)),{payload:r}=s,p=r.messageSender,l=r.mintRecipient,m=a.toCircleChain(this.network,s.sourceDomain),k=a.toCircleChain(this.network,s.destinationDomain),S={chain:m,address:r.burnToken};return{from:{chain:m,address:p},to:{chain:k,address:l},token:S,amount:r.amount,message:s,id:{hash:i}}}createUnsignedTx(f,e,t=!1){return new a.EvmUnsignedTransaction(a.addChainId(f,this.chainId),this.network,this.chain,e,t)}}class R{constructor(f,e,t,b){c(this,"network");c(this,"chain");c(this,"provider");c(this,"contracts");c(this,"circleRelayer");c(this,"chainId");c(this,"tokenAddr");var i;if(this.network=f,this.chain=e,this.provider=t,this.contracts=b,f==="Devnet")throw new Error("AutomaticCircleBridge not supported on Devnet");this.chainId=a.networkChainToNativeChainId.get(f,e);const n=(i=this.contracts.cctp)==null?void 0:i.wormholeRelayer;if(!n)throw new Error(`Wormhole Circle relayer contract for domain ${e} not found`);this.circleRelayer=w.connect(n,t);const s=a.usdcContract.get(this.network,this.chain);if(!s)throw new Error(`USDC contract not found for ${this.network} ${this.chain}`);this.tokenAddr=s}static async fromRpc(f,e){const[t,b]=await a.EvmPlatform.chainFromRpc(f),n=e[b];if(n.network!==t)throw new Error(`Network mismatch: ${n.network} != ${t}`);return new R(t,b,f,n.contracts)}async getRelayerFee(f){return this.circleRelayer.relayerFee(a.toChainId(f),this.tokenAddr)}async*transfer(f,e,t,b){const n=new a.EvmAddress(f).toString(),s=a.chainToChainId(e.chain),i=e.address.toUniversalAddress().toUint8Array(),r=b||0n,p=a.EvmPlatform.getTokenImplementation(this.provider,this.tokenAddr);if(await p.allowance(n,this.circleRelayer.target)<t){const k=await p.approve.populateTransaction(this.circleRelayer.target,t);yield this.createUnsignedTx(a.addFrom(k,n),"ERC20.approve of CircleRelayer")}const m=await this.circleRelayer.transferTokensWithRelay.populateTransaction(this.tokenAddr,t,r,s,i);yield this.createUnsignedTx(a.addFrom(m,n),"CircleRelayer.transfer")}createUnsignedTx(f,e,t=!1){return new a.EvmUnsignedTransaction(a.addChainId(f,this.chainId),this.network,this.chain,e,t)}async nativeTokenAmount(f){return await this.circleRelayer.calculateNativeSwapAmountOut(this.tokenAddr,f)}async maxSwapAmount(){return await this.circleRelayer.calculateMaxSwapAmountIn(this.tokenAddr)}}const T=[{inputs:[{internalType:"address",name:"circleIntegration_",type:"address"},{internalType:"uint8",name:"nativeTokenDecimals_",type:"uint8"},{internalType:"address",name:"feeRecipient_",type:"address"},{internalType:"address",name:"ownerAssistant_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldRecipient",type:"address"},{indexed:!0,internalType:"address",name:"newRecipient",type:"address"}],name:"FeeRecipientUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransfered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!0,internalType:"address",name:"relayer",type:"address"},{indexed:!0,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"tokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"nativeAmount",type:"uint256"}],name:"SwapExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"token",type:"address"},{indexed:!0,internalType:"uint256",name:"swapRate",type:"uint256"}],name:"SwapRateUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{inputs:[],name:"VERSION",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"address_",type:"bytes32"}],name:"bytes32ToAddress",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"contract IERC20Metadata",name:"token",type:"address"}],name:"calculateMaxSwapAmountIn",outputs:[{internalType:"uint256",name:"maxAllowed",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IERC20Metadata",name:"token",type:"address"},{internalType:"uint256",name:"toNativeAmount",type:"uint256"}],name:"calculateNativeSwapAmountOut",outputs:[{internalType:"uint256",name:"nativeAmount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint16",name:"chainId_",type:"uint16"}],name:"cancelOwnershipTransferRequest",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[],name:"circleIntegration",outputs:[{internalType:"contract ICircleIntegration",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"confirmOwnershipTransferRequest",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"encoded",type:"bytes"}],name:"decodeTransferTokensWithRelay",outputs:[{components:[{internalType:"uint8",name:"payloadId",type:"uint8"},{internalType:"uint256",name:"targetRelayerFee",type:"uint256"},{internalType:"uint256",name:"toNativeTokenAmount",type:"uint256"},{internalType:"bytes32",name:"targetRecipientWallet",type:"bytes32"}],internalType:"struct CircleRelayerStructs.TransferTokensWithRelay",name:"transfer",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{components:[{internalType:"uint8",name:"payloadId",type:"uint8"},{internalType:"uint256",name:"targetRelayerFee",type:"uint256"},{internalType:"uint256",name:"toNativeTokenAmount",type:"uint256"},{internalType:"bytes32",name:"targetRecipientWallet",type:"bytes32"}],internalType:"struct CircleRelayerStructs.TransferTokensWithRelay",name:"transfer",type:"tuple"}],name:"encodeTransferTokensWithRelay",outputs:[{internalType:"bytes",name:"encoded",type:"bytes"}],stateMutability:"pure",type:"function"},{inputs:[],name:"feeRecipient",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPaused",outputs:[{internalType:"bool",name:"paused",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint16",name:"emitterChainId",type:"uint16"}],name:"getRegisteredContract",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"}],name:"maxNativeSwapAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"token",type:"address"}],name:"nativeSwapRate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"nativeSwapRatePrecision",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"nativeTokenDecimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"ownerAssistant",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pendingOwner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"bytes",name:"encodedWormholeMessage",type:"bytes"},{internalType:"bytes",name:"circleBridgeMessage",type:"bytes"},{internalType:"bytes",name:"circleAttestation",type:"bytes"}],internalType:"struct ICircleIntegration.RedeemParameters",name:"redeemParams",type:"tuple"}],name:"redeemTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint16",name:"chainId_",type:"uint16"},{internalType:"bytes32",name:"contractAddress",type:"bytes32"}],name:"registerContract",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"chainId_",type:"uint16"},{internalType:"address",name:"token",type:"address"}],name:"relayerFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint16",name:"chainId_",type:"uint16"},{internalType:"bool",name:"paused",type:"bool"}],name:"setPauseForTransfers",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"chainId_",type:"uint16"},{internalType:"address",name:"newOwner",type:"address"}],name:"submitOwnershipTransferRequest",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20Metadata",name:"token",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"toNativeTokenAmount",type:"uint256"},{internalType:"uint16",name:"targetChain",type:"uint16"},{internalType:"bytes32",name:"targetRecipientWallet",type:"bytes32"}],name:"transferTokensWithRelay",outputs:[{internalType:"uint64",name:"messageSequence",type:"uint64"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint16",name:"chainId_",type:"uint16"},{internalType:"address",name:"newFeeRecipient",type:"address"}],name:"updateFeeRecipient",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"chainId_",type:"uint16"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"maxAmount",type:"uint256"}],name:"updateMaxNativeSwapAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"chainId_",type:"uint16"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"swapRate",type:"uint256"}],name:"updateNativeSwapRate",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"chainId_",type:"uint16"},{internalType:"uint256",name:"nativeSwapRatePrecision_",type:"uint256"}],name:"updateNativeSwapRatePrecision",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"chainId_",type:"uint16"},{internalType:"address",name:"newAssistant",type:"address"}],name:"updateOwnerAssistant",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"chainId_",type:"uint16"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"updateRelayerFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"wormhole",outputs:[{internalType:"contract IWormhole",name:"",type:"address"}],stateMutability:"view",type:"function"}],A="0x6080604090808252346200034a5760808162002baa80380380916200002582856200034f565b8339810103126200034a576200003b8162000389565b6020808301519260ff84168085036200034a576200006960606200006188850162000389565b930162000389565b6001600b556001600160a01b03949092908516918215620002fb5715620002b7578416918215620002735784169081156200022f57600092835490640100000000600160c01b0333871b169362ff000060018060a01b031999858b600554161760055560101b1691828663ff010000600160c01b0319861617178755896003541617600355886002541617600255885193634d4502c960e11b85528685600481875afa94851562000225579087949392918796620001d5575b5061ffff600496169263ff000001600160c01b03191617171784558751928380926384acd1bb60e01b82525afa928315620001cb57829362000182575b505050169060045416176004556305f5e1006006555161280b90816200039f8239f35b9080929350813d8311620001c3575b6200019d81836200034f565b81010312620001bf5751908282168203620001bc57503880806200015f565b80fd5b5080fd5b503d62000191565b86513d84823e3d90fd5b8092949650859193953d83116200021d575b620001f381836200034f565b8101031262000219575161ffff8116810362000219579386939092909161ffff62000122565b8580fd5b503d620001e7565b8a513d88823e3d90fd5b865162461bcd60e51b815260048101859052601760248201527f696e76616c6964206f776e657220617373697374616e740000000000000000006044820152606490fd5b865162461bcd60e51b815260048101859052601d60248201527f696e76616c69642066656520726563697069656e7420616464726573730000006044820152606490fd5b865162461bcd60e51b815260048101859052601760248201527f696e76616c6964206e617469766520646563696d616c730000000000000000006044820152606490fd5b875162461bcd60e51b815260048101869052602260248201527f696e76616c696420636972636c6520696e746567726174696f6e206164647265604482015261737360f01b6064820152608490fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200037357604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200034a5756fe60806040526004361015610013575b600080fd5b60003560e01c8063038c0b66146102a7578063086049851461029e5780630a55d735146102955780630e1c863e1461028c57806313d8900b1461028357806316fb440a1461027a5780631a28219514610271578063203c5095146102685780632a88b4251461025f5780632efe4f421461025657806332d9965a1461024d5780633d62cca014610244578063469048401461023b57806351e2d7b51461023257806359b87d8e146102295780635ced058e146102205780636805b84b1461021757806368aa9ef41461020e5780636ddbaff31461020557806384acd1bb146101fc5780638da5cb5b146101f35780638e151dd1146101ea57806394cc743d146101e15780639a8a0592146101d8578063a2f32c8f146101cf578063ad48cb5e146101c6578063b5419523146101bd578063cd601c78146101b4578063dd6522aa146101ab578063e30c3978146101a2578063ea1d2e4a14610199578063ffa1ad74146101905763fff982a81461018857600080fd5b61000e6112e4565b5061000e61129d565b5061000e6111f7565b5061000e6111cd565b5061000e6111a3565b5061000e61117b565b5061000e61113d565b5061000e611118565b5061000e6110c9565b5061000e6110a6565b5061000e61100d565b5061000e610fd9565b5061000e610faf565b5061000e610f85565b5061000e610f22565b5061000e610e94565b5061000e610e6d565b5061000e610e45565b5061000e610bc6565b5061000e610aec565b5061000e610ac2565b5061000e610a88565b5061000e610a69565b5061000e610a2b565b5061000e610943565b5061000e61086b565b5061000e6107f8565b5061000e6107a9565b5061000e6106d3565b5061000e6104a1565b5061000e61042a565b5061000e610392565b503461000e57600080600319360112610383576001546001600160a01b03908116903382900361033e57825460201c6001600160a01b031660008054640100000000600160c01b031916602085901b640100000000600160c01b0316179055600180546001600160a01b0319169055167f0d18b5fd22306e373229b9439188228edca81207d1667f604daf6cef8aa3ee678380a380f35b60405162461bcd60e51b815260206004820152601b60248201527f63616c6c6572206d7573742062652070656e64696e674f776e657200000000006044820152606490fd5b80fd5b61ffff81160361000e57565b503461000e57604036600319011261000e576004356103b081610386565b600054602435916103e291906103d4602083901c6001600160a01b031633146122e6565b61ffff809116911614612329565b80156103ed57600655005b60405162461bcd60e51b81526020600482015260156024820152740707265636973696f6e206d757374206265203e203605c1b6044820152606490fd5b5060031960203682011261000e57600435906001600160401b03821161000e57606090823603011261000e5761046290600401611b89565b005b6001600160a01b0381160361000e57565b606090600319011261000e5760043561048d81610386565b9060243561049a81610464565b9060443590565b503461000e576104626104b336610475565b916104e96000546104da60018060a01b0333818460201c16149081156105d6575b506123bf565b61ffff83811691161415612415565b61050c6105048261ffff16600052600a602052604060002090565b541515612451565b6005546105729061053390610527906001600160a01b031681565b6001600160a01b031690565b604051633b6e750f60e01b81526001600160a01b038516600482015290602090829060249082905afa9081156105c9575b60009161059b575b50612496565b61ffff1660009081526007602090815260408083206001600160a01b0390941683529290522055565b6105bc915060203d81116105c2575b6105b48183610659565b8101906116ff565b3861056c565b503d6105aa565b6105d161158c565b610564565b6002541633149050386104d4565b50634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b0382111761061657604052565b61061e6105e4565b604052565b604081019081106001600160401b0382111761061657604052565b60a081019081106001600160401b0382111761061657604052565b90601f801991011681019081106001600160401b0382111761061657604052565b60405190610687826105fb565b565b6040519061010082018281106001600160401b0382111761061657604052565b6020906001600160401b0381116106c6575b601f01601f19160190565b6106ce6105e4565b6106bb565b503461000e57602036600319011261000e576004356001600160401b03811161000e573660238201121561000e57806004013590610710826106a9565b61071d6040519182610659565b828152366024848401011161000e57600060208461077d95602461074996018386013783010152612664565b60405191829182919091606080608083019460ff815116845260208101516020850152604081015160408501520151910152565b0390f35b604090600319011261000e5760043561079981610386565b906024356107a681610464565b90565b503461000e5760206107e561ffff6107c036610781565b91166000526007835260406000209060018060a01b0316600052602052604060002090565b54604051908152f35b8015150361000e57565b503461000e57604036600319011261000e5760043561081681610386565b63ff000000602435610827816107ee565b6000549261085590610847602086901c6001600160a01b031633146122e6565b61ffff858116911614612329565b63ff0000001990921691151560181b1617600055005b503461000e5761087a36610781565b60005490916001600160a01b039161089d916103d4602083901c851633146122e6565b8082169182156108ee57600380546001600160a01b031981166001600160a01b039384161790915516167faaebcf1bfa00580e41d966056b48521fa9f202645c86d4ddf28113e617c1b1d3600080a3005b60405162461bcd60e51b815260206004820152602760248201527f6e6577466565526563697069656e742063616e6e6f7420657175616c206164646044820152667265737328302960c81b6064820152608490fd5b503461000e5761095236610475565b909160009261097c845460018060a01b039333858360201c16148015610a1e575b6103d4906123bf565b600554604051633b6e750f60e01b81526001600160a01b0383811660048301526109c392602091839160249183918916165afa908115610a11575b869161059b5750612496565b6109ce8315156124d7565b6001600160a01b0381166000908152600860205260409020839055167fc6eb9fb936b61b402d503deeffc822f46492e15c2c8f079815cc4850ad7b02b08380a380f35b610a1961158c565b6109b7565b5060025485163314610973565b503461000e57602036600319011261000e57600435610a4981610464565b60018060a01b031660005260096020526020604060002054604051908152f35b503461000e57600036600319011261000e576020600654604051908152f35b503461000e57602036600319011261000e5761ffff600435610aa981610386565b16600052600a6020526020604060002054604051908152f35b503461000e57600036600319011261000e576003546040516001600160a01b039091168152602090f35b503461000e57604036600319011261000e57600435610b0a81610386565b6000549060243590610b2a602084901c6001600160a01b031633146122e6565b8115610b7157610b506104629361ffff808416908115159283610b64575b505050612363565b61ffff16600052600a602052604060002055565b1614159050388080610b48565b60405162461bcd60e51b815260206004820152602760248201527f636f6e7472616374416464726573732063616e6e6f7420657175616c206279746044820152666573333228302960c81b6064820152608490fd5b5060a036600319011261000e57600435610bdf81610464565b6024359060443560643591610bf383610386565b608435926002600b5414610e00576002600b5560ff60005460181c16610dc757610c1e851515611370565b610c298415156113b1565b6001600160a01b038281169590610c418715156113fd565b610c598361ffff16600052600a602052604060002090565b549382610c67861515611449565b610c70916121a5565b9587610c8a8561ffff166000526007602052604060002090565b6001600160a01b039091166000908152602091909152604090205495610cb081886114ba565b8811610cbb906114cf565b610cc361067a565b6001815296602088015260408701526060860152600554166001600160a01b03166001600160a01b031694610cf9908688611613565b610d0161067a565b6001600160a01b039096168652602086015261ffff1660408501526060840152610d2a90612523565b6040516328a87c1360e21b81529283918291610d4a919060048401611543565b03815a602094600091f161077d918115610dba575b600091610d8c575b50610d726001600b55565b6040516001600160401b0390911681529081906020820190565b610dad915060203d8111610db3575b610da58183610659565b81019061152f565b38610d67565b503d610d9b565b610dc261158c565b610d5f565b60405162461bcd60e51b81526020600482015260116024820152701c995b185e595c881a5cc81c185d5cd959607a1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b503461000e57602036600319011261000e576040516004356001600160a01b03168152602090f35b503461000e57600036600319011261000e57602060ff60005460181c166040519015158152f35b503461000e57600036600319011261000e576002546040516001600160a01b039091168152602090f35b60ff81160361000e57565b60005b838110610edc5750506000910152565b8181015183820152602001610ecc565b90602091610f0581518092818552858086019101610ec9565b601f01601f1916010190565b9060206107a6928181520190610eec565b503461000e57608036600319011261000e5761077d610f71604051610f46816105fb565b600435610f5281610ebe565b8152602435602082015260443560408201526064356060820152612523565b604051918291602083526020830190610eec565b503461000e57600036600319011261000e576004546040516001600160a01b039091168152602090f35b503461000e57600036600319011261000e57600054604051602091821c6001600160a01b03168152f35b503461000e57604036600319011261000e576020611005600435610ffc81610464565b602435906120d2565b604051908152f35b503461000e5761101c36610781565b6000546001600160a01b039261103e91906103d4602083901c861633146122e6565b168015611062576bffffffffffffffffffffffff60a01b6001541617600155600080f35b606460405162461bcd60e51b815260206004820152602060248201527f6e65774f776e65722063616e6e6f7420657175616c20616464726573732830296044820152fd5b503461000e57600036600319011261000e57602061ffff60005416604051908152f35b503461000e57602036600319011261000e576111066004356110ea81610386565b600054906103d4602083901c6001600160a01b031633146122e6565b600180546001600160a01b0319169055005b503461000e57600036600319011261000e57602060ff60005460101c16604051908152f35b503461000e57602036600319011261000e5760043561115b81610464565b60018060a01b031660005260086020526020604060002054604051908152f35b503461000e57602036600319011261000e57602061100560043561119e81610464565b611fa2565b503461000e57600036600319011261000e576005546040516001600160a01b039091168152602090f35b503461000e57600036600319011261000e576001546040516001600160a01b039091168152602090f35b503461000e5761120636610781565b6000546001600160a01b039261122891906103d4602083901c861633146122e6565b16801561124c576bffffffffffffffffffffffff60a01b6002541617600255600080f35b60405162461bcd60e51b8152602060048201526024808201527f6e6577417373697374616e742063616e6e6f7420657175616c206164647265736044820152637328302960e01b6064820152608490fd5b503461000e57600036600319011261000e5761077d6040516112be81610623565b60058152640302e322e360dc1b6020820152604051918291602083526020830190610eec565b503461000e576104626113566112f936610475565b600054909391926001600160a01b039161131e916103d4602083901c851633146122e6565b6020816005541691602460405180948193633b6e750f60e01b8352881660048301525afa9081156105c95760009161059b5750612496565b6001600160a01b0316600090815260096020526040902055565b1561137757565b60405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b6044820152606490fd5b156113b857565b60405162461bcd60e51b815260206004820152601860248201527f696e76616c69642074617267657420726563697069656e7400000000000000006044820152606490fd5b1561140457565b60405162461bcd60e51b815260206004820152601d60248201527f746f6b656e2063616e6e6f7420657175616c20616464726573732830290000006044820152606490fd5b1561145057565b60405162461bcd60e51b815260206004820152602560248201527f434952434c452d52454c415945523a20746172676574206e6f742072656769736044820152641d195c995960da1b6064820152608490fd5b50634e487b7160e01b600052601160045260246000fd5b919082018092116114c757565b6106876114a3565b156114d657565b60405162461bcd60e51b815260206004820152601b60248201527f696e73756666696369656e7420616d6f756e74526563656976656400000000006044820152606490fd5b51906001600160401b038216820361000e57565b9081602091031261000e576107a69061151b565b60c09060606107a6949360018060a01b0381511683526020810151602084015261ffff604082015116604084015201516060820152600060808201528160a08201520190610eec565b506040513d6000823e3d90fd5b9081602091031261000e575190565b156115af57565b60405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608490fd5b61166961068793928315801561166e575b61162d906115a8565b60405163095ea7b360e01b60208201526001600160a01b039091166024820152604481019390935282606481015b03601f198101845283610659565b611714565b50604051636eb1769f60e11b81523060048201526001600160a01b038216602482015261162d90602081806044810103816001600160a01b0389165afa9081156116f2575b6000916116c4575b50159050611624565b6116e5915060203d81116116eb575b6116dd8183610659565b810190611599565b386116bb565b503d6116d3565b6116fa61158c565b6116b3565b9081602091031261000e57516107a6816107ee565b604051611791916001600160a01b031661172d82610623565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af13d15611819573d91611775836106a9565b926117836040519485610659565b83523d60008785013e61181d565b805190828215928315611801575b505050156117aa5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b61181193508201810191016116ff565b38828161179f565b6060915b9192901561187f5750815115611831575090565b3b1561183a5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156118925750805190602001fd5b60405162461bcd60e51b81529081906118ae9060048301610f11565b0390fd5b519063ffffffff8216820361000e57565b81601f8201121561000e5780516118d9816106a9565b926118e76040519485610659565b8184526020828401011161000e576107a69160208085019101610ec9565b9060208282031261000e5781516001600160401b039283821161000e5701906101008282031261000e57611937610689565b928251845260208301516020850152611952604084016118b2565b6040850152611963606084016118b2565b60608501526119746080840161151b565b608085015260a083015160a085015260c083015160c085015260e083015190811161000e576119a392016118c3565b60e082015290565b9035601e198236030181121561000e5701602081359101916001600160401b03821161000e57813603831361000e57565b908060209392818452848401376000828201840152601f01601f1916010190565b9060606107a69260208152611a25611a1584806119ab565b84602085015260808401916119dc565b90611a58611a4d611a3960208701876119ab565b601f198587038101604087015295916119dc565b9460408101906119ab565b939092828603019101526119dc565b9081602091031261000e57516107a681610386565b15611a8357565b60405162461bcd60e51b815260206004820152602860248201527f66726f6d41646472657373206973206e6f74206120726567697374657265642060448201526718dbdb9d1c9858dd60c21b6064820152608490fd5b15611ae057565b60405162461bcd60e51b815260206004820152602360248201527f726563697069656e742063616e6e6f742073776170206e61746976652061737360448201526265747360e81b6064820152608490fd5b15611b3857565b606460405162461bcd60e51b815260206004820152602060248201527f696e73756666696369656e74206e617469766520617373657420616d6f756e746044820152fd5b919082039182116114c757565b600554611bc3906001600160a01b0390611ba4908216610527565b90604051936357bf927b60e01b855284806000958693600483016119fd565b038183865af1938415611ea1575b8394611e7d575b50611c33611c62611bec60e0870151612664565b93611c5b60a088015191611c0760408a015163ffffffff1690565b6040518092638cf67ba960e01b825281806020998a956004830191909163ffffffff6020820193169052565b03915afa908115611e70575b8891611e43575b5061ffff16600052600a602052604060002090565b5414611a7c565b8451611c76906001600160a01b0316610527565b60608401519094906001600160a01b03169383851691823314611e295761068797928483611cbc938a6040611cca999701948551611ce7575b50505001519051906114ba565b9182611cd1575b0151611b7c565b9216611eae565b611ce2838660035416878a16611eae565b611cc3565b611cf082611fa2565b80875111611e21575b50611d058651836120d2565b92831580611dd557828291611d1c87341015611b31565b82611d278834611b7c565b8015908115611da1575b5050879091611d97575b83928392f115611d8a575b8551604080519182526020820194909452918b169233927f764f0dc063c06f32d89a3f3af80c0db4be8a090901f589a478b447e0a51f09f19190a45b388a81611caf565b611d9261158c565b611d46565b6108fc9150611d3b565b8280929181928290611dcc575b3390f115611dbf575b823880611d31565b611dc761158c565b611db7565b506108fc611dae565b509250505080845234158015611ded575b5050611d82565b81908190611e18575b81809134903390f115611e0b575b3880611de6565b611e1361158c565b611e04565b506108fc611df6565b865238611cf9565b50505061068794611e3a3415611ad9565b01519216611eae565b611e639150853d8711611e69575b611e5b8183610659565b810190611a67565b38611c46565b503d611e51565b611e7861158c565b611c3f565b611e9a9194503d8085833e611e928183610659565b810190611905565b9238611bd8565b611ea961158c565b611bd1565b60405163a9059cbb60e01b60208201526001600160a01b039092166024830152604482019290925261068791611669826064810161165b565b15611eee57565b60405162461bcd60e51b81526020600482015260116024820152701cddd85c081c985d19481b9bdd081cd95d607a1b6044820152606490fd5b9081602091031261000e57516107a681610ebe565b818102929181159184041417156114c757565b9060ff8091169116039060ff82116114c757565b60ff16604d8111611f75575b600a0a90565b611f7d6114a3565b611f6f565b8115611f8c570490565b634e487b7160e01b600052601260045260246000fd5b6001600160a01b031660008181526008602052604090205490611fc6821515611ee7565b60405163313ce56760e01b815291602083600481855afa9283156120c5575b600093612095575b5060ff60005460101c16918260ff8516116000146120535761203f61204a936120396107a696946120336120449560018060a01b03166000526009602052604060002090565b54611f3c565b93611f4f565b611f63565b90611f3c565b60065490611f82565b61203f6107a69461208061208f946120336120869560018060a01b03166000526009602052604060002090565b94611f4f565b60065490611f3c565b90611f82565b6120b791935060203d81116120be575b6120af8183610659565b810190611f27565b9138611fed565b503d6120a5565b6120cd61158c565b611fe5565b6001600160a01b03166000818152600860209081526040909120600492919054916120fe831515611ee7565b60405163313ce56760e01b815293849182905afa918215612198575b600092612178575b5060ff60005460101c168060ff841611600014612159579061204461203f61208f936121536107a697600654611f3c565b95611f4f565b61204461203f61217393946120396107a697600654611f3c565b611f82565b61219191925060203d81116120be576120af8183610659565b9038612122565b6121a061158c565b61211a565b6040516370a0823160e01b8082523060048301526107a69391926020926001600160a01b0390911691908385602481865afa948515612274575b60009561224d575b50906121f68492303386612281565b60405190815230600482015291829060249082905afa918215612240575b600092612223575b5050611b7c565b6122399250803d106116eb576116dd8183610659565b388061221c565b61224861158c565b612214565b849291955061226b6121f691843d86116116eb576116dd8183610659565b959192506121e7565b61227c61158c565b6121df565b6040516323b872dd60e01b60208201526001600160a01b0392831660248201529290911660448301526064808301939093529181526106879160a082018281106001600160401b038211176122d9575b604052611714565b6122e16105e4565b6122d1565b156122ed57565b60405162461bcd60e51b815260206004820152601460248201527331b0b63632b9103737ba103a34329037bbb732b960611b6044820152606490fd5b1561233057565b60405162461bcd60e51b815260206004820152600b60248201526a3bb937b7339031b430b4b760a91b6044820152606490fd5b1561236a57565b60405162461bcd60e51b815260206004820152602760248201527f636861696e49645f2063616e6e6f7420657175616c2030206f7220746869732060448201526618da185a5b925960ca1b6064820152608490fd5b156123c657565b60405162461bcd60e51b815260206004820152602160248201527f63616c6c6572206e6f7420746865206f776e6572206f7220617373697374616e6044820152601d60fa1b6064820152608490fd5b1561241c57565b60405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b21031b430b4b760991b6044820152606490fd5b1561245857565b60405162461bcd60e51b815260206004820152601660248201527518dbdb9d1c9858dd08191bd95cdb89dd08195e1a5cdd60521b6044820152606490fd5b1561249d57565b60405162461bcd60e51b81526020600482015260126024820152711d1bdad95b881b9bdd081858d8d95c1d195960721b6044820152606490fd5b156124de57565b60405162461bcd60e51b815260206004820152601960248201527f737761702072617465206d757374206265206e6f6e7a65726f000000000000006044820152606490fd5b600160ff825116036125725780519060208101519060606040820151910151916040519360ff60f81b9060f81b166020850152602184015260418301526061820152606181526107a68161063e565b60405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081c185e5b1bd8591259607a1b6044820152606490fd5b156125b257565b60405162461bcd60e51b815260206004820152602960248201527f434952434c455f52454c415945523a20696e76616c6964206d657373616765206044820152681c185e5b1bd859125960ba1b6064820152608490fd5b1561261057565b60405162461bcd60e51b815260206004820152602660248201527f434952434c455f52454c415945523a20696e76616c6964206d657373616765206044820152650d8cadccee8d60d31b6064820152608490fd5b90604051612671816105fb565b600081526020810192600084526040820160008152606083019060008252839560018451106126f0576126c6600160ff6126bf610687986126b8848a0151829060ff169052565b5160ff1690565b16146125ab565b6126cf8461272b565b90526126da83612778565b90526126e582612788565b905251606114612609565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b602181511061273b576021015190565b60405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b6044820152606490fd5b604181511061273b576041015190565b6061815110612798576061015190565b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fdfea2646970667358221220ce69d4caa8128b752fcc5b0ad82cfd1a64124612c8555100c2e05c2766faa13f64736f6c63430008110033",N=d=>d.length>1;class w extends a.ContractFactory{constructor(...f){N(f)?super(...f):super(T,A,f[0])}getDeployTransaction(f,e,t,b,n){return super.getDeployTransaction(f,e,t,b,n||{})}deploy(f,e,t,b,n){return super.deploy(f,e,t,b,n||{})}connect(f){return super.connect(f)}static createInterface(){return new a.Interface(T)}static connect(f,e){return new a.Contract(f,T,e)}}c(w,"bytecode",A),c(w,"abi",T);const g=[{inputs:[{internalType:"address",name:"_messageTransmitter",type:"address"},{internalType:"uint32",name:"_messageBodyVersion",type:"uint32"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint64",name:"nonce",type:"uint64"},{indexed:!0,internalType:"address",name:"burnToken",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!0,internalType:"address",name:"depositor",type:"address"},{indexed:!1,internalType:"bytes32",name:"mintRecipient",type:"bytes32"},{indexed:!1,internalType:"uint32",name:"destinationDomain",type:"uint32"},{indexed:!1,internalType:"bytes32",name:"destinationTokenMessenger",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"destinationCaller",type:"bytes32"}],name:"DepositForBurn",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"localMinter",type:"address"}],name:"LocalMinterAdded",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"localMinter",type:"address"}],name:"LocalMinterRemoved",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"mintRecipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!0,internalType:"address",name:"mintToken",type:"address"}],name:"MintAndWithdraw",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferStarted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint32",name:"domain",type:"uint32"},{indexed:!1,internalType:"bytes32",name:"tokenMessenger",type:"bytes32"}],name:"RemoteTokenMessengerAdded",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint32",name:"domain",type:"uint32"},{indexed:!1,internalType:"bytes32",name:"tokenMessenger",type:"bytes32"}],name:"RemoteTokenMessengerRemoved",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newRescuer",type:"address"}],name:"RescuerChanged",type:"event"},{inputs:[],name:"acceptOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newLocalMinter",type:"address"}],name:"addLocalMinter",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint32",name:"domain",type:"uint32"},{internalType:"bytes32",name:"tokenMessenger",type:"bytes32"}],name:"addRemoteTokenMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint32",name:"destinationDomain",type:"uint32"},{internalType:"bytes32",name:"mintRecipient",type:"bytes32"},{internalType:"address",name:"burnToken",type:"address"}],name:"depositForBurn",outputs:[{internalType:"uint64",name:"_nonce",type:"uint64"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint32",name:"destinationDomain",type:"uint32"},{internalType:"bytes32",name:"mintRecipient",type:"bytes32"},{internalType:"address",name:"burnToken",type:"address"},{internalType:"bytes32",name:"destinationCaller",type:"bytes32"}],name:"depositForBurnWithCaller",outputs:[{internalType:"uint64",name:"nonce",type:"uint64"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint32",name:"remoteDomain",type:"uint32"},{internalType:"bytes32",name:"sender",type:"bytes32"},{internalType:"bytes",name:"messageBody",type:"bytes"}],name:"handleReceiveMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"localMessageTransmitter",outputs:[{internalType:"contract IMessageTransmitter",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"localMinter",outputs:[{internalType:"contract ITokenMinter",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"messageBodyVersion",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pendingOwner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32",name:"",type:"uint32"}],name:"remoteTokenMessengers",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"removeLocalMinter",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint32",name:"domain",type:"uint32"}],name:"removeRemoteTokenMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"originalMessage",type:"bytes"},{internalType:"bytes",name:"originalAttestation",type:"bytes"},{internalType:"bytes32",name:"newDestinationCaller",type:"bytes32"},{internalType:"bytes32",name:"newMintRecipient",type:"bytes32"}],name:"replaceDepositForBurn",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"tokenContract",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"rescueERC20",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"rescuer",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newRescuer",type:"address"}],name:"updateRescuer",outputs:[],stateMutability:"nonpayable",type:"function"}],C="0x60c06040523480156200001157600080fd5b506040516200366238038062003662833981810160405260408110156200003757600080fd5b508051602090910151620000546200004e620000d9565b620000dd565b6001600160a01b038216620000b0576040805162461bcd60e51b815260206004820152601a60248201527f4d6573736167655472616e736d6974746572206e6f7420736574000000000000604482015290519081900360640190fd5b60609190911b6001600160601b03191660805260e01b6001600160e01b03191660a05262000157565b3390565b600180546001600160a01b0319169055620001048162000107602090811b6200177c17901c565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60805160601c60a05160e01c6134b9620001a960003980610819528061114e528061133f5280611fda5250806108455280610c4c52806121fc5280612252528061293f5280612a1652506134b96000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806391f17888116100cd578063da87e44811610081578063f2fde38b11610066578063f2fde38b146104a7578063f79fd08e146104da578063f856ddb6146104fd57610151565b8063da87e44814610476578063e30c39781461049f57610151565b80639cdbb181116100b25780639cdbb1811461040a578063b2118a8d1461042b578063cb75c11c1461046e57610151565b806391f178881461036c57806396abeb701461037457610151565b80636fd3504e116101245780638197beb9116101095780638197beb9146102fc57806382a5e6651461032f5780638da5cb5b1461036457610151565b80636fd3504e1461028c57806379ba5097146102f457610151565b806329a78e33146101565780632ab60045146102205780632c1219211461025357806338a6318314610284575b600080fd5b61021e6004803603608081101561016c57600080fd5b81019060208101813564010000000081111561018757600080fd5b82018360208201111561019957600080fd5b803590602001918460018302840111640100000000831117156101bb57600080fd5b9193909290916020810190356401000000008111156101d957600080fd5b8201836020820111156101eb57600080fd5b8035906020019184600183028401116401000000008311171561020d57600080fd5b91935091508035906020013561054e565b005b61021e6004803603602081101561023657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610b67565b61025b610c4a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61025b610c6e565b6102d7600480360360808110156102a257600080fd5b50803590602081013563ffffffff16906040810135906060013573ffffffffffffffffffffffffffffffffffffffff16610c8a565b6040805167ffffffffffffffff9092168252519081900360200190f35b61021e610ca4565b61021e6004803603602081101561031257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d47565b6103526004803603602081101561034557600080fd5b503563ffffffff16610ecf565b60408051918252519081900360200190f35b61025b610ee1565b61021e610efd565b6103f66004803603606081101561038a57600080fd5b63ffffffff823516916020810135918101906060810160408201356401000000008111156103b757600080fd5b8201836020820111156103c957600080fd5b803590602001918460018302840111640100000000831117156103eb57600080fd5b509092509050610ffe565b604080519115158252519081900360200190f35b61041261133d565b6040805163ffffffff9092168252519081900360200190f35b61021e6004803603606081101561044157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135611361565b61025b6113f7565b61021e6004803603604081101561048c57600080fd5b5063ffffffff8135169060200135611413565b61025b61155f565b61021e600480360360208110156104bd57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661157b565b61021e600480360360208110156104f057600080fd5b503563ffffffff16611613565b6102d7600480360360a081101561051357600080fd5b5080359063ffffffff6020820135169060408101359073ffffffffffffffffffffffffffffffffffffffff60608201351690608001356116f7565b6000610594600088888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506117f19050565b90506105c17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216611817565b60006105ee7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316611955565b905061061b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000082166119cc565b60006106487fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316611b09565b905073__$8c977731748aa4504deed57239565df533$__635ced058e826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561069957600080fd5b505af41580156106ad573d6000803e3d6000fd5b505050506040513d60208110156106c357600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16331461074857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e76616c69642073656e64657220666f72206d657373616765000000000000604482015290519081900360640190fd5b836107b457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d696e7420726563697069656e74206d757374206265206e6f6e7a65726f0000604482015290519081900360640190fd5b60006107e17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416611b3a565b905060006108107fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516611b6b565b905060006108417f000000000000000000000000000000000000000000000000000000000000000084898588611b9c565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b857b7748d8d8d8d868e6040518763ffffffff1660e01b81526004018080602001806020018060200185815260200184810384528a8a82818152602001925080828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101858103845288815260200190508888808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018681038452885181528851602091820193918a019250908190849084905b8381101561096757818101518382015260200161094f565b50505050905090810190601f1680156109945780820380516001836020036101000a031916815260200191505b509950505050505050505050600060405180830381600087803b1580156109ba57600080fd5b505af11580156109ce573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff1673__$8c977731748aa4504deed57239565df533$__635ced058e856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610a3857600080fd5b505af4158015610a4c573d6000803e3d6000fd5b505050506040513d6020811015610a6257600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16610aa57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008916611bff565b67ffffffffffffffff167f2fa9ca894982930190727e75500a97d8dc500233a5065e0f3126c48fbe0343c0858b610afd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008d16611c30565b610b287fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008e16611c61565b60408051948552602085019390935263ffffffff909116838301526060830152608082018e9052519081900360a00190a4505050505050505050505050565b610b6f611c92565b73ffffffffffffffffffffffffffffffffffffffff8116610bdb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613335602a913960400191505060405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fe475e580d85111348e40d8ca33cfdd74c30fe1655c2d8537a13abc10065ffa5a90600090a250565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025473ffffffffffffffffffffffffffffffffffffffff1690565b6000610c998585858585611d3c565b90505b949350505050565b6000610cae6121c3565b90508073ffffffffffffffffffffffffffffffffffffffff16610ccf61155f565b73ffffffffffffffffffffffffffffffffffffffff1614610d3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061330c6029913960400191505060405180910390fd5b610d44816121c7565b50565b610d4f611c92565b73ffffffffffffffffffffffffffffffffffffffff8116610dd157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff1615610e5657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4c6f63616c206d696e74657220697320616c7265616479207365742e00000000604482015290519081900360640190fd5b6003805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517f109bb3e70cbf1931e295b49e75c67013b85ff80d64e6f1d321f37157b90c38309181900360200190a150565b60046020526000908152604090205481565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b610f05611c92565b60035473ffffffffffffffffffffffffffffffffffffffff1680610f8a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e6f206c6f63616c206d696e746572206973207365742e000000000000000000604482015290519081900360640190fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556040805173ffffffffffffffffffffffffffffffffffffffff8316815290517f2db49fbf671271826a27b02ebc496209c85fffffb4bccc67430d2a0f22b4d1ac9181900360200190a150565b60006110086121f8565b61107357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e76616c6964206d657373616765207472616e736d69747465720000000000604482015290519081900360640190fd5b848461107f8282612279565b6110d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061335f6021913960400191505060405180910390fd5b600061111a600087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506117f19050565b90506111477fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000082166119cc565b63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166111997fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000083166122a5565b63ffffffff161461120b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496e76616c6964206d65737361676520626f64792076657273696f6e00000000604482015290519081900360640190fd5b60006112387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000083166122d5565b905060006112677fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416611b3a565b905060006112967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516611b6b565b905060006112a2612306565b905061132b818d8573__$8c977731748aa4504deed57239565df533$__635ced058e896040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156112f957600080fd5b505af415801561130d573d6000803e3d6000fd5b505050506040513d602081101561132357600080fd5b5051866123aa565b5060019b9a5050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025473ffffffffffffffffffffffffffffffffffffffff1633146113d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806133c76024913960400191505060405180910390fd5b6113f273ffffffffffffffffffffffffffffffffffffffff841683836124c3565b505050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b61141b611c92565b8061148757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f62797465733332283029206e6f7420616c6c6f77656400000000000000000000604482015290519081900360640190fd5b63ffffffff82166000908152600460205260409020541561150957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f546f6b656e4d657373656e67657220616c726561647920736574000000000000604482015290519081900360640190fd5b63ffffffff82166000818152600460209081526040918290208490558151928352820183905280517f4bba2b08298cf59661b4895e384cc2ac3962ce2d71f1b7c11bca52e1169f95999281900390910190a15050565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b611583611c92565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556115ce610ee1565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b61161b611c92565b63ffffffff811660009081526004602052604090205461169c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f20546f6b656e4d657373656e676572207365740000000000000000000000604482015290519081900360640190fd5b63ffffffff8116600081815260046020908152604080832080549390558051938452908301829052805191927f3dcea012093dbca2bb8ed7fd2b2ff90305ab70bddda8bbb94d4152735a98f0b1929081900390910190a15050565b60008161176557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e76616c69642064657374696e6174696f6e2063616c6c6572000000000000604482015290519081900360640190fd5b6117728686868686611d3c565b9695505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b81516000906020840161180c64ffffffffff85168284612550565b925050505b92915050565b6118427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000082166125af565b6118ad57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d616c666f726d6564206d657373616765000000000000000000000000000000604482015290519081900360640190fd5b60746118da7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000083166125ec565b6bffffffffffffffffffffffff161015610d4457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e76616c6964206d6573736167653a20746f6f2073686f7274000000000000604482015290519081900360640190fd5b60006119c46074806119887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000086166125ec565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000861692916bffffffffffffffffffffffff9103166000612600565b90505b919050565b6119f77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000082166125af565b611a6257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d616c666f726d6564206d657373616765000000000000000000000000000000604482015290519081900360640190fd5b6084611a8f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000083166125ec565b6bffffffffffffffffffffffff1614610d4457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c6964206d657373616765206c656e67746800000000000000000000604482015290519081900360640190fd5b60006119c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660646020612686565b60006119c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660046020612686565b60006119c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660446020612831565b6040805160e09690961b7fffffffff000000000000000000000000000000000000000000000000000000001660208701526024860194909452604485019290925260648401526084808401919091528151808403909101815260a4909201905290565b60006119c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316600c6008612831565b60006119c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660086004612831565b60006119c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660346020612686565b611c9a6121c3565b73ffffffffffffffffffffffffffffffffffffffff16611cb8610ee1565b73ffffffffffffffffffffffffffffffffffffffff1614611d3a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b565b6000808611611dac57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f416d6f756e74206d757374206265206e6f6e7a65726f00000000000000000000604482015290519081900360640190fd5b83611e1857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d696e7420726563697069656e74206d757374206265206e6f6e7a65726f0000604482015290519081900360640190fd5b6000611e2386612852565b90506000611e2f612306565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8084166024830152604482018c905291519293508792918316916323b872dd916064808201926020929091908290030181600087803b158015611eb357600080fd5b505af1158015611ec7573d6000803e3d6000fd5b505050506040513d6020811015611edd57600080fd5b5051611f4a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5472616e73666572206f7065726174696f6e206661696c656400000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff16639dc29fac878b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611fbb57600080fd5b505af1158015611fcf573d6000803e3d6000fd5b5050505060006121297f000000000000000000000000000000000000000000000000000000000000000073__$8c977731748aa4504deed57239565df533$__6382c947b78a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561205e57600080fd5b505af4158015612072573d6000803e3d6000fd5b505050506040513d602081101561208857600080fd5b5051604080517f82c947b700000000000000000000000000000000000000000000000000000000815233600482015290518c918f9173__$8c977731748aa4504deed57239565df533$__916382c947b7916024808301926020929190829003018186803b1580156120f857600080fd5b505af415801561210c573d6000803e3d6000fd5b505050506040513d602081101561212257600080fd5b5051611b9c565b905060006121398a8689856128d4565b604080518d8152602081018c905263ffffffff8d168183015260608101889052608081018a90529051919250339173ffffffffffffffffffffffffffffffffffffffff8b169167ffffffffffffffff8516917f2fa9ca894982930190727e75500a97d8dc500233a5065e0f3126c48fbe0343c09181900360a00190a49a9950505050505050505050565b3390565b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610d448161177c565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161580159061227457503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016145b905090565b6000811580159061229e575063ffffffff831660009081526004602052604090205482145b9392505050565b60006119c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316826004612831565b60006119c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660246020612686565b60035460009073ffffffffffffffffffffffffffffffffffffffff1661238d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4c6f63616c206d696e746572206973206e6f7420736574000000000000000000604482015290519081900360640190fd5b5060035473ffffffffffffffffffffffffffffffffffffffff1690565b604080517fd54de06f00000000000000000000000000000000000000000000000000000000815263ffffffff861660048201526024810185905273ffffffffffffffffffffffffffffffffffffffff848116604483015260648201849052915187926000929084169163d54de06f9160848082019260209290919082900301818787803b15801561243a57600080fd5b505af115801561244e573d6000803e3d6000fd5b505050506040513d602081101561246457600080fd5b505160408051858152905191925073ffffffffffffffffffffffffffffffffffffffff80841692908716917f1b2a7ff080b8cb6ff436ce0372e399692bbfb6d4ae5766fd8d58a7b8cc6142e6919081900360200190a350505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526113f2908490612b07565b60008061255d8484612bdf565b905060405181111561256d575060005b8061259b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000091505061229e565b6125a6858585612c51565b95945050505050565b60006125ba82612c64565b64ffffffffff1664ffffffffff14156125d5575060006119c7565b60006125e083612c6a565b60405110199392505050565b60181c6bffffffffffffffffffffffff1690565b60008061260c86612c94565b6bffffffffffffffffffffffff16905061262586612c6a565b612639856126338489612bdf565b90612bdf565b1115612668577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050610c9c565b6126728186612bdf565b90506117728364ffffffffff168286612550565b600060ff82166126985750600061229e565b6126a1846125ec565b6bffffffffffffffffffffffff166126bc8460ff8516612bdf565b111561279b576126fd6126ce85612c94565b6bffffffffffffffffffffffff166126e5866125ec565b6bffffffffffffffffffffffff16858560ff16612ca8565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612760578181015183820152602001612748565b50505050905090810190601f16801561278d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60208260ff1611156127f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806133eb603a913960400191505060405180910390fd5b60088202600061280786612c94565b6bffffffffffffffffffffffff169050600061282283612e03565b91909501511695945050505050565b60008160200360080260ff16612848858585612686565b901c949350505050565b63ffffffff8116600090815260046020526040812054806119c457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4e6f20546f6b656e4d657373656e67657220666f7220646f6d61696e00000000604482015290519081900360640190fd5b600082612a14576040517f0ba469bc00000000000000000000000000000000000000000000000000000000815263ffffffff8616600482019081526024820186905260606044830190815284516064840152845173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001693630ba469bc938a938a93899360840190602085019080838360005b8381101561299357818101518382015260200161297b565b50505050905090810190601f1680156129c05780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b1580156129e157600080fd5b505af11580156129f5573d6000803e3d6000fd5b505050506040513d6020811015612a0b57600080fd5b50519050610c9c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f7259a75868686866040518563ffffffff1660e01b8152600401808563ffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612ab8578181015183820152602001612aa0565b50505050905090810190601f168015612ae55780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156129e157600080fd5b6000612b69826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612e4c9092919063ffffffff16565b8051909150156113f257808060200190516020811015612b8857600080fd5b50516113f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613425602a913960400191505060405180910390fd5b8181018281101561181157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e00000000000000604482015290519081900360640190fd5b606092831b9190911790911b1760181b90565b60d81c90565b6000612c75826125ec565b612c7e83612c94565b016bffffffffffffffffffffffff169050919050565b60781c6bffffffffffffffffffffffff1690565b60606000612cb586612e5b565b9150506000612cc386612e5b565b9150506000612cd186612e5b565b9150506000612cdf86612e5b565b91505083838383604051602001808061344f603591397fffffffffffff000000000000000000000000000000000000000000000000000060d087811b821660358401527f2077697468206c656e6774682030780000000000000000000000000000000000603b84015286901b16604a82015260500160216133a682397fffffffffffff000000000000000000000000000000000000000000000000000060d094851b811660218301527f2077697468206c656e677468203078000000000000000000000000000000000060278301529290931b9091166036830152507f2e00000000000000000000000000000000000000000000000000000000000000603c82015260408051601d818403018152603d90920190529b9a5050505050505050505050565b7f80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091011d90565b6060610c9c8484600085612f2f565b600080601f5b600f8160ff161115612ec35760ff600882021684901c612e80816130e9565b61ffff16841793508160ff16601014612e9b57601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01612e61565b50600f5b60ff8160ff161015612f295760ff600882021684901c612ee6816130e9565b61ffff16831792508160ff16600014612f0157601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01612ec7565b50915091565b606082471015612f8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806133806026913960400191505060405180910390fd5b612f9385613119565b612ffe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831061306757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161302a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091506130de82828661311f565b979650505050505050565b60006130fb60048360ff16901c61319f565b60ff161760081b62ffff00166131108261319f565b60ff1617919050565b3b151590565b6060831561312e57508161229e565b82511561313e5782518084602001fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201818152845160248401528451859391928392604401919085019080838360008315612760578181015183820152602001612748565b600060f08083179060ff821614156131bb5760309150506119c7565b8060ff1660f114156131d15760319150506119c7565b8060ff1660f214156131e75760329150506119c7565b8060ff1660f314156131fd5760339150506119c7565b8060ff1660f414156132135760349150506119c7565b8060ff1660f514156132295760359150506119c7565b8060ff1660f6141561323f5760369150506119c7565b8060ff1660f714156132555760379150506119c7565b8060ff1660f8141561326b5760389150506119c7565b8060ff1660f914156132815760399150506119c7565b8060ff1660fa14156132975760619150506119c7565b8060ff1660fb14156132ad5760629150506119c7565b8060ff1660fc14156132c35760639150506119c7565b8060ff1660fd14156132d95760649150506119c7565b8060ff1660fe14156132ef5760659150506119c7565b8060ff1660ff14156133055760669150506119c7565b5091905056fe4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206e6577206f776e6572526573637561626c653a206e6577207265736375657220697320746865207a65726f206164647265737352656d6f746520546f6b656e4d657373656e67657220756e737570706f72746564416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c2e20417474656d7074656420746f20696e646578206174206f6666736574203078526573637561626c653a2063616c6c6572206973206e6f7420746865207265736375657254797065644d656d566965772f696e646578202d20417474656d7074656420746f20696e646578206d6f7265207468616e2033322062797465735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656454797065644d656d566965772f696e646578202d204f76657272616e2074686520766965772e20536c696365206973206174203078a26469706673582212206b689f34f4e15f499706461beeb293d1cec2381023fbd21a46dcbc1856ad238864736f6c63430007060033",z=d=>typeof d[0]=="string"||Array.isArray(d[0])||"_isInterface"in d[0],y=class y extends a.ContractFactory{constructor(...f){if(z(f))super(...f);else{const[e,t]=f;super(g,y.linkBytecode(e),t)}}static linkBytecode(f){let e=C;return e=e.replace(new RegExp("__\\$8c977731748aa4504deed57239565df533\\$__","g"),f["src/messages/Message.sol:Message"].replace(/^0x/,"").toLowerCase()),e}getDeployTransaction(f,e,t){return super.getDeployTransaction(f,e,t||{})}deploy(f,e,t){return super.deploy(f,e,t||{})}connect(f){return super.connect(f)}static createInterface(){return new a.Interface(g)}static connect(f,e){return new a.Contract(f,g,e)}};c(y,"bytecode",C),c(y,"abi",g);let M=y;const h=[{inputs:[{internalType:"uint32",name:"_localDomain",type:"uint32"},{internalType:"address",name:"_attester",type:"address"},{internalType:"uint32",name:"_maxMessageBodySize",type:"uint32"},{internalType:"uint32",name:"_version",type:"uint32"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"attester",type:"address"}],name:"AttesterDisabled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"attester",type:"address"}],name:"AttesterEnabled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousAttesterManager",type:"address"},{indexed:!0,internalType:"address",name:"newAttesterManager",type:"address"}],name:"AttesterManagerUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"newMaxMessageBodySize",type:"uint256"}],name:"MaxMessageBodySizeUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"uint32",name:"sourceDomain",type:"uint32"},{indexed:!0,internalType:"uint64",name:"nonce",type:"uint64"},{indexed:!1,internalType:"bytes32",name:"sender",type:"bytes32"},{indexed:!1,internalType:"bytes",name:"messageBody",type:"bytes"}],name:"MessageReceived",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes",name:"message",type:"bytes"}],name:"MessageSent",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferStarted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[],name:"Pause",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newAddress",type:"address"}],name:"PauserChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newRescuer",type:"address"}],name:"RescuerChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"oldSignatureThreshold",type:"uint256"},{indexed:!1,internalType:"uint256",name:"newSignatureThreshold",type:"uint256"}],name:"SignatureThresholdUpdated",type:"event"},{anonymous:!1,inputs:[],name:"Unpause",type:"event"},{inputs:[],name:"acceptOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"attesterManager",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"attester",type:"address"}],name:"disableAttester",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAttester",type:"address"}],name:"enableAttester",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"getEnabledAttester",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getNumEnabledAttesters",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"attester",type:"address"}],name:"isEnabledAttester",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"localDomain",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[],name:"maxMessageBodySize",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"nextAvailableNonce",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"pauser",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pendingOwner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"message",type:"bytes"},{internalType:"bytes",name:"attestation",type:"bytes"}],name:"receiveMessage",outputs:[{internalType:"bool",name:"success",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"originalMessage",type:"bytes"},{internalType:"bytes",name:"originalAttestation",type:"bytes"},{internalType:"bytes",name:"newMessageBody",type:"bytes"},{internalType:"bytes32",name:"newDestinationCaller",type:"bytes32"}],name:"replaceMessage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"tokenContract",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"rescueERC20",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"rescuer",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32",name:"destinationDomain",type:"uint32"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes",name:"messageBody",type:"bytes"}],name:"sendMessage",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint32",name:"destinationDomain",type:"uint32"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"destinationCaller",type:"bytes32"},{internalType:"bytes",name:"messageBody",type:"bytes"}],name:"sendMessageWithCaller",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"newMaxMessageBodySize",type:"uint256"}],name:"setMaxMessageBodySize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"newSignatureThreshold",type:"uint256"}],name:"setSignatureThreshold",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"signatureThreshold",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAttesterManager",type:"address"}],name:"updateAttesterManager",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_newPauser",type:"address"}],name:"updatePauser",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newRescuer",type:"address"}],name:"updateRescuer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"usedNonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"version",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"}],_="0x60c06040526002805460ff60a01b191690553480156200001e57600080fd5b506040516200481f3803806200481f833981810160405260808110156200004457600080fd5b508051602082015160408301516060909301519192909182620000706200006a620000bb565b620000bf565b6200007b33620000e9565b60016004556200008b816200010b565b506001600160e01b031960e094851b811660805263ffffffff9290921660085590921b90911660a0525062000342565b3390565b600180546001600160a01b0319169055620000e6816200026b602090811b620024b817901c565b50565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6007546001600160a01b031633146200016b576040805162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206e6f74206174746573746572206d616e616765720000000000604482015290519081900360640190fd5b6001600160a01b038116620001c7576040805162461bcd60e51b815260206004820152601c60248201527f4e6577206174746573746572206d757374206265206e6f6e7a65726f00000000604482015290519081900360640190fd5b620001e2816005620002bb60201b6200252d1790919060201c565b62000234576040805162461bcd60e51b815260206004820152601860248201527f417474657374657220616c726561647920656e61626c65640000000000000000604482015290519081900360640190fd5b6040516001600160a01b038216907f5b99bab45c72ce67e89466dbc47480b9c1fde1400e7268bbf463b8354ee4653f90600090a250565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000620002d2836001600160a01b038416620002db565b90505b92915050565b6000620002e983836200032a565b6200032157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620002d5565b506000620002d5565b60009081526001919091016020526040902054151590565b60805160e01c60a05160e01c61449a6200038560003980610d325280611173528061267e525080610f5052806118805280611c2c528061269f525061449a6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80638da5cb5b1161010f578063bbde5374116100a2578063f2fde38b11610071578063f2fde38b146106da578063f7259a751461070d578063fae3687914610796578063feb61724146107c9576101e5565b8063bbde537414610665578063beb673d814610682578063de7769d41461069f578063e30c3978146106d2576101e5565b8063a82f2e26116100de578063a82f2e26146104fe578063af47b9bb14610506578063b2118a8d1461050e578063b857b77414610551576101e5565b80638da5cb5b146104c957806392492c68146104d15780639b0d94b7146104ee5780639fd0506d146104f6576101e5565b8063554bab3c116101875780637af82f60116101565780637af82f601461047e5780638371744e146104b15780638456cb59146104b95780638d3638f4146104c1576101e5565b8063554bab3c1461036557806357ecfd28146103985780635c975abb1461046e57806379ba509714610476576101e5565b806338a63183116101c357806338a63183146102f15780633f4ba83a1461032257806351079a531461032a57806354fd4d5014610344576101e5565b80630ba469bc146101ea5780632ab60045146102895780632d025080146102be575b600080fd5b61026c6004803603606081101561020057600080fd5b63ffffffff8235169160208101359181019060608101604082013564010000000081111561022d57600080fd5b82018360208201111561023f57600080fd5b8035906020019184600183028401116401000000008311171561026157600080fd5b5090925090506107e6565b6040805167ffffffffffffffff9092168252519081900360200190f35b6102bc6004803603602081101561029f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610931565b005b6102bc600480360360208110156102d457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a14565b6102f9610c40565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102bc610c5c565b610332610d1f565b60408051918252519081900360200190f35b61034c610d30565b6040805163ffffffff9092168252519081900360200190f35b6102bc6004803603602081101561037b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d54565b61045a600480360360408110156103ae57600080fd5b8101906020810181356401000000008111156103c957600080fd5b8201836020820111156103db57600080fd5b803590602001918460018302840111640100000000831117156103fd57600080fd5b91939092909160208101903564010000000081111561041b57600080fd5b82018360208201111561042d57600080fd5b8035906020019184600183028401116401000000008311171561044f57600080fd5b509092509050610e3d565b604080519115158252519081900360200190f35b61045a6116bb565b6102bc6116dc565b61045a6004803603602081101561049457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661177f565b61026c611794565b6102bc6117a4565b61034c61187e565b6102f96118a2565b6102bc600480360360208110156104e757600080fd5b50356118be565b6102f9611901565b6102f961191d565b610332611939565b61033261193f565b6102bc6004803603606081101561052457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135611945565b6102bc6004803603608081101561056757600080fd5b81019060208101813564010000000081111561058257600080fd5b82018360208201111561059457600080fd5b803590602001918460018302840111640100000000831117156105b657600080fd5b9193909290916020810190356401000000008111156105d457600080fd5b8201836020820111156105e657600080fd5b8035906020019184600183028401116401000000008311171561060857600080fd5b91939092909160208101903564010000000081111561062657600080fd5b82018360208201111561063857600080fd5b8035906020019184600183028401116401000000008311171561065a57600080fd5b9193509150356119db565b6102bc6004803603602081101561067b57600080fd5b5035611d59565b6102f96004803603602081101561069857600080fd5b5035611f7b565b6102bc600480360360208110156106b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611f88565b6102f9612092565b6102bc600480360360208110156106f057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166120ae565b61026c6004803603608081101561072357600080fd5b63ffffffff823516916020810135916040820135919081019060808101606082013564010000000081111561075757600080fd5b82018360208201111561076957600080fd5b8035906020019184600183028401116401000000008311171561078b57600080fd5b509092509050612146565b6102bc600480360360208110156107ac57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166122e4565b610332600480360360208110156107df57600080fd5b50356124a6565b60025460009074010000000000000000000000000000000000000000900460ff161561087357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b60008061087e612558565b9050600073__$8c977731748aa4504deed57239565df533$__6382c947b7336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156108e757600080fd5b505af41580156108fb573d6000803e3d6000fd5b505050506040513d602081101561091157600080fd5b5051905061092488888584868b8b61259a565b509150505b949350505050565b6109396127a4565b73ffffffffffffffffffffffffffffffffffffffff81166109a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614231602a913960400191505060405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fe475e580d85111348e40d8ca33cfdd74c30fe1655c2d8537a13abc10065ffa5a90600090a250565b60075473ffffffffffffffffffffffffffffffffffffffff163314610a9a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f43616c6c6572206e6f74206174746573746572206d616e616765720000000000604482015290519081900360640190fd5b6000610aa4610d1f565b905060018111610b1557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f546f6f2066657720656e61626c65642061747465737465727300000000000000604482015290519081900360640190fd5b6004548111610b8557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f5369676e6174757265207468726573686f6c6420697320746f6f206c6f770000604482015290519081900360640190fd5b610b9060058361284e565b610bfb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f417474657374657220616c72656164792064697361626c656400000000000000604482015290519081900360640190fd5b60405173ffffffffffffffffffffffffffffffffffffffff8316907f78e573a18c75957b7cadaab01511aa1c19a659f06ecf53e01de37ed92d3261fc90600090a25050565b60035473ffffffffffffffffffffffffffffffffffffffff1690565b60025473ffffffffffffffffffffffffffffffffffffffff163314610ccc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806143916022913960400191505060405180910390fd5b600280547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b6000610d2b6005612870565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b610d5c6127a4565b73ffffffffffffffffffffffffffffffffffffffff8116610dc8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806141be6028913960400191505060405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691909117918290556040519116907fb80482a293ca2e013eda8683c9bd7fc8347cfdaeea5ede58cba46df502c2a60490600090a250565b60025460009074010000000000000000000000000000000000000000900460ff1615610eca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b610ed68585858561287b565b6000610f1c600087878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050612a989050565b9050610f497fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216612abc565b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016610f9b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316612bfa565b63ffffffff161461100d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e76616c69642064657374696e6174696f6e20646f6d61696e000000000000604482015290519081900360640190fd5b600061103a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316612c2b565b1461116c57604080517f82c947b7000000000000000000000000000000000000000000000000000000008152336004820152905173__$8c977731748aa4504deed57239565df533$__916382c947b7916024808301926020929190829003018186803b1580156110a957600080fd5b505af41580156110bd573d6000803e3d6000fd5b505050506040513d60208110156110d357600080fd5b50516111007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316612c2b565b1461116c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e76616c69642063616c6c657220666f72206d657373616765000000000000604482015290519081900360640190fd5b63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166111be7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316612c5c565b63ffffffff161461123057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c6964206d6573736167652076657273696f6e000000000000000000604482015290519081900360640190fd5b600061125d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316612c8c565b9050600061128c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416612cbc565b9050600061129a8383612ced565b6000818152600a60205260409020549091501561131857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e6f6e636520616c726561647920757365640000000000000000000000000000604482015290519081900360640190fd5b6000818152600a60205260408120600190556113557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008616612d68565b905060006113ae6113877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008816612d99565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000016612e08565b905073__$8c977731748aa4504deed57239565df533$__635ced058e6113f57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008916612e4c565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561142957600080fd5b505af415801561143d573d6000803e3d6000fd5b505050506040513d602081101561145357600080fd5b50516040517f96abeb7000000000000000000000000000000000000000000000000000000000815263ffffffff8716600482019081526024820185905260606044830190815284516064840152845173ffffffffffffffffffffffffffffffffffffffff909416936396abeb70938a938893889391929091608490910190602085019080838360005b838110156114f45781810151838201526020016114dc565b50505050905090810190601f1680156115215780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561154257600080fd5b505af1158015611556573d6000803e3d6000fd5b505050506040513d602081101561156c57600080fd5b50516115d957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f68616e646c65526563656976654d6573736167652829206661696c6564000000604482015290519081900360640190fd5b8367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f58200b4c34ae05ee816d710053fff3fb75af4395915d3d2a771b24aa10e3cc5d878585604051808463ffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561166e578181015183820152602001611656565b50505050905090810190601f16801561169b5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a35060019a9950505050505050505050565b60025474010000000000000000000000000000000000000000900460ff1681565b60006116e6612e7d565b90508073ffffffffffffffffffffffffffffffffffffffff16611707612092565b73ffffffffffffffffffffffffffffffffffffffff1614611773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806142086029913960400191505060405180910390fd5b61177c81612e81565b50565b600061178c600583612eb2565b90505b919050565b60095467ffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff163314611814576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806143916022913960400191505060405180910390fd5b600280547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6118c66127a4565b60088190556040805182815290517fb13bf6bebed03d1b318e3ea32e4b2a3ad9f5e2312cdf340a2f4bbfaee39f928d9181900360200190a150565b60075473ffffffffffffffffffffffffffffffffffffffff1690565b60025473ffffffffffffffffffffffffffffffffffffffff1690565b60045481565b60085481565b60035473ffffffffffffffffffffffffffffffffffffffff1633146119b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806143336024913960400191505060405180910390fd5b6119d673ffffffffffffffffffffffffffffffffffffffff84168383612ed4565b505050565b60025474010000000000000000000000000000000000000000900460ff1615611a6557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b611a718787878761287b565b6000611ab7600089898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050612a989050565b9050611ae47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216612abc565b6000611b117fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316612d68565b905073__$8c977731748aa4504deed57239565df533$__635ced058e826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611b6257600080fd5b505af4158015611b76573d6000803e3d6000fd5b505050506040513d6020811015611b8c57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff163314611bfb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806142cf6021913960400191505060405180910390fd5b6000611c287fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416612c8c565b90507f000000000000000000000000000000000000000000000000000000000000000063ffffffff168163ffffffff1614611cae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806142a3602c913960400191505060405180910390fd5b6000611cdb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516612bfa565b90506000611d0a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008616612e4c565b90506000611d397fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008716612cbc565b9050611d4a83838988858e8e61259a565b50505050505050505050505050565b60075473ffffffffffffffffffffffffffffffffffffffff163314611ddf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f43616c6c6572206e6f74206174746573746572206d616e616765720000000000604482015290519081900360640190fd5b80611e4b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e76616c6964207369676e6174757265207468726573686f6c640000000000604482015290519081900360640190fd5b611e556005612870565b811115611ec357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4e6577207369676e6174757265207468726573686f6c6420746f6f2068696768604482015290519081900360640190fd5b600454811415611f3457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5369676e6174757265207468726573686f6c6420616c72656164792073657400604482015290519081900360640190fd5b6004805490829055604080518281526020810184905281517f149153f58b4da003a8cfd4523709a202402182cb5aa335046911277a1be6eede929181900390910190a15050565b600061178c600583612f61565b611f906127a4565b73ffffffffffffffffffffffffffffffffffffffff811661201257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f496e76616c6964206174746573746572206d616e616765722061646472657373604482015290519081900360640190fd5b60075473ffffffffffffffffffffffffffffffffffffffff1661203482612f6d565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f0cee1b7ae04f3c788dd3a46c6fa677eb95b913611ef7ab59524fdc09d346021960405160405180910390a35050565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b6120b66127a4565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556121016118a2565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60025460009074010000000000000000000000000000000000000000900460ff16156121d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b83612229576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806141e66022913960400191505060405180910390fd5b6000612233612558565b9050600073__$8c977731748aa4504deed57239565df533$__6382c947b7336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561229c57600080fd5b505af41580156122b0573d6000803e3d6000fd5b505050506040513d60208110156122c657600080fd5b505190506122d988888884868a8a61259a565b509695505050505050565b60075473ffffffffffffffffffffffffffffffffffffffff16331461236a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f43616c6c6572206e6f74206174746573746572206d616e616765720000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166123ec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4e6577206174746573746572206d757374206265206e6f6e7a65726f00000000604482015290519081900360640190fd5b6123f760058261252d565b61246257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f417474657374657220616c726561647920656e61626c65640000000000000000604482015290519081900360640190fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907f5b99bab45c72ce67e89466dbc47480b9c1fde1400e7268bbf463b8354ee4653f90600090a250565b600a6020526000908152604090205481565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061254f8373ffffffffffffffffffffffffffffffffffffffff8416612fb4565b90505b92915050565b600980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008116600167ffffffffffffffff9283169081019092161790915590565b60085481111561260b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d65737361676520626f64792065786365656473206d61782073697a65000000604482015290519081900360640190fd5b8561267757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f526563697069656e74206d757374206265206e6f6e7a65726f00000000000000604482015290519081900360640190fd5b60006126ff7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008a87898c8c8a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ffe92505050565b90507f8c5261668696ce22758910d05bab8f186d6eb247ceac2af2e82c7dc17669b036816040518080602001828103825283818151815260200191508051906020019080838360005b83811015612760578181015183820152602001612748565b50505050905090810190601f16801561278d5780820380516001836020036101000a031916815260200191505b509250505060405180910390a15050505050505050565b6127ac612e7d565b73ffffffffffffffffffffffffffffffffffffffff166127ca6118a2565b73ffffffffffffffffffffffffffffffffffffffff161461284c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b565b600061254f8373ffffffffffffffffffffffffffffffffffffffff84166130f3565b600061178c826131d7565b60045460410281146128ee57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e76616c6964206174746573746174696f6e206c656e677468000000000000604482015290519081900360640190fd5b60008085856040518083838082843760405192018290039091209450600093505050505b600454811015612a8f5760006129316041838102908101908789614173565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093945061297492508691508490506131db565b90508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611612a1057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f496e76616c6964207369676e6174757265206f72646572206f72206475706500604482015290519081900360640190fd5b612a198161177f565b612a8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f496e76616c6964207369676e61747572653a206e6f7420617474657374657200604482015290519081900360640190fd5b935050600101612912565b50505050505050565b815160009060208401612ab364ffffffffff851682846131e7565b95945050505050565b612ae77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216613248565b612b5257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4d616c666f726d6564206d657373616765000000000000000000000000000000604482015290519081900360640190fd5b6074612b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316613285565b6bffffffffffffffffffffffff16101561177c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e76616c6964206d6573736167653a20746f6f2073686f7274000000000000604482015290519081900360640190fd5b600061178c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660086004613299565b600061178c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316605460206132ba565b600061178c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316826004613299565b600061178c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316600480613299565b600061178c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316600c6008613299565b6040805160e09390931b7fffffffff000000000000000000000000000000000000000000000000000000001660208085019190915260c09290921b7fffffffffffffffff0000000000000000000000000000000000000000000000001660248401528051808403600c018152602c9093019052815191012090565b600061178c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316601460206132ba565b600061178c607480612dcc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008616613285565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000861692916bffffffffffffffffffffffff9103166000613465565b6060600080612e1684613285565b6bffffffffffffffffffffffff1690506040519150819250612e3b84836020016134f5565b508181016020016040529052919050565b600061178c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316603460206132ba565b3390565b600180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905561177c816124b8565b600061254f8373ffffffffffffffffffffffffffffffffffffffff8416613621565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526119d6908490613639565b600061254f8383613711565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000612fc08383613621565b612ff657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155612552565b506000612552565b60608888888888888888604051602001808963ffffffff1660e01b81526004018863ffffffff1660e01b81526004018763ffffffff1660e01b81526004018667ffffffffffffffff1660c01b815260080185815260200184815260200183815260200182805190602001908083835b602083106130aa57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161306d565b6001836020036101000a03801982511681845116808217855250505050505090500198505050505050505050604051602081830303815290604052905098975050505050505050565b600081815260018301602052604081205480156131cd5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808301919081019060009087908390811061314457fe5b906000526020600020015490508087600001848154811061316157fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061319157fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050612552565b6000915050612552565b5490565b600061254f838361378f565b6000806131f4848461381f565b9050604051811115613204575060005b80613232577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050613241565b61323d858585613891565b9150505b9392505050565b6000613253826138a4565b64ffffffffff1664ffffffffff141561326e5750600061178f565b6000613279836138aa565b60405110199392505050565b60181c6bffffffffffffffffffffffff1690565b60008160200360080260ff166132b08585856132ba565b901c949350505050565b600060ff82166132cc57506000613241565b6132d584613285565b6bffffffffffffffffffffffff166132f08460ff851661381f565b11156133cf57613331613302856138d4565b6bffffffffffffffffffffffff1661331986613285565b6bffffffffffffffffffffffff16858560ff166138e8565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561339457818101518382015260200161337c565b50505050905090810190601f1680156133c15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60208260ff16111561342c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180614357603a913960400191505060405180910390fd5b60088202600061343b866138d4565b6bffffffffffffffffffffffff169050600061345683613a43565b91909501511695945050505050565b600080613471866138d4565b6bffffffffffffffffffffffff16905061348a866138aa565b61349e85613498848961381f565b9061381f565b11156134cd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050610929565b6134d7818661381f565b90506134eb8364ffffffffff1682866131e7565b9695505050505050565b600061350083613a8c565b613555576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806143dd6028913960400191505060405180910390fd5b61355e83613248565b6135b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180614405602b913960400191505060405180910390fd5b60006135be84613285565b6bffffffffffffffffffffffff16905060006135d9856138d4565b6bffffffffffffffffffffffff16905060006040519050848111156135fe5760206060fd5b8285848460045afa506134eb613613876138a4565b64ffffffffff168685613891565b60009081526001919091016020526040902054151590565b600061369b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613a9e9092919063ffffffff16565b8051909150156119d6578080602001905160208110156136ba57600080fd5b50516119d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806143b3602a913960400191505060405180910390fd5b8154600090821061376d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061419c6022913960400191505060405180910390fd5b82600001828154811061377c57fe5b9060005260206000200154905092915050565b6000815160411461380157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a6134eb86828585613aad565b8181018281101561255257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e00000000000000604482015290519081900360640190fd5b606092831b9190911790911b1760181b90565b60d81c90565b60006138b582613285565b6138be836138d4565b016bffffffffffffffffffffffff169050919050565b60781c6bffffffffffffffffffffffff1690565b606060006138f586613c9b565b915050600061390386613c9b565b915050600061391186613c9b565b915050600061391f86613c9b565b915050838383836040516020018080614430603591397fffffffffffff000000000000000000000000000000000000000000000000000060d087811b821660358401527f2077697468206c656e6774682030780000000000000000000000000000000000603b84015286901b16604a82015260500160216142f082397fffffffffffff000000000000000000000000000000000000000000000000000060d094851b811660218301527f2077697468206c656e677468203078000000000000000000000000000000000060278301529290931b9091166036830152507f2e00000000000000000000000000000000000000000000000000000000000000603c82015260408051601d818403018152603d90920190529b9a5050505050505050505050565b7f80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091011d90565b6000613a9782613d6f565b1592915050565b60606109298484600085613d97565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613b28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061425b6022913960400191505060405180910390fd5b8360ff16601b1480613b3d57508360ff16601c145b613b92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806143116022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613bee573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116612ab357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b600080601f5b600f8160ff161115613d035760ff600882021684901c613cc081613f51565b61ffff16841793508160ff16601014613cdb57601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01613ca1565b50600f5b60ff8160ff161015613d695760ff600882021684901c613d2681613f51565b61ffff16831792508160ff16600014613d4157601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01613d07565b50915091565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009081161490565b606082471015613df2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061427d6026913960400191505060405180910390fd5b613dfb85613f81565b613e6657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310613ecf57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613e92565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613f31576040519150601f19603f3d011682016040523d82523d6000602084013e613f36565b606091505b5091509150613f46828286613f87565b979650505050505050565b6000613f6360048360ff16901c614007565b60ff161760081b62ffff0016613f7882614007565b60ff1617919050565b3b151590565b60608315613f96575081613241565b825115613fa65782518084602001fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815284516024840152845185939192839260440191908501908083836000831561339457818101518382015260200161337c565b600060f08083179060ff8216141561402357603091505061178f565b8060ff1660f1141561403957603191505061178f565b8060ff1660f2141561404f57603291505061178f565b8060ff1660f3141561406557603391505061178f565b8060ff1660f4141561407b57603491505061178f565b8060ff1660f5141561409157603591505061178f565b8060ff1660f614156140a757603691505061178f565b8060ff1660f714156140bd57603791505061178f565b8060ff1660f814156140d357603891505061178f565b8060ff1660f914156140e957603991505061178f565b8060ff1660fa14156140ff57606191505061178f565b8060ff1660fb141561411557606291505061178f565b8060ff1660fc141561412b57606391505061178f565b8060ff1660fd141561414157606491505061178f565b8060ff1660fe141561415757606591505061178f565b8060ff1660ff141561416d57606691505061178f565b50919050565b60008085851115614182578182fd5b8386111561418e578182fd5b505082019391909203915056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64735061757361626c653a206e65772070617573657220697320746865207a65726f206164647265737344657374696e6174696f6e2063616c6c6572206d757374206265206e6f6e7a65726f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206e6577206f776e6572526573637561626c653a206e6577207265736375657220697320746865207a65726f206164647265737345434453413a20696e76616c6964207369676e6174757265202773272076616c7565416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4d657373616765206e6f74206f726967696e616c6c792073656e742066726f6d207468697320646f6d61696e53656e646572206e6f74207065726d697474656420746f20757365206e6f6e63652e20417474656d7074656420746f20696e646578206174206f666673657420307845434453413a20696e76616c6964207369676e6174757265202776272076616c7565526573637561626c653a2063616c6c6572206973206e6f7420746865207265736375657254797065644d656d566965772f696e646578202d20417474656d7074656420746f20696e646578206d6f7265207468616e2033322062797465735061757361626c653a2063616c6c6572206973206e6f7420746865207061757365725361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656454797065644d656d566965772f636f7079546f202d204e756c6c20706f696e74657220646572656654797065644d656d566965772f636f7079546f202d20496e76616c696420706f696e74657220646572656654797065644d656d566965772f696e646578202d204f76657272616e2074686520766965772e20536c696365206973206174203078a2646970667358221220e2eab27571cb9d2ecf49a592b1b78e24c28061c662fef829a376f797fcfcd15864736f6c63430007060033",W=d=>typeof d[0]=="string"||Array.isArray(d[0])||"_isInterface"in d[0],u=class u extends a.ContractFactory{constructor(...f){if(W(f))super(...f);else{const[e,t]=f;super(h,u.linkBytecode(e),t)}}static linkBytecode(f){let e=_;return e=e.replace(new RegExp("__\\$8c977731748aa4504deed57239565df533\\$__","g"),f["src/messages/Message.sol:Message"].replace(/^0x/,"").toLowerCase()),e}getDeployTransaction(f,e,t,b,n){return super.getDeployTransaction(f,e,t,b,n||{})}deploy(f,e,t,b,n){return super.deploy(f,e,t,b,n||{})}connect(f){return super.connect(f)}static createInterface(){return new a.Interface(h)}static connect(f,e){return new a.Contract(f,h,e)}};c(u,"bytecode",_),c(u,"abi",h);let v=u;const L=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),q=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),H=Object.freeze(Object.defineProperty({__proto__:null,CircleRelayer__factory:w,MessageTransmitter:L,MessageTransmitter__factory:v,TokenMessenger:q,TokenMessenger__factory:M},Symbol.toStringTag,{value:"Module"}));a.registerProtocol(a._platform,"CircleBridge",x);a.registerProtocol(a._platform,"AutomaticCircleBridge",R);exports.EvmAutomaticCircleBridge=R;exports.EvmCircleBridge=x;exports.ethers_contracts=H;