@wormhole-foundation/wormhole-connect 4.0.0-beta.0-development → 4.0.0

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 (205) hide show
  1. package/dist/assets/{aptos-CIKjhZ5R.js → aptos-CaGPw7HM.js} +2 -2
  2. package/dist/assets/create-54a95t1x.js +1 -0
  3. package/dist/assets/{evm-Ky_mCHhS.js → evm-Bv0RsFka.js} +2 -2
  4. package/dist/assets/{index-DW7sWcdW.js → index-B5JfIVKE.js} +1 -1
  5. package/dist/assets/{index-DHLr3HmO.js → index-BCD-VOiF.js} +1 -1
  6. package/dist/assets/index-BwhO0jGm.js +1 -0
  7. package/dist/assets/{index-DpM61P6H.js → index-CMULoTsT.js} +1 -1
  8. package/dist/assets/{index-DZpeOp3V.js → index-CO4HXUmy.js} +1 -1
  9. package/dist/assets/{index-Bg3NWSHL.js → index-COw2RtBx.js} +1 -1
  10. package/dist/assets/{index-DRk-Cj0P.js → index-ClrVAZUa.js} +1 -1
  11. package/dist/assets/{index-D7RgFG0F.js → index-CzQeh-hT.js} +1 -1
  12. package/dist/assets/{index-Csghphw2.js → index-DC4mZtDw.js} +1 -1
  13. package/dist/assets/{index-Cqs_fFht.js → index-DI-xN_q3.js} +1 -1
  14. package/dist/assets/{index-DVbfoP0w.js → index-DRsHBjoG.js} +1 -1
  15. package/dist/assets/{index-CdAFGcxx.js → index-DXcQbQ8r.js} +1 -1
  16. package/dist/assets/{index-DJ52h-dV.js → index-DxHhcWFS.js} +1 -1
  17. package/dist/assets/{index-g9iLhWvp.js → index-GKTf0CV7.js} +1 -1
  18. package/dist/assets/{index-DuR9wYhp.js → index-aoYIFErC.js} +1 -1
  19. package/dist/assets/{index-DfNgilHG.js → index-jixjwN_L.js} +1 -1
  20. package/dist/assets/{solana-jYIeIu4B.js → solana-DpD0VkQS.js} +2 -2
  21. package/dist/assets/{sui-B96bqBVv.js → sui-7K04yY2U.js} +2 -2
  22. package/dist/main.js +75 -75
  23. package/dist/src/components/TokenBalance.d.ts.map +1 -1
  24. package/dist/src/config/mainnet/tokens.d.ts.map +1 -1
  25. package/dist/src/config/testnet/tokens.d.ts.map +1 -1
  26. package/dist/src/contexts/wallet/WalletProvider.d.ts.map +1 -1
  27. package/dist/src/hooks/useFetchSupportedRoutes.d.ts.map +1 -1
  28. package/dist/src/hooks/useTokenListWithSearch.d.ts +1 -4
  29. package/dist/src/hooks/useTokenListWithSearch.d.ts.map +1 -1
  30. package/dist/src/routes/operator.d.ts.map +1 -1
  31. package/dist/src/routes/sdkv2/route.d.ts +2 -2
  32. package/dist/src/routes/sdkv2/route.d.ts.map +1 -1
  33. package/dist/src/telemetry/types.d.ts +1 -0
  34. package/dist/src/telemetry/types.d.ts.map +1 -1
  35. package/dist/src/utils/sdkv2.d.ts.map +1 -1
  36. package/dist/src/utils/wrappedNativeTokens.d.ts +12 -0
  37. package/dist/src/utils/wrappedNativeTokens.d.ts.map +1 -0
  38. package/dist/src/views/Terms.d.ts.map +1 -1
  39. package/dist/src/views/v2/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
  40. package/dist/src/views/v3/Bridge/AssetPicker/SearchableList/index.d.ts.map +1 -1
  41. package/dist/src/views/v3/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
  42. package/dist/src/views/v3/Bridge/AssetPicker/TokenSectionHeader.d.ts +2 -4
  43. package/dist/src/views/v3/Bridge/AssetPicker/TokenSectionHeader.d.ts.map +1 -1
  44. package/lib/{account-D0Q4K1CI.js → account-24z6tDMM.js} +1 -1
  45. package/lib/{account-BdDruAAr.mjs → account-BcnWVXmg.mjs} +1 -1
  46. package/lib/{address-fSXS9iww.mjs → address-BX2fIOro.mjs} +1 -1
  47. package/lib/{address-BO6rj6uK.js → address-Bc-5yO4D.js} +1 -1
  48. package/lib/{aptos-BnKScTtI.mjs → aptos-DO_Sexq-.mjs} +7 -7
  49. package/lib/{aptos-B3C7cnvM.js → aptos-DffuIzI0.js} +2 -2
  50. package/lib/{aptos-B1VSCmD9.mjs → aptos-Dol0ReEK.mjs} +4 -4
  51. package/lib/{aptos-DG7QN21P.js → aptos-eGdJuKke.js} +1 -1
  52. package/lib/{basic-CN2jAqvS.js → basic-B3aoOwRb.js} +1 -1
  53. package/lib/{basic-BRYkcAmD.mjs → basic-BI1HDLIO.mjs} +4 -4
  54. package/lib/{basic-Cw13RoYq.mjs → basic-C6oQe5cg.mjs} +4 -4
  55. package/lib/{basic-DufHOLGA.js → basic-pJmrDH53.js} +1 -1
  56. package/lib/{blake2b-CT6EW399.mjs → blake2b-CVpPk5O9.mjs} +1 -1
  57. package/lib/{blake2b-B_Q_lTGN.js → blake2b-DXExLbRg.js} +1 -1
  58. package/lib/{browser-ponyfill-CnfcLhK-.mjs → browser-ponyfill-DeOApqpH.mjs} +1 -1
  59. package/lib/{browser-ponyfill-DbGoEOBo.js → browser-ponyfill-VhIu9z_I.js} +1 -1
  60. package/lib/{chain-BCKkYvDb.js → chain-BxNUWKZE.js} +1 -1
  61. package/lib/{chain-_dXKRkCE.mjs → chain-CvZsIsLh.mjs} +1 -1
  62. package/lib/{chunk-KJH4KKG6-RA0hChr8.mjs → chunk-KJH4KKG6-BgebMATq.mjs} +2 -2
  63. package/lib/{chunk-KJH4KKG6-BXBLZwfY.js → chunk-KJH4KKG6-DNlN4p21.js} +1 -1
  64. package/lib/{constants-QsbOfMbk.mjs → constants-BPs5UFxq.mjs} +1 -1
  65. package/lib/constants-BqHCu7gS.js +1 -0
  66. package/lib/{contract-MkLF5rqi.js → contract-CTycrpaK.js} +1 -1
  67. package/lib/{contract-C_4H8x77.mjs → contract-KYuIk_vR.mjs} +1 -1
  68. package/lib/{core-Cpb3gtg_.js → core-BN_eDiBJ.js} +3 -3
  69. package/lib/{core-ntLR7o2S.mjs → core-BZzw8R4f.mjs} +6 -6
  70. package/lib/{create-naslyPfU.mjs → create-BvzkkBPW.mjs} +1 -1
  71. package/lib/{create-CfgTxAS-.js → create-CGZYy2vu.js} +1 -1
  72. package/lib/{evm-aSG_vFbw.js → evm-BdbjSrMR.js} +2 -2
  73. package/lib/{evm-B20n3mf_.mjs → evm-CUhPokEi.mjs} +7 -7
  74. package/lib/{evm-C6xp3v8Z.mjs → evm-IC5cigOX.mjs} +9 -9
  75. package/lib/{evm-B3G2Vkzg.js → evm-bdCQPjof.js} +2 -2
  76. package/lib/executor.js +1 -1
  77. package/lib/executor.mjs +815 -572
  78. package/lib/hosted.js +1 -1
  79. package/lib/hosted.mjs +1 -1
  80. package/lib/{index-B9ybSY9R.mjs → index-1boJ8yzF.mjs} +5 -5
  81. package/lib/{index-BJcbyvof.js → index-943_uCEO.js} +1 -1
  82. package/lib/{index-Dq7WWqFe.js → index-B7HBnPLP.js} +1 -1
  83. package/lib/{index-DQX74QAE.js → index-BFBwRlid.js} +1 -1
  84. package/lib/{index-C6XNAQ4w.js → index-BZZZ8OeS.js} +1 -1
  85. package/lib/{index-CU73EUQW.js → index-BeBO_sCU.js} +1 -1
  86. package/lib/{index-BTUx12aa.js → index-Bhwzpq1T.js} +1 -1
  87. package/lib/{index-MsaML_Ju.mjs → index-Bicx897u.mjs} +2 -2
  88. package/lib/{index-Dajw3Alx.mjs → index-BlWksu-f.mjs} +1 -1
  89. package/lib/{index-QlIJYJce.js → index-Blvg4PFN.js} +66 -66
  90. package/lib/{index-DS8bl8fA.mjs → index-Bn0hkKKz.mjs} +4 -4
  91. package/lib/{index-tztRp3yJ.js → index-BnMkdrhM.js} +1 -1
  92. package/lib/{index-BojkMsXD.js → index-BoKTcLq-.js} +1 -1
  93. package/lib/{index-BRYq_Nt2.mjs → index-Bp4ojxz6.mjs} +4 -4
  94. package/lib/{index-Cnznwcdb.js → index-BqabgGIh.js} +1 -1
  95. package/lib/{index-DxYgNWMY.mjs → index-BtEjOWoP.mjs} +3 -3
  96. package/lib/{index-Bhd_YhUf.js → index-C9Bk-rKp.js} +1 -1
  97. package/lib/{index-YAL4zolc.js → index-C9uGqcwH.js} +1 -1
  98. package/lib/{index-BQvEIlB2.mjs → index-CBGUPQXa.mjs} +3 -3
  99. package/lib/{index-IHxtA-NL.js → index-CGpn3INM.js} +1 -1
  100. package/lib/{index-DSmKiYkD.mjs → index-CQ0RB2r3.mjs} +5 -5
  101. package/lib/{index-7_BfcP8x.mjs → index-CR3DmYPt.mjs} +2105 -2021
  102. package/lib/{index-BRyW-hBN.mjs → index-CTpINVAG.mjs} +2 -2
  103. package/lib/{index-C3LC73WN.js → index-CbFvm_Mr.js} +1 -1
  104. package/lib/{index-bNUantLb.js → index-CjjP3Qp5.js} +1 -1
  105. package/lib/{index-DqzqJgVc.mjs → index-CkvxfaqA.mjs} +3 -3
  106. package/lib/{index-DfDB5FLw.js → index-ClMpLrxa.js} +1 -1
  107. package/lib/{index-B7VNYedX.mjs → index-CtU_hkYp.mjs} +4 -4
  108. package/lib/index-Cv9hvmqc.js +1 -0
  109. package/lib/{index-DMOY218i.js → index-CzRVzbTC.js} +1 -1
  110. package/lib/{index-B4S4sz6p.mjs → index-Czxl_5Tr.mjs} +5 -5
  111. package/lib/{index-Cb9lswnP.js → index-D61fXWwH.js} +8 -8
  112. package/lib/{index-D0XQIiQn.js → index-D6qJDbzm.js} +1 -1
  113. package/lib/{index-C3L-xKvN.mjs → index-DJs1h8_N.mjs} +4839 -4850
  114. package/lib/{index-BD0gcmCp.mjs → index-DPpi4Don.mjs} +5 -5
  115. package/lib/{index-D5ENAOm3.js → index-DmsirrTI.js} +1 -1
  116. package/lib/{index-DnO0ZdKy.mjs → index-DpN0dULN.mjs} +1 -1
  117. package/lib/{index-BNuKzxGJ.js → index-DydXCN0v.js} +1 -1
  118. package/lib/{index-D-H8WyKb.mjs → index-N8cPdMnf.mjs} +1 -1
  119. package/lib/{index-CSMunRpZ.mjs → index-NKV6j8zE.mjs} +3 -3
  120. package/lib/{index-BIYx5IBr.mjs → index-OlMuNft9.mjs} +3 -3
  121. package/lib/{index-Bz7ogqhR.mjs → index-UOvy4usi.mjs} +1 -1
  122. package/lib/{index-D1y-l93C.js → index-UbeUI3Ir.js} +1 -1
  123. package/lib/{index-BZYEbYGY.mjs → index-ZGgSxaDf.mjs} +3 -3
  124. package/lib/{index-DFpSbD7R.mjs → index-_e8uUnEK.mjs} +5 -5
  125. package/lib/{index-vhQ5Q8ov.mjs → index-dU3yVyBt.mjs} +52 -97
  126. package/lib/{index.es-C476iHvN.mjs → index.es-B5hLka3L.mjs} +4 -4
  127. package/lib/{index.es-CkGpObng.js → index.es-CSmeunOk.js} +3 -3
  128. package/lib/{index.es-CU6nhwJO.js → index.es-E2DQPkYK.js} +1 -1
  129. package/lib/{index.es-CtiAoQ78.mjs → index.es-Vlpe_OYB.mjs} +3 -3
  130. package/lib/index.js +1 -1
  131. package/lib/index.mjs +5 -5
  132. package/lib/mayan.js +1 -1
  133. package/lib/mayan.mjs +11 -11
  134. package/lib/{mint-zy6P38iu.js → mint-B4t2SvV6.js} +1 -1
  135. package/lib/{mint-DyoU9X22.mjs → mint-BGuU5y5m.mjs} +1 -1
  136. package/lib/ntt.js +1 -1
  137. package/lib/ntt.mjs +14 -12
  138. package/lib/{platform-x3ZBJ0YM.js → platform-Bkbg7A9d.js} +1 -1
  139. package/lib/{platform-BqpAMtgx.mjs → platform-C5gJAqtZ.mjs} +3 -3
  140. package/lib/{platform-BhspUaMJ.js → platform-C6QB7aIN.js} +1 -1
  141. package/lib/{platform-DQfpyXSV.mjs → platform-DBNvSsue.mjs} +4 -4
  142. package/lib/{platform-BHAZvZ_O.mjs → platform-DtB8gGMl.mjs} +4 -4
  143. package/lib/{platform-4nANkJAM.js → platform-qdbxkhTI.js} +1 -1
  144. package/lib/{provider-jsonrpc-DIXcAw4Q.mjs → provider-jsonrpc-BIIDy-Aw.mjs} +2 -2
  145. package/lib/{provider-jsonrpc-BCKoIijx.js → provider-jsonrpc-DHzam3ud.js} +1 -1
  146. package/lib/{secp256k1-CaaRyr2C.mjs → secp256k1-B-wUOgWh.mjs} +1 -1
  147. package/lib/{secp256k1-CFt7TfEF.js → secp256k1-BAjH_sHz.js} +1 -1
  148. package/lib/{secp256k1-UnRv5Suy.mjs → secp256k1-CpJIg24C.mjs} +1 -1
  149. package/lib/{secp256k1-C60XBS-e.js → secp256k1-Ds1M1Mtb.js} +1 -1
  150. package/lib/{secp256k1-BIiWvuxu.js → secp256k1-PbbUc2aU.js} +1 -1
  151. package/lib/{secp256k1-BWFGSbjt.mjs → secp256k1-YWWAmpaN.mjs} +1 -1
  152. package/lib/{signer-DhO2iGae.mjs → signer-BH3gAHuj.mjs} +2 -2
  153. package/lib/{signer-BFY1Ytf6.js → signer-MBixef_P.js} +1 -1
  154. package/lib/{solana-CQk4ocg8.mjs → solana-Bh5bkUXQ.mjs} +11 -11
  155. package/lib/solana-C8xK8qJY.mjs +18 -0
  156. package/lib/solana-CRSliekb.js +1 -0
  157. package/lib/{solana-Cp49k9--.js → solana-sjjxa4_B.js} +4 -4
  158. package/lib/{solanaEmbed.esm-Cwa6cl_R.js → solanaEmbed.esm-CDt8Bk0U.js} +1 -1
  159. package/lib/{solanaEmbed.esm-DBOqO9Ii.mjs → solanaEmbed.esm-DGgxfQDB.mjs} +3 -3
  160. package/lib/src/components/TokenBalance.d.ts.map +1 -1
  161. package/lib/src/config/mainnet/tokens.d.ts.map +1 -1
  162. package/lib/src/config/testnet/tokens.d.ts.map +1 -1
  163. package/lib/src/contexts/wallet/WalletProvider.d.ts.map +1 -1
  164. package/lib/src/hooks/useFetchSupportedRoutes.d.ts.map +1 -1
  165. package/lib/src/hooks/useTokenListWithSearch.d.ts +1 -4
  166. package/lib/src/hooks/useTokenListWithSearch.d.ts.map +1 -1
  167. package/lib/src/routes/operator.d.ts.map +1 -1
  168. package/lib/src/routes/sdkv2/route.d.ts +2 -2
  169. package/lib/src/routes/sdkv2/route.d.ts.map +1 -1
  170. package/lib/src/telemetry/types.d.ts +1 -0
  171. package/lib/src/telemetry/types.d.ts.map +1 -1
  172. package/lib/src/utils/sdkv2.d.ts.map +1 -1
  173. package/lib/src/utils/wrappedNativeTokens.d.ts +12 -0
  174. package/lib/src/utils/wrappedNativeTokens.d.ts.map +1 -0
  175. package/lib/src/views/Terms.d.ts.map +1 -1
  176. package/lib/src/views/v2/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
  177. package/lib/src/views/v3/Bridge/AssetPicker/SearchableList/index.d.ts.map +1 -1
  178. package/lib/src/views/v3/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
  179. package/lib/src/views/v3/Bridge/AssetPicker/TokenSectionHeader.d.ts +2 -4
  180. package/lib/src/views/v3/Bridge/AssetPicker/TokenSectionHeader.d.ts.map +1 -1
  181. package/lib/{sui-9gsoM56W.js → sui-Do5RtJvP.js} +1 -1
  182. package/lib/{sui-Cr98JBgS.js → sui-QcDjGW68.js} +1 -1
  183. package/lib/{sui-B4RvzEXx.mjs → sui-euceXgYf.mjs} +7 -7
  184. package/lib/{sui-C2a1eehP.mjs → sui-tKXg9e-c.mjs} +4 -4
  185. package/lib/{tokens-BbFKf6Hv.mjs → tokens-CNITO7DN.mjs} +3 -3
  186. package/lib/{tokens-LVHsSbYG.js → tokens-DhBcLH6x.js} +1 -1
  187. package/lib/{transfer-DZ-wNocj.js → transfer-BinEH6ml.js} +1 -1
  188. package/lib/{transfer-BV1ou1GP.mjs → transfer-DTvv5m_5.mjs} +2 -2
  189. package/lib/{units-BqUlbZ46.mjs → units-CVEv4txp.mjs} +2 -2
  190. package/lib/{units-D-oRQjOa.js → units-DtldPRXy.js} +1 -1
  191. package/lib/{unsignedTransaction-BmxD6VsY.mjs → unsignedTransaction-CVE7GUdC.mjs} +3 -3
  192. package/lib/{unsignedTransaction-CiPKh85X.js → unsignedTransaction-DL3WyIkF.js} +1 -1
  193. package/lib/{w3m-modal-CoTG8Zu4.js → w3m-modal-BUP-c20y.js} +1 -1
  194. package/lib/{w3m-modal-D4-nrnEK.mjs → w3m-modal-Bj2tG9wb.mjs} +2 -2
  195. package/lib/{w3m-modal-xqVExHU-.js → w3m-modal-CGeDlu49.js} +1 -1
  196. package/lib/{w3m-modal-3qLkbPfi.mjs → w3m-modal-D78VqEEI.mjs} +2 -2
  197. package/lib/{web3-C1wK6wIV.js → web3-BKaP497Y.js} +1 -1
  198. package/lib/{web3-BkEb7AgB.mjs → web3-BifDBsFp.mjs} +8 -4
  199. package/package.json +49 -44
  200. package/dist/assets/create-q7V6muDT.js +0 -1
  201. package/dist/assets/index-B59bCuJJ.js +0 -1
  202. package/lib/constants-BR_zyzqY.js +0 -1
  203. package/lib/index-CXsUtRJQ.js +0 -1
  204. package/lib/solana-Dv_mUYcl.mjs +0 -18
  205. package/lib/solana-g3YsP966.js +0 -1
package/lib/ntt.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("./web3-C1wK6wIV.js");require("./index-C6XNAQ4w.js");const U0=require("./platform-4nANkJAM.js"),L0=require("./contract-MkLF5rqi.js"),H1=require("./unsignedTransaction-Bv76DnOj.js"),z0=require("./index-Dq7WWqFe.js"),Q0=require("./index-bNUantLb.js"),B=require("./mint-zy6P38iu.js"),ce=require("./unsignedTransaction-CiPKh85X.js"),K0=require("./transfer-DZ-wNocj.js"),_=require("./platform-x3ZBJ0YM.js"),B0=require("./unsignedTransaction-5HCmv6m2.js"),c1=f.LayoutExports.struct([f.LayoutExports.u8("instruction"),f.u64("amount")]);function Z1(c,e,a,i,o=[],n=B.TOKEN_PROGRAM_ID){const u=K0.addSigners([{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!1}],a,o),g=f.Buffer.alloc(c1.span);return c1.encode({instruction:K0.TokenInstruction.Approve,amount:BigInt(i)},g),new f.TransactionInstruction({keys:u,programId:n,data:g})}const pe=1,Y1=1,J1=1,X1=1,e6=1,t6=1,a6=1,n6=1;function i6(c){if(c.length<1)throw new B.TokenTransferHookInvalidSeed;const[e,...a]=c;if(a.length<e)throw new B.TokenTransferHookInvalidSeed;return{data:f.Buffer.from(a.slice(0,e)),packedLength:pe+Y1+e}}function s6(c,e){if(c.length<2)throw new B.TokenTransferHookInvalidSeed;const[a,i]=c;if(e.length<i+a)throw new B.TokenTransferHookInvalidSeed;return{data:e.subarray(a,a+i),packedLength:pe+J1+X1}}function r6(c,e){if(c.length<1)throw new B.TokenTransferHookInvalidSeed;const[a]=c;if(e.length<=a)throw new B.TokenTransferHookInvalidSeed;return{data:e[a].pubkey.toBuffer(),packedLength:pe+e6}}async function o6(c,e,a){if(c.length<3)throw new B.TokenTransferHookInvalidSeed;const[i,o,n]=c;if(e.length<=i)throw new B.TokenTransferHookInvalidSeed;const u=await a.getAccountInfo(e[i].pubkey);if(u==null)throw new B.TokenTransferHookAccountDataNotFound;if(u.data.length<o+n)throw new B.TokenTransferHookInvalidSeed;return{data:u.data.subarray(o,o+n),packedLength:pe+t6+a6+n6}}async function f6(c,e,a,i){const[o,...n]=c,u=new Uint8Array(n);switch(o){case 0:return null;case 1:return i6(u);case 2:return s6(u,a);case 3:return r6(u,e);case 4:return o6(u,e,i);default:throw new B.TokenTransferHookInvalidSeed}}async function d6(c,e,a,i){const o=[];let n=0;for(;n<32;){const u=await f6(c.slice(n),e,a,i);if(u==null)break;o.push(u.data),n+=u.packedLength}return o}const D1=f.LayoutExports.struct([f.publicKey("authority"),f.publicKey("programId")]);D1.span;function ae(c){const e=g6(Be.TransferHook,c.tlvData);return e!==null?D1.decode(e):null}const c6=f.LayoutExports.struct([f.bool("transferring")]);c6.span;function b6(c,e){const a=[f.Buffer.from("extra-account-metas"),c.toBuffer()];return f.PublicKey.findProgramAddressSync(a,e)[0]}const b1=f.LayoutExports.struct([f.LayoutExports.u8("discriminator"),f.LayoutExports.blob(32,"addressConfig"),f.bool("isSigner"),f.bool("isWritable")]),u6=f.LayoutExports.struct([f.LayoutExports.u32("count"),f.LayoutExports.seq(b1,f.LayoutExports.greedy(b1.span),"extraAccounts")]),l6=f.LayoutExports.struct([f.u64("instructionDiscriminator"),f.LayoutExports.u32("length"),u6.replicate("extraAccountsList")]);function m6(c){const e=l6.decode(c.data).extraAccountsList;return e.extraAccounts.slice(0,e.count)}async function p6(c,e,a,i,o){if(e.discriminator===0)return{pubkey:new f.PublicKey(e.addressConfig),isSigner:e.isSigner,isWritable:e.isWritable};let n=f.PublicKey.default;if(e.discriminator===1)n=o;else{const T=e.discriminator-128;if(a.length<=T)throw new B.TokenTransferHookAccountNotFound;n=a[T].pubkey}const u=await d6(e.addressConfig,a,i,c);return{pubkey:f.PublicKey.findProgramAddressSync(u,n)[0],isSigner:e.isSigner,isWritable:e.isWritable}}var u1;(function(c){c[c.Initialize=0]="Initialize",c[c.Update=1]="Update"})(u1||(u1={}));f.LayoutExports.struct([f.LayoutExports.u8("instruction"),f.LayoutExports.u8("transferHookInstruction"),f.publicKey("authority"),f.publicKey("transferHookProgramId")]);f.LayoutExports.struct([f.LayoutExports.u8("instruction"),f.LayoutExports.u8("transferHookInstruction"),f.publicKey("transferHookProgramId")]);function y6(c,e,a,i,o,n,u){const g=[e,a,i,o,n].map(w=>({pubkey:w,isSigner:!1,isWritable:!1})),T=f.Buffer.alloc(16);return T.set(f.Buffer.from([105,37,101,197,75,251,102,26]),0),T.writeBigUInt64LE(BigInt(u),8),new f.TransactionInstruction({keys:g,programId:c,data:T})}var Be;(function(c){c[c.Uninitialized=0]="Uninitialized",c[c.TransferFeeConfig=1]="TransferFeeConfig",c[c.TransferFeeAmount=2]="TransferFeeAmount",c[c.MintCloseAuthority=3]="MintCloseAuthority",c[c.ConfidentialTransferMint=4]="ConfidentialTransferMint",c[c.ConfidentialTransferAccount=5]="ConfidentialTransferAccount",c[c.DefaultAccountState=6]="DefaultAccountState",c[c.ImmutableOwner=7]="ImmutableOwner",c[c.MemoTransfer=8]="MemoTransfer",c[c.NonTransferable=9]="NonTransferable",c[c.InterestBearingConfig=10]="InterestBearingConfig",c[c.CpiGuard=11]="CpiGuard",c[c.PermanentDelegate=12]="PermanentDelegate",c[c.NonTransferableAccount=13]="NonTransferableAccount",c[c.TransferHook=14]="TransferHook",c[c.TransferHookAccount=15]="TransferHookAccount",c[c.MetadataPointer=18]="MetadataPointer",c[c.TokenMetadata=19]="TokenMetadata"})(Be||(Be={}));const B1=2,h6=2;function l1(c){return c+B1+h6}function g6(c,e){let a=0;for(;l1(a)<=e.length;){const i=e.readUInt16LE(a),o=e.readUInt16LE(a+B1),n=l1(a);if(i==c)return e.slice(n,n+o);a=n+o}return null}const m1=f.LayoutExports.struct([f.LayoutExports.u8("instruction")]);function v6(c,e=B.TOKEN_PROGRAM_ID){const a=[{pubkey:c,isSigner:!1,isWritable:!0}],i=f.Buffer.alloc(m1.span);return m1.encode({instruction:K0.TokenInstruction.SyncNative},i),new f.TransactionInstruction({keys:a,programId:e,data:i})}const Ue=c=>[{name:"id",binary:"bytes",size:32},{name:"sender",...f.universalAddressItem},f.customizableBytes({name:"payload",lengthSize:2},c)],ye=c=>({name:"prefix",binary:"bytes",custom:Uint8Array.from(c),omit:!0}),T6=(c,e,a)=>[ye(c),{name:"sourceNttManager",...f.universalAddressItem},{name:"recipientNttManager",...f.universalAddressItem},f.customizableBytes({name:"nttManagerPayload",lengthSize:2},e),f.customizableBytes({name:"transceiverPayload",lengthSize:2},a)],w6=[ye([156,35,189,59]),{name:"managerAddress",...f.universalAddressItem},{name:"mode",binary:"uint",size:1},{name:"token",...f.universalAddressItem},{name:"decimals",binary:"uint",size:1}],M6=[ye([24,252,103,194]),{name:"chain",...f.chainItem()},{name:"transceiver",...f.universalAddressItem}],S6=[{name:"decimals",binary:"uint",size:1},{name:"amount",binary:"uint",size:8}],A6={binary:"bytes",layout:S6};function I6(c,e){let a=0n;for(let i=0;i<e;++i)a|=BigInt(c[i])<<BigInt(8*(e-i-1));return Number(a)}function x6(c,e){const a=2n**BigInt(e*8);if(c>=a)throw new Error(`Value ${c} is too large for ${e} bytes`);const i=new Uint8Array(e);for(let o=0;o<e;++o)i[o]=Number(BigInt(c)>>BigInt(8*(e-o-1))&0xffn);return i}const k6={binary:"bytes",custom:{to:c=>{if(c.byteLength>=2){const e=I6(c,2);return c.slice(2,2+e)}return new Uint8Array},from:c=>c.byteLength>0?new Uint8Array([...x6(c.byteLength,2),...c]):new Uint8Array}},te=[ye([153,78,84,84]),{name:"trimmedAmount",...A6},{name:"sourceToken",...f.universalAddressItem},{name:"recipientAddress",...f.universalAddressItem},{name:"recipientChain",...f.chainItem()},{name:"additionalPayload",...k6}],p1=c=>T6([153,69,255,16],c,new Uint8Array(0)),P6=c=>[{name:"index",binary:"uint",size:1},f.customizableBytes({name:"payload",lengthSize:1},c)],C6=[["WormholeTransfer",p1(Ue(te))],["WormholeTransferStandardRelayer",f.deliveryInstructionLayout(p1(Ue(te)))],["TransceiverInfo",w6],["TransceiverRegistration",M6]];var D0;(function(c){function e(o){if(o.length>255)throw new Error(`Too many instructions (${o.length})`);return f.bytes.concat(new Uint8Array([o.length]),...o.map(n=>f.serialize(P6(),n)))}c.encodeTransceiverInstructions=e;function a(o,n){return f.keccak_256(f.bytes.concat(f.bignum.toBytes(f.toChainId(o),2),f.serialize(Ue(te),n)))}c.messageDigest=a;function i(o,n){const u=M=>{const A=/^(\d+)\.(\d+)\.(.*)$/,I=M.match(A);if(!I)throw new Error(`Invalid version format: ${M}`);const[,C,N,R]=I;return{major:Number(C),minor:Number(N),patchAndTag:R}},{major:g,minor:T}=u(o),{major:w,minor:S}=u(n);return g===w&&T>=S}c.abiVersionMatches=i})(D0||(D0={}));f.registerPayloadTypes("Ntt",C6);const ne=[{type:"constructor",inputs:[{name:"_token",type:"address",internalType:"address"},{name:"_mode",type:"uint8",internalType:"enum IManagerBase.Mode"},{name:"_chainId",type:"uint16",internalType:"uint16"},{name:"_rateLimitDuration",type:"uint64",internalType:"uint64"},{name:"_skipRateLimiting",type:"bool",internalType:"bool"}],stateMutability:"nonpayable"},{type:"function",name:"NTT_MANAGER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"attestationReceived",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"cancelOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"chainId",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"completeInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"completeOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"executeMsg",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"message",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"getCurrentInboundCapacity",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getCurrentOutboundCapacity",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getInboundLimitParams",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"view"},{type:"function",name:"getInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.InboundQueuedTransfer",components:[{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipient",type:"address",internalType:"address"}]}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getMode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getOutboundLimitParams",inputs:[],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"pure"},{type:"function",name:"getOutboundQueuedTransfer",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.OutboundQueuedTransfer",components:[{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"sender",type:"address",internalType:"address"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}]}],stateMutability:"view"},{type:"function",name:"getPeer",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct INttManager.NttManagerPeer",components:[{name:"peerAddress",type:"bytes32",internalType:"bytes32"},{name:"tokenDecimals",type:"uint8",internalType:"uint8"}]}],stateMutability:"view"},{type:"function",name:"getThreshold",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getTransceivers",inputs:[],outputs:[{name:"result",type:"address[]",internalType:"address[]"}],stateMutability:"pure"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"isMessageApproved",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isMessageExecuted",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"messageAttestations",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"count",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"mode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"enum IManagerBase.Mode"}],stateMutability:"view"},{type:"function",name:"nextMessageSequence",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"pause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"},{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"rateLimitDuration",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"removeTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setInboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"},{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setOutboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"},{name:"decimals",type:"uint8",internalType:"uint8"},{name:"inboundLimit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setThreshold",inputs:[{name:"threshold",type:"uint8",internalType:"uint8"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"token",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"tokenDecimals",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"transceiverAttestedToMessage",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"index",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"shouldQueue",type:"bool",internalType:"bool"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"unpause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"InboundTransferQueued",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"MessageAlreadyExecuted",inputs:[{name:"sourceNttManager",type:"bytes32",indexed:!0,internalType:"bytes32"},{name:"msgHash",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"MessageAttestedTo",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"index",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OutboundTransferCancelled",inputs:[{name:"sequence",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipient",type:"address",indexed:!1,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OutboundTransferQueued",inputs:[{name:"queueSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"OutboundTransferRateLimited",inputs:[{name:"sender",type:"address",indexed:!0,internalType:"address"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"currentCapacity",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"PeerUpdated",inputs:[{name:"chainId_",type:"uint16",indexed:!0,internalType:"uint16"},{name:"oldPeerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"oldPeerDecimals",type:"uint8",indexed:!1,internalType:"uint8"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"peerDecimals",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"ThresholdChanged",inputs:[{name:"oldThreshold",type:"uint8",indexed:!1,internalType:"uint8"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverAdded",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"transceiversNum",type:"uint256",indexed:!1,internalType:"uint256"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverRemoved",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransferRedeemed",inputs:[{name:"digest",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"TransferSent",inputs:[{name:"recipient",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"fee",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"msgSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"BurnAmountDifferentThanBalanceDiff",inputs:[{name:"burnAmount",type:"uint256",internalType:"uint256"},{name:"balanceDiff",type:"uint256",internalType:"uint256"}]},{type:"error",name:"CallerNotTransceiver",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CancellerNotSender",inputs:[{name:"canceller",type:"address",internalType:"address"},{name:"sender",type:"address",internalType:"address"}]},{type:"error",name:"CapacityCannotExceedLimit",inputs:[{name:"newCurrentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"newLimit",type:"uint72",internalType:"TrimmedAmount"}]},{type:"error",name:"DeliveryPaymentTooLow",inputs:[{name:"requiredPayment",type:"uint256",internalType:"uint256"},{name:"providedPayment",type:"uint256",internalType:"uint256"}]},{type:"error",name:"DisabledTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"InboundQueuedTransferNotFound",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InboundQueuedTransferStillQueued",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidMode",inputs:[{name:"mode",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidPeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidPeerChainIdZero",inputs:[]},{type:"error",name:"InvalidPeerDecimals",inputs:[]},{type:"error",name:"InvalidPeerZeroAddress",inputs:[]},{type:"error",name:"InvalidRecipient",inputs:[]},{type:"error",name:"InvalidRefundAddress",inputs:[]},{type:"error",name:"InvalidTargetChain",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"thisChain",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidTransceiverZeroAddress",inputs:[]},{type:"error",name:"MessageNotApproved",inputs:[{name:"msgHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NoEnabledTransceivers",inputs:[]},{type:"error",name:"NonRegisteredTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotEnoughCapacity",inputs:[{name:"currentCapacity",type:"uint256",internalType:"uint256"},{name:"amount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"NumberOfDecimalsNotEqual",inputs:[{name:"decimals",type:"uint8",internalType:"uint8"},{name:"decimalsOther",type:"uint8",internalType:"uint8"}]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OutboundQueuedTransferNotFound",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}]},{type:"error",name:"OutboundQueuedTransferStillQueued",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerNotRegistered",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RefundFailed",inputs:[{name:"refundAmount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"RetrievedIncorrectRegisteredTransceivers",inputs:[{name:"retrieved",type:"uint256",internalType:"uint256"},{name:"registered",type:"uint256",internalType:"uint256"}]},{type:"error",name:"ThresholdTooHigh",inputs:[{name:"threshold",type:"uint256",internalType:"uint256"},{name:"transceivers",type:"uint256",internalType:"uint256"}]},{type:"error",name:"TooManyTransceivers",inputs:[]},{type:"error",name:"TransceiverAlreadyAttestedToMessage",inputs:[{name:"nttManagerMessageHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"TransceiverAlreadyEnabled",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"TransferAmountHasDust",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"dust",type:"uint256",internalType:"uint256"}]},{type:"error",name:"UndefinedRateLimiting",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"expectedOwner",type:"address",internalType:"address"},{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"ZeroAmount",inputs:[]},{type:"error",name:"ZeroThreshold",inputs:[]}],y1="0x61016034620005a857601f620062e138819003918201601f19168301916001600160401b038311848410176200055b5780849260a094604052833981010312620005a8578051906001600160a01b0382168203620005a8576020810151916002831015620005a85760408201519161ffff83168303620005a8576060810151906001600160401b03821690818303620005a8576080015180159182158203620005a857158092816200059f575b50821562000583575b505062000571576080527f8561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d8954620001147e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e15460ff8360081c1614620005ad565b7ffd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f5460005b60ff8360081c168110620003ce57505060005b60ff8260081c1681106200033a5750604060ff6200016d92161115620005ad565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c1662000328576002600160401b03196001600160401b03821601620002dc575b50503060a05260c0526101009182526101209081526101404681523360e05260405191615cb693846200062b85396080518481816112ee0152818161192e01528181611d7f015281816127c501528181613241015281816137e701528181613e3a015281816152ca015281816153dd0152818161549d015281816155bc0152615684015260a05184614cf1015260c051848181610285015281816104e00152818161052d015281816126b10152818161365701528181613cb8015281816145240152818161494301526149f3015260e05184611a7801525183818161047701528181611df801528181611f3e015281816126ff015281816136d901528181613d3501526148cb0152518281816111960152818161276801526131cb0152518161312d0152f35b6001600160401b0319166001600160401b039081179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880620001b6565b60405163f92ee8a960e01b8152600490fd5b60018101808211620003b8575b60ff8360081c1681106200036757506200036190620005cb565b6200014c565b620003b290620003ac6200037b84620005db565b90546200038884620005db565b9054600391821b1c6001600160a01b039081169390911b9190911c161415620005ad565b620005cb565b62000347565b634e487b7160e01b600052601160045260246000fd5b620003d981620005db565b9054600382901b81901c6001600160a01b031660009081527f49bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f602052604090819020905192906001600160401b0360608501908111908511176200055b5760608401604052546200047b60ff821615801592838752602087019360ff808360081c1615928315875260101c16908160408a0152926200053e575b5050620005ad565b60018060401b03600160ff6040870151161b87161615159051151592600092835b60ff8a60081c168110620004ec575b50505082620004e6959492620004cb620003ac95620004d49414620005ad565b151514620005ad565b60ff60408188169201511610620005ad565b62000139565b620004f781620005db565b9054600391821b1c6001600160a01b039081169184901b85901c161462000529576200052390620005cb565b6200049c565b5060019350849150829050620004cb620004ab565b9091508162000551575b50388062000473565b9050153862000548565b634e487b7160e01b600052604160045260246000fd5b60405163e543ef0560e01b8152600490fd5b1591508162000596575b503880620000b5565b9050386200058d565b925038620000ac565b600080fd5b15620005b557565b634e487b7160e01b600052600160045260246000fd5b6000198114620003b85760010190565b7e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e18054821015620006145760005260206000200190600090565b634e487b7160e01b600052603260045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c80630271725014612a42578063036de8af146129b75780630677df54146129985780630900f01014612531578063186ce612146124dc57806319017175146124a65780631f97c9a8146122b4578063203e4a9b14611fb657806323d75e3114611f82578063295a521214611f28578063396c16b714611eec5780633b97e85614611ed15780633f4ba83a14611e435780634b4fd03b14611de5578063689f90c314611da357806374aa7bfc14611d5f5780637c91863414611c0a5780638129fc1c146119e75780638413bcba146118cb5780638456cb591461184e57806386e11ffa1461182957806389c619dd146117c95780638da5cb5b146117935780638e3ba8c91461175c5780638fd3ab801461161d5780639057412d146114a0578063961b94d01461144257806397c35146146111ba5780639a8a05921461117b5780639d78245414610f405780639f86029c14610c2f5780639fd0506d14610bf9578063b187bd2614610bcb578063b293f97f14610b35578063b4d591bb14610a74578063c0b07bde14610a2e578063c128d170146109b2578063d788c14714610927578063da4856a1146108f4578063e5a9860314610848578063e75235b81461081a578063f2fde38b146106d5578063f5cfec18146106b2578063f7514fbc146102b4578063fc0c546a1461026f5763fd96063c1461021757600080fd5b3461026c57602036600319011261026c576060610235600435615228565b6040805182516001600160481b031681526020808401516001600160401b031690820152918101516001600160a01b031690820152f35b80fd5b503461026c578060031936011261026c576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461026c57602036600319011261026c576004356001600160401b03811681036106ae576102e1615a50565b6002600080516020615b21833981519152541461069c576001600160401b038116600052600080516020615c0183398151915260205260406000206040519061032982612b1a565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a083015260405190818560048301549261039084613587565b808452936001811690811561067a5750600114610636575b506103b592500382612ba1565b60c08201526001600160401b03606082015116156106155760a08101516001600160a01b03163381036105e85750606061045860407ff80e572ae1b63e2449629b6c7d783add85c36473926f216077f17ee002bcfd07936001600160401b038616600052600080516020615c01833981519152602052610437826000206135d8565b01516104416149cd565b906001600160401b0360ff82169160081c166158bf565b926001600160401b0360405191168152336020820152836040820152a17f000000000000000000000000000000000000000000000000000000000000000060028110156105d25780610522575060405163a9059cbb60e01b6020820152336024820152604481019190915261050d906104de81606481015b03601f198101835282612ba1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316614218565b6001600080516020615c218339815191525580f35b600181036105b657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156105b1576040516340c10f1960e01b815233600482015260248101929092526000908290604490829084905af180156105a557610596575b5061050d565b61059f90612b07565b38610590565b6040513d6000823e3d90fd5b600080fd5b6040516366001a8960e01b815260ff9091166004820152602490fd5b634e487b7160e01b600052602160045260246000fd5b60405163ceb40a8560e01b81523360048201526001600160a01b03919091166024820152604490fd5b0390fd5b604051635feafa3160e11b81526001600160401b0383166004820152602490fd5b60040187525060208620909186915b81831061065e5750509060206103b592820101386103a8565b6020919350806001915483858801015201910190918392610645565b9050602092506103b594915060ff191682840152151560051b820101386103a8565b6040516309e3d0f360e11b8152600490fd5b5080fd5b503461026c578060031936011261026c5760206106cd615211565b604051908152f35b503461026c57602036600319011261026c576001600160a01b03600435818116908181036107e55761071690610709615a17565b610711615a17565b6159a3565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed97891825460ff600080516020615ba183398151915254168082036107fc575050908391825b84548110156107f8578460005281817f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd1015416803b156107f457848091602460405180948193632c7b84dd60e11b83528960048401525af19081156107e95785916107d1575b50506107cc90612de1565b61075b565b6107da90612b07565b6107e55783386107c1565b8380fd5b6040513d87823e3d90fd5b8480fd5b8380f35b604492506040519163d2a13a2960e01b835260048301526024820152fd5b503461026c578060031936011261026c57602060ff600080516020615aa18339815191525416604051908152f35b503461026c57602036600319011261026c5760043560ff8116908181036105b157610871615a17565b81156108e2577f2a855b929b9a53c6fb5b5ed248b27e502b709c088e036a5aa17620c8fc5085a9916108dc60ff92600080516020615aa1833981519152805493851985161790556108c0613060565b6040805160ff9490951684168552921660208401528291820190565b0390a180f35b60405163831761d760e01b8152600490fd5b503461026c5761090336612c24565b906002600080516020615b21833981519152541461069c5761092492613129565b80f35b503461026c57602036600319011261026c5761ffff610944612a9d565b61094c6151f2565b5016600052600080516020615bc18339815191526020526109ae6109736040600020614dcd565b6040519182918291909160406001600160401b038160608401956001600160481b038082511686526020820151166020860152015116910152565b0390f35b503461026c57602036600319011261026c5761ffff906109d0612a9d565b9060206040516109df81612b50565b828152015216600052600080516020615a8183398151915260205260408060002060ff8251610a0d81612b50565b60208260018554958685520154169101908152835192835251166020820152f35b503461026c578060031936011261026c576109ae604051610a4e81612b50565b60058152640302e312e360dc1b6020820152604051918291602083526020830190612ae2565b503461026c578060031936011261026c576040518091600080516020615b6183398151915290815480845260208094019081938352600080516020615ac183398151915290835b818110610b185750505084610ad1910385612ba1565b60405193838594850191818652518092526040850193925b828110610af857505050500390f35b83516001600160a01b031685528695509381019392810192600101610ae9565b82546001600160a01b031684529286019260019283019201610abb565b5060c036600319011261026c57610b4a612aae565b906084359182151583036106ae5760a4356001600160401b039283821161026c5750610b7a903690600401612bdd565b610b82615a50565b6002600080516020615b21833981519152541461069c57602093610bb0926064359060443590600435613c9c565b6001600080516020615c218339815191525560405191168152f35b503461026c578060031936011261026c5760206002600080516020615b218339815191525414604051908152f35b503461026c578060031936011261026c57600080516020615c41833981519152546040516001600160a01b039091168152602090f35b503461026c576020806003193601126106ae576001600160a01b039060043582811691908281036107f457610c62615a17565b8215610f2e5782600052600080516020615be183398151915280835260ff91826040600020541615610f1557846000528184528260406000205460081c1615610efc5784600052818452604060002061ff001990818154169055600080516020615ba1833981519152928354858160081c16928315610ee85761ff0060001980950160081b169116178455600080516020615b418339815191528054918860005287526001600160401b03600192610d2f82858a60406000205460101c161b198316169282168310614a9f565b6001600160401b0319161790558897600080516020615b618339815191528054938b5b858110610de2575b505050505050918091610da26040969594610d957f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f99614a9f565b610d9d614abc565b614ba7565b5460081c16600080516020615aa18339815191529081548381168210610dd4575b50505416908351928352820152a180f35b60ff19161781553880610dc3565b838b610ded8361302f565b929054600393841b1c1614610e0b5750610e0690612de1565b610d52565b9590918093959798999a9b9c508101908111610ed45790610e3f84610e32610e5e9461302f565b905490891b1c169161302f565b90919082549060031b9160018060a01b03809116831b921b1916179055565b82548015610ec057946040999794610da2948a9894610d95947f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f9e9c990192610ea68461302f565b81939154921b1b1916905555998496979899839650610d5a565b634e487b7160e01b8c52603160045260248cfd5b634e487b7160e01b8d52601160045260248dfd5b634e487b7160e01b8b52601160045260248bfd5b6040516307d86e9160e21b815260048101869052602490fd5b604051630d583f4760e41b815260048101869052602490fd5b604051632f44bd7760e01b8152600490fd5b503461026c57610f4f36612c24565b9033600052600080516020615be183398151915260209080825260ff60406000205460081c161561116357600080516020615b2183398151915291600283541461069c5761ffff861680600052600080516020615a8183398151915282528460406000205403611145575060405163b3f07bbd60e01b815291818380610fd9898b600484016130ff565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af492831561113a57889361110b575b503360005280825261101d60ff60406000205460101c1684612ff9565b6110f25760606110d193927f35a2101eaac94b493e0dfca061f9a7f087913fde8678e7cde0aca9897edba0e592336000528082528a6001600160401b03610100600160481b03604082600160ff836000205460101c161b1693898152600080516020615ae1833981519152875220928354928360081c161760081b1690610100600160481b03191617905533600052815260ff60406000205460101c166040519185835233908301526040820152a1612f8c565b6110d9578480f35b5460021461069c576110ea92613129565b388080808480f35b604051631089c4a160e11b815260048101849052602490fd5b9092508181813d8311611133575b6111238183612ba1565b810103126105b157519138611000565b503d611119565b6040513d8a823e3d90fd5b6044908560405191635788c0fd60e11b835260048301526024820152fd5b60405163a0ae911d60e01b8152336004820152602490fd5b503461026c578060031936011261026c57602060405161ffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50602036600319011261026c576001600160401b036004351690816004350361026c576111e5615a50565b6002600080516020615b21833981519152541461069c5781600052600080516020615c018339815191526020526040600020916040519261122584612b1a565b805484526001810154602085015261ffff60028201546001600160481b03811660408701526001600160401b038160481c16606087015260881c16608085015260018060a01b0360038201541660a08501526040518381949060048401549361128d85613587565b808552946001811690811561141e57506001146113d9575b50506112b392500383612ba1565b60c083019182526001600160401b03606084015116156113c1576112e46001600160401b0360608501511642612f7f565b6001600160401b037f00000000000000000000000000000000000000000000000000000000000000001611611396579161137391602093600052600080516020615c01833981519152845261133c60406000206135d8565b6001600160481b036040830151169161ffff608082015116815190868301519260a0600180821b0391015116935194600435614412565b6001600080516020615c21833981519152556001600160401b0360405191168152f35b6044906001600160401b036060850151166040519163c06cf05f60e01b835260048301526024820152fd5b60249060405190635feafa3160e11b82526004820152fd5b60049193949250018252602082205b8183106114025750509060206112b39282010138806112a5565b60209193508060019154838589010152019101909184926113e8565b915050602092506112b394915060ff191682840152151560051b82010138806112a5565b50606036600319011261026c57611457612aae565b604435611462615a50565b6002600080516020615b21833981519152541461069c5760209181611373926040519261148e84612b50565b6001845285368186013760043561363a565b503461026c57604036600319011261026c576114ba612a9d565b6024356001600160401b038111611619576114d9903690600401612bdd565b91604051918290600080516020615b61833981519152828154918287526020809701908652600080516020615ac183398151915292865b888282106115fa5750505061152792500383612ba1565b826115518351966040519788928392635b10743960e11b8452604060048501526044840190612ae2565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156115ef5783949561158a94926115cb575b50612e24565b604051926040840160408552835180915285606086019401915b8181106115b75750505082938301520390f35b8251855293860193918601916001016115a4565b6115e89192503d8087833e6115e08183612ba1565b810190612d0f565b9038611584565b6040513d85823e3d90fd5b85546001600160a01b0316845260019586019588955093019201611510565b8280fd5b503461026c578060031936011261026c57611636614cee565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b038082169060018201918183116117465760ff8460401c16908115611739575b5061172757600160401b911680926001600160481b03191617179081835560ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e541615611715577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2926020926116f5613060565b6116fd614abc565b68ff000000000000000019169055604051908152a180f35b604051632866815360e11b8152600490fd5b60405163f92ee8a960e01b8152600490fd5b9050818316111538611680565b634e487b7160e01b600052601160045260246000fd5b503461026c57604036600319011261026c5760243560ff811681036105b157611789602091600435612ff9565b6040519015158152f35b503461026c578060031936011261026c57600080516020615b01833981519152546040516001600160a01b039091168152602090f35b503461026c57602036600319011261026c5761181e6001600160401b036020926040600080516020615b4183398151915254916004358152600080516020615ae18339815191528652205460081c16166157e1565b60ff60405191168152f35b503461026c578060031936011261026c576118426151f2565b506109ae610973614d85565b503461026c578060031936011261026c57600080516020615b0183398151915254611881906001600160a01b0316614d32565b600080516020615b21833981519152600281541461069c57600290557f0e2fb031ee032dc02d8011dc50b816eb450cf856abd8261680dac74f72165bd2602060405160018152a180f35b503461026c57602036600319011261026c576004356118e8615a50565b6002600080516020615b21833981519152541461069c5761190881615228565b602081016001600160401b039081815116156119ce5761192b8282511642612f7f565b827f000000000000000000000000000000000000000000000000000000000000000016116119ac578385527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b860205260408086208681556001018690558301518351869161050d916001600160481b0316906001600160a01b031687614893565b516040516301cb739d60e71b8152600481019490945216602483015250604490fd5b604051630301bcaf60e61b815260048101859052602490fd5b503461026c578060031936011261026c57611a00614cee565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c1615906001600160401b03811680159081611c02575b6001149081611bf8575b159081611bef575b506117275767ffffffffffffffff198116600117835581611bd0575b50611a76615962565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381163303611ba75750611ab0615962565b611ab8615962565b611ac0615962565b6001600080516020615b2183398151915255600080516020615c4183398151915280546001600160a01b03191633179055611af9615962565b611b01615962565b611b0a336159a3565b611b12615962565b611b1a615962565b6001600080516020615c2183398151915255611b51610100600160481b0360ff611b4a611b456149cd565b615888565b1617614e2d565b611b59613060565b611b61614abc565b611b69575080f35b68ff00000000000000001981541690557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b604051636345072160e11b81526001600160a01b03919091166004820152336024820152604490fd5b68ffffffffffffffffff19166801000000000000000117825538611a6d565b90501538611a51565b303b159150611a49565b839150611a3f565b503461026c57608036600319011261026c57611c24612a9d565b6024356044359160ff83168093036105b15761ffff90611c42615a17565b16918215611d4d578115611d3b578015611d29577f1456404e7f41f35c3daac941bb50bad417a66275c3040061b4287d787719599d9160809184600052600080516020615a81833981519152918260205260ff604060002081600160405192611caa84612b50565b805484520154169460208201958652886000526020526001604060002084815501848319825416179055611d0c611ceb611ce26149cd565b8060643561591a565b89600052600080516020615bc183398151915260205260406000209061502b565b51935116604051938452602084015260408301526060820152a280f35b60405163ade64f0b60e01b8152600490fd5b60405163f839a0cb60e01b8152600490fd5b60405163100b0f2760e11b8152600490fd5b503461026c578060031936011261026c5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461026c578060031936011261026c57602060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb54166040519015158152f35b503461026c578060031936011261026c577f0000000000000000000000000000000000000000000000000000000000000000906002821015611e2f5760208260ff60405191168152f35b634e487b7160e01b81526021600452602490fd5b503461026c578060031936011261026c57600080516020615b0183398151915254611e76906001600160a01b0316614d32565b600080516020615b218339815191526002815403611ebf57600190557fe11c2112add17fb763d3bd59f63b10429c3e11373da4fb8ef6725107a2fdc4b06020604051838152a180f35b604051637e38d1d360e11b8152600490fd5b503461026c578060031936011261026c57602061181e6149cd565b503461026c57602036600319011261026c5760ff60406020926004358152600080516020615ae183398151915284522054166040519015158152f35b503461026c578060031936011261026c576040517f00000000000000000000000000000000000000000000000000000000000000006002811015611f6e57602092508152f35b634e487b7160e01b83526021600452602483fd5b503461026c578060031936011261026c5760206001600160401b03600080516020615b818339815191525416604051908152f35b503461026c576020806003193601126106ae576004356001600160a01b038116918282036107e557611fe6615a17565b8215610f2e5782600052600080516020615be18339815191529182825260ff90816040600020541660001461218a5784600052838352604060002061010061ff00198254161790555b600080516020615b6183398151915290815491600160401b8310156121745782610e3f9160016120619501905561302f565b600080516020615ba183398151915292835461ff00612084848360081c16614a8e565b60081b169061ff00191617809455600080516020615b4183398151915280546001600160401b0390818116918860005284875260018660406000205460101c161b16821791821461215b5767ffffffffffffffff19161790557ff05962b5774c658e85ed80c91a75af9d66d2af2253dda480f90bce78aff5eda594606094909390929091612110614abc565b84600052825280600080516020615aa183398151915280548281161561214c575b5054169260405194855260081c16908301526040820152a180f35b60ff1916600117815538612131565b604051638d68f84d60e01b815260048101899052602490fd5b634e487b7160e01b600052604160045260246000fd5b600080516020615ba18339815191528281541660408110156122a257604051906121b382612b35565b6001825285820190600182526040830190815288600052878752604060002092511515918662ff000061ff0086549351151560081b16935160101b1693169062ffffff1916171717905580548361220b818316614a8e565b169060ff19161790557f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed978805490600160401b821015612174576001820180825582101561228c576000527f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd10180546001600160a01b0319168617905561202f565b634e487b7160e01b600052603260045260246000fd5b60405163891684c360e01b8152600490fd5b503461026c57602036600319011261026c576004356001600160401b0381168091036106ae57606060c06040516122ea81612b1a565b84815284602082015284604082015284838201528460808201528460a08201520152600052600080516020615c0183398151915260205260406000206040519061233382612b1a565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a08301526040518381949060048401549361239b85613587565b8085529460018116908115612482575060011461243d575b50506123c192500383612ba1565b60c081019182526109ae6040519283926020845280516020850152602081015160408501526001600160481b0360408201511660608501526001600160401b03606082015116608085015261ffff60808201511660a085015260a0600180821b039101511660c08401525160e080840152610100830190612ae2565b60049193949250018252602082205b8183106124665750509060206123c19282010138806123b3565b602091935080600191548385890101520191019091849261244c565b915050602092506123c194915060ff191682840152151560051b82010138806123b3565b503461026c57602036600319011261026c576124c0615a17565b6109246124d76124ce6149cd565b8060043561591a565b614e2d565b503461026c57604036600319011261026c576109246124f9612aae565b612501615a17565b61ffff61250f6124ce6149cd565b9116600052600080516020615bc183398151915260205260406000209061502b565b503461026c576020806003193601126106ae576001600160a01b03600435818116908181036107f457612562615a17565b61256a614cee565b3b1561293d577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e918254916125f760ff841615614a9f565b60ff199283166001178455303b156107f45760405163011fa75760e71b8152858160048183305af180156128f25761292a575b5060405163689f90c360e01b81528281600481305afa9081156128f25786916128fd575b5015612686575b50507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b604051637e062a3560e11b81528281600481305afa9081156128f25786916128b4575b50816126d9927f000000000000000000000000000000000000000000000000000000000000000016911614614a9f565b6040516314ad290960e11b81528181600481305afa9081156107e957859161287e575b507f000000000000000000000000000000000000000000000000000000000000000090600282101561286a57600281101561286a5761273b9114614a9f565b604051634d4502c960e11b81528181600481305afa80156107e9578590612834575b612790915061ffff807f000000000000000000000000000000000000000000000000000000000000000016911614614a9f565b604051631d2a9eff60e21b8152908082600481305afa9081156107e95785916127f4575b506127ed91506001600160401b03807f000000000000000000000000000000000000000000000000000000000000000016911614614a9f565b3880612655565b905081813d831161282d575b61280a8183612ba1565b810103126107e557516001600160401b03811681036107e5576127ed90386127b4565b503d612800565b508181813d8311612863575b61284a8183612ba1565b810103126107f45761285e6127909161311a565b61275d565b503d612840565b634e487b7160e01b86526021600452602486fd5b90508181813d83116128ad575b6128958183612ba1565b810103126107f4575160028110156107f457386126fc565b503d61288b565b90508281813d83116128eb575b6128cb8183612ba1565b810103126128e757519080821682036128e757906126d96126a9565b8580fd5b503d6128c1565b6040513d88823e3d90fd5b61291d9150833d8511612923575b6129158183612ba1565b810190614200565b3861264e565b503d61290b565b61293690959195612b07565b933861262a565b60405162461bcd60e51b815260048101849052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b503461026c57602036600319011261026c576020611789600435612f8c565b503461026c57602036600319011261026c576004356001600160a01b0381811691829003611619576129f981600080516020615b018339815191525416614d32565b600080516020615c4183398151915280546001600160a01b031981168417909155167f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b503461026c57602036600319011261026c576106cd612a95612a90604060209461ffff612a6d612a9d565b612a756151f2565b50168152600080516020615bc1833981519152865220614dcd565b6152be565b6104416149cd565b6004359061ffff821682036105b157565b6024359061ffff821682036105b157565b60005b838110612ad25750506000910152565b8181015183820152602001612ac2565b90602091612afb81518092818552858086019101612abf565b601f01601f1916010190565b6001600160401b03811161217457604052565b60e081019081106001600160401b0382111761217457604052565b606081019081106001600160401b0382111761217457604052565b604081019081106001600160401b0382111761217457604052565b608081019081106001600160401b0382111761217457604052565b60a081019081106001600160401b0382111761217457604052565b90601f801991011681019081106001600160401b0382111761217457604052565b6001600160401b03811161217457601f01601f191660200190565b81601f820112156105b157803590612bf482612bc2565b92612c026040519485612ba1565b828452602083830101116105b157816000926020809301838601378301015290565b90600319906060828401126105b15760043561ffff811681036105b1579260243592604435916001600160401b03918284116105b15760609084830301126105b15760405192612c7384612b35565b806004013584526024810135602085015260448101359283116105b157612c9d9201600401612bdd565b604082015290565b6001600160401b0381116121745760051b60200190565b519060ff821682036105b157565b81601f820112156105b1578051612ce081612bc2565b92612cee6040519485612ba1565b818452602082840101116105b157612d0c9160208085019101612abf565b90565b9060209081838203126105b15782516001600160401b03938482116105b157019080601f830112156105b1578151612d4681612ca5565b94604090612d5682519788612ba1565b828752858088019360051b860101948486116105b157868101935b868510612d8357505050505050505090565b84518381116105b15782019084601f1983890301126105b157845190612da882612b50565b612db38a8401612cbc565b825285830151918583116105b157612dd2898c80969581960101612cca565b83820152815201940193612d71565b60001981146117465760010190565b805182101561228c5760209160051b010190565b9060406020612d0c9360ff81511684520151918160208201520190612ae2565b909291805191612e3383612ca5565b92604091612e4383519586612ba1565b818552601f19612e5283612ca5565b01602090368288013760009788955b848710612e7357505050505050509190565b909192939495988685612eec868d612e9260018060a01b039188612df0565b511680600052600080516020615be18339815191528252612ebd60ff866000205460101c1689612df0565b51908551808095819463b5634c7360e01b835261ffff60049916898401526024998a8401526044830190612e04565b03915afa908115612f7457908d91600091612f42575b50612f0e81928d612df0565b528301809311612f2f575050612f249099612de1565b959493929190612e61565b601190634e487b7160e01b600052526000fd5b91508782813d8311612f6d575b612f598183612ba1565b8101031261026c5750518c90612f0e612f02565b503d612f4f565b8a513d6000823e3d90fd5b9190820391821161174657565b6001600160401b039060ff612fe581600080516020615aa18339815191525416938493600080516020615b418339815191525490600052600080516020615ae183398151915260205260406000205460081c16166157e1565b1610159081612ff2575090565b9050151590565b906001600160401b0391600052600080516020615ae1833981519152602052600160ff60406000205460081c92161b1616151590565b600080516020615b61833981519152805482101561228c57600052600080516020615ac18339815191520190600090565b60ff600080516020615aa1833981519152541660405161307f81612b50565b60ff600080516020615ba183398151915254818116835260081c168060208301528083116130ba57505160ff166130b35750565b156108e257565b82604491604051916313c3d1b160e01b835260048301526024820152fd5b9060606040612d0c9380518452602081015160208501520151918160408201520190612ae2565b60409061ffff612d0c949316815281602082015201906130d8565b519061ffff821682036105b157565b91907f000000000000000000000000000000000000000000000000000000000000000046810361344957508161315f9184613467565b9190916134445760408091015191815192635399ded560e11b8452608084806131946020948560048401526024830190612ae2565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af4938415613439576000946133c4575b5061ffff9283606086015116847f0000000000000000000000000000000000000000000000000000000000000000168082036133a95750506131fc6149cd565b8161322587519280613220816001600160401b03968760ff82169160081c166158bf565b61591a565b960151908160a01c613392576001600160a01b039182169560007f000000000000000000000000000000000000000000000000000000000000000083161561338b57506132706151f2565b508816600052600080516020615bc18339815191528452613296612a9084600020614dcd565b6132a08882615853565b81808960081c169160081c16105b6132d357505050506132c36132d194846155b1565b6132cc83615491565b614893565b565b7f7f63c9251d82a933210c2b6d0b0f116252c3c116788120e64e8e8215df6f316297509561336f839596949760019394519261330e84612b35565b6001600160481b038091168452898401908242168252888501978852896000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b88b52886000209451166001600160481b03198554161784555116826157a0565b019151166001600160601b0360a01b82541617905551908152a1565b90506132ae565b50602491519063033b960d60e41b82526004820152fd5b6044925191631ee5902560e11b835260048301526024820152fd5b6080949194813d8211613431575b816133df60809383612ba1565b810103126106ae578351916133f383612b6b565b8151906001600160481b038216820361026c57508252848101518583015283810151848301526134259060600161311a565b606082015292386131bc565b3d91506133d2565b83513d6000823e3d90fd5b505050565b604490604051906377d879fb60e01b82526004820152466024820152fd5b60405163b3f07bbd60e01b81529193926020918391829161348c9190600484016130ff565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105a55760009161351d575b506134be81612f8c565b15613505576134cc8161354e565b92836134da57509150600090565b7f4069dff8c9df7e38d2867c0910bd96fd61787695e5380281148c04932d02bef2600080a360009190565b60249060405190630451c4fb60e41b82526004820152fd5b906020823d8211613546575b8161353660209383612ba1565b8101031261026c575051386134b4565b3d9150613529565b600052600080516020615ae18339815191526020526040600020805460ff81166135805760ff19166001179055600090565b5050600190565b90600182811c921680156135b7575b60208310146135a157565b634e487b7160e01b600052602260045260246000fd5b91607f1691613596565b8181106135cc575050565b600081556001016135c1565b6004600091828155826001820155826002820155826003820155016135fd8154613587565b8061360757505050565b82601f821160011461361857505055565b9091808252613636601f60208420940160051c8401600185016135c1565b5555565b9194939290946000958315613c8a578115613c78578215613c66577f00000000000000000000000000000000000000000000000000000000000000006136803082614a36565b906136c360018060a01b03821696604051906323b872dd60e01b60208301523360248301523060448301526064820152606481526136bd81612b86565b87614218565b6136d6826136d13084614a36565b612f7f565b957f00000000000000000000000000000000000000000000000000000000000000006002811015613c52579060018b9214613bcb575b5050505061ffff8116600052600080516020615a8183398151915260205260ff600160406000200154168015611d295761374f6137476149cd565b91828761591a565b906001600160401b038260081c1661376c60ff84169283836158bf565b808803613ba4575061378e61379391613786611b456149cd565b9384916158bf565b615369565b98600080516020615b8183398151915254966001600160401b0380891614613b905767ffffffffffffffff1988166001600160401b03898116600101811691909117600080516020615b81833981519152557f00000000000000000000000000000000000000000000000000000000000000001615613b8a576138146151f2565b50613820612a90614d85565b61383d8c610100600160481b0360ff87169160081b161782615853565b6001600160401b03808d610100600160481b0360ff88169160081b161760081c169160081c16105b613b64578180613b5c575b6138b957505082612d0c9899610100600160481b0360ff8461389d826138a99716848660081b16176153d1565b169160081b1617615679565b6001600160401b03339516614412565b61ffff95979896919a506001600160481b039392506138d6615211565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a26040519661392388612b1a565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615c0183398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b03198254161781556139be6001600160401b03606087015116826157a0565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613b4857613a1f8354613587565b601f8111613b0d575b50602090601f8311600114613aa157906001600160401b03959683613a96575b50508160011b916000199060031b1c19161790555b7f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613a92346143bb565b1690565b015190503880613a48565b95601f19831684885260208820975b818110613af55750916001600160401b03969791846001959410613adc575b505050811b019055613a5d565b015160001960f88460031b161c19169055388080613acf565b83830151895560019098019760209384019301613ab0565b613b389084835260208320601f850160051c81019160208610613b3e575b601f0160051c01906135c1565b38613a28565b9091508190613b2b565b634e487b7160e01b81526041600452602490fd5b506000613870565b604490613b6f615211565b90604051916326fb55dd60e01b835260048301526024820152fd5b81613865565b634e487b7160e01b82526011600452602482fd5b87613bb160449282612f7f565b604051916338f831a560e11b835260048301526024820152fd5b803b156106ae578190602460405180948193630852cd8d60e31b83528c60048401525af18015613c4757613c32575b50613c06903090614a36565b808203613c1457888161370c565b60449250604051916302156a8f60e01b835260048301526024820152fd5b98613c40613c06929a612b07565b9890613bfa565b6040513d8c823e3d90fd5b634e487b7160e01b8b52602160045260248bfd5b60405163717f139360e11b8152600490fd5b604051634e46966960e11b8152600490fd5b604051631f2a200560e01b8152600490fd5b95949392919060008715613c8a578215613c78578315613c66577f0000000000000000000000000000000000000000000000000000000000000000613ce13082614a36565b90613d2460018060a01b0382169a604051906323b872dd60e01b6020830152336024830152306044830152606482015260648152613d1e81612b86565b8b614218565b613d32826136d13084614a36565b997f000000000000000000000000000000000000000000000000000000000000000060028110156141ec57600114614182575b50505061ffff8216600052600080516020615a8183398151915260205260ff600160406000200154168015611d2957613da7613d9f6149cd565b91828b61591a565b916001600160401b038360081c16613dc460ff85169384836158bf565b808c03614175575061378e613de691613dde611b456149cd565b9485916158bf565b99600080516020615b8183398151915254976001600160401b03808a16146141615767ffffffffffffffff1989166001600160401b038a8116600101811691909117600080516020615b81833981519152557f0000000000000000000000000000000000000000000000000000000000000000161561415b57613e676151f2565b508b6001600160401b0380613e7d612a90614d85565b9260081b610100600160481b031660ff881617613e9a8185615853565b60081c169160081c16105b811580614154575b6141495781614141575b50613ee857505082612d0c9899610100600160481b0360ff6138a994169160081b1617613ee3816153d1565b615679565b61ffff95979896919a506001600160481b03939250613f05615211565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a260405196613f5288612b1a565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615c0183398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b0319825416178155613fed6001600160401b03606087015116826157a0565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613b485761404e8354613587565b601f8111614111575b50602090601f83116001146140bf57906001600160401b03959683613a965750508160011b916000199060031b1c19161790557f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613a92346143bb565b95601f19831684885260208820975b8181106140f95750916001600160401b03969791846001959410613adc57505050811b019055613a5d565b838301518955600190980197602093840193016140ce565b61413b9084835260208320601f850160051c81019160208610613b3e57601f0160051c01906135c1565b38614057565b905038613eb7565b604483613b6f615211565b5080613ead565b82613ea5565b634e487b7160e01b83526011600452602483fd5b8b613bb160449282612f7f565b803b156107e55783809160248d6040519485938492630852cd8d60e31b845260048401525af180156141e1576141cc575b506141bf903090614a36565b808203613c145780613d65565b926141da6141bf9294612b07565b92906141b3565b6040513d86823e3d90fd5b634e487b7160e01b85526021600452602485fd5b908160209103126105b1575180151581036105b15790565b604051614276916001600160a01b031661423182612b50565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af16142706142f2565b91614322565b8051908161428357505050565b8280614293938301019101614200565b1561429b5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b3d1561431d573d9061430382612bc2565b916143116040519384612ba1565b82523d6000602084013e565b606090565b919290156143845750815115614336575090565b3b1561433f5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156143975750805190602001fd5b60405162461bcd60e51b815260206004820152908190610611906024830190612ae2565b600080808084335af16143cc6142f2565b50156143d55750565b60249060405190630b288dc560e21b82526004820152fd5b906020828203126105b15781516001600160401b0381116105b157612d0c9201612cca565b959492949391936040518081600080516020615b6183398151915260208154938481520190600052600080516020615ac18339815191529260005b81811061487157505061446292500382612ba1565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed978549181511561485f576144b56000916040519485928392635b10743960e11b8452604060048501526044840190612ae2565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105a557600092614842575b506144ef818388612e24565b95863410614823576145018734612f7f565b80614814575b506040519061451582612b6b565b6001600160481b0386811683527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166020840190815260408085018d815261ffff8d81166060880190815292516315cfa3cb60e11b81529651909416600487015291516024860152905160448501525116606483015260008260848173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105a557614614926000928d9284926147f8575b506001600160401b03604051936145dd85612b35565b16835260018060a01b031660208301526040820152604051809381926311692f3760e31b83526020600484015260248301906130d8565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105a5576000916147d5575b5061ffff8816600052600080516020615a818339815191526020526040600020549383519385156147b95760005b8581106146dd5750505050505050927fe54e51e42099622516fa3b48e9733581c9dbdcb771cafb093f745a0532a35982949261ffff926146ae60c0966104416149cd565b906040519586526020860152604085015260608401521660808201526001600160401b03841660a0820152a190565b6001600160a01b036146ef8284612df0565b5116906146fc8187612df0565b5182600052600080516020615be183398151915260205261472860ff60406000205460101c1686612df0565b51833b156105b15761476e9361ffff8f936000948f8e906147808d6040519b8c998a988997634b5b050560e01b895216600488015260a0602488015260a4870190612e04565b85810360031901604487015290612ae2565b916064840152608483015203925af19182156105a5576147a5926147aa575b50612de1565b61466a565b6147b390612b07565b3861479f565b604051630ebc95af60e21b815261ffff8b166004820152602490fd5b6147f291503d806000833e6147ea8183612ba1565b8101906143ed565b3861463c565b61480d9192503d8086833e6147ea8183612ba1565b90386145c7565b61481d906143bb565b38614507565b6040516306a91e3760e51b815260048101889052346024820152604490fd5b6148589192503d806000833e6115e08183612ba1565b90386144e3565b6040516334e7b19560e11b8152600490fd5b84546001600160a01b031683526001948501948694506020909301920161444d565b92916148a1906104416149cd565b906000937f504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a918580a27f0000000000000000000000000000000000000000000000000000000000000000936002851015611e2f5784614936575060405163a9059cbb60e01b60208201526001600160a01b03909116602482015260448101919091529091506132d1906104de81606481016104d0565b9193600181036105b657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b15611619576040516340c10f1960e01b81526001600160a01b03919091166004820152602481019490945291929181908390604490829084905af19081156149c157506149b85750565b6132d190612b07565b604051903d90823e3d90fd5b600080604051602081019063313ce56760e01b8252600481526149ef81612b50565b51907f00000000000000000000000000000000000000000000000000000000000000005afa50614a1d6142f2565b6020818051810103126105b1576020612d0c9101612cbc565b6040516370a0823160e01b602082019081526001600160a01b039093166024808301919091528152600092839291614a6d81612b35565b51915afa50614a7a6142f2565b6020818051810103126105b1576020015190565b60ff1660ff81146117465760010190565b15614aa657565b634e487b7160e01b600052600160045260246000fd5b600080516020615ba18339815191525460ff8160081c16614aed600080516020615b61833981519152548214614a9f565b60005b818110614b7b575060005b818110614b14575050604060ff6132d192161115614a9f565b60018101808211611746575b828110614b365750614b3190612de1565b614afb565b614b7690614b71614b468461302f565b905490614b528461302f565b92909160018060a01b03809354600395861b1c16931b1c161415614a9f565b612de1565b614b20565b80614b71614b8b614ba29361302f565b905460039190911b1c6001600160a01b0316614ba7565b614af0565b6001600160a01b039081166000818152600080516020615be18339815191526020526040908190209051929190614bdd84612b35565b5460ff91614c19838316158015938488526020880197604087808460081c16159384158c5260101c1691019581875292614cd4575b5050614a9f565b600080516020615b4183398151915254946001600160401b0360019687868651161b1616151590511515916000968791600080516020615ba18339815191525497878960081c16935b848110614c96575b5050505050816132d196614c84869594614c8c9414614a9f565b151514614a9f565b5116911611614a9f565b8282614ca18361302f565b90549060031b1c1614614cbc57614cb790612de1565b614c62565b50919850849250839150614c849050826132d1614c6a565b90915081614ce5575b503880614c12565b90501538614cdd565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614614d2057565b604051633c64f99360e21b8152600490fd5b600080516020615c4183398151915254336001600160a01b039182161415919082614d78575b5050614d6057565b60405163e2a08e5d60e01b8152336004820152602490fd5b1633141590503880614d58565b60405190614d9282612b35565b8160406001600160401b03600080516020615c61833981519152546001600160481b0380821685528160481c16602085015260901c16910152565b90604051614dda81612b35565b60406001600160401b038294546001600160481b0380821685528160481c16602085015260901c16910152565b90600160481b600160901b0382549160481b1690600160481b600160901b031916179055565b600080516020615c618339815191529081546001600160481b03908181166001600160401b036008918184841c16801580615020575b15614ed1575050855471ffffffffffffffffff0000000000000000001916604886901b600160481b600160901b03161786555050505b825479ffffffffffffffff000000000000000000ffffffffffffffffff19169116174260901b67ffffffffffffffff60901b16179055565b86614edd612a90614d85565b926000614eea8383615831565b15614fb65750614f099291614efe91615853565b8388861c16906157c8565b610100600160481b039290841b831660ff861617614f278184615831565b15614fa8578160ff9282614f3e614f4b9487615853565b871c169084871c166157c8565b9116921b16175b614f5c8482615831565b614f8657600160481b600160901b039060481b1690600160481b600160901b031916178355614e99565b604051631e74e8fb60e31b815290831660048201528383166024820152604490fd5b5050905060ff915016614f52565b9493959290614fc890614fd293615853565b8389841c166157c8565b9260ff881694838087610100600160481b038098871b1617614ff48185615853565b851c1691841c160192831161500c57501b1617614f52565b634e487b7160e01b81526011600452602490fd5b5060ff851615614e63565b919080546001600160481b03808216916001600160401b03926008908483831c168015806151e7575b156150ba57505050508461506c6132d1959685614e07565b835467ffffffffffffffff60901b19919092161679ffffffffffffffff000000000000000000ffffffffffffffffff1990911617429190911660901b67ffffffffffffffff60901b16179055565b8590896150c9612a908a614dcd565b9360006150d68383615831565b156151915750916150ee6150f99260ff979894615853565b838c881c16906157c8565b610100600160481b039490861b85169116176151158184615831565b156151835760ff918161512b6151389386615853565b861c168784871c166157c8565b9116921b16175b6151498682615831565b615161579461515c6132d1959685614e07565b61506c565b604051631e74e8fb60e31b815290821660048201529085166024820152604490fd5b5050905060ff91501661513f565b9496506151ac93506151a291615853565b868a851c166157c8565b9160ff891693868086610100600160481b038097861b16176151ce8185615853565b841c1691831c16019186831161500c57501b161761513f565b5060ff841615615054565b604051906151ff82612b35565b60006040838281528260208201520152565b6152196151f2565b50612d0c612a95612a90614d85565b6152306151f2565b506000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b860205260406000206040519061526a82612b35565b80546001600160481b038116835260481c6001600160401b03166020830152600101546001600160a01b0316604082015290565b81156152a8570490565b634e487b7160e01b600052601260045260246000fd5b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000169182156153525761533f828260ff936040610100600160481b0396015116420381615323602085019889519383875160081c160261529e565b9160081c1601915160081c1680821060001461534b5750615369565b9251169160081b161790565b9050615369565b506020015160ff16610100600160481b0317919050565b6001600160401b039081811161537d571690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608490fd5b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000161561548d5761540a6151f2565b50600160481b600160901b03615421612a90614d85565b610100600160481b0360ff61545c600080516020615c61833981519152968088549761544d8188615853565b60081c16908560081c166157c8565b92169160081b161760481b16906001600160401b0360901b4260901b1690600160481b600160d01b03191617179055565b5050565b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000161561548d576154ca6151f2565b506154d6612a90614d85565b90600160481b600160901b03600080516020615c6183398151915293845493816001600160401b0360901b4260901b16946155118184615853565b60081c16828260081c160182811160001461559d5750610100600160481b0360ff61553b84615369565b92169160081b1617906001600160481b038516906155598284615853565b80856001600160401b0360901b1988161760081c16908360081c161060001461559657505b60481b1691600160481b600160d01b03191617179055565b905061557e565b60ff61553b610100600160481b0392615369565b6001600160401b03807f0000000000000000000000000000000000000000000000000000000000000000161561344457610100600160481b0360ff61566b61ffff6132d1966155fe6151f2565b50169384600052600080516020615bc183398151915280602052615628612a906040600020614dcd565b60009687526020919091526040909520805467ffffffffffffffff60901b191642831660901b67ffffffffffffffff60901b1617815595819061544d8188615853565b92169160081b161790614e07565b6001600160401b03807f000000000000000000000000000000000000000000000000000000000000000016156134445761ffff6132d1936156b86151f2565b5016600090808252600080516020615bc1833981519152806020526156e2612a9060408520614dcd565b91835260205260408220805467ffffffffffffffff60901b191642851660901b67ffffffffffffffff60901b1617815593839061571f8184615853565b60081c16838260081c160183811160001461578c5750610100600160481b0360ff61574985615369565b92169160081b1617918084546001600160481b0381169361576a8587615853565b5060081c16908360081c1610600014615784575090614e07565b905090614e07565b60ff615749610100600160481b0392615369565b9067ffffffffffffffff60481b82549160481b169067ffffffffffffffff60481b1916179055565b6001600160401b03918216908216039190821161174657565b60009182915b6001600160401b03908181168015615829576000190191821161581557169161580f90614a8e565b916157e7565b634e487b7160e01b85526011600452602485fd5b505050915090565b9061583c8183615853565b6001600160401b03809160081c169160081c161190565b60ff9182169116818103615865575050565b604051635ce6db6160e11b815260ff918216600482015291166024820152604490fd5b60ff811660081015612d0c5750600890565b9060ff8091169116039060ff821161174657565b60ff16604d811161174657600a0a90565b919060ff821660ff82168181146159135711156158f2576158e7612d0c93926158ec9261589a565b6158ae565b9061529e565b6158e7906158ff9261589a565b908181029181830414901517156117465790565b5050505090565b61594d61378e60ff92610100600160481b03949561593787615888565b90858116868316101561595857509586916158bf565b92169160081b161790565b90509586916158bf565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561599157565b604051631afcd79f60e31b8152600490fd5b6001600160a01b039081169081156159fe57600080516020615b0183398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b600080516020615b01833981519152546001600160a01b03163303615a3857565b60405163118cdaa760e01b8152336004820152602490fd5b600080516020615c218339815191526002815414615a6e5760029055565b604051633ee5aeb560e01b8152600490fdfeebcc9f646b0f459ff8f387587d536b0af3484cf442e1577400f322334e7d1ef047028352a8b3feae1a85fba43bc13f990568bb1637dce33d3dbfd791a0808b7f6c3cb3f3ae91330f31ba2bc0ff8855fc834fb66dc27e8e0b1a398617dabaa5a668dfeeddfa5e4e9adceec01a3aba274bdcbab3f6ac9956417a4332f2b08abdda9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930064bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022fd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f00758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e1ad78307a8b51804c575f26039dcb87c58925afb3b7c08732f3b21b942aed7a768561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d89efb21dcaedea63b55c44882f329622e13a8d0f5b947b3a372826208a9003da1549bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f852fa0677fef8612c6c15b518c9fa56761e9ed15cfd5c6e5399e5467985ac7ed9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00bfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12497c25289a27ec8c9be54d4a154cf80490d69bda989cdb8328232e08fea9220420a2646970667358221220ff24bb6218d11a60fad2e17b2c54e55dfe3f8155f61d7f10dfd1f2886b23efbc64736f6c63430008130033",R6=c=>typeof c[0]=="string"||Array.isArray(c[0])||"_isInterface"in c[0];let _6=class U1 extends U0.ContractFactory{constructor(...e){if(R6(e))super(...e);else{const[a,i]=e;super(ne,U1.linkBytecode(a),i)}}static linkBytecode(e){let a=y1;return a=a.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),a}getDeployTransaction(e,a,i,o,n,u){return super.getDeployTransaction(e,a,i,o,n,u||{})}deploy(e,a,i,o,n,u){return super.deploy(e,a,i,o,n,u||{})}connect(e){return super.connect(e)}static bytecode=y1;static abi=ne;static createInterface(){return new L0.Interface(ne)}static connect(e,a){return new L0.Contract(e,ne,a)}};const ie=[{type:"constructor",inputs:[{name:"nttManager",type:"address",internalType:"address"},{name:"wormholeCoreBridge",type:"address",internalType:"address"},{name:"wormholeRelayerAddr",type:"address",internalType:"address"},{name:"specialRelayerAddr",type:"address",internalType:"address"},{name:"_consistencyLevel",type:"uint8",internalType:"uint8"},{name:"_gasLimit",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"WORMHOLE_TRANSCEIVER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"consistencyLevel",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"encodeWormholeTransceiverInstruction",inputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],outputs:[{name:"",type:"bytes",internalType:"bytes"}],stateMutability:"pure"},{type:"function",name:"gasLimit",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getNttManagerOwner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getNttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isVAAConsumed",inputs:[{name:"hash",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"nttManager",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"nttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"parseWormholeTransceiverInstruction",inputs:[{name:"encoded",type:"bytes",internalType:"bytes"}],outputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],stateMutability:"pure"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"receiveMessage",inputs:[{name:"encodedMessage",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"receiveWormholeMessages",inputs:[{name:"payload",type:"bytes",internalType:"bytes"},{name:"additionalMessages",type:"bytes[]",internalType:"bytes[]"},{name:"sourceAddress",type:"bytes32",internalType:"bytes32"},{name:"sourceChain",type:"uint16",internalType:"uint16"},{name:"deliveryHash",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"sendMessage",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]},{name:"nttManagerMessage",type:"bytes",internalType:"bytes"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"setIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEvm",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setWormholePeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"specialRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract ISpecialRelayer"}],stateMutability:"view"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferTransceiverOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"wormhole",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormhole"}],stateMutability:"view"},{type:"function",name:"wormholeRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormholeRelayer"}],stateMutability:"view"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"ReceivedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"ReceivedRelayedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"RelayingInfo",inputs:[{name:"relayingType",type:"uint8",indexed:!1,internalType:"uint8"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"deliveryPayment",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"SendTransceiverMessage",inputs:[{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"message",type:"tuple",indexed:!1,internalType:"struct TransceiverStructs.TransceiverMessage",components:[{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"nttManagerPayload",type:"bytes",internalType:"bytes"},{name:"transceiverPayload",type:"bytes",internalType:"bytes"}]}],anonymous:!1},{type:"event",name:"SetIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isEvm",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetWormholePeer",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"CallerNotNttManager",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CallerNotRelayer",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CannotRenounceTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"}]},{type:"error",name:"CannotTransferTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"},{name:"newOwner",type:"address",internalType:"address"}]},{type:"error",name:"InvalidBoolVal",inputs:[{name:"val",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidBoolValue",inputs:[{name:"value",type:"uint256",internalType:"BooleanFlag"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidRelayingConfig",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidVaa",inputs:[{name:"reason",type:"string",internalType:"string"}]},{type:"error",name:"InvalidWormholeChainIdZero",inputs:[]},{type:"error",name:"InvalidWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidWormholePeerZeroAddress",inputs:[]},{type:"error",name:"LengthMismatch",inputs:[{name:"encodedLength",type:"uint256",internalType:"uint256"},{name:"expectedLength",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerAlreadySet",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"TransferAlreadyCompleted",inputs:[{name:"vaaHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"UnexpectedAdditionalMessages",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"deployer",type:"address",internalType:"address"},{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"UnexpectedRecipientNttManagerAddress",inputs:[{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"expectedRecipientNttManagerAddress",type:"bytes32",internalType:"bytes32"}]}],h1="0x6101c06040818152346200031d5760c082620036f8803803809162000025828562000322565b8339810103126200031d576200003b826200035c565b906020906200004c8285016200035c565b926200005a8286016200035c565b62000068606087016200035c565b9160808701519660ff881688036200031d5760a00151947ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080549060ff82881c166200030c5782906001600160401b03906002600160401b031984831601620002c9575b50505050306080528160a052845190637e062a3560e11b8252808260048160018060a01b038097165afa908115620002be576000916200027f575b50905060c0523360e0528061012096168652806101409216825261016092168252610180924684526101009687526101a094855251946133869687620003728839608051876130f1015260a051878181610dc201528181611503015281816118860152818161200b015281816121ba015281816128960152612a9a015260c051878181610e4d01528181611c490152818161220c015281816126430152612d32015260e05187610cca01525186818161076301528181610f000152818161122a01528181611bb401528181611da701526123510152518581816101fd01528181610bbe01528181610f2b0152818161125601528181611b5c01528181611dd40152818161225c01528181612db801528181612e980152612f3601525184818161079c015281816115ec01528181611a00015281816122ac0152612c7b015251838181610a1e01528181611bf2015281816122fc0152612d6f015251826102410152518181816106a1015281816119cb0152612c500152f35b82813d8311620002b6575b62000296818362000322565b81010312620002b35750620002ab906200035c565b803862000107565b80fd5b503d6200028a565b86513d6000823e3d90fd5b6001600160401b0319909316811790925586519182527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291a138818180620000cc565b865163f92ee8a960e01b8152600490fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200034657604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200031d5756fe6080604081815260048036101561001557600080fd5b600092833560e01c908163036de8af14612561575080630900f0101461203a5780630b4a1e891461139157806324fb21db14611ff6578063320d0d8e14611fb357806348b330d614611f6d5780634b5b0505146117f55780634b795b2114611754578063529dca321461154a57806358f709ba146114db578063657b3b2f1461143a57806366152efc146113d9578063689f90c314611396578063694977d7146113915780637ab564031461113157806380eb3239146110f55780638129fc1c14610c3657806381e8ec7f14610bed57806384acd1bb14610ba95780638da5cb5b14610b735780638fd3ab8014610a4d57806390ea542814610a09578063935dec07146109c757806396dddc63146109125780639fd0506d146108ca578063b187bd2614610889578063b5634c731461083c578063bc7f6d37146107f9578063d8d28418146107cb578063da25b72514610787578063e8dfd50814610749578063f2fde38b14610714578063f48066a8146106c8578063f68016b7146106895763f953cec7146101a457600080fd5b346106855760209081600319360112610681578035906001600160401b038581841161067e576101da6101f99436908501612754565b86518095819263607ec5ef60e11b83528887840152602483019061283d565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156106745786938790889261046f575b501561044c57507f000000000000000000000000000000000000000000000000000000000000000046810361043057506060830161ffff918282511660005260008051602061327183398151915286528660002054608086019081518091036103ff575061014086016102c7815160005260008051602061329183398151915260205260ff6040600020541690565b6103e657927ff6fc529540981400dc64edf649eb5e2e0eb5812a27f8c81bac2c1d317e71a5f0608060e0948b8a8e9996896103286103799d9b516000526000805160206132918339815191526020526040600020600160ff19825416179055565b519360a08989511692519301511692519384528d8401528d8301526060820152a15116940151906103576128f9565b5061036061291f565b508651630453806b60e11b815293849283928301612a78565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156103dc576103b39450859186946103b6575b50815191015191612a97565b80f35b9093506103d591503d8087833e6103cd8183612718565b8101906129fa565b92386103a7565b84513d87823e3d90fd5b518851632d30ec0360e21b815280870191909152602490fd5b83518951633cd8e72b60e11b815290861661ffff1687820190815260208101929092529081900360400190fd5b0390fd5b826044918751916377d879fb60e01b8352820152466024820152fd5b8551634771719b60e11b815280840186905290819061042c90602483019061283d565b945050503d8087853e6104828185612718565b830160609081858203126106705784518381116105f45785016101609283828403126105f85788519384018481108682111761065b5789526104c382613009565b84526104d0888301613017565b888501526104df898301613017565b898501528082015161ffff8116810361065757818501526080808301518186015261050c60a08401612fa1565b60a086015261051d60c08401613009565b60c086015260e0830151868111610653578461053a918501612977565b60e086015261010061054d818501613017565b90860152610120908184015187811161064f57840185601f8201121561064f5780518c9461058661057d83612803565b96519687612718565b8186528c8087019260071b8401019288841161064b578d01915b8383106105fc57505050505084015261014080910151908301526105c5868601613028565b9487810151908482116105f857019080601f830112156105f45781516105ec928801612940565b909338610238565b8880fd5b8980fd5b84838a031261064b578d8f918287935190610616826126e2565b86518252838701518483015261062d818801613009565b9082015261063c858701613009565b858201528152019201916105a0565b8f80fd5b8c80fd5b8b80fd5b8a80fd5b604187634e487b7160e01b6000525260246000fd5b8780fd5b85513d88823e3d90fd5b80fd5b8380fd5b8280fd5b5050346106c457816003193601126106c457602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5080fd5b5050346106c45760203660031901126106c45760209061ffff6106e9612672565b166000526000805160206132b1833981519152825261070b81600020546130ad565b90519015158152f35b8382346106c45760203660031901126106c457356001600160a01b03811681036106c4576103b3906107446131c1565b613190565b5050346106c457816003193601126106c4576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106c457816003193601126106c4576020906107e8612881565b90516001600160a01b039091168152f35b5050346106c45760203660031901126106c45760209061ffff61081a612672565b16600052600080516020613251833981519152825261070b81600020546130ad565b5034610685578160031936011261068557610855612672565b92602435906001600160401b03821161067e57509261087c6108829260209536910161279b565b90612bda565b9051908152f35b5050346106c457816003193601126106c45760209060027f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b825802254149051908152f35b5050346106c457816003193601126106c4577fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12495490516001600160a01b039091168152602090f35b508290346106c457826003193601126106c45761092d612672565b6109356127f4565b9161093e6131c1565b61ffff82169081156109b957507f4add57d97a7bf5035340ea1212aeeb3d4d3887eb1faf3821a8224c3a6956a10c93946109b39161097b856130df565b906000526000805160206132b18339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b0390a180f35b8551630f7662c960e21b8152fd5b5050346106c45760203660031901126106c45760209061ffff6109e8612672565b16600052600080516020613271833981519152825280600020549051908152f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b509034610685578260031936011261068557610a676130ee565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b038082166001810190828211610b605760ff84871c16908115610b53575b50610b4357169360ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e541615610b35575068ffffffffffffffffff19168317680100000000000000001768ff000000000000000019169055519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a180f35b8351632866815360e11b8152fd5b845163f92ee8a960e01b81528690fd5b9050828216111538610aaf565b634e487b7160e01b885260118752602488fd5b5050346106c457816003193601126106c4576000805160206132f18339815191525490516001600160a01b039091168152602090f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106c457816003193601126106c4578051610c3291610c0e826126fd565b60058252640302e312e360dc1b60208301525191829160208352602083019061283d565b0390f35b5034610685578260031936011261068557610c4f6130ee565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009182549160ff83831c1615906001600160401b0393848116801590816110ed575b60011490816110e3575b1590816110da575b506110cb5767ffffffffffffffff1981166001178655826110ac575b506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116338190036110905750610cfc61314f565b610d0461314f565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055610db0610d33612881565b610d3b61314f565b610d4361314f565b610d4b61314f565b60017f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022557fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad124980546001600160a01b03191633179055610da861314f565b61074461314f565b8351634b4fd03b60e01b8152602095907f0000000000000000000000000000000000000000000000000000000000000000831687828681845afa918215611086578a9261104f575b508651631dcbf42b60e11b81529188838781855afa928315611045578b9361100e575b5087519360a085019081118582101761065b578852639c23bd3b60e01b845288840191825260ff9081168489019081527f00000000000000000000000000000000000000000000000000000000000000008616606086019081529382166080860190815289516301529f6160e21b815295516001600160e01b031916888701529251602486015251811660448501529151606484015251166084820152878160a48173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156110045791610f27939187938a91610fe2575b508987518096819582946358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fb5565b03927f0000000000000000000000000000000000000000000000000000000000000000165af18015610fd857610fa0575b50610f61578380f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29268ff00000000000000001981541690555160018152a13880808380f35b8381813d8311610fd1575b610fb58183612718565b81010312610fcd57610fc690612fa1565b5038610f58565b8580fd5b503d610fab565b83513d88823e3d90fd5b610ffe91503d808c833e610ff68183612718565b810190613035565b38610eea565b85513d8a823e3d90fd5b9092508881813d831161103e575b6110268183612718565b810103126106575761103790613009565b9138610e1b565b503d61101c565b88513d8d823e3d90fd5b9091508781813d831161107f575b6110678183612718565b810103126105f85761107890613009565b9038610df8565b503d61105d565b87513d8c823e3d90fd5b82604491865191636345072160e11b8352820152336024820152fd5b68ffffffffffffffffff19166801000000000000000117855538610cbf565b50825163f92ee8a960e01b8152fd5b90501538610ca3565b303b159150610c9b565b849150610c91565b50913461067e57602036600319011261067e575061070b6020923560005260008051602061329183398151915260205260ff6040600020541690565b503461068557816003193601126106855761114a612672565b602435916111566131c1565b61ffff80831690811561138157841561137157816000526000805160206132718339815191529160209280845287600020548061134857508160005283528587600020558651916111a6836126c7565b630c7e33e160e11b8352838301918252878301878152885163077650fb60e51b815293516001600160e01b031916868501529151166024830152516044820152868160648173__$93083e246e55d56d98f3df2872cd16bfd0$__5af492831561133e576112519383928991611324575b5087516358cd21bf60e11b815294859283927f0000000000000000000000000000000000000000000000000000000000000000918401612fb5565b0381897f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610674576112c8575b5050915161ffff909216825260208201527fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d3264669080604081016109b3565b81813d831161131d575b6112dc8183612718565b81010312611319577fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d326466936113126109b392612fa1565b509361128b565b8480fd5b503d6112d2565b61133891503d808b833e610ff68183612718565b38611216565b86513d89823e3d90fd5b885163b55eeae960e01b815261ffff881681880190815260208101929092529081906040010390fd5b855163137063ef60e11b81528390fd5b8551630f7662c960e21b81528390fd5b61262d565b5050346106c457816003193601126106c45760209060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb541690519015158152f35b50913461067e57602036600319011261067e57508051916113f9836126ac565b35908115159182810361143557610c32935280519160f81b602083015260018252611423826126fd565b5191829160208352602083019061283d565b600080fd5b508290346106c457826003193601126106c457611455612672565b61145d6127f4565b916114666131c1565b61ffff82169081156109b957507f528b18a533e892b5401d1fb63597275df9d2bb45b13e7695c3147cd07b9746c393946109b3916114a3856130df565b906000526000805160206132d18339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b5034610685576020366003190112610685578035916001600160a01b038084168403611319577f000000000000000000000000000000000000000000000000000000000000000016330361153357836103b3846131fa565b60249250519063c5aa615360e01b82523390820152fd5b5060a0366003190112610685576001600160401b038135818111611319576115759036908401612754565b602492833593838511611750573660238601121561175057848201359361159b85612803565b946115a888519687612718565b808652602096838888019260051b8201019236841161065757848201925b84841061172a5750505050506044356064359461ffff86169081870361143557608435937f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361171757826000526000805160206132718339815191528952838a60002054036116f057848b52600080516020613291833981519152895260ff8a8c2054166116dc5750611685846000526000805160206132918339815191526020526040600020600160ff19825416179055565b516116cc57606061037995938a95937ff557dbbb087662f52c815f6c7ee350628a37a51eae9608ff840d996b65f87475938b519283528a8301528a820152a16103576128f9565b875163c504ea2960e01b81528490fd5b8951632d30ec0360e21b8152808701869052fd5b8951633cd8e72b60e11b815261ffff89168188019081526020810186905281906040010390fd5b8951631c26958960e01b81523381880152fd5b833582811161064f578a916117458392893691880101612754565b8152019301926115c6565b8680fd5b508290346106c457826003193601126106c45761176f612672565b6117776127f4565b916117806131c1565b61ffff82169081156109b957507f0fe301480713b2c2072ee91b3bcfcbf2c0014f0447c89046f020f0f80727003c93946109b3916117bd856130df565b906000526000805160206132518339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b509060031960a0368201126106815761180c612672565b9060249283356001600160401b03908181116106705761182f903690880161279b565b906044358181116105f4576118479036908901612754565b90608435977f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00976002895414611f5e57600289556001600160a01b03937f000000000000000000000000000000000000000000000000000000000000000085163303611f4857908b61190181936119108a519b6118c38d6126ac565b848d528b516304616c8f60e21b81526309945ff160e41b89820152338782015260648035604483015260a0908201529c8d94859460a486019061283d565b9184830301608485015261283d565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af4938415611f3e5782988395611eec575b50611948602080980151612b5f565b80511580611edd575b15611b34575050928a928592838989976119c361ffff8f16968792836000526000805160206132718339815191528c526119976119918660002054612fdd565b9b612fdd565b94519c8d9b8c9a8b9a6312d729bd60e21b8c528b0152169088015260e0604488015260e487019061283d565b9360648601527f0000000000000000000000000000000000000000000000000000000000000000608486015260a48501521660c4830152039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611b2a57611ab9575b5061ffff926060611a9e84611ab2946000805160206133318339815191528460019c6000805160206133118339815191529b99519060008252848201523485820152a15b815197889716875281818801528451828801528401518387015283015160808087015260c086019061283d565b910151838203603f190160a085015261283d565b0390a15580f35b9391928185813d8311611b23575b611ad18183612718565b81010312610670576060611a9e61ffff95611ab2946000805160206133318339815191528460019c611b116000805160206133118339815191529c612fa1565b509c5050509450949650505092611a2d565b503d611ac7565b83513d8a823e3d90fd5b919394959250959697989a50511580611eb1575b15611d87578651631a90a21960e01b8152937f000000000000000000000000000000000000000000000000000000000000000082169087868681855afa958d8715611d7c57908993929197611d49575b50869291611bdc918b519889809481936358cd21bf60e11b83527f0000000000000000000000000000000000000000000000000000000000000000908c8401612fb5565b03925af1948515611d3f578c95611d08575b50817f00000000000000000000000000000000000000000000000000000000000000001690340390348211611cf45790818d9796959493923b15610670578c96889660849561ffff8d519a8b998a98630b5624e160e11b8a527f0000000000000000000000000000000000000000000000000000000000000000169089015216908601528760448601521660648401525af18015611cea57611cd2575b50600080516020613311833981519152936060611a9e856001999560008051602061333183398151915284611ab29761ffff9a51908e8252848201523485820152a1611a71565b611cde90969296612683565b610fcd57938538611c8b565b84513d84823e3d90fd5b83601186634e487b7160e01b600052526000fd5b9094508681813d8311611d38575b611d208183612718565b8101031261065357611d3190612fa1565b9338611bee565b503d611d16565b88513d8e823e3d90fd5b9196509181813d8111611d75575b611d618183612718565b810103126114355751948791611bdc611b98565b503d611d57565b8a51903d90823e3d90fd5b9050611dce9350849286999799518095819482936358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fb5565b039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611ea757611e49575b5091611ab26001956060611a9e8560008051602061331183398151915297600080516020613331833981519152848d61ffff9a519060028252848201523485820152a1611a71565b9181838195933d8311611ea0575b611e618183612718565b81010312611750576001956060611a9e611ab29360008051602061331183398151915297611e9161ffff98612fa1565b50959750955050509550611e01565b503d611e57565b83513d89823e3d90fd5b5061ffff8a166000526000805160206132518339815191528652611ed887600020546130ad565b611b48565b50611ee78b61305a565b611951565b985093503d80838a3e611eff818a612718565b88019787818a03126106855780518581116106815789611f20918301612991565b98602082015186811161131957611f379201612977565b9338611939565b87513d84823e3d90fd5b509085519063c5aa615360e01b82523390820152fd5b508451633ee5aeb560e01b8152fd5b50913461067e57602036600319011261067e578235906001600160401b03821161067e5750611fa4602093611fa992369101612754565b612b5f565b9051905115158152f35b5050346106c45760203660031901126106c45760209061ffff611fd4612672565b166000526000805160206132d1833981519152825261070b81600020546130ad565b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5090346106855760209182600319360112610681576001600160a01b03918135838116908181036117505761206d6131c1565b6120756130ee565b3b15612508577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8680a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e9384549361210260ff861615613132565b60ff199485166001178655303b1561175057825163011fa75760e71b81528781868183305af180156123fc576124f5575b50825163689f90c360e01b815282818681305afa9081156123fc5788916124c0575b501561218f575b505050507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b82516324fb21db60e01b815282818681305afa9081156123fc57906121e19189916124a3575b5082167f0000000000000000000000000000000000000000000000000000000000000000831614613132565b8251630b4a1e8960e01b815282818681305afa9081156123fc5790612233918991612476575b5082167f0000000000000000000000000000000000000000000000000000000000000000831614613132565b82516384acd1bb60e01b815282818681305afa80156123fc57889061243e575b612283915082167f0000000000000000000000000000000000000000000000000000000000000000831614613132565b825163da25b72560e01b815282818681305afa80156123fc578890612406575b6122d3915082167f0000000000000000000000000000000000000000000000000000000000000000831614613132565b825163121d4a8560e31b815282818681305afa9081156123fc5788916123c2575b5081612324927f000000000000000000000000000000000000000000000000000000000000000016911614613132565b8082518094631d1bfaa160e31b825281305afa9182156123b957508591612382575b50612379915060ff807f000000000000000000000000000000000000000000000000000000000000000016911614613132565b3880808061215c565b905081813d83116123b2575b6123988183612718565b81010312610681576123ac61237991613009565b38612346565b503d61238e565b513d87823e3d90fd5b90508281813d83116123f5575b6123d98183612718565b81010312610670575190808216820361067057906123246122f4565b503d6123cf565b84513d8a823e3d90fd5b508281813d8311612437575b61241c8183612718565b8101031261067057518181168103610670576122d3906122a3565b503d612412565b508281813d831161246f575b6124548183612718565b81010312610670575181811681036106705761228390612253565b503d61244a565b6124969150843d861161249c575b61248e8183612718565b810190612862565b38612207565b503d612484565b6124ba9150843d861161249c5761248e8183612718565b386121b5565b90508281813d83116124ee575b6124d78183612718565b81010312610670576124e890613028565b38612155565b503d6124cd565b61250190979197612683565b9538612133565b815162461bcd60e51b8152808401869052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b828591346106855760203660031901126106855781356001600160a01b03818116939184900361131957806000805160206132f18339815191525416927fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad124992835492831694338614159081612622575b5061260d5750506001600160a01b031916831790557f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b63e2a08e5d60e01b8252339082015260249150fd5b9050331415886125d1565b34611435576000366003190112611435576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6004359061ffff8216820361143557565b6001600160401b03811161269657604052565b634e487b7160e01b600052604160045260246000fd5b602081019081106001600160401b0382111761269657604052565b606081019081106001600160401b0382111761269657604052565b608081019081106001600160401b0382111761269657604052565b604081019081106001600160401b0382111761269657604052565b90601f801991011681019081106001600160401b0382111761269657604052565b6001600160401b03811161269657601f01601f191660200190565b81601f820112156114355780359061276b82612739565b926127796040519485612718565b8284526020838301011161143557816000926020809301838601378301015290565b9190916040818403126114355760408051916001600160401b0391830182811184821017612696576040528294813560ff811681036114355784526020820135928311611435576020926127ef9201612754565b910152565b60243590811515820361143557565b6001600160401b0381116126965760051b60200190565b60005b83811061282d5750506000910152565b818101518382015260200161281d565b906020916128568151809281855285808601910161281a565b601f01601f1916010190565b9081602091031261143557516001600160a01b03811681036114355790565b604051638da5cb5b60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156128ed576000916128d2575090565b6128ea915060203d811161249c5761248e8183612718565b90565b6040513d6000823e3d90fd5b60405190612906826126e2565b6060808360008152600060208201528160408201520152565b6040519061292c826126c7565b606060408360008152600060208201520152565b9092919261294d81612739565b9161295b6040519384612718565b82948284528282011161143557602061297593019061281a565b565b9080601f830112156114355781516128ea92602001612940565b919060808382031261143557604051906129aa826126e2565b819380518352602081015160208401526040810151916001600160401b039283811161143557816129dc918401612977565b60408501526060820151928311611435576060926127ef9201612977565b9190604083820312611435578251906001600160401b03918281116114355781612a25918601612991565b936020810151908382116114355701906060828203126114355760405192612a4c846126c7565b8251845260208301516020850152604083015190811161143557612a709201612977565b604082015290565b6309945ff160e41b81526040602082018190526128ea9291019061283d565b917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690818103612b415750803b156114355761ffff60008094612b27604080519889978896879563275e091560e21b875216600486015260248501526060604485015280516064850152602081015160848501520151606060a484015260c483019061283d565b03925af180156128ed57612b385750565b61297590612683565b60449250604051916339dee99160e11b835260048301526024820152fd5b9060405191612b6d836126ac565b6000835282815115612bd55750600181015160fe8116612bb95760ff16151583525160018103612b9a5750565b604490604051906355c5b3e360e11b8252600482015260016024820152fd5b60405163f7a37b0760e01b815260ff9091166004820152602490fd5b925050565b90612be9602080920151612b5f565b51612f205761ffff8216906000908282526000805160206132d18339815191528152604093612c1a858420546130ad565b80612ef9575b612ee157612c2d9061305a565b15612cf45750825163c23ee3c360e01b81526004810192909252602482018190527f0000000000000000000000000000000000000000000000000000000000000000604483015282826064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa928315612cea578193612cb9575b50505090565b9091809350813d8311612ce3575b612cd18183612718565b8101031261067e575051388080612cb3565b503d612cc7565b51903d90823e3d90fd5b8282939492526000805160206132518339815191528152612d17828420546130ad565b15612e7f57815163209d173960e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820195909552604481018490529381856064817f000000000000000000000000000000000000000000000000000000000000000085165afa948515612e72578495612e43575b509080600492845193848092631a90a21960e01b82527f0000000000000000000000000000000000000000000000000000000000000000165afa928315612e3a57508392612e0c575b50508201809211612df8575090565b634e487b7160e01b81526011600452602490fd5b90809250813d8311612e33575b612e238183612718565b810103126106c457513880612de9565b503d612e19565b513d85823e3d90fd5b9094508181813d8311612e6b575b612e5b8183612718565b8101031261068157519381612da0565b503d612e51565b50505051903d90823e3d90fd5b8151631a90a21960e01b815291935090919080836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa938415612ed657508193612cb95750505090565b51913d9150823e3d90fd5b845163251268db60e21b815260048101859052602490fd5b508383526000805160206132b18339815191528252612f1a858420546130ad565b15612c20565b604051631a90a21960e01b8152915080826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156128ed57600091612f75575b50905090565b82813d8311612f9a575b612f898183612718565b8101031261067e5750518038612f6f565b503d612f7f565b51906001600160401b038216820361143557565b9060ff612fd66040929594956000855260606020860152606085019061283d565b9416910152565b8060a01c612ff1576001600160a01b031690565b6024906040519063033b960d60e41b82526004820152fd5b519060ff8216820361143557565b519063ffffffff8216820361143557565b5190811515820361143557565b906020828203126114355781516001600160401b038111611435576128ea9201612977565b61ffff16806000526000805160206132d18339815191526020526130826040600020546130ad565b908161308c575090565b90506000526000805160206132b18339815191526020526128ea6040600020545b80156130d957600181146130d3576024906040519063b998bad560e01b82526004820152fd5b50600190565b50600090565b156130e957600190565b600090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461312057565b604051633c64f99360e21b8152600490fd5b1561313957565b634e487b7160e01b600052600160045260246000fd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561317e57565b604051631afcd79f60e31b8152600490fd5b6001600160a01b038116156131a857612975906131fa565b604051631e4fbdf760e01b815260006004820152602490fd5b6000805160206132f1833981519152546001600160a01b031633036131e257565b60405163118cdaa760e01b8152336004820152602490fd5b6000805160206132f183398151915280546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a356fed4cbc7742a1e11dcc33209ac33862ef146cfcb6d7f860df12df42105dfedb1c948c66ef0992b4bcc14f2551075db9459fc23bf706abb76034f1c66c1ba2846845e6aacb3f16e5b01c8b072a0ab4c38e919266014a45db863ee64a4580fb3e7e2e79d2e5e46f62be2ac831294e423b664f30320fb9ebaefd78a978cafe07c0f8c16ee6ac6bf7a8d7c37112a9426e00852b215ac4f5c50536beb6c95f1ba47b4af9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930079376a0dc6cbfe6f6f8f89ad24c262a8c6233f8df181d3fe5abb2e2442e8c738c3192e083c87c556db539f071d8a298869f487e951327b5616a6f85ae3da958ea264697066735822122034563781985a1b9124e36fffc44a6c32ed3932670b1c579b553016e6928c9abb64736f6c63430008130033",E6=c=>typeof c[0]=="string"||Array.isArray(c[0])||"_isInterface"in c[0];let N6=class F1 extends U0.ContractFactory{constructor(...e){if(E6(e))super(...e);else{const[a,i]=e;super(ie,F1.linkBytecode(a),i)}}static linkBytecode(e){let a=h1;return a=a.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),a}getDeployTransaction(e,a,i,o,n,u,g){return super.getDeployTransaction(e,a,i,o,n,u,g||{})}deploy(e,a,i,o,n,u,g){return super.deploy(e,a,i,o,n,u,g||{})}connect(e){return super.connect(e)}static bytecode=h1;static abi=ie;static createInterface(){return new L0.Interface(ie)}static connect(e,a){return new L0.Contract(e,ie,a)}};const se=[{type:"constructor",inputs:[{name:"_token",type:"address",internalType:"address"},{name:"_mode",type:"uint8",internalType:"enum IManagerBase.Mode"},{name:"_chainId",type:"uint16",internalType:"uint16"},{name:"_rateLimitDuration",type:"uint64",internalType:"uint64"},{name:"_skipRateLimiting",type:"bool",internalType:"bool"}],stateMutability:"nonpayable"},{type:"function",name:"NTT_MANAGER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"attestationReceived",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"cancelOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"chainId",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"completeInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"completeOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"executeMsg",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"message",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"getCurrentInboundCapacity",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getCurrentOutboundCapacity",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getInboundLimitParams",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"view"},{type:"function",name:"getInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.InboundQueuedTransfer",components:[{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipient",type:"address",internalType:"address"}]}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getMode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getOutboundLimitParams",inputs:[],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"pure"},{type:"function",name:"getOutboundQueuedTransfer",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.OutboundQueuedTransfer",components:[{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"sender",type:"address",internalType:"address"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}]}],stateMutability:"view"},{type:"function",name:"getPeer",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct INttManager.NttManagerPeer",components:[{name:"peerAddress",type:"bytes32",internalType:"bytes32"},{name:"tokenDecimals",type:"uint8",internalType:"uint8"}]}],stateMutability:"view"},{type:"function",name:"getThreshold",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getTransceiverInfo",inputs:[],outputs:[{name:"",type:"tuple[]",internalType:"struct TransceiverRegistry.TransceiverInfo[]",components:[{name:"registered",type:"bool",internalType:"bool"},{name:"enabled",type:"bool",internalType:"bool"},{name:"index",type:"uint8",internalType:"uint8"}]}],stateMutability:"view"},{type:"function",name:"getTransceivers",inputs:[],outputs:[{name:"result",type:"address[]",internalType:"address[]"}],stateMutability:"pure"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"payable"},{type:"function",name:"isMessageApproved",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isMessageExecuted",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"messageAttestations",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"count",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"mode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"enum IManagerBase.Mode"}],stateMutability:"view"},{type:"function",name:"nextMessageSequence",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"pause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"},{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"rateLimitDuration",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"removeTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setInboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"},{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setOutboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"},{name:"decimals",type:"uint8",internalType:"uint8"},{name:"inboundLimit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setThreshold",inputs:[{name:"threshold",type:"uint8",internalType:"uint8"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"token",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"tokenDecimals",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"transceiverAttestedToMessage",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"index",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"shouldQueue",type:"bool",internalType:"bool"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"unpause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"InboundTransferQueued",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"MessageAlreadyExecuted",inputs:[{name:"sourceNttManager",type:"bytes32",indexed:!0,internalType:"bytes32"},{name:"msgHash",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"MessageAttestedTo",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"index",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OutboundTransferCancelled",inputs:[{name:"sequence",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipient",type:"address",indexed:!1,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OutboundTransferQueued",inputs:[{name:"queueSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"OutboundTransferRateLimited",inputs:[{name:"sender",type:"address",indexed:!0,internalType:"address"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"currentCapacity",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"PeerUpdated",inputs:[{name:"chainId_",type:"uint16",indexed:!0,internalType:"uint16"},{name:"oldPeerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"oldPeerDecimals",type:"uint8",indexed:!1,internalType:"uint8"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"peerDecimals",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"ThresholdChanged",inputs:[{name:"oldThreshold",type:"uint8",indexed:!1,internalType:"uint8"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverAdded",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"transceiversNum",type:"uint256",indexed:!1,internalType:"uint256"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverRemoved",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransferRedeemed",inputs:[{name:"digest",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"TransferSent",inputs:[{name:"recipient",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"fee",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"msgSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"BurnAmountDifferentThanBalanceDiff",inputs:[{name:"burnAmount",type:"uint256",internalType:"uint256"},{name:"balanceDiff",type:"uint256",internalType:"uint256"}]},{type:"error",name:"CallerNotTransceiver",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CancellerNotSender",inputs:[{name:"canceller",type:"address",internalType:"address"},{name:"sender",type:"address",internalType:"address"}]},{type:"error",name:"CapacityCannotExceedLimit",inputs:[{name:"newCurrentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"newLimit",type:"uint72",internalType:"TrimmedAmount"}]},{type:"error",name:"DeliveryPaymentTooLow",inputs:[{name:"requiredPayment",type:"uint256",internalType:"uint256"},{name:"providedPayment",type:"uint256",internalType:"uint256"}]},{type:"error",name:"DisabledTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"InboundQueuedTransferNotFound",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InboundQueuedTransferStillQueued",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidMode",inputs:[{name:"mode",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidPeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidPeerChainIdZero",inputs:[]},{type:"error",name:"InvalidPeerDecimals",inputs:[]},{type:"error",name:"InvalidPeerSameChainId",inputs:[]},{type:"error",name:"InvalidPeerZeroAddress",inputs:[]},{type:"error",name:"InvalidRecipient",inputs:[]},{type:"error",name:"InvalidRefundAddress",inputs:[]},{type:"error",name:"InvalidTargetChain",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"thisChain",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidTransceiverZeroAddress",inputs:[]},{type:"error",name:"MessageNotApproved",inputs:[{name:"msgHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NoEnabledTransceivers",inputs:[]},{type:"error",name:"NonRegisteredTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotEnoughCapacity",inputs:[{name:"currentCapacity",type:"uint256",internalType:"uint256"},{name:"amount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"NumberOfDecimalsNotEqual",inputs:[{name:"decimals",type:"uint8",internalType:"uint8"},{name:"decimalsOther",type:"uint8",internalType:"uint8"}]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OutboundQueuedTransferNotFound",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}]},{type:"error",name:"OutboundQueuedTransferStillQueued",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerNotRegistered",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RefundFailed",inputs:[{name:"refundAmount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"RetrievedIncorrectRegisteredTransceivers",inputs:[{name:"retrieved",type:"uint256",internalType:"uint256"},{name:"registered",type:"uint256",internalType:"uint256"}]},{type:"error",name:"StaticcallFailed",inputs:[]},{type:"error",name:"ThresholdTooHigh",inputs:[{name:"threshold",type:"uint256",internalType:"uint256"},{name:"transceivers",type:"uint256",internalType:"uint256"}]},{type:"error",name:"TooManyTransceivers",inputs:[]},{type:"error",name:"TransceiverAlreadyAttestedToMessage",inputs:[{name:"nttManagerMessageHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"TransceiverAlreadyEnabled",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"TransferAmountHasDust",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"dust",type:"uint256",internalType:"uint256"}]},{type:"error",name:"UndefinedRateLimiting",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"expectedOwner",type:"address",internalType:"address"},{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"UnexpectedMsgValue",inputs:[]},{type:"error",name:"ZeroAmount",inputs:[]},{type:"error",name:"ZeroThreshold",inputs:[]}],g1="0x61016034620005cb57601f620065cb38819003918201601f19168301916001600160401b038311848410176200057e5780849260a094604052833981010312620005cb578051906001600160a01b0382168203620005cb576020810151916002831015620005cb5760408201519161ffff83168303620005cb576060810151906001600160401b03821690818303620005cb576080015180159182158203620005cb5715809281620005c2575b508215620005a6575b505062000594576080527f8561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d8954620001147e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e15460ff8360081c1614620005d0565b7ffd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f5460005b60ff8360081c168110620003f157505060005b60ff8260081c1681106200035d5750604060ff6200016d92161115620005d0565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c166200034b576002600160401b03196001600160401b03821601620002ff575b50503060a05260c0526101009182526101209081526101404681523360e05260405191615f7d93846200064e85396080518481816114d401528181611b1401528181611fb1015281816129fc01528181613447015281816139cf0152818161404b015281816155690152818161567c0152818161573c0152818161585b0152615923015260a05184614faf015260c0518481816102900152818161051401528181610561015281816128e80152818161383f01528181613ec90152818161478701528181614bc60152614c76015260e05184611c590152518381816104ab0152818161202a0152818161217001528181612936015281816138c101528181613f460152614b4e01525182818161137c01528181611e500152818161299f01526133d101525181818161044901528181613abb01528181614113015281816146580152614b000152f35b6001600160401b0319166001600160401b039081179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880620001b6565b60405163f92ee8a960e01b8152600490fd5b60018101808211620003db575b60ff8360081c1681106200038a57506200038490620005ee565b6200014c565b620003d590620003cf6200039e84620005fe565b9054620003ab84620005fe565b9054600391821b1c6001600160a01b039081169390911b9190911c161415620005d0565b620005ee565b6200036a565b634e487b7160e01b600052601160045260246000fd5b620003fc81620005fe565b9054600382901b81901c6001600160a01b031660009081527f49bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f602052604090819020905192906001600160401b0360608501908111908511176200057e5760608401604052546200049e60ff821615801592838752602087019360ff808360081c1615928315875260101c16908160408a01529262000561575b5050620005d0565b60018060401b03600160ff6040870151161b87161615159051151592600092835b60ff8a60081c1681106200050f575b5050508262000509959492620004ee620003cf95620004f79414620005d0565b151514620005d0565b60ff60408188169201511610620005d0565b62000139565b6200051a81620005fe565b9054600391821b1c6001600160a01b039081169184901b85901c16146200054c576200054690620005ee565b620004bf565b5060019350849150829050620004ee620004ce565b9091508162000574575b50388062000496565b905015386200056b565b634e487b7160e01b600052604160045260246000fd5b60405163e543ef0560e01b8152600490fd5b15915081620005b9575b503880620000b5565b905038620005b0565b925038620000ac565b600080fd5b15620005d857565b634e487b7160e01b600052600160045260246000fd5b6000198114620003db5760010190565b7e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e18054821015620006375760005260206000200190600090565b634e487b7160e01b600052603260045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c80630271725014612c79578063036de8af14612bee5780630677df5414612bcf5780630900f01014612768578063186ce6121461271357806319017175146126dd5780631f97c9a8146124eb578063203e4a9b146121e857806323d75e31146121b4578063295a52121461215a578063396c16b71461211e5780633b97e856146121035780633f4ba83a146120755780634b4fd03b14612017578063689f90c314611fd557806374aa7bfc14611f915780637c91863414611e025780638129fc1c14611bcd5780638413bcba14611ab15780638456cb5914611a3457806386e11ffa14611a0f57806389c619dd146119af5780638da5cb5b146119795780638e3ba8c9146119425780638fd3ab80146118035780639057412d14611686578063961b94d01461162857806397c35146146113a05780639a8a0592146113615780639d782454146111265780639f86029c14610e105780639fd0506d14610dda578063b150fc5514610c2d578063b187bd2614610bff578063b293f97f14610b69578063b4d591bb14610aa8578063c0b07bde14610a62578063c128d170146109e6578063d788c1471461095b578063da4856a114610928578063e5a986031461087c578063e75235b81461084e578063f2fde38b14610709578063f5cfec18146106e6578063f7514fbc146102bf578063fc0c546a1461027a5763fd96063c1461022257600080fd5b346102775760203660031901126102775760606102406004356154c7565b6040805182516001600160481b031681526020808401516001600160401b031690820152918101516001600160a01b031690820152f35b80fd5b50346102775780600319360112610277576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5034610277576020366003190112610277576004356001600160401b03811681036106e2576102ec615d17565b6002600080516020615de883398151915254146106d0576001600160401b038116600052600080516020615ec883398151915260205260406000206040519061033482612d49565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a083015260405190818560048301549261039b8461376f565b80845293600181169081156106ae575060011461066a575b506103c092500382612dd0565b60c08201526001600160401b03606082015116156106495760a08101516001600160a01b031633810361061c5750606061048c60407ff80e572ae1b63e2449629b6c7d783add85c36473926f216077f17ee002bcfd07936001600160401b038616600052600080516020615ec8833981519152602052610442826000206137c0565b015161046d7f0000000000000000000000000000000000000000000000000000000000000000615a67565b610475614c50565b906001600160401b0360ff82169160081c16615b86565b926001600160401b0360405191168152336020820152836040820152a17f000000000000000000000000000000000000000000000000000000000000000060028110156106065780610556575060405163a9059cbb60e01b602082015233602482015260448101919091526105419061051281606481015b03601f198101835282612dd0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316614452565b6001600080516020615ee88339815191525580f35b600181036105ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156105e5576040516340c10f1960e01b815233600482015260248101929092526000908290604490829084905af180156105d9576105ca575b50610541565b6105d390612d36565b386105c4565b6040513d6000823e3d90fd5b600080fd5b6040516366001a8960e01b815260ff9091166004820152602490fd5b634e487b7160e01b600052602160045260246000fd5b60405163ceb40a8560e01b81523360048201526001600160a01b03919091166024820152604490fd5b0390fd5b604051635feafa3160e11b81526001600160401b0383166004820152602490fd5b60040187525060208620909186915b8183106106925750509060206103c092820101386103b3565b6020919350806001915483858801015201910190918392610679565b9050602092506103c094915060ff191682840152151560051b820101386103b3565b6040516309e3d0f360e11b8152600490fd5b5080fd5b503461027757806003193601126102775760206107016154b0565b604051908152f35b5034610277576020366003190112610277576001600160a01b03600435818116908181036108195761074a9061073d615cde565b610745615cde565b615c6a565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed97891825460ff600080516020615e688339815191525416808203610830575050908391825b845481101561082c578460005281817f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd1015416803b1561082857848091602460405180948193632c7b84dd60e11b83528960048401525af190811561081d578591610805575b505061080090613010565b61078f565b61080e90612d36565b6108195783386107f5565b8380fd5b6040513d87823e3d90fd5b8480fd5b8380f35b604492506040519163d2a13a2960e01b835260048301526024820152fd5b5034610277578060031936011261027757602060ff600080516020615d688339815191525416604051908152f35b50346102775760203660031901126102775760043560ff8116908181036105e5576108a5615cde565b8115610916577f2a855b929b9a53c6fb5b5ed248b27e502b709c088e036a5aa17620c8fc5085a99161091060ff92600080516020615d68833981519152805493851985161790556108f461328f565b6040805160ff9490951684168552921660208401528291820190565b0390a180f35b60405163831761d760e01b8152600490fd5b50346102775761093736612e53565b906002600080516020615de883398151915254146106d05761095892613358565b80f35b50346102775760203660031901126102775761ffff610978612ccc565b610980614d5b565b5016600052600080516020615e888339815191526020526109e26109a7604060002061508b565b6040519182918291909160406001600160401b038160608401956001600160481b038082511686526020820151166020860152015116910152565b0390f35b50346102775760203660031901126102775761ffff90610a04612ccc565b906020604051610a1381612d7f565b828152015216600052600080516020615d4883398151915260205260408060002060ff8251610a4181612d7f565b60208260018554958685520154169101908152835192835251166020820152f35b50346102775780600319360112610277576109e2604051610a8281612d7f565b60058152640312e302e360dc1b6020820152604051918291602083526020830190612d11565b50346102775780600319360112610277576040518091600080516020615e2883398151915290815480845260208094019081938352600080516020615d8883398151915290835b818110610b4c5750505084610b05910385612dd0565b60405193838594850191818652518092526040850193925b828110610b2c57505050500390f35b83516001600160a01b031685528695509381019392810192600101610b1d565b82546001600160a01b031684529286019260019283019201610aef565b5060c036600319011261027757610b7e612cdd565b906084359182151583036106e25760a4356001600160401b03928382116102775750610bae903690600401612e0c565b610bb6615d17565b6002600080516020615de883398151915254146106d057602093610be4926064359060443590600435613ead565b6001600080516020615ee88339815191525560405191168152f35b503461027757806003193601126102775760206002600080516020615de88339815191525414604051908152f35b503461027757806003193601126102775760405180600080516020615e2883398151915280548084526020809401918552600080516020615d8883398151915290855b818110610dbd5750505081610c86910382612dd0565b8051610c9181612ed4565b91610c9f6040519384612dd0565b818352601f19610cae83612ed4565b01855b818110610da1575050845b828110610d1d575050506040519180830190808452825180925280604085019301945b828110610cec5784840385f35b85518051151585528083015115158584015260409081015160ff169085015294810194606090930192600101610cdf565b929492610d99906001600160a01b03610d36828561301f565b5116600052600080516020615ea88339815191528652604060002060405190610d5e82612d64565b5460ff9081811615158352818160081c1615158984015260101c166040820152610d88828961301f565b52610d93818861301f565b50613010565b949294610cbc565b8590610dae979597614d5b565b82828a01015201959395610cb1565b82546001600160a01b031684529285019260019283019201610c70565b5034610277578060031936011261027757600080516020615f08833981519152546040516001600160a01b039091168152602090f35b5034610277576020806003193601126106e2576001600160a01b0390600435828116919082810361082857610e43615cde565b82156111145782600052600080516020615ea883398151915280835260ff918260406000205416156110fb57846000528184528260406000205460081c16156110e25784600052818452604060002061ff001990818154169055600080516020615e68833981519152928354858160081c169283156110ce5761ff0060001980950160081b169116178455600080516020615e088339815191528054918860005287526001600160401b03600192610f1082858a60406000205460101c161b198316169282168310614d3e565b6001600160401b0319161790558897600080516020615e288339815191528054938b5b858110610fc8575b505050505050918091610f836040969594610f767f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f99614d3e565b610f7e614d7a565b614e65565b5460081c16600080516020615d688339815191529081548381168210610fba575b50505416908351928352820152a161095861328f565b60ff19161781553880610fa4565b838b610fd38361325e565b929054600393841b1c1614610ff15750610fec90613010565b610f33565b9590918093959798999a9b9c5081019081116110ba5790611025846110186110449461325e565b905490891b1c169161325e565b90919082549060031b9160018060a01b03809116831b921b1916179055565b825480156110a657946040999794610f83948a9894610f76947f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f9e9c99019261108c8461325e565b81939154921b1b1916905555998496979899839650610f3b565b634e487b7160e01b8c52603160045260248cfd5b634e487b7160e01b8d52601160045260248dfd5b634e487b7160e01b8b52601160045260248bfd5b6040516307d86e9160e21b815260048101869052602490fd5b604051630d583f4760e41b815260048101869052602490fd5b604051632f44bd7760e01b8152600490fd5b50346102775761113536612e53565b9033600052600080516020615ea883398151915260209080825260ff60406000205460081c161561134957600080516020615de88339815191529160028354146106d05761ffff861680600052600080516020615d488339815191528252846040600020540361132b575060405163b3f07bbd60e01b8152918183806111bf898b6004840161332e565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156113205788936112f1575b503360005280825261120360ff60406000205460101c1684613228565b6112d85760606112b793927f35a2101eaac94b493e0dfca061f9a7f087913fde8678e7cde0aca9897edba0e592336000528082528a6001600160401b03610100600160481b03604082600160ff836000205460101c161b1693898152600080516020615da8833981519152875220928354928360081c161760081b1690610100600160481b03191617905533600052815260ff60406000205460101c166040519185835233908301526040820152a16131bb565b6112bf578480f35b546002146106d0576112d092613358565b388080808480f35b604051631089c4a160e11b815260048101849052602490fd5b9092508181813d8311611319575b6113098183612dd0565b810103126105e5575191386111e6565b503d6112ff565b6040513d8a823e3d90fd5b6044908560405191635788c0fd60e11b835260048301526024820152fd5b60405163a0ae911d60e01b8152336004820152602490fd5b5034610277578060031936011261027757602060405161ffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b506020366003190112610277576001600160401b0360043516908160043503610277576113cb615d17565b6002600080516020615de883398151915254146106d05781600052600080516020615ec88339815191526020526040600020916040519261140b84612d49565b805484526001810154602085015261ffff60028201546001600160481b03811660408701526001600160401b038160481c16606087015260881c16608085015260018060a01b0360038201541660a0850152604051838194906004840154936114738561376f565b808552946001811690811561160457506001146115bf575b505061149992500383612dd0565b60c083019182526001600160401b03606084015116156115a7576114ca6001600160401b03606085015116426131ae565b6001600160401b037f0000000000000000000000000000000000000000000000000000000000000000161161157c579161155991602093600052600080516020615ec8833981519152845261152260406000206137c0565b6001600160481b036040830151169161ffff608082015116815190868301519260a0600180821b039101511693519460043561464c565b6001600080516020615ee8833981519152556001600160401b0360405191168152f35b6044906001600160401b036060850151166040519163c06cf05f60e01b835260048301526024820152fd5b60249060405190635feafa3160e11b82526004820152fd5b60049193949250018252602082205b8183106115e857505090602061149992820101388061148b565b60209193508060019154838589010152019101909184926115ce565b9150506020925061149994915060ff191682840152151560051b820101388061148b565b5060603660031901126102775761163d612cdd565b604435611648615d17565b6002600080516020615de883398151915254146106d05760209181611559926040519261167484612d7f565b60018452853681860137600435613822565b5034610277576040366003190112610277576116a0612ccc565b6024356001600160401b0381116117ff576116bf903690600401612e0c565b91604051918290600080516020615e28833981519152828154918287526020809701908652600080516020615d8883398151915292865b888282106117e05750505061170d92500383612dd0565b826117378351966040519788928392635b10743960e11b8452604060048501526044840190612d11565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156117d55783949561177094926117b1575b50613053565b604051926040840160408552835180915285606086019401915b81811061179d5750505082938301520390f35b82518552938601939186019160010161178a565b6117ce9192503d8087833e6117c68183612dd0565b810190612f3e565b903861176a565b6040513d85823e3d90fd5b85546001600160a01b03168452600195860195889550930192016116f6565b8280fd5b503461027757806003193601126102775761181c614fac565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b0380821690600182019181831161192c5760ff8460401c1690811561191f575b5061190d57600160401b911680926001600160481b03191617179081835560ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e5416156118fb577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2926020926118db61328f565b6118e3614d7a565b68ff000000000000000019169055604051908152a180f35b604051632866815360e11b8152600490fd5b60405163f92ee8a960e01b8152600490fd5b9050818316111538611866565b634e487b7160e01b600052601160045260246000fd5b50346102775760403660031901126102775760243560ff811681036105e55761196f602091600435613228565b6040519015158152f35b5034610277578060031936011261027757600080516020615dc8833981519152546040516001600160a01b039091168152602090f35b503461027757602036600319011261027757611a046001600160401b036020926040600080516020615e0883398151915254916004358152600080516020615da88339815191528652205460081c1616615aa8565b60ff60405191168152f35b5034610277578060031936011261027757611a28614d5b565b506109e26109a7615043565b5034610277578060031936011261027757600080516020615dc883398151915254611a67906001600160a01b0316614ff0565b600080516020615de883398151915260028154146106d057600290557f0e2fb031ee032dc02d8011dc50b816eb450cf856abd8261680dac74f72165bd2602060405160018152a180f35b503461027757602036600319011261027757600435611ace615d17565b6002600080516020615de883398151915254146106d057611aee816154c7565b602081016001600160401b03908181511615611bb457611b1182825116426131ae565b827f00000000000000000000000000000000000000000000000000000000000000001611611b92578385527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b8602052604080862086815560010186905583015183518691610541916001600160481b0316906001600160a01b031687614af5565b516040516301cb739d60e71b8152600481019490945216602483015250604490fd5b604051630301bcaf60e61b815260048101859052602490fd5b508060031936011261027757611be1614fac565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c1615906001600160401b03811680159081611dfa575b6001149081611df0575b159081611de7575b5061190d5767ffffffffffffffff198116600117835581611dc8575b50611c57615c29565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381163303611d9f575034611d8d57611c96615c29565b611c9e615c29565b611ca6615c29565b6001600080516020615de883398151915255600080516020615f0883398151915280546001600160a01b03191633179055611cdf615c29565b611ce7615c29565b611cf033615c6a565b611cf8615c29565b611d00615c29565b6001600080516020615ee883398151915255611d37610100600160481b0360ff611d30611d2b614c50565b615b4f565b16176150eb565b611d3f61328f565b611d47614d7a565b611d4f575080f35b68ff00000000000000001981541690557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b60405163bd28e88960e01b8152600490fd5b604051636345072160e11b81526001600160a01b03919091166004820152336024820152604490fd5b68ffffffffffffffffff19166801000000000000000117825538611c4e565b90501538611c32565b303b159150611c2a565b839150611c20565b503461027757608036600319011261027757611e1c612ccc565b60243560443560ff81168091036105e557611e35615cde565b61ffff809316928315611f7f578215611f6d578115611f5b577f0000000000000000000000000000000000000000000000000000000000000000168314611f49577f1456404e7f41f35c3daac941bb50bad417a66275c3040061b4287d787719599d9160809184600052600080516020615d48833981519152918260205260ff604060002081600160405192611eca84612d7f565b805484520154169460208201958652886000526020526001604060002084815501848319825416179055611f2c611f0b611f02614c50565b80606435615be1565b89600052600080516020615e888339815191526020526040600020906152e9565b51935116604051938452602084015260408301526060820152a280f35b60405163101b8f9560e11b8152600490fd5b60405163ade64f0b60e01b8152600490fd5b60405163f839a0cb60e01b8152600490fd5b60405163100b0f2760e11b8152600490fd5b503461027757806003193601126102775760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b5034610277578060031936011261027757602060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb54166040519015158152f35b50346102775780600319360112610277577f00000000000000000000000000000000000000000000000000000000000000009060028210156120615760208260ff60405191168152f35b634e487b7160e01b81526021600452602490fd5b5034610277578060031936011261027757600080516020615dc8833981519152546120a8906001600160a01b0316614ff0565b600080516020615de883398151915260028154036120f157600190557fe11c2112add17fb763d3bd59f63b10429c3e11373da4fb8ef6725107a2fdc4b06020604051838152a180f35b604051637e38d1d360e11b8152600490fd5b50346102775780600319360112610277576020611a04614c50565b50346102775760203660031901126102775760ff60406020926004358152600080516020615da883398151915284522054166040519015158152f35b50346102775780600319360112610277576040517f000000000000000000000000000000000000000000000000000000000000000060028110156121a057602092508152f35b634e487b7160e01b83526021600452602483fd5b503461027757806003193601126102775760206001600160401b03600080516020615e488339815191525416604051908152f35b5034610277576020806003193601126106e2576004356001600160a01b0381169182820361081957612218615cde565b82156111145782600052600080516020615ea88339815191529182825260ff9081604060002054166000146123c15784600052838352604060002061010061ff00198254161790555b600080516020615e2883398151915290815491600160401b8310156123ab57826110259160016122939501905561325e565b600080516020615e6883398151915292835461ff006122b6848360081c16614d2d565b60081b169061ff00191617809455600080516020615e0883398151915280546001600160401b0390818116918860005284875260018660406000205460101c161b1682179182146123925767ffffffffffffffff19161790557ff05962b5774c658e85ed80c91a75af9d66d2af2253dda480f90bce78aff5eda594606094909390929091612342614d7a565b84600052825280600080516020615d68833981519152805482811615612383575b5054169260405194855260081c16908301526040820152a161095861328f565b60ff1916600117815538612363565b604051638d68f84d60e01b815260048101899052602490fd5b634e487b7160e01b600052604160045260246000fd5b600080516020615e688339815191528281541660408110156124d957604051906123ea82612d64565b6001825285820190600182526040830190815288600052878752604060002092511515918662ff000061ff0086549351151560081b16935160101b1693169062ffffff19161717179055805483612442818316614d2d565b169060ff19161790557f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed978805490600160401b8210156123ab57600182018082558210156124c3576000527f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd10180546001600160a01b03191686179055612261565b634e487b7160e01b600052603260045260246000fd5b60405163891684c360e01b8152600490fd5b5034610277576020366003190112610277576004356001600160401b0381168091036106e257606060c060405161252181612d49565b84815284602082015284604082015284838201528460808201528460a08201520152600052600080516020615ec883398151915260205260406000206040519061256a82612d49565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a0830152604051838194906004840154936125d28561376f565b80855294600181169081156126b95750600114612674575b50506125f892500383612dd0565b60c081019182526109e26040519283926020845280516020850152602081015160408501526001600160481b0360408201511660608501526001600160401b03606082015116608085015261ffff60808201511660a085015260a0600180821b039101511660c08401525160e080840152610100830190612d11565b60049193949250018252602082205b81831061269d5750509060206125f89282010138806125ea565b6020919350806001915483858901015201910190918492612683565b915050602092506125f894915060ff191682840152151560051b82010138806125ea565b5034610277576020366003190112610277576126f7615cde565b61095861270e612705614c50565b80600435615be1565b6150eb565b503461027757604036600319011261027757610958612730612cdd565b612738615cde565b61ffff612746612705614c50565b9116600052600080516020615e888339815191526020526040600020906152e9565b5034610277576020806003193601126106e2576001600160a01b036004358181169081810361082857612799615cde565b6127a1614fac565b3b15612b74577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e9182549161282e60ff841615614d3e565b60ff199283166001178455303b156108285760405163011fa75760e71b8152858160048183305af18015612b2957612b61575b5060405163689f90c360e01b81528281600481305afa908115612b29578691612b34575b50156128bd575b50507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b604051637e062a3560e11b81528281600481305afa908115612b29578691612aeb575b5081612910927f000000000000000000000000000000000000000000000000000000000000000016911614614d3e565b6040516314ad290960e11b81528181600481305afa90811561081d578591612ab5575b507f0000000000000000000000000000000000000000000000000000000000000000906002821015612aa1576002811015612aa1576129729114614d3e565b604051634d4502c960e11b81528181600481305afa801561081d578590612a6b575b6129c7915061ffff807f000000000000000000000000000000000000000000000000000000000000000016911614614d3e565b604051631d2a9eff60e21b8152908082600481305afa90811561081d578591612a2b575b50612a2491506001600160401b03807f000000000000000000000000000000000000000000000000000000000000000016911614614d3e565b388061288c565b905081813d8311612a64575b612a418183612dd0565b8101031261081957516001600160401b038116810361081957612a2490386129eb565b503d612a37565b508181813d8311612a9a575b612a818183612dd0565b8101031261082857612a956129c791613349565b612994565b503d612a77565b634e487b7160e01b86526021600452602486fd5b90508181813d8311612ae4575b612acc8183612dd0565b81010312610828575160028110156108285738612933565b503d612ac2565b90508281813d8311612b22575b612b028183612dd0565b81010312612b1e5751908082168203612b1e57906129106128e0565b8580fd5b503d612af8565b6040513d88823e3d90fd5b612b549150833d8511612b5a575b612b4c8183612dd0565b81019061443a565b38612885565b503d612b42565b612b6d90959195612d36565b9338612861565b60405162461bcd60e51b815260048101849052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b503461027757602036600319011261027757602061196f6004356131bb565b5034610277576020366003190112610277576004356001600160a01b03818116918290036117ff57612c3081600080516020615dc88339815191525416614ff0565b600080516020615f0883398151915280546001600160a01b031981168417909155167f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b50346102775760203660031901126102775761070161046d612cc7604060209461ffff612ca4612ccc565b612cac614d5b565b50168152600080516020615e8883398151915286522061508b565b61555d565b6004359061ffff821682036105e557565b6024359061ffff821682036105e557565b60005b838110612d015750506000910152565b8181015183820152602001612cf1565b90602091612d2a81518092818552858086019101612cee565b601f01601f1916010190565b6001600160401b0381116123ab57604052565b60e081019081106001600160401b038211176123ab57604052565b606081019081106001600160401b038211176123ab57604052565b604081019081106001600160401b038211176123ab57604052565b608081019081106001600160401b038211176123ab57604052565b60a081019081106001600160401b038211176123ab57604052565b90601f801991011681019081106001600160401b038211176123ab57604052565b6001600160401b0381116123ab57601f01601f191660200190565b81601f820112156105e557803590612e2382612df1565b92612e316040519485612dd0565b828452602083830101116105e557816000926020809301838601378301015290565b90600319906060828401126105e55760043561ffff811681036105e5579260243592604435916001600160401b03918284116105e55760609084830301126105e55760405192612ea284612d64565b806004013584526024810135602085015260448101359283116105e557612ecc9201600401612e0c565b604082015290565b6001600160401b0381116123ab5760051b60200190565b519060ff821682036105e557565b81601f820112156105e5578051612f0f81612df1565b92612f1d6040519485612dd0565b818452602082840101116105e557612f3b9160208085019101612cee565b90565b9060209081838203126105e55782516001600160401b03938482116105e557019080601f830112156105e5578151612f7581612ed4565b94604090612f8582519788612dd0565b828752858088019360051b860101948486116105e557868101935b868510612fb257505050505050505090565b84518381116105e55782019084601f1983890301126105e557845190612fd782612d7f565b612fe28a8401612eeb565b825285830151918583116105e557613001898c80969581960101612ef9565b83820152815201940193612fa0565b600019811461192c5760010190565b80518210156124c35760209160051b010190565b9060406020612f3b9360ff81511684520151918160208201520190612d11565b90929180519161306283612ed4565b9260409161307283519586612dd0565b818552601f1961308183612ed4565b01602090368288013760009788955b8487106130a257505050505050509190565b90919293949598868561311b868d6130c160018060a01b03918861301f565b511680600052600080516020615ea883398151915282526130ec60ff866000205460101c168961301f565b51908551808095819463b5634c7360e01b835261ffff60049916898401526024998a8401526044830190613033565b03915afa9081156131a357908d91600091613171575b5061313d81928d61301f565b52830180931161315e5750506131539099613010565b959493929190613090565b601190634e487b7160e01b600052526000fd5b91508782813d831161319c575b6131888183612dd0565b810103126102775750518c9061313d613131565b503d61317e565b8a513d6000823e3d90fd5b9190820391821161192c57565b6001600160401b039060ff61321481600080516020615d688339815191525416938493600080516020615e088339815191525490600052600080516020615da883398151915260205260406000205460081c1616615aa8565b1610159081613221575090565b9050151590565b906001600160401b0391600052600080516020615da8833981519152602052600160ff60406000205460081c92161b1616151590565b600080516020615e2883398151915280548210156124c357600052600080516020615d888339815191520190600090565b60ff600080516020615d6883398151915254166040516132ae81612d7f565b60ff600080516020615e6883398151915254818116835260081c168060208301528083116132e957505160ff166132e25750565b1561091657565b82604491604051916313c3d1b160e01b835260048301526024820152fd5b9060606040612f3b9380518452602081015160208501520151918160408201520190612d11565b60409061ffff612f3b94931681528160208201520190613307565b519061ffff821682036105e557565b919081613365918461364f565b91909161364a5760408091015191815192635399ded560e11b84526080848061339a6020948560048401526024830190612d11565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af493841561363f576000946135ca575b5061ffff9283606086015116847f0000000000000000000000000000000000000000000000000000000000000000168082036135af575050613402614c50565b8161342b87519280613426816001600160401b03968760ff82169160081c16615b86565b615be1565b960151908160a01c613598576001600160a01b039182169560007f00000000000000000000000000000000000000000000000000000000000000008316156135915750613476614d5b565b508816600052600080516020615e88833981519152845261349c612cc78460002061508b565b6134a68882615b1a565b81808960081c169160081c16105b6134d957505050506134c96134d79484615850565b6134d283615730565b614af5565b565b7f7f63c9251d82a933210c2b6d0b0f116252c3c116788120e64e8e8215df6f3162975095613575839596949760019394519261351484612d64565b6001600160481b038091168452898401908242168252888501978852896000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b88b52886000209451166001600160481b0319855416178455511682615a3f565b019151166001600160601b0360a01b82541617905551908152a1565b90506134b4565b50602491519063033b960d60e41b82526004820152fd5b6044925191631ee5902560e11b835260048301526024820152fd5b6080949194813d8211613637575b816135e560809383612dd0565b810103126106e2578351916135f983612d9a565b8151906001600160481b0382168203610277575082528481015185830152838101518483015261362b90606001613349565b606082015292386133c2565b3d91506135d8565b83513d6000823e3d90fd5b505050565b60405163b3f07bbd60e01b81529193926020918391829161367491906004840161332e565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105d957600091613705575b506136a6816131bb565b156136ed576136b481613736565b92836136c257509150600090565b7f4069dff8c9df7e38d2867c0910bd96fd61787695e5380281148c04932d02bef2600080a360009190565b60249060405190630451c4fb60e41b82526004820152fd5b906020823d821161372e575b8161371e60209383612dd0565b810103126102775750513861369c565b3d9150613711565b600052600080516020615da88339815191526020526040600020805460ff81166137685760ff19166001179055600090565b5050600190565b90600182811c9216801561379f575b602083101461378957565b634e487b7160e01b600052602260045260246000fd5b91607f169161377e565b8181106137b4575050565b600081556001016137a9565b6004600091828155826001820155826002820155826003820155016137e5815461376f565b806137ef57505050565b82601f821160011461380057505055565b909180825261381e601f60208420940160051c8401600185016137a9565b5555565b9194939290946000958315613e9b578115613e89578215613e77577f00000000000000000000000000000000000000000000000000000000000000006138683082614cd0565b906138ab60018060a01b03821696604051906323b872dd60e01b60208301523360248301523060448301526064820152606481526138a581612db5565b87614452565b6138be826138b93084614cd0565b6131ae565b957f00000000000000000000000000000000000000000000000000000000000000006002811015613e63579060018b9214613ddc575b5050505061ffff8116600052600080516020615d4883398151915260205260ff600160406000200154168015611f5b5761393761392f614c50565b918287615be1565b906001600160401b038260081c1661395460ff8416928383615b86565b808803613db5575061397661397b9161396e611d2b614c50565b938491615b86565b615608565b98600080516020615e4883398151915254966001600160401b0380891614613da15767ffffffffffffffff1988166001600160401b03898116600101811691909117600080516020615e48833981519152557f00000000000000000000000000000000000000000000000000000000000000001615613d9b576139fc614d5b565b50613a08612cc7615043565b613a258c610100600160481b0360ff87169160081b161782615b1a565b6001600160401b03808d610100600160481b0360ff88169160081b161760081c169160081c16105b613d75578180613d6d575b613aa157505082612f3b9899610100600160481b0360ff84613a8582613a919716848660081b1617615670565b169160081b1617615918565b6001600160401b0333951661464c565b61ffff95979896919a506001600160481b03939250613adf7f0000000000000000000000000000000000000000000000000000000000000000615a67565b613ae76154b0565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a260405196613b3488612d49565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615ec883398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b0319825416178155613bcf6001600160401b0360608701511682615a3f565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613d5957613c30835461376f565b601f8111613d1e575b50602090601f8311600114613cb257906001600160401b03959683613ca7575b50508160011b916000199060031b1c19161790555b7f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613ca3346145f5565b1690565b015190503880613c59565b95601f19831684885260208820975b818110613d065750916001600160401b03969791846001959410613ced575b505050811b019055613c6e565b015160001960f88460031b161c19169055388080613ce0565b83830151895560019098019760209384019301613cc1565b613d499084835260208320601f850160051c81019160208610613d4f575b601f0160051c01906137a9565b38613c39565b9091508190613d3c565b634e487b7160e01b81526041600452602490fd5b506000613a58565b604490613d806154b0565b90604051916326fb55dd60e01b835260048301526024820152fd5b81613a4d565b634e487b7160e01b82526011600452602482fd5b87613dc2604492826131ae565b604051916338f831a560e11b835260048301526024820152fd5b803b156106e2578190602460405180948193630852cd8d60e31b83528c60048401525af18015613e5857613e43575b50613e17903090614cd0565b808203613e255788816138f4565b60449250604051916302156a8f60e01b835260048301526024820152fd5b98613e51613e17929a612d36565b9890613e0b565b6040513d8c823e3d90fd5b634e487b7160e01b8b52602160045260248bfd5b60405163717f139360e11b8152600490fd5b604051634e46966960e11b8152600490fd5b604051631f2a200560e01b8152600490fd5b95949392919060008715613e9b578215613e89578315613e77577f0000000000000000000000000000000000000000000000000000000000000000613ef23082614cd0565b90613f3560018060a01b0382169a604051906323b872dd60e01b6020830152336024830152306044830152606482015260648152613f2f81612db5565b8b614452565b613f43826138b93084614cd0565b997f00000000000000000000000000000000000000000000000000000000000000006002811015614426576001146143bc575b50505061ffff8216600052600080516020615d4883398151915260205260ff600160406000200154168015611f5b57613fb8613fb0614c50565b91828b615be1565b916001600160401b038360081c16613fd560ff8516938483615b86565b808c036143af5750613976613ff791613fef611d2b614c50565b948591615b86565b99600080516020615e4883398151915254976001600160401b03808a161461439b5767ffffffffffffffff1989166001600160401b038a8116600101811691909117600080516020615e48833981519152557f0000000000000000000000000000000000000000000000000000000000000000161561439557614078614d5b565b508b6001600160401b038061408e612cc7615043565b9260081b610100600160481b031660ff8816176140ab8185615b1a565b60081c169160081c16105b81158061438e575b614383578161437b575b506140f957505082612f3b9899610100600160481b0360ff613a9194169160081b16176140f481615670565b615918565b61ffff95979896919a506001600160481b039392506141377f0000000000000000000000000000000000000000000000000000000000000000615a67565b61413f6154b0565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a26040519661418c88612d49565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615ec883398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b03198254161781556142276001600160401b0360608701511682615a3f565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613d5957614288835461376f565b601f811161434b575b50602090601f83116001146142f957906001600160401b03959683613ca75750508160011b916000199060031b1c19161790557f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613ca3346145f5565b95601f19831684885260208820975b8181106143335750916001600160401b03969791846001959410613ced57505050811b019055613c6e565b83830151895560019098019760209384019301614308565b6143759084835260208320601f850160051c81019160208610613d4f57601f0160051c01906137a9565b38614291565b9050386140c8565b604483613d806154b0565b50806140be565b826140b6565b634e487b7160e01b83526011600452602483fd5b8b613dc2604492826131ae565b803b156108195783809160248d6040519485938492630852cd8d60e31b845260048401525af1801561441b57614406575b506143f9903090614cd0565b808203613e255780613f76565b926144146143f99294612d36565b92906143ed565b6040513d86823e3d90fd5b634e487b7160e01b85526021600452602485fd5b908160209103126105e5575180151581036105e55790565b6040516144b0916001600160a01b031661446b82612d7f565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af16144aa61452c565b9161455c565b805190816144bd57505050565b82806144cd93830101910161443a565b156144d55750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b3d15614557573d9061453d82612df1565b9161454b6040519384612dd0565b82523d6000602084013e565b606090565b919290156145be5750815115614570575090565b3b156145795790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156145d15750805190602001fd5b60405162461bcd60e51b815260206004820152908190610645906024830190612d11565b600080808084335af161460661452c565b501561460f5750565b60249060405190630b288dc560e21b82526004820152fd5b906020828203126105e55781516001600160401b0381116105e557612f3b9201612ef9565b9594929493919361467c7f0000000000000000000000000000000000000000000000000000000000000000615a67565b6040518081600080516020615e2883398151915260208154938481520190600052600080516020615d888339815191529260005b818110614ad35750506146c592500382612dd0565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed9785491815115614ac1576147186000916040519485928392635b10743960e11b8452604060048501526044840190612d11565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105d957600092614aa4575b50614752818388613053565b95863410614a855761476487346131ae565b80614a76575b506040519061477882612d9a565b6001600160481b0386811683527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166020840190815260408085018d815261ffff8d81166060880190815292516315cfa3cb60e11b81529651909416600487015291516024860152905160448501525116606483015260008260848173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105d957614877926000928d928492614a5a575b506001600160401b036040519361484085612d64565b16835260018060a01b031660208301526040820152604051809381926311692f3760e31b8352602060048401526024830190613307565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105d957600091614a37575b5061ffff8816600052600080516020615d48833981519152602052604060002054938351938515614a1b5760005b8581106149405750505050505050927fe54e51e42099622516fa3b48e9733581c9dbdcb771cafb093f745a0532a35982949261ffff9261491160c096610475614c50565b906040519586526020860152604085015260608401521660808201526001600160401b03841660a0820152a190565b6001600160a01b03614952828461301f565b51169061495f818761301f565b5182600052600080516020615ea883398151915260205261498b60ff60406000205460101c168661301f565b51833b156105e5576149d19361ffff8f936000948f8e906149e38d6040519b8c998a988997634b5b050560e01b895216600488015260a0602488015260a4870190613033565b85810360031901604487015290612d11565b916064840152608483015203925af19182156105d957614a0792614a0c5750613010565b6148cd565b614a1590612d36565b38610d93565b604051630ebc95af60e21b815261ffff8b166004820152602490fd5b614a5491503d806000833e614a4c8183612dd0565b810190614627565b3861489f565b614a6f9192503d8086833e614a4c8183612dd0565b903861482a565b614a7f906145f5565b3861476a565b6040516306a91e3760e51b815260048101889052346024820152604490fd5b614aba9192503d806000833e6117c68183612dd0565b9038614746565b6040516334e7b19560e11b8152600490fd5b84546001600160a01b03168352600194850194869450602090930192016146b0565b9291614b249061046d7f0000000000000000000000000000000000000000000000000000000000000000615a67565b906000937f504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a918580a27f00000000000000000000000000000000000000000000000000000000000000009360028510156120615784614bb9575060405163a9059cbb60e01b60208201526001600160a01b03909116602482015260448101919091529091506134d7906105128160648101610504565b9193600181036105ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156117ff576040516340c10f1960e01b81526001600160a01b03919091166004820152602481019490945291929181908390604490829084905af1908115614c445750614c3b5750565b6134d790612d36565b604051903d90823e3d90fd5b600080604051602081019063313ce56760e01b825260048152614c7281612d7f565b51907f00000000000000000000000000000000000000000000000000000000000000005afa614c9f61452c565b9015614cbe576020818051810103126105e5576020612f3b9101612eeb565b604051631222cd8360e01b8152600490fd5b6040516370a0823160e01b602082019081526001600160a01b039093166024808301919091528152600092839291614d0781612d64565b51915afa614d1361452c565b9015614cbe576020818051810103126105e5576020015190565b60ff1660ff811461192c5760010190565b15614d4557565b634e487b7160e01b600052600160045260246000fd5b60405190614d6882612d64565b60006040838281528260208201520152565b600080516020615e688339815191525460ff8160081c16614dab600080516020615e28833981519152548214614d3e565b60005b818110614e39575060005b818110614dd2575050604060ff6134d792161115614d3e565b6001810180821161192c575b828110614df45750614def90613010565b614db9565b614e3490614e2f614e048461325e565b905490614e108461325e565b92909160018060a01b03809354600395861b1c16931b1c161415614d3e565b613010565b614dde565b80614e2f614e49614e609361325e565b905460039190911b1c6001600160a01b0316614e65565b614dae565b6001600160a01b039081166000818152600080516020615ea88339815191526020526040908190209051929190614e9b84612d64565b5460ff91614ed7838316158015938488526020880197604087808460081c16159384158c5260101c1691019581875292614f92575b5050614d3e565b600080516020615e0883398151915254946001600160401b0360019687868651161b1616151590511515916000968791600080516020615e688339815191525497878960081c16935b848110614f54575b5050505050816134d796614f42869594614f4a9414614d3e565b151514614d3e565b5116911611614d3e565b8282614f5f8361325e565b90549060031b1c1614614f7a57614f7590613010565b614f20565b50919850849250839150614f429050826134d7614f28565b90915081614fa3575b503880614ed0565b90501538614f9b565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614614fde57565b604051633c64f99360e21b8152600490fd5b600080516020615f0883398151915254336001600160a01b039182161415919082615036575b505061501e57565b60405163e2a08e5d60e01b8152336004820152602490fd5b1633141590503880615016565b6040519061505082612d64565b8160406001600160401b03600080516020615f28833981519152546001600160481b0380821685528160481c16602085015260901c16910152565b9060405161509881612d64565b60406001600160401b038294546001600160481b0380821685528160481c16602085015260901c16910152565b90600160481b600160901b0382549160481b1690600160481b600160901b031916179055565b600080516020615f288339815191529081546001600160481b03908181166001600160401b036008918184841c168015806152de575b1561518f575050855471ffffffffffffffffff0000000000000000001916604886901b600160481b600160901b03161786555050505b825479ffffffffffffffff000000000000000000ffffffffffffffffff19169116174260901b67ffffffffffffffff60901b16179055565b8661519b612cc7615043565b9260006151a88383615af8565b1561527457506151c792916151bc91615b1a565b8388861c1690615a8f565b610100600160481b039290841b831660ff8616176151e58184615af8565b15615266578160ff92826151fc6152099487615b1a565b871c169084871c16615a8f565b9116921b16175b61521a8482615af8565b61524457600160481b600160901b039060481b1690600160481b600160901b031916178355615157565b604051631e74e8fb60e31b815290831660048201528383166024820152604490fd5b5050905060ff915016615210565b94939592906152869061529093615b1a565b8389841c16615a8f565b9260ff881694838087610100600160481b038098871b16176152b28185615b1a565b851c1691841c16019283116152ca57501b1617615210565b634e487b7160e01b81526011600452602490fd5b5060ff851615615121565b919080546001600160481b03808216916001600160401b03926008908483831c168015806154a5575b1561537857505050508461532a6134d79596856150c5565b835467ffffffffffffffff60901b19919092161679ffffffffffffffff000000000000000000ffffffffffffffffff1990911617429190911660901b67ffffffffffffffff60901b16179055565b859089615387612cc78a61508b565b9360006153948383615af8565b1561544f5750916153ac6153b79260ff979894615b1a565b838c881c1690615a8f565b610100600160481b039490861b85169116176153d38184615af8565b156154415760ff91816153e96153f69386615b1a565b861c168784871c16615a8f565b9116921b16175b6154078682615af8565b61541f579461541a6134d79596856150c5565b61532a565b604051631e74e8fb60e31b815290821660048201529085166024820152604490fd5b5050905060ff9150166153fd565b94965061546a935061546091615b1a565b868a851c16615a8f565b9160ff891693868086610100600160481b038097861b161761548c8185615b1a565b841c1691831c1601918683116152ca57501b16176153fd565b5060ff841615615312565b6154b8614d5b565b50612f3b61046d612cc7615043565b6154cf614d5b565b506000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b860205260406000206040519061550982612d64565b80546001600160481b038116835260481c6001600160401b03166020830152600101546001600160a01b0316604082015290565b8115615547570490565b634e487b7160e01b600052601260045260246000fd5b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000169182156155f1576155de828260ff936040610100600160481b03960151164203816155c2602085019889519383875160081c160261553d565b9160081c1601915160081c168082106000146155ea5750615608565b9251169160081b161790565b9050615608565b506020015160ff16610100600160481b0317919050565b6001600160401b039081811161561c571690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608490fd5b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000161561572c576156a9614d5b565b50600160481b600160901b036156c0612cc7615043565b610100600160481b0360ff6156fb600080516020615f2883398151915296808854976156ec8188615b1a565b60081c16908560081c16615a8f565b92169160081b161760481b16906001600160401b0360901b4260901b1690600160481b600160d01b03191617179055565b5050565b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000161561572c57615769614d5b565b50615775612cc7615043565b90600160481b600160901b03600080516020615f2883398151915293845493816001600160401b0360901b4260901b16946157b08184615b1a565b60081c16828260081c160182811160001461583c5750610100600160481b0360ff6157da84615608565b92169160081b1617906001600160481b038516906157f88284615b1a565b80856001600160401b0360901b1988161760081c16908360081c161060001461583557505b60481b1691600160481b600160d01b03191617179055565b905061581d565b60ff6157da610100600160481b0392615608565b6001600160401b03807f0000000000000000000000000000000000000000000000000000000000000000161561364a57610100600160481b0360ff61590a61ffff6134d79661589d614d5b565b50169384600052600080516020615e88833981519152806020526158c7612cc7604060002061508b565b60009687526020919091526040909520805467ffffffffffffffff60901b191642831660901b67ffffffffffffffff60901b161781559581906156ec8188615b1a565b92169160081b1617906150c5565b6001600160401b03807f0000000000000000000000000000000000000000000000000000000000000000161561364a5761ffff6134d793615957614d5b565b5016600090808252600080516020615e8883398151915280602052615981612cc76040852061508b565b91835260205260408220805467ffffffffffffffff60901b191642851660901b67ffffffffffffffff60901b161781559383906159be8184615b1a565b60081c16838260081c1601838111600014615a2b5750610100600160481b0360ff6159e885615608565b92169160081b1617918084546001600160481b03811693615a098587615b1a565b5060081c16908360081c1610600014615a235750906150c5565b9050906150c5565b60ff6159e8610100600160481b0392615608565b9067ffffffffffffffff60481b82549160481b169067ffffffffffffffff60481b1916179055565b468103615a715750565b604490604051906377d879fb60e01b82526004820152466024820152fd5b6001600160401b03918216908216039190821161192c57565b60009182915b6001600160401b03908181168015615af05760001901918211615adc571691615ad690614d2d565b91615aae565b634e487b7160e01b85526011600452602485fd5b505050915090565b90615b038183615b1a565b6001600160401b03809160081c169160081c161190565b60ff9182169116818103615b2c575050565b604051635ce6db6160e11b815260ff918216600482015291166024820152604490fd5b60ff811660081015612f3b5750600890565b9060ff8091169116039060ff821161192c57565b60ff16604d811161192c57600a0a90565b919060ff821660ff8216818114615bda571115615bb957615bae612f3b9392615bb392615b61565b615b75565b9061553d565b615bae90615bc692615b61565b9081810291818304149015171561192c5790565b5050505090565b615c1461397660ff92610100600160481b039495615bfe87615b4f565b908581168683161015615c1f5750958691615b86565b92169160081b161790565b9050958691615b86565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c1615615c5857565b604051631afcd79f60e31b8152600490fd5b6001600160a01b03908116908115615cc557600080516020615dc883398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b600080516020615dc8833981519152546001600160a01b03163303615cff57565b60405163118cdaa760e01b8152336004820152602490fd5b600080516020615ee88339815191526002815414615d355760029055565b604051633ee5aeb560e01b8152600490fdfeebcc9f646b0f459ff8f387587d536b0af3484cf442e1577400f322334e7d1ef047028352a8b3feae1a85fba43bc13f990568bb1637dce33d3dbfd791a0808b7f6c3cb3f3ae91330f31ba2bc0ff8855fc834fb66dc27e8e0b1a398617dabaa5a668dfeeddfa5e4e9adceec01a3aba274bdcbab3f6ac9956417a4332f2b08abdda9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930064bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022fd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f00758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e1ad78307a8b51804c575f26039dcb87c58925afb3b7c08732f3b21b942aed7a768561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d89efb21dcaedea63b55c44882f329622e13a8d0f5b947b3a372826208a9003da1549bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f852fa0677fef8612c6c15b518c9fa56761e9ed15cfd5c6e5399e5467985ac7ed9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00bfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12497c25289a27ec8c9be54d4a154cf80490d69bda989cdb8328232e08fea9220420a26469706673582212207ed5e889b9f55b8e46c735a86c62e208aeae9aa95f45c30245d74d8a7fdad80c64736f6c63430008130033",L6=c=>typeof c[0]=="string"||Array.isArray(c[0])||"_isInterface"in c[0];let O6=class q1 extends U0.ContractFactory{constructor(...e){if(L6(e))super(...e);else{const[a,i]=e;super(se,q1.linkBytecode(a),i)}}static linkBytecode(e){let a=g1;return a=a.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),a}getDeployTransaction(e,a,i,o,n,u){return super.getDeployTransaction(e,a,i,o,n,u||{})}deploy(e,a,i,o,n,u){return super.deploy(e,a,i,o,n,u||{})}connect(e){return super.connect(e)}static bytecode=g1;static abi=se;static createInterface(){return new L0.Interface(se)}static connect(e,a){return new L0.Contract(e,se,a)}};const re=[{type:"constructor",inputs:[{name:"nttManager",type:"address",internalType:"address"},{name:"wormholeCoreBridge",type:"address",internalType:"address"},{name:"wormholeRelayerAddr",type:"address",internalType:"address"},{name:"specialRelayerAddr",type:"address",internalType:"address"},{name:"_consistencyLevel",type:"uint8",internalType:"uint8"},{name:"_gasLimit",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"WORMHOLE_TRANSCEIVER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"consistencyLevel",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"encodeWormholeTransceiverInstruction",inputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],outputs:[{name:"",type:"bytes",internalType:"bytes"}],stateMutability:"pure"},{type:"function",name:"gasLimit",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getNttManagerOwner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getNttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"payable"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isVAAConsumed",inputs:[{name:"hash",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"nttManager",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"nttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"parseWormholeTransceiverInstruction",inputs:[{name:"encoded",type:"bytes",internalType:"bytes"}],outputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],stateMutability:"pure"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"receiveMessage",inputs:[{name:"encodedMessage",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"receiveWormholeMessages",inputs:[{name:"payload",type:"bytes",internalType:"bytes"},{name:"additionalMessages",type:"bytes[]",internalType:"bytes[]"},{name:"sourceAddress",type:"bytes32",internalType:"bytes32"},{name:"sourceChain",type:"uint16",internalType:"uint16"},{name:"deliveryHash",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"sendMessage",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]},{name:"nttManagerMessage",type:"bytes",internalType:"bytes"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"setIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEvm",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setWormholePeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"specialRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract ISpecialRelayer"}],stateMutability:"view"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferTransceiverOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"wormhole",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormhole"}],stateMutability:"view"},{type:"function",name:"wormholeRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormholeRelayer"}],stateMutability:"view"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"ReceivedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"ReceivedRelayedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"RelayingInfo",inputs:[{name:"relayingType",type:"uint8",indexed:!1,internalType:"uint8"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"deliveryPayment",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"SendTransceiverMessage",inputs:[{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"message",type:"tuple",indexed:!1,internalType:"struct TransceiverStructs.TransceiverMessage",components:[{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"nttManagerPayload",type:"bytes",internalType:"bytes"},{name:"transceiverPayload",type:"bytes",internalType:"bytes"}]}],anonymous:!1},{type:"event",name:"SetIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isEvm",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetWormholePeer",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"CallerNotNttManager",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CallerNotRelayer",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CannotRenounceTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"}]},{type:"error",name:"CannotTransferTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"},{name:"newOwner",type:"address",internalType:"address"}]},{type:"error",name:"InvalidBoolVal",inputs:[{name:"val",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidBoolValue",inputs:[{name:"value",type:"uint256",internalType:"BooleanFlag"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidRelayingConfig",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidVaa",inputs:[{name:"reason",type:"string",internalType:"string"}]},{type:"error",name:"InvalidWormholeChainIdZero",inputs:[]},{type:"error",name:"InvalidWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidWormholePeerZeroAddress",inputs:[]},{type:"error",name:"LengthMismatch",inputs:[{name:"encodedLength",type:"uint256",internalType:"uint256"},{name:"expectedLength",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerAlreadySet",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"TransferAlreadyCompleted",inputs:[{name:"vaaHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"UnexpectedAdditionalMessages",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"deployer",type:"address",internalType:"address"},{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"UnexpectedRecipientNttManagerAddress",inputs:[{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"expectedRecipientNttManagerAddress",type:"bytes32",internalType:"bytes32"}]}],v1="0x6101c06040818152346200031d5760c082620036ef803803809162000025828562000322565b8339810103126200031d576200003b826200035c565b906020906200004c8285016200035c565b926200005a8286016200035c565b62000068606087016200035c565b9160808701519660ff881688036200031d5760a00151947ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080549060ff82881c166200030c5782906001600160401b03906002600160401b031984831601620002c9575b50505050306080528160a052845190637e062a3560e11b8252808260048160018060a01b038097165afa908115620002be576000916200027f575b50905060c0523360e0528061012096168652806101409216825261016092168252610180924684526101009687526101a0948552519461337d9687620003728839608051876130e8015260a051878181610dbd015281816114fa0152818161187d01528181612002015281816121b10152818161288d0152612a91015260c051878181610e4801528181611c40015281816122030152818161263a0152612d29015260e05187610cc501525186818161076301528181610efa0152818161122101528181611bab01528181611d9e01526123480152518581816101fd01528181610bbe01528181610f270152818161124d01528181611b5301528181611dcb0152818161225301528181612daf01528181612e8f0152612f2d01525184818161079c015281816115e3015281816119f7015281816122a30152612c72015251838181610a1e01528181611be9015281816122f30152612d66015251826102410152518181816106a1015281816119c20152612c470152f35b82813d8311620002b6575b62000296818362000322565b81010312620002b35750620002ab906200035c565b803862000107565b80fd5b503d6200028a565b86513d6000823e3d90fd5b6001600160401b0319909316811790925586519182527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291a138818180620000cc565b865163f92ee8a960e01b8152600490fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200034657604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200031d5756fe6080604081815260048036101561001557600080fd5b600092833560e01c908163036de8af14612558575080630900f010146120315780630b4a1e891461138857806324fb21db14611fed578063320d0d8e14611faa57806348b330d614611f645780634b5b0505146117ec5780634b795b211461174b578063529dca321461154157806358f709ba146114d2578063657b3b2f1461143157806366152efc146113d0578063689f90c31461138d578063694977d7146113885780637ab564031461112d57806380eb3239146110f15780638129fc1c14610c3657806381e8ec7f14610bed57806384acd1bb14610ba95780638da5cb5b14610b735780638fd3ab8014610a4d57806390ea542814610a09578063935dec07146109c757806396dddc63146109125780639fd0506d146108ca578063b187bd2614610889578063b5634c731461083c578063bc7f6d37146107f9578063d8d28418146107cb578063da25b72514610787578063e8dfd50814610749578063f2fde38b14610714578063f48066a8146106c8578063f68016b7146106895763f953cec7146101a457600080fd5b346106855760209081600319360112610681578035906001600160401b038581841161067e576101da6101f9943690850161274b565b86518095819263607ec5ef60e11b835288878401526024830190612834565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156106745786938790889261046f575b501561044c57507f000000000000000000000000000000000000000000000000000000000000000046810361043057506060830161ffff918282511660005260008051602061326883398151915286528660002054608086019081518091036103ff575061014086016102c7815160005260008051602061328883398151915260205260ff6040600020541690565b6103e657927ff6fc529540981400dc64edf649eb5e2e0eb5812a27f8c81bac2c1d317e71a5f0608060e0948b8a8e9996896103286103799d9b516000526000805160206132888339815191526020526040600020600160ff19825416179055565b519360a08989511692519301511692519384528d8401528d8301526060820152a15116940151906103576128f0565b50610360612916565b508651630453806b60e11b815293849283928301612a6f565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156103dc576103b39450859186946103b6575b50815191015191612a8e565b80f35b9093506103d591503d8087833e6103cd818361270f565b8101906129f1565b92386103a7565b84513d87823e3d90fd5b518851632d30ec0360e21b815280870191909152602490fd5b83518951633cd8e72b60e11b815290861661ffff1687820190815260208101929092529081900360400190fd5b0390fd5b826044918751916377d879fb60e01b8352820152466024820152fd5b8551634771719b60e11b815280840186905290819061042c906024830190612834565b945050503d8087853e610482818561270f565b830160609081858203126106705784518381116105f45785016101609283828403126105f85788519384018481108682111761065b5789526104c382613000565b84526104d088830161300e565b888501526104df89830161300e565b898501528082015161ffff8116810361065757818501526080808301518186015261050c60a08401612f98565b60a086015261051d60c08401613000565b60c086015260e0830151868111610653578461053a91850161296e565b60e086015261010061054d81850161300e565b90860152610120908184015187811161064f57840185601f8201121561064f5780518c9461058661057d836127fa565b9651968761270f565b8186528c8087019260071b8401019288841161064b578d01915b8383106105fc57505050505084015261014080910151908301526105c586860161301f565b9487810151908482116105f857019080601f830112156105f45781516105ec928801612937565b909338610238565b8880fd5b8980fd5b84838a031261064b578d8f918287935190610616826126d9565b86518252838701518483015261062d818801613000565b9082015261063c858701613000565b858201528152019201916105a0565b8f80fd5b8c80fd5b8b80fd5b8a80fd5b604187634e487b7160e01b6000525260246000fd5b8780fd5b85513d88823e3d90fd5b80fd5b8380fd5b8280fd5b5050346106c457816003193601126106c457602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5080fd5b5050346106c45760203660031901126106c45760209061ffff6106e9612669565b166000526000805160206132a8833981519152825261070b81600020546130a4565b90519015158152f35b8382346106c45760203660031901126106c457356001600160a01b03811681036106c4576103b3906107446131b8565b613187565b5050346106c457816003193601126106c4576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106c457816003193601126106c4576020906107e8612878565b90516001600160a01b039091168152f35b5050346106c45760203660031901126106c45760209061ffff61081a612669565b16600052600080516020613248833981519152825261070b81600020546130a4565b5034610685578160031936011261068557610855612669565b92602435906001600160401b03821161067e57509261087c61088292602095369101612792565b90612bd1565b9051908152f35b5050346106c457816003193601126106c45760209060027f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b825802254149051908152f35b5050346106c457816003193601126106c4577fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12495490516001600160a01b039091168152602090f35b508290346106c457826003193601126106c45761092d612669565b6109356127eb565b9161093e6131b8565b61ffff82169081156109b957507f4add57d97a7bf5035340ea1212aeeb3d4d3887eb1faf3821a8224c3a6956a10c93946109b39161097b856130d6565b906000526000805160206132a88339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b0390a180f35b8551630f7662c960e21b8152fd5b5050346106c45760203660031901126106c45760209061ffff6109e8612669565b16600052600080516020613268833981519152825280600020549051908152f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b509034610685578260031936011261068557610a676130e5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b038082166001810190828211610b605760ff84871c16908115610b53575b50610b4357169360ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e541615610b35575068ffffffffffffffffff19168317680100000000000000001768ff000000000000000019169055519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a180f35b8351632866815360e11b8152fd5b845163f92ee8a960e01b81528690fd5b9050828216111538610aaf565b634e487b7160e01b885260118752602488fd5b5050346106c457816003193601126106c4576000805160206132e88339815191525490516001600160a01b039091168152602090f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106c457816003193601126106c4578051610c3291610c0e826126f4565b60058252640312e302e360dc1b602083015251918291602083526020830190612834565b0390f35b508260031936011261068557610c4a6130e5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009182549160ff83831c1615906001600160401b0393848116801590816110e9575b60011490816110df575b1590816110d6575b506110c75767ffffffffffffffff1981166001178655826110a8575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081163381900361108c5750610cf7613146565b610cff613146565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055610dab610d2e612878565b610d36613146565b610d3e613146565b610d46613146565b60017f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022557fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad124980546001600160a01b03191633179055610da3613146565b610744613146565b8351634b4fd03b60e01b8152602095907f0000000000000000000000000000000000000000000000000000000000000000831687828681845afa918215611082578a9261104b575b508651631dcbf42b60e11b81529188838781855afa928315611041578b9361100a575b5087519360a085019081118582101761065b578852639c23bd3b60e01b845288840191825260ff9081168489019081527f00000000000000000000000000000000000000000000000000000000000000008616606086019081529382166080860190815289516301529f6160e21b815295516001600160e01b031916888701529251602486015251811660448501529151606484015251166084820152878160a48173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156110005791610f21939187938a91610fde575b5086518095819482936358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fac565b039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015610fd457610f9c575b50610f5d578380f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29268ff00000000000000001981541690555160018152a13880808380f35b8381813d8311610fcd575b610fb1818361270f565b81010312610fc957610fc290612f98565b5038610f54565b8580fd5b503d610fa7565b83513d88823e3d90fd5b610ffa91503d808c833e610ff2818361270f565b81019061302c565b38610ee5565b85513d8a823e3d90fd5b9092508881813d831161103a575b611022818361270f565b810103126106575761103390613000565b9138610e16565b503d611018565b88513d8d823e3d90fd5b9091508781813d831161107b575b611063818361270f565b810103126105f85761107490613000565b9038610df3565b503d611059565b87513d8c823e3d90fd5b82604491865191636345072160e11b8352820152336024820152fd5b68ffffffffffffffffff19166801000000000000000117855538610cba565b50825163f92ee8a960e01b8152fd5b90501538610c9e565b303b159150610c96565b849150610c8c565b50913461067e57602036600319011261067e575061070b6020923560005260008051602061328883398151915260205260ff6040600020541690565b508160031936011261068557611141612669565b6024359161114d6131b8565b61ffff80831690811561137857841561136857816000526000805160206132688339815191529160209280845287600020548061133f575081600052835285876000205586519161119d836126be565b630c7e33e160e11b8352838301918252878301878152885163077650fb60e51b815293516001600160e01b031916868501529151166024830152516044820152868160648173__$93083e246e55d56d98f3df2872cd16bfd0$__5af492831561133557611248938392899161131b575b5087516358cd21bf60e11b815294859283927f0000000000000000000000000000000000000000000000000000000000000000918401612fac565b0381347f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610674576112bf575b5050915161ffff909216825260208201527fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d3264669080604081016109b3565b81813d8311611314575b6112d3818361270f565b81010312611310577fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d326466936113096109b392612f98565b5093611282565b8480fd5b503d6112c9565b61132f91503d808b833e610ff2818361270f565b3861120d565b86513d89823e3d90fd5b885163b55eeae960e01b815261ffff881681880190815260208101929092529081906040010390fd5b855163137063ef60e11b81528390fd5b8551630f7662c960e21b81528390fd5b612624565b5050346106c457816003193601126106c45760209060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb541690519015158152f35b50913461067e57602036600319011261067e57508051916113f0836126a3565b35908115159182810361142c57610c32935280519160f81b60208301526001825261141a826126f4565b51918291602083526020830190612834565b600080fd5b508290346106c457826003193601126106c45761144c612669565b6114546127eb565b9161145d6131b8565b61ffff82169081156109b957507f528b18a533e892b5401d1fb63597275df9d2bb45b13e7695c3147cd07b9746c393946109b39161149a856130d6565b906000526000805160206132c88339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b5034610685576020366003190112610685578035916001600160a01b038084168403611310577f000000000000000000000000000000000000000000000000000000000000000016330361152a57836103b3846131f1565b60249250519063c5aa615360e01b82523390820152fd5b5060a0366003190112610685576001600160401b0381358181116113105761156c903690840161274b565b6024928335938385116117475736602386011215611747578482013593611592856127fa565b9461159f8851968761270f565b808652602096838888019260051b8201019236841161065757848201925b8484106117215750505050506044356064359461ffff86169081870361142c57608435937f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361170e57826000526000805160206132688339815191528952838a60002054036116e757848b52600080516020613288833981519152895260ff8a8c2054166116d3575061167c846000526000805160206132888339815191526020526040600020600160ff19825416179055565b516116c357606061037995938a95937ff557dbbb087662f52c815f6c7ee350628a37a51eae9608ff840d996b65f87475938b519283528a8301528a820152a16103576128f0565b875163c504ea2960e01b81528490fd5b8951632d30ec0360e21b8152808701869052fd5b8951633cd8e72b60e11b815261ffff89168188019081526020810186905281906040010390fd5b8951631c26958960e01b81523381880152fd5b833582811161064f578a9161173c839289369188010161274b565b8152019301926115bd565b8680fd5b508290346106c457826003193601126106c457611766612669565b61176e6127eb565b916117776131b8565b61ffff82169081156109b957507f0fe301480713b2c2072ee91b3bcfcbf2c0014f0447c89046f020f0f80727003c93946109b3916117b4856130d6565b906000526000805160206132488339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b509060031960a03682011261068157611803612669565b9060249283356001600160401b0390818111610670576118269036908801612792565b906044358181116105f45761183e903690890161274b565b90608435977f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00976002895414611f5557600289556001600160a01b03937f000000000000000000000000000000000000000000000000000000000000000085163303611f3f57908b6118f881936119078a519b6118ba8d6126a3565b848d528b516304616c8f60e21b81526309945ff160e41b89820152338782015260648035604483015260a0908201529c8d94859460a4860190612834565b91848303016084850152612834565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af4938415611f355782988395611ee3575b5061193f602080980151612b56565b80511580611ed4575b15611b2b575050928a928592838989976119ba61ffff8f16968792836000526000805160206132688339815191528c5261198e6119888660002054612fd4565b9b612fd4565b94519c8d9b8c9a8b9a6312d729bd60e21b8c528b0152169088015260e0604488015260e4870190612834565b9360648601527f0000000000000000000000000000000000000000000000000000000000000000608486015260a48501521660c4830152039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611b2157611ab0575b5061ffff926060611a9584611aa9946000805160206133288339815191528460019c6000805160206133088339815191529b99519060008252848201523485820152a15b815197889716875281818801528451828801528401518387015283015160808087015260c0860190612834565b910151838203603f190160a0850152612834565b0390a15580f35b9391928185813d8311611b1a575b611ac8818361270f565b81010312610670576060611a9561ffff95611aa9946000805160206133288339815191528460019c611b086000805160206133088339815191529c612f98565b509c5050509450949650505092611a24565b503d611abe565b83513d8a823e3d90fd5b919394959250959697989a50511580611ea8575b15611d7e578651631a90a21960e01b8152937f000000000000000000000000000000000000000000000000000000000000000082169087868681855afa958d8715611d7357908993929197611d40575b50869291611bd3918b519889809481936358cd21bf60e11b83527f0000000000000000000000000000000000000000000000000000000000000000908c8401612fac565b03925af1948515611d36578c95611cff575b50817f00000000000000000000000000000000000000000000000000000000000000001690340390348211611ceb5790818d9796959493923b15610670578c96889660849561ffff8d519a8b998a98630b5624e160e11b8a527f0000000000000000000000000000000000000000000000000000000000000000169089015216908601528760448601521660648401525af18015611ce157611cc9575b50600080516020613308833981519152936060611a95856001999560008051602061332883398151915284611aa99761ffff9a51908e8252848201523485820152a1611a68565b611cd59096929661267a565b610fc957938538611c82565b84513d84823e3d90fd5b83601186634e487b7160e01b600052526000fd5b9094508681813d8311611d2f575b611d17818361270f565b8101031261065357611d2890612f98565b9338611be5565b503d611d0d565b88513d8e823e3d90fd5b9196509181813d8111611d6c575b611d58818361270f565b8101031261142c5751948791611bd3611b8f565b503d611d4e565b8a51903d90823e3d90fd5b9050611dc59350849286999799518095819482936358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fac565b039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611e9e57611e40575b5091611aa96001956060611a958560008051602061330883398151915297600080516020613328833981519152848d61ffff9a519060028252848201523485820152a1611a68565b9181838195933d8311611e97575b611e58818361270f565b81010312611747576001956060611a95611aa99360008051602061330883398151915297611e8861ffff98612f98565b50959750955050509550611df8565b503d611e4e565b83513d89823e3d90fd5b5061ffff8a166000526000805160206132488339815191528652611ecf87600020546130a4565b611b3f565b50611ede8b613051565b611948565b985093503d80838a3e611ef6818a61270f565b88019787818a03126106855780518581116106815789611f17918301612988565b98602082015186811161131057611f2e920161296e565b9338611930565b87513d84823e3d90fd5b509085519063c5aa615360e01b82523390820152fd5b508451633ee5aeb560e01b8152fd5b50913461067e57602036600319011261067e578235906001600160401b03821161067e5750611f9b602093611fa09236910161274b565b612b56565b9051905115158152f35b5050346106c45760203660031901126106c45760209061ffff611fcb612669565b166000526000805160206132c8833981519152825261070b81600020546130a4565b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5090346106855760209182600319360112610681576001600160a01b0391813583811690818103611747576120646131b8565b61206c6130e5565b3b156124ff577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8680a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e938454936120f960ff861615613129565b60ff199485166001178655303b1561174757825163011fa75760e71b81528781868183305af180156123f3576124ec575b50825163689f90c360e01b815282818681305afa9081156123f35788916124b7575b5015612186575b505050507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b82516324fb21db60e01b815282818681305afa9081156123f357906121d891899161249a575b5082167f0000000000000000000000000000000000000000000000000000000000000000831614613129565b8251630b4a1e8960e01b815282818681305afa9081156123f3579061222a91899161246d575b5082167f0000000000000000000000000000000000000000000000000000000000000000831614613129565b82516384acd1bb60e01b815282818681305afa80156123f3578890612435575b61227a915082167f0000000000000000000000000000000000000000000000000000000000000000831614613129565b825163da25b72560e01b815282818681305afa80156123f35788906123fd575b6122ca915082167f0000000000000000000000000000000000000000000000000000000000000000831614613129565b825163121d4a8560e31b815282818681305afa9081156123f35788916123b9575b508161231b927f000000000000000000000000000000000000000000000000000000000000000016911614613129565b8082518094631d1bfaa160e31b825281305afa9182156123b057508591612379575b50612370915060ff807f000000000000000000000000000000000000000000000000000000000000000016911614613129565b38808080612153565b905081813d83116123a9575b61238f818361270f565b81010312610681576123a361237091613000565b3861233d565b503d612385565b513d87823e3d90fd5b90508281813d83116123ec575b6123d0818361270f565b810103126106705751908082168203610670579061231b6122eb565b503d6123c6565b84513d8a823e3d90fd5b508281813d831161242e575b612413818361270f565b8101031261067057518181168103610670576122ca9061229a565b503d612409565b508281813d8311612466575b61244b818361270f565b81010312610670575181811681036106705761227a9061224a565b503d612441565b61248d9150843d8611612493575b612485818361270f565b810190612859565b386121fe565b503d61247b565b6124b19150843d861161249357612485818361270f565b386121ac565b90508281813d83116124e5575b6124ce818361270f565b81010312610670576124df9061301f565b3861214c565b503d6124c4565b6124f89097919761267a565b953861212a565b815162461bcd60e51b8152808401869052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b828591346106855760203660031901126106855781356001600160a01b03818116939184900361131057806000805160206132e88339815191525416927fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad124992835492831694338614159081612619575b506126045750506001600160a01b031916831790557f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b63e2a08e5d60e01b8252339082015260249150fd5b9050331415886125c8565b3461142c57600036600319011261142c576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6004359061ffff8216820361142c57565b6001600160401b03811161268d57604052565b634e487b7160e01b600052604160045260246000fd5b602081019081106001600160401b0382111761268d57604052565b606081019081106001600160401b0382111761268d57604052565b608081019081106001600160401b0382111761268d57604052565b604081019081106001600160401b0382111761268d57604052565b90601f801991011681019081106001600160401b0382111761268d57604052565b6001600160401b03811161268d57601f01601f191660200190565b81601f8201121561142c5780359061276282612730565b92612770604051948561270f565b8284526020838301011161142c57816000926020809301838601378301015290565b91909160408184031261142c5760408051916001600160401b039183018281118482101761268d576040528294813560ff8116810361142c578452602082013592831161142c576020926127e6920161274b565b910152565b60243590811515820361142c57565b6001600160401b03811161268d5760051b60200190565b60005b8381106128245750506000910152565b8181015183820152602001612814565b9060209161284d81518092818552858086019101612811565b601f01601f1916010190565b9081602091031261142c57516001600160a01b038116810361142c5790565b604051638da5cb5b60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156128e4576000916128c9575090565b6128e1915060203d811161249357612485818361270f565b90565b6040513d6000823e3d90fd5b604051906128fd826126d9565b6060808360008152600060208201528160408201520152565b60405190612923826126be565b606060408360008152600060208201520152565b9092919261294481612730565b91612952604051938461270f565b82948284528282011161142c57602061296c930190612811565b565b9080601f8301121561142c5781516128e192602001612937565b919060808382031261142c57604051906129a1826126d9565b819380518352602081015160208401526040810151916001600160401b039283811161142c57816129d391840161296e565b6040850152606082015192831161142c576060926127e6920161296e565b919060408382031261142c578251906001600160401b039182811161142c5781612a1c918601612988565b9360208101519083821161142c57019060608282031261142c5760405192612a43846126be565b8251845260208301516020850152604083015190811161142c57612a67920161296e565b604082015290565b6309945ff160e41b81526040602082018190526128e192910190612834565b917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690818103612b385750803b1561142c5761ffff60008094612b1e604080519889978896879563275e091560e21b875216600486015260248501526060604485015280516064850152602081015160848501520151606060a484015260c4830190612834565b03925af180156128e457612b2f5750565b61296c9061267a565b60449250604051916339dee99160e11b835260048301526024820152fd5b9060405191612b64836126a3565b6000835282815115612bcc5750600181015160fe8116612bb05760ff16151583525160018103612b915750565b604490604051906355c5b3e360e11b8252600482015260016024820152fd5b60405163f7a37b0760e01b815260ff9091166004820152602490fd5b925050565b90612be0602080920151612b56565b51612f175761ffff8216906000908282526000805160206132c88339815191528152604093612c11858420546130a4565b80612ef0575b612ed857612c2490613051565b15612ceb5750825163c23ee3c360e01b81526004810192909252602482018190527f0000000000000000000000000000000000000000000000000000000000000000604483015282826064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa928315612ce1578193612cb0575b50505090565b9091809350813d8311612cda575b612cc8818361270f565b8101031261067e575051388080612caa565b503d612cbe565b51903d90823e3d90fd5b8282939492526000805160206132488339815191528152612d0e828420546130a4565b15612e7657815163209d173960e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820195909552604481018490529381856064817f000000000000000000000000000000000000000000000000000000000000000085165afa948515612e69578495612e3a575b509080600492845193848092631a90a21960e01b82527f0000000000000000000000000000000000000000000000000000000000000000165afa928315612e3157508392612e03575b50508201809211612def575090565b634e487b7160e01b81526011600452602490fd5b90809250813d8311612e2a575b612e1a818361270f565b810103126106c457513880612de0565b503d612e10565b513d85823e3d90fd5b9094508181813d8311612e62575b612e52818361270f565b8101031261068157519381612d97565b503d612e48565b50505051903d90823e3d90fd5b8151631a90a21960e01b815291935090919080836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa938415612ecd57508193612cb05750505090565b51913d9150823e3d90fd5b845163251268db60e21b815260048101859052602490fd5b508383526000805160206132a88339815191528252612f11858420546130a4565b15612c17565b604051631a90a21960e01b8152915080826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156128e457600091612f6c575b50905090565b82813d8311612f91575b612f80818361270f565b8101031261067e5750518038612f66565b503d612f76565b51906001600160401b038216820361142c57565b9060ff612fcd60409295949560008552606060208601526060850190612834565b9416910152565b8060a01c612fe8576001600160a01b031690565b6024906040519063033b960d60e41b82526004820152fd5b519060ff8216820361142c57565b519063ffffffff8216820361142c57565b5190811515820361142c57565b9060208282031261142c5781516001600160401b03811161142c576128e1920161296e565b61ffff16806000526000805160206132c88339815191526020526130796040600020546130a4565b9081613083575090565b90506000526000805160206132a88339815191526020526128e16040600020545b80156130d057600181146130ca576024906040519063b998bad560e01b82526004820152fd5b50600190565b50600090565b156130e057600190565b600090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461311757565b604051633c64f99360e21b8152600490fd5b1561313057565b634e487b7160e01b600052600160045260246000fd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561317557565b604051631afcd79f60e31b8152600490fd5b6001600160a01b0381161561319f5761296c906131f1565b604051631e4fbdf760e01b815260006004820152602490fd5b6000805160206132e8833981519152546001600160a01b031633036131d957565b60405163118cdaa760e01b8152336004820152602490fd5b6000805160206132e883398151915280546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a356fed4cbc7742a1e11dcc33209ac33862ef146cfcb6d7f860df12df42105dfedb1c948c66ef0992b4bcc14f2551075db9459fc23bf706abb76034f1c66c1ba2846845e6aacb3f16e5b01c8b072a0ab4c38e919266014a45db863ee64a4580fb3e7e2e79d2e5e46f62be2ac831294e423b664f30320fb9ebaefd78a978cafe07c0f8c16ee6ac6bf7a8d7c37112a9426e00852b215ac4f5c50536beb6c95f1ba47b4af9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930079376a0dc6cbfe6f6f8f89ad24c262a8c6233f8df181d3fe5abb2e2442e8c738c3192e083c87c556db539f071d8a298869f487e951327b5616a6f85ae3da958ea264697066735822122059bdad9542fb301c5a401dc5ec7c26dca547abf82e0e0ca3cc87aced2c37698b64736f6c63430008130033",D6=c=>typeof c[0]=="string"||Array.isArray(c[0])||"_isInterface"in c[0];let B6=class $1 extends U0.ContractFactory{constructor(...e){if(D6(e))super(...e);else{const[a,i]=e;super(re,$1.linkBytecode(a),i)}}static linkBytecode(e){let a=v1;return a=a.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),a}getDeployTransaction(e,a,i,o,n,u,g){return super.getDeployTransaction(e,a,i,o,n,u,g||{})}deploy(e,a,i,o,n,u,g){return super.deploy(e,a,i,o,n,u,g||{})}connect(e){return super.connect(e)}static bytecode=v1;static abi=re;static createInterface(){return new L0.Interface(re)}static connect(e,a){return new L0.Contract(e,re,a)}};const oe=[{type:"constructor",inputs:[{name:"_token",type:"address",internalType:"address"},{name:"_mode",type:"uint8",internalType:"enum IManagerBase.Mode"},{name:"_chainId",type:"uint16",internalType:"uint16"},{name:"_rateLimitDuration",type:"uint64",internalType:"uint64"},{name:"_skipRateLimiting",type:"bool",internalType:"bool"}],stateMutability:"nonpayable"},{type:"function",name:"NTT_MANAGER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"attestationReceived",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"cancelOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"chainId",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"completeInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"completeOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"executeMsg",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"message",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"getCurrentInboundCapacity",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getCurrentOutboundCapacity",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getInboundLimitParams",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"view"},{type:"function",name:"getInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.InboundQueuedTransfer",components:[{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipient",type:"address",internalType:"address"}]}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getMode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getOutboundLimitParams",inputs:[],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"pure"},{type:"function",name:"getOutboundQueuedTransfer",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.OutboundQueuedTransfer",components:[{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"sender",type:"address",internalType:"address"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}]}],stateMutability:"view"},{type:"function",name:"getPeer",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct INttManager.NttManagerPeer",components:[{name:"peerAddress",type:"bytes32",internalType:"bytes32"},{name:"tokenDecimals",type:"uint8",internalType:"uint8"}]}],stateMutability:"view"},{type:"function",name:"getThreshold",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getTransceiverInfo",inputs:[],outputs:[{name:"",type:"tuple[]",internalType:"struct TransceiverRegistry.TransceiverInfo[]",components:[{name:"registered",type:"bool",internalType:"bool"},{name:"enabled",type:"bool",internalType:"bool"},{name:"index",type:"uint8",internalType:"uint8"}]}],stateMutability:"view"},{type:"function",name:"getTransceivers",inputs:[],outputs:[{name:"result",type:"address[]",internalType:"address[]"}],stateMutability:"pure"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"payable"},{type:"function",name:"isMessageApproved",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isMessageExecuted",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"messageAttestations",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"count",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"mode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"enum IManagerBase.Mode"}],stateMutability:"view"},{type:"function",name:"nextMessageSequence",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"pause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"},{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"rateLimitDuration",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"removeTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setInboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"},{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setOutboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"},{name:"decimals",type:"uint8",internalType:"uint8"},{name:"inboundLimit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setThreshold",inputs:[{name:"threshold",type:"uint8",internalType:"uint8"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"token",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"tokenDecimals",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"transceiverAttestedToMessage",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"index",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"shouldQueue",type:"bool",internalType:"bool"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"unpause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"InboundTransferQueued",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"MessageAlreadyExecuted",inputs:[{name:"sourceNttManager",type:"bytes32",indexed:!0,internalType:"bytes32"},{name:"msgHash",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"MessageAttestedTo",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"index",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OutboundTransferCancelled",inputs:[{name:"sequence",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipient",type:"address",indexed:!1,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OutboundTransferQueued",inputs:[{name:"queueSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"OutboundTransferRateLimited",inputs:[{name:"sender",type:"address",indexed:!0,internalType:"address"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"currentCapacity",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"PeerUpdated",inputs:[{name:"chainId_",type:"uint16",indexed:!0,internalType:"uint16"},{name:"oldPeerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"oldPeerDecimals",type:"uint8",indexed:!1,internalType:"uint8"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"peerDecimals",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"ThresholdChanged",inputs:[{name:"oldThreshold",type:"uint8",indexed:!1,internalType:"uint8"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverAdded",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"transceiversNum",type:"uint256",indexed:!1,internalType:"uint256"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverRemoved",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransferRedeemed",inputs:[{name:"digest",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"TransferSent",inputs:[{name:"recipient",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"fee",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"msgSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"BurnAmountDifferentThanBalanceDiff",inputs:[{name:"burnAmount",type:"uint256",internalType:"uint256"},{name:"balanceDiff",type:"uint256",internalType:"uint256"}]},{type:"error",name:"CallerNotTransceiver",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CancellerNotSender",inputs:[{name:"canceller",type:"address",internalType:"address"},{name:"sender",type:"address",internalType:"address"}]},{type:"error",name:"CapacityCannotExceedLimit",inputs:[{name:"newCurrentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"newLimit",type:"uint72",internalType:"TrimmedAmount"}]},{type:"error",name:"DeliveryPaymentTooLow",inputs:[{name:"requiredPayment",type:"uint256",internalType:"uint256"},{name:"providedPayment",type:"uint256",internalType:"uint256"}]},{type:"error",name:"DisabledTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"InboundQueuedTransferNotFound",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InboundQueuedTransferStillQueued",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidMode",inputs:[{name:"mode",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidPeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidPeerChainIdZero",inputs:[]},{type:"error",name:"InvalidPeerDecimals",inputs:[]},{type:"error",name:"InvalidPeerSameChainId",inputs:[]},{type:"error",name:"InvalidPeerZeroAddress",inputs:[]},{type:"error",name:"InvalidRecipient",inputs:[]},{type:"error",name:"InvalidRefundAddress",inputs:[]},{type:"error",name:"InvalidTargetChain",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"thisChain",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidTransceiverZeroAddress",inputs:[]},{type:"error",name:"MessageNotApproved",inputs:[{name:"msgHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NoEnabledTransceivers",inputs:[]},{type:"error",name:"NonRegisteredTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotEnoughCapacity",inputs:[{name:"currentCapacity",type:"uint256",internalType:"uint256"},{name:"amount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"NumberOfDecimalsNotEqual",inputs:[{name:"decimals",type:"uint8",internalType:"uint8"},{name:"decimalsOther",type:"uint8",internalType:"uint8"}]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OutboundQueuedTransferNotFound",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}]},{type:"error",name:"OutboundQueuedTransferStillQueued",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerNotRegistered",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RefundFailed",inputs:[{name:"refundAmount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"RetrievedIncorrectRegisteredTransceivers",inputs:[{name:"retrieved",type:"uint256",internalType:"uint256"},{name:"registered",type:"uint256",internalType:"uint256"}]},{type:"error",name:"StaticcallFailed",inputs:[]},{type:"error",name:"ThresholdTooHigh",inputs:[{name:"threshold",type:"uint256",internalType:"uint256"},{name:"transceivers",type:"uint256",internalType:"uint256"}]},{type:"error",name:"TooManyTransceivers",inputs:[]},{type:"error",name:"TransceiverAlreadyAttestedToMessage",inputs:[{name:"nttManagerMessageHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"TransceiverAlreadyEnabled",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"TransferAmountHasDust",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"dust",type:"uint256",internalType:"uint256"}]},{type:"error",name:"UndefinedRateLimiting",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"expectedOwner",type:"address",internalType:"address"},{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"UnexpectedMsgValue",inputs:[]},{type:"error",name:"ZeroAmount",inputs:[]},{type:"error",name:"ZeroThreshold",inputs:[]}],T1="0x61016034620005cb57601f620065b138819003918201601f19168301916001600160401b038311848410176200057e5780849260a094604052833981010312620005cb578051906001600160a01b0382168203620005cb576020810151916002831015620005cb5760408201519161ffff83168303620005cb576060810151906001600160401b03821690818303620005cb576080015180159182158203620005cb5715809281620005c2575b508215620005a6575b505062000594576080527f8561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d8954620001147e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e15460ff8360081c1614620005d0565b7ffd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f5460005b60ff8360081c168110620003f157505060005b60ff8260081c1681106200035d5750604060ff6200016d92161115620005d0565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c166200034b576002600160401b03196001600160401b03821601620002ff575b50503060a05260c0526101009182526101209081526101404681523360e05260405191615f6393846200064e85396080518481816114d401528181611b1401528181611fb1015281816129e20152818161342d015281816139b5015281816140310152818161554f0152818161566201528181615722015281816158410152615909015260a05184614f95015260c0518481816102900152818161051401528181610561015281816128ce0152818161382501528181613eaf0152818161476d01528181614bac0152614c5c015260e05184611c590152518381816104ab0152818161202a015281816121560152818161291c015281816138a701528181613f2c0152614b3401525182818161137c01528181611e500152818161298501526133b701525181818161044901528181613aa1015281816140f90152818161463e0152614ae60152f35b6001600160401b0319166001600160401b039081179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880620001b6565b60405163f92ee8a960e01b8152600490fd5b60018101808211620003db575b60ff8360081c1681106200038a57506200038490620005ee565b6200014c565b620003d590620003cf6200039e84620005fe565b9054620003ab84620005fe565b9054600391821b1c6001600160a01b039081169390911b9190911c161415620005d0565b620005ee565b6200036a565b634e487b7160e01b600052601160045260246000fd5b620003fc81620005fe565b9054600382901b81901c6001600160a01b031660009081527f49bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f602052604090819020905192906001600160401b0360608501908111908511176200057e5760608401604052546200049e60ff821615801592838752602087019360ff808360081c1615928315875260101c16908160408a01529262000561575b5050620005d0565b60018060401b03600160ff6040870151161b87161615159051151592600092835b60ff8a60081c1681106200050f575b5050508262000509959492620004ee620003cf95620004f79414620005d0565b151514620005d0565b60ff60408188169201511610620005d0565b62000139565b6200051a81620005fe565b9054600391821b1c6001600160a01b039081169184901b85901c16146200054c576200054690620005ee565b620004bf565b5060019350849150829050620004ee620004ce565b9091508162000574575b50388062000496565b905015386200056b565b634e487b7160e01b600052604160045260246000fd5b60405163e543ef0560e01b8152600490fd5b15915081620005b9575b503880620000b5565b905038620005b0565b925038620000ac565b600080fd5b15620005d857565b634e487b7160e01b600052600160045260246000fd5b6000198114620003db5760010190565b7e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e18054821015620006375760005260206000200190600090565b634e487b7160e01b600052603260045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c80630271725014612c5f578063036de8af14612bd45780630677df5414612bb55780630900f0101461274e578063186ce612146126f957806319017175146126c35780631f97c9a8146124d1578063203e4a9b146121ce57806323d75e311461219a578063295a521214612140578063396c16b7146121045780633b97e856146120e95780633f4ba83a146120755780634b4fd03b14612017578063689f90c314611fd557806374aa7bfc14611f915780637c91863414611e025780638129fc1c14611bcd5780638413bcba14611ab15780638456cb5914611a3457806386e11ffa14611a0f57806389c619dd146119af5780638da5cb5b146119795780638e3ba8c9146119425780638fd3ab80146118035780639057412d14611686578063961b94d01461162857806397c35146146113a05780639a8a0592146113615780639d782454146111265780639f86029c14610e105780639fd0506d14610dda578063b150fc5514610c2d578063b187bd2614610bff578063b293f97f14610b69578063b4d591bb14610aa8578063c0b07bde14610a62578063c128d170146109e6578063d788c1471461095b578063da4856a114610928578063e5a986031461087c578063e75235b81461084e578063f2fde38b14610709578063f5cfec18146106e6578063f7514fbc146102bf578063fc0c546a1461027a5763fd96063c1461022257600080fd5b346102775760203660031901126102775760606102406004356154ad565b6040805182516001600160481b031681526020808401516001600160401b031690820152918101516001600160a01b031690820152f35b80fd5b50346102775780600319360112610277576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5034610277576020366003190112610277576004356001600160401b03811681036106e2576102ec615cfd565b6002600080516020615dce83398151915254146106d0576001600160401b038116600052600080516020615eae83398151915260205260406000206040519061033482612d2f565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a083015260405190818560048301549261039b84613755565b80845293600181169081156106ae575060011461066a575b506103c092500382612db6565b60c08201526001600160401b03606082015116156106495760a08101516001600160a01b031633810361061c5750606061048c60407ff80e572ae1b63e2449629b6c7d783add85c36473926f216077f17ee002bcfd07936001600160401b038616600052600080516020615eae833981519152602052610442826000206137a6565b015161046d7f0000000000000000000000000000000000000000000000000000000000000000615a4d565b610475614c36565b906001600160401b0360ff82169160081c16615b6c565b926001600160401b0360405191168152336020820152836040820152a17f000000000000000000000000000000000000000000000000000000000000000060028110156106065780610556575060405163a9059cbb60e01b602082015233602482015260448101919091526105419061051281606481015b03601f198101835282612db6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316614438565b6001600080516020615ece8339815191525580f35b600181036105ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156105e5576040516340c10f1960e01b815233600482015260248101929092526000908290604490829084905af180156105d9576105ca575b50610541565b6105d390612d1c565b386105c4565b6040513d6000823e3d90fd5b600080fd5b6040516366001a8960e01b815260ff9091166004820152602490fd5b634e487b7160e01b600052602160045260246000fd5b60405163ceb40a8560e01b81523360048201526001600160a01b03919091166024820152604490fd5b0390fd5b604051635feafa3160e11b81526001600160401b0383166004820152602490fd5b60040187525060208620909186915b8183106106925750509060206103c092820101386103b3565b6020919350806001915483858801015201910190918392610679565b9050602092506103c094915060ff191682840152151560051b820101386103b3565b6040516309e3d0f360e11b8152600490fd5b5080fd5b50346102775780600319360112610277576020610701615496565b604051908152f35b5034610277576020366003190112610277576001600160a01b03600435818116908181036108195761074a9061073d615cc4565b610745615cc4565b615c50565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed97891825460ff600080516020615e4e8339815191525416808203610830575050908391825b845481101561082c578460005281817f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd1015416803b1561082857848091602460405180948193632c7b84dd60e11b83528960048401525af190811561081d578591610805575b505061080090612ff6565b61078f565b61080e90612d1c565b6108195783386107f5565b8380fd5b6040513d87823e3d90fd5b8480fd5b8380f35b604492506040519163d2a13a2960e01b835260048301526024820152fd5b5034610277578060031936011261027757602060ff600080516020615d4e8339815191525416604051908152f35b50346102775760203660031901126102775760043560ff8116908181036105e5576108a5615cc4565b8115610916577f2a855b929b9a53c6fb5b5ed248b27e502b709c088e036a5aa17620c8fc5085a99161091060ff92600080516020615d4e833981519152805493851985161790556108f4613275565b6040805160ff9490951684168552921660208401528291820190565b0390a180f35b60405163831761d760e01b8152600490fd5b50346102775761093736612e39565b906002600080516020615dce83398151915254146106d0576109589261333e565b80f35b50346102775760203660031901126102775761ffff610978612cb2565b610980614d41565b5016600052600080516020615e6e8339815191526020526109e26109a76040600020615071565b6040519182918291909160406001600160401b038160608401956001600160481b038082511686526020820151166020860152015116910152565b0390f35b50346102775760203660031901126102775761ffff90610a04612cb2565b906020604051610a1381612d65565b828152015216600052600080516020615d2e83398151915260205260408060002060ff8251610a4181612d65565b60208260018554958685520154169101908152835192835251166020820152f35b50346102775780600319360112610277576109e2604051610a8281612d65565b60058152640312e312e360dc1b6020820152604051918291602083526020830190612cf7565b50346102775780600319360112610277576040518091600080516020615e0e83398151915290815480845260208094019081938352600080516020615d6e83398151915290835b818110610b4c5750505084610b05910385612db6565b60405193838594850191818652518092526040850193925b828110610b2c57505050500390f35b83516001600160a01b031685528695509381019392810192600101610b1d565b82546001600160a01b031684529286019260019283019201610aef565b5060c036600319011261027757610b7e612cc3565b906084359182151583036106e25760a4356001600160401b03928382116102775750610bae903690600401612df2565b610bb6615cfd565b6002600080516020615dce83398151915254146106d057602093610be4926064359060443590600435613e93565b6001600080516020615ece8339815191525560405191168152f35b503461027757806003193601126102775760206002600080516020615dce8339815191525414604051908152f35b503461027757806003193601126102775760405180600080516020615e0e83398151915280548084526020809401918552600080516020615d6e83398151915290855b818110610dbd5750505081610c86910382612db6565b8051610c9181612eba565b91610c9f6040519384612db6565b818352601f19610cae83612eba565b01855b818110610da1575050845b828110610d1d575050506040519180830190808452825180925280604085019301945b828110610cec5784840385f35b85518051151585528083015115158584015260409081015160ff169085015294810194606090930192600101610cdf565b929492610d99906001600160a01b03610d368285613005565b5116600052600080516020615e8e8339815191528652604060002060405190610d5e82612d4a565b5460ff9081811615158352818160081c1615158984015260101c166040820152610d888289613005565b52610d938188613005565b50612ff6565b949294610cbc565b8590610dae979597614d41565b82828a01015201959395610cb1565b82546001600160a01b031684529285019260019283019201610c70565b5034610277578060031936011261027757600080516020615eee833981519152546040516001600160a01b039091168152602090f35b5034610277576020806003193601126106e2576001600160a01b0390600435828116919082810361082857610e43615cc4565b82156111145782600052600080516020615e8e83398151915280835260ff918260406000205416156110fb57846000528184528260406000205460081c16156110e25784600052818452604060002061ff001990818154169055600080516020615e4e833981519152928354858160081c169283156110ce5761ff0060001980950160081b169116178455600080516020615dee8339815191528054918860005287526001600160401b03600192610f1082858a60406000205460101c161b198316169282168310614d24565b6001600160401b0319161790558897600080516020615e0e8339815191528054938b5b858110610fc8575b505050505050918091610f836040969594610f767f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f99614d24565b610f7e614d60565b614e4b565b5460081c16600080516020615d4e8339815191529081548381168210610fba575b50505416908351928352820152a1610958613275565b60ff19161781553880610fa4565b838b610fd383613244565b929054600393841b1c1614610ff15750610fec90612ff6565b610f33565b9590918093959798999a9b9c5081019081116110ba57906110258461101861104494613244565b905490891b1c1691613244565b90919082549060031b9160018060a01b03809116831b921b1916179055565b825480156110a657946040999794610f83948a9894610f76947f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f9e9c99019261108c84613244565b81939154921b1b1916905555998496979899839650610f3b565b634e487b7160e01b8c52603160045260248cfd5b634e487b7160e01b8d52601160045260248dfd5b634e487b7160e01b8b52601160045260248bfd5b6040516307d86e9160e21b815260048101869052602490fd5b604051630d583f4760e41b815260048101869052602490fd5b604051632f44bd7760e01b8152600490fd5b50346102775761113536612e39565b9033600052600080516020615e8e83398151915260209080825260ff60406000205460081c161561134957600080516020615dce8339815191529160028354146106d05761ffff861680600052600080516020615d2e8339815191528252846040600020540361132b575060405163b3f07bbd60e01b8152918183806111bf898b60048401613314565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156113205788936112f1575b503360005280825261120360ff60406000205460101c168461320e565b6112d85760606112b793927f35a2101eaac94b493e0dfca061f9a7f087913fde8678e7cde0aca9897edba0e592336000528082528a6001600160401b03610100600160481b03604082600160ff836000205460101c161b1693898152600080516020615d8e833981519152875220928354928360081c161760081b1690610100600160481b03191617905533600052815260ff60406000205460101c166040519185835233908301526040820152a16131a1565b6112bf578480f35b546002146106d0576112d09261333e565b388080808480f35b604051631089c4a160e11b815260048101849052602490fd5b9092508181813d8311611319575b6113098183612db6565b810103126105e5575191386111e6565b503d6112ff565b6040513d8a823e3d90fd5b6044908560405191635788c0fd60e11b835260048301526024820152fd5b60405163a0ae911d60e01b8152336004820152602490fd5b5034610277578060031936011261027757602060405161ffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b506020366003190112610277576001600160401b0360043516908160043503610277576113cb615cfd565b6002600080516020615dce83398151915254146106d05781600052600080516020615eae8339815191526020526040600020916040519261140b84612d2f565b805484526001810154602085015261ffff60028201546001600160481b03811660408701526001600160401b038160481c16606087015260881c16608085015260018060a01b0360038201541660a08501526040518381949060048401549361147385613755565b808552946001811690811561160457506001146115bf575b505061149992500383612db6565b60c083019182526001600160401b03606084015116156115a7576114ca6001600160401b0360608501511642613194565b6001600160401b037f0000000000000000000000000000000000000000000000000000000000000000161161157c579161155991602093600052600080516020615eae833981519152845261152260406000206137a6565b6001600160481b036040830151169161ffff608082015116815190868301519260a0600180821b0391015116935194600435614632565b6001600080516020615ece833981519152556001600160401b0360405191168152f35b6044906001600160401b036060850151166040519163c06cf05f60e01b835260048301526024820152fd5b60249060405190635feafa3160e11b82526004820152fd5b60049193949250018252602082205b8183106115e857505090602061149992820101388061148b565b60209193508060019154838589010152019101909184926115ce565b9150506020925061149994915060ff191682840152151560051b820101388061148b565b5060603660031901126102775761163d612cc3565b604435611648615cfd565b6002600080516020615dce83398151915254146106d05760209181611559926040519261167484612d65565b60018452853681860137600435613808565b5034610277576040366003190112610277576116a0612cb2565b6024356001600160401b0381116117ff576116bf903690600401612df2565b91604051918290600080516020615e0e833981519152828154918287526020809701908652600080516020615d6e83398151915292865b888282106117e05750505061170d92500383612db6565b826117378351966040519788928392635b10743960e11b8452604060048501526044840190612cf7565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156117d55783949561177094926117b1575b50613039565b604051926040840160408552835180915285606086019401915b81811061179d5750505082938301520390f35b82518552938601939186019160010161178a565b6117ce9192503d8087833e6117c68183612db6565b810190612f24565b903861176a565b6040513d85823e3d90fd5b85546001600160a01b03168452600195860195889550930192016116f6565b8280fd5b503461027757806003193601126102775761181c614f92565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b0380821690600182019181831161192c5760ff8460401c1690811561191f575b5061190d57600160401b911680926001600160481b03191617179081835560ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e5416156118fb577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2926020926118db613275565b6118e3614d60565b68ff000000000000000019169055604051908152a180f35b604051632866815360e11b8152600490fd5b60405163f92ee8a960e01b8152600490fd5b9050818316111538611866565b634e487b7160e01b600052601160045260246000fd5b50346102775760403660031901126102775760243560ff811681036105e55761196f60209160043561320e565b6040519015158152f35b5034610277578060031936011261027757600080516020615dae833981519152546040516001600160a01b039091168152602090f35b503461027757602036600319011261027757611a046001600160401b036020926040600080516020615dee83398151915254916004358152600080516020615d8e8339815191528652205460081c1616615a8e565b60ff60405191168152f35b5034610277578060031936011261027757611a28614d41565b506109e26109a7615029565b5034610277578060031936011261027757600080516020615dae83398151915254611a67906001600160a01b0316614fd6565b600080516020615dce83398151915260028154146106d057600290557f0e2fb031ee032dc02d8011dc50b816eb450cf856abd8261680dac74f72165bd2602060405160018152a180f35b503461027757602036600319011261027757600435611ace615cfd565b6002600080516020615dce83398151915254146106d057611aee816154ad565b602081016001600160401b03908181511615611bb457611b118282511642613194565b827f00000000000000000000000000000000000000000000000000000000000000001611611b92578385527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b8602052604080862086815560010186905583015183518691610541916001600160481b0316906001600160a01b031687614adb565b516040516301cb739d60e71b8152600481019490945216602483015250604490fd5b604051630301bcaf60e61b815260048101859052602490fd5b508060031936011261027757611be1614f92565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c1615906001600160401b03811680159081611dfa575b6001149081611df0575b159081611de7575b5061190d5767ffffffffffffffff198116600117835581611dc8575b50611c57615c0f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381163303611d9f575034611d8d57611c96615c0f565b611c9e615c0f565b611ca6615c0f565b6001600080516020615dce83398151915255600080516020615eee83398151915280546001600160a01b03191633179055611cdf615c0f565b611ce7615c0f565b611cf033615c50565b611cf8615c0f565b611d00615c0f565b6001600080516020615ece83398151915255611d37610100600160481b0360ff611d30611d2b614c36565b615b35565b16176150d1565b611d3f613275565b611d47614d60565b611d4f575080f35b68ff00000000000000001981541690557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b60405163bd28e88960e01b8152600490fd5b604051636345072160e11b81526001600160a01b03919091166004820152336024820152604490fd5b68ffffffffffffffffff19166801000000000000000117825538611c4e565b90501538611c32565b303b159150611c2a565b839150611c20565b503461027757608036600319011261027757611e1c612cb2565b60243560443560ff81168091036105e557611e35615cc4565b61ffff809316928315611f7f578215611f6d578115611f5b577f0000000000000000000000000000000000000000000000000000000000000000168314611f49577f1456404e7f41f35c3daac941bb50bad417a66275c3040061b4287d787719599d9160809184600052600080516020615d2e833981519152918260205260ff604060002081600160405192611eca84612d65565b805484520154169460208201958652886000526020526001604060002084815501848319825416179055611f2c611f0b611f02614c36565b80606435615bc7565b89600052600080516020615e6e8339815191526020526040600020906152cf565b51935116604051938452602084015260408301526060820152a280f35b60405163101b8f9560e11b8152600490fd5b60405163ade64f0b60e01b8152600490fd5b60405163f839a0cb60e01b8152600490fd5b60405163100b0f2760e11b8152600490fd5b503461027757806003193601126102775760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b5034610277578060031936011261027757602060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb54166040519015158152f35b50346102775780600319360112610277577f00000000000000000000000000000000000000000000000000000000000000009060028210156120615760208260ff60405191168152f35b634e487b7160e01b81526021600452602490fd5b503461027757806003193601126102775761208e615cc4565b600080516020615dce83398151915260028154036120d757600190557fe11c2112add17fb763d3bd59f63b10429c3e11373da4fb8ef6725107a2fdc4b06020604051838152a180f35b604051637e38d1d360e11b8152600490fd5b50346102775780600319360112610277576020611a04614c36565b50346102775760203660031901126102775760ff60406020926004358152600080516020615d8e83398151915284522054166040519015158152f35b50346102775780600319360112610277576040517f0000000000000000000000000000000000000000000000000000000000000000600281101561218657602092508152f35b634e487b7160e01b83526021600452602483fd5b503461027757806003193601126102775760206001600160401b03600080516020615e2e8339815191525416604051908152f35b5034610277576020806003193601126106e2576004356001600160a01b03811691828203610819576121fe615cc4565b82156111145782600052600080516020615e8e8339815191529182825260ff9081604060002054166000146123a75784600052838352604060002061010061ff00198254161790555b600080516020615e0e83398151915290815491600160401b831015612391578261102591600161227995019055613244565b600080516020615e4e83398151915292835461ff0061229c848360081c16614d13565b60081b169061ff00191617809455600080516020615dee83398151915280546001600160401b0390818116918860005284875260018660406000205460101c161b1682179182146123785767ffffffffffffffff19161790557ff05962b5774c658e85ed80c91a75af9d66d2af2253dda480f90bce78aff5eda594606094909390929091612328614d60565b84600052825280600080516020615d4e833981519152805482811615612369575b5054169260405194855260081c16908301526040820152a1610958613275565b60ff1916600117815538612349565b604051638d68f84d60e01b815260048101899052602490fd5b634e487b7160e01b600052604160045260246000fd5b600080516020615e4e8339815191528281541660408110156124bf57604051906123d082612d4a565b6001825285820190600182526040830190815288600052878752604060002092511515918662ff000061ff0086549351151560081b16935160101b1693169062ffffff19161717179055805483612428818316614d13565b169060ff19161790557f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed978805490600160401b82101561239157600182018082558210156124a9576000527f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd10180546001600160a01b03191686179055612247565b634e487b7160e01b600052603260045260246000fd5b60405163891684c360e01b8152600490fd5b5034610277576020366003190112610277576004356001600160401b0381168091036106e257606060c060405161250781612d2f565b84815284602082015284604082015284838201528460808201528460a08201520152600052600080516020615eae83398151915260205260406000206040519061255082612d2f565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a0830152604051838194906004840154936125b885613755565b808552946001811690811561269f575060011461265a575b50506125de92500383612db6565b60c081019182526109e26040519283926020845280516020850152602081015160408501526001600160481b0360408201511660608501526001600160401b03606082015116608085015261ffff60808201511660a085015260a0600180821b039101511660c08401525160e080840152610100830190612cf7565b60049193949250018252602082205b8183106126835750509060206125de9282010138806125d0565b6020919350806001915483858901015201910190918492612669565b915050602092506125de94915060ff191682840152151560051b82010138806125d0565b5034610277576020366003190112610277576126dd615cc4565b6109586126f46126eb614c36565b80600435615bc7565b6150d1565b503461027757604036600319011261027757610958612716612cc3565b61271e615cc4565b61ffff61272c6126eb614c36565b9116600052600080516020615e6e8339815191526020526040600020906152cf565b5034610277576020806003193601126106e2576001600160a01b03600435818116908181036108285761277f615cc4565b612787614f92565b3b15612b5a577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e9182549161281460ff841615614d24565b60ff199283166001178455303b156108285760405163011fa75760e71b8152858160048183305af18015612b0f57612b47575b5060405163689f90c360e01b81528281600481305afa908115612b0f578691612b1a575b50156128a3575b50507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b604051637e062a3560e11b81528281600481305afa908115612b0f578691612ad1575b50816128f6927f000000000000000000000000000000000000000000000000000000000000000016911614614d24565b6040516314ad290960e11b81528181600481305afa90811561081d578591612a9b575b507f0000000000000000000000000000000000000000000000000000000000000000906002821015612a87576002811015612a87576129589114614d24565b604051634d4502c960e11b81528181600481305afa801561081d578590612a51575b6129ad915061ffff807f000000000000000000000000000000000000000000000000000000000000000016911614614d24565b604051631d2a9eff60e21b8152908082600481305afa90811561081d578591612a11575b50612a0a91506001600160401b03807f000000000000000000000000000000000000000000000000000000000000000016911614614d24565b3880612872565b905081813d8311612a4a575b612a278183612db6565b8101031261081957516001600160401b038116810361081957612a0a90386129d1565b503d612a1d565b508181813d8311612a80575b612a678183612db6565b8101031261082857612a7b6129ad9161332f565b61297a565b503d612a5d565b634e487b7160e01b86526021600452602486fd5b90508181813d8311612aca575b612ab28183612db6565b81010312610828575160028110156108285738612919565b503d612aa8565b90508281813d8311612b08575b612ae88183612db6565b81010312612b045751908082168203612b0457906128f66128c6565b8580fd5b503d612ade565b6040513d88823e3d90fd5b612b3a9150833d8511612b40575b612b328183612db6565b810190614420565b3861286b565b503d612b28565b612b5390959195612d1c565b9338612847565b60405162461bcd60e51b815260048101849052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b503461027757602036600319011261027757602061196f6004356131a1565b5034610277576020366003190112610277576004356001600160a01b03818116918290036117ff57612c1681600080516020615dae8339815191525416614fd6565b600080516020615eee83398151915280546001600160a01b031981168417909155167f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b50346102775760203660031901126102775761070161046d612cad604060209461ffff612c8a612cb2565b612c92614d41565b50168152600080516020615e6e833981519152865220615071565b615543565b6004359061ffff821682036105e557565b6024359061ffff821682036105e557565b60005b838110612ce75750506000910152565b8181015183820152602001612cd7565b90602091612d1081518092818552858086019101612cd4565b601f01601f1916010190565b6001600160401b03811161239157604052565b60e081019081106001600160401b0382111761239157604052565b606081019081106001600160401b0382111761239157604052565b604081019081106001600160401b0382111761239157604052565b608081019081106001600160401b0382111761239157604052565b60a081019081106001600160401b0382111761239157604052565b90601f801991011681019081106001600160401b0382111761239157604052565b6001600160401b03811161239157601f01601f191660200190565b81601f820112156105e557803590612e0982612dd7565b92612e176040519485612db6565b828452602083830101116105e557816000926020809301838601378301015290565b90600319906060828401126105e55760043561ffff811681036105e5579260243592604435916001600160401b03918284116105e55760609084830301126105e55760405192612e8884612d4a565b806004013584526024810135602085015260448101359283116105e557612eb29201600401612df2565b604082015290565b6001600160401b0381116123915760051b60200190565b519060ff821682036105e557565b81601f820112156105e5578051612ef581612dd7565b92612f036040519485612db6565b818452602082840101116105e557612f219160208085019101612cd4565b90565b9060209081838203126105e55782516001600160401b03938482116105e557019080601f830112156105e5578151612f5b81612eba565b94604090612f6b82519788612db6565b828752858088019360051b860101948486116105e557868101935b868510612f9857505050505050505090565b84518381116105e55782019084601f1983890301126105e557845190612fbd82612d65565b612fc88a8401612ed1565b825285830151918583116105e557612fe7898c80969581960101612edf565b83820152815201940193612f86565b600019811461192c5760010190565b80518210156124a95760209160051b010190565b9060406020612f219360ff81511684520151918160208201520190612cf7565b90929180519161304883612eba565b9260409161305883519586612db6565b818552601f1961306783612eba565b01602090368288013760009788955b84871061308857505050505050509190565b909192939495988685613101868d6130a760018060a01b039188613005565b511680600052600080516020615e8e83398151915282526130d260ff866000205460101c1689613005565b51908551808095819463b5634c7360e01b835261ffff60049916898401526024998a8401526044830190613019565b03915afa90811561318957908d91600091613157575b5061312381928d613005565b5283018093116131445750506131399099612ff6565b959493929190613076565b601190634e487b7160e01b600052526000fd5b91508782813d8311613182575b61316e8183612db6565b810103126102775750518c90613123613117565b503d613164565b8a513d6000823e3d90fd5b9190820391821161192c57565b6001600160401b039060ff6131fa81600080516020615d4e8339815191525416938493600080516020615dee8339815191525490600052600080516020615d8e83398151915260205260406000205460081c1616615a8e565b1610159081613207575090565b9050151590565b906001600160401b0391600052600080516020615d8e833981519152602052600160ff60406000205460081c92161b1616151590565b600080516020615e0e83398151915280548210156124a957600052600080516020615d6e8339815191520190600090565b60ff600080516020615d4e833981519152541660405161329481612d65565b60ff600080516020615e4e83398151915254818116835260081c168060208301528083116132cf57505160ff166132c85750565b1561091657565b82604491604051916313c3d1b160e01b835260048301526024820152fd5b9060606040612f219380518452602081015160208501520151918160408201520190612cf7565b60409061ffff612f21949316815281602082015201906132ed565b519061ffff821682036105e557565b91908161334b9184613635565b9190916136305760408091015191815192635399ded560e11b8452608084806133806020948560048401526024830190612cf7565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af4938415613625576000946135b0575b5061ffff9283606086015116847f0000000000000000000000000000000000000000000000000000000000000000168082036135955750506133e8614c36565b816134118751928061340c816001600160401b03968760ff82169160081c16615b6c565b615bc7565b960151908160a01c61357e576001600160a01b039182169560007f0000000000000000000000000000000000000000000000000000000000000000831615613577575061345c614d41565b508816600052600080516020615e6e8339815191528452613482612cad84600020615071565b61348c8882615b00565b81808960081c169160081c16105b6134bf57505050506134af6134bd9484615836565b6134b883615716565b614adb565b565b7f7f63c9251d82a933210c2b6d0b0f116252c3c116788120e64e8e8215df6f316297509561355b83959694976001939451926134fa84612d4a565b6001600160481b038091168452898401908242168252888501978852896000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b88b52886000209451166001600160481b0319855416178455511682615a25565b019151166001600160601b0360a01b82541617905551908152a1565b905061349a565b50602491519063033b960d60e41b82526004820152fd5b6044925191631ee5902560e11b835260048301526024820152fd5b6080949194813d821161361d575b816135cb60809383612db6565b810103126106e2578351916135df83612d80565b8151906001600160481b038216820361027757508252848101518583015283810151848301526136119060600161332f565b606082015292386133a8565b3d91506135be565b83513d6000823e3d90fd5b505050565b60405163b3f07bbd60e01b81529193926020918391829161365a919060048401613314565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105d9576000916136eb575b5061368c816131a1565b156136d35761369a8161371c565b92836136a857509150600090565b7f4069dff8c9df7e38d2867c0910bd96fd61787695e5380281148c04932d02bef2600080a360009190565b60249060405190630451c4fb60e41b82526004820152fd5b906020823d8211613714575b8161370460209383612db6565b8101031261027757505138613682565b3d91506136f7565b600052600080516020615d8e8339815191526020526040600020805460ff811661374e5760ff19166001179055600090565b5050600190565b90600182811c92168015613785575b602083101461376f57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613764565b81811061379a575050565b6000815560010161378f565b6004600091828155826001820155826002820155826003820155016137cb8154613755565b806137d557505050565b82601f82116001146137e657505055565b9091808252613804601f60208420940160051c84016001850161378f565b5555565b9194939290946000958315613e81578115613e6f578215613e5d577f000000000000000000000000000000000000000000000000000000000000000061384e3082614cb6565b9061389160018060a01b03821696604051906323b872dd60e01b602083015233602483015230604483015260648201526064815261388b81612d9b565b87614438565b6138a48261389f3084614cb6565b613194565b957f00000000000000000000000000000000000000000000000000000000000000006002811015613e49579060018b9214613dc2575b5050505061ffff8116600052600080516020615d2e83398151915260205260ff600160406000200154168015611f5b5761391d613915614c36565b918287615bc7565b906001600160401b038260081c1661393a60ff8416928383615b6c565b808803613d9b575061395c61396191613954611d2b614c36565b938491615b6c565b6155ee565b98600080516020615e2e83398151915254966001600160401b0380891614613d875767ffffffffffffffff1988166001600160401b03898116600101811691909117600080516020615e2e833981519152557f00000000000000000000000000000000000000000000000000000000000000001615613d81576139e2614d41565b506139ee612cad615029565b613a0b8c610100600160481b0360ff87169160081b161782615b00565b6001600160401b03808d610100600160481b0360ff88169160081b161760081c169160081c16105b613d5b578180613d53575b613a8757505082612f219899610100600160481b0360ff84613a6b82613a779716848660081b1617615656565b169160081b16176158fe565b6001600160401b03339516614632565b61ffff95979896919a506001600160481b03939250613ac57f0000000000000000000000000000000000000000000000000000000000000000615a4d565b613acd615496565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a260405196613b1a88612d2f565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615eae83398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b0319825416178155613bb56001600160401b0360608701511682615a25565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613d3f57613c168354613755565b601f8111613d04575b50602090601f8311600114613c9857906001600160401b03959683613c8d575b50508160011b916000199060031b1c19161790555b7f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613c89346145db565b1690565b015190503880613c3f565b95601f19831684885260208820975b818110613cec5750916001600160401b03969791846001959410613cd3575b505050811b019055613c54565b015160001960f88460031b161c19169055388080613cc6565b83830151895560019098019760209384019301613ca7565b613d2f9084835260208320601f850160051c81019160208610613d35575b601f0160051c019061378f565b38613c1f565b9091508190613d22565b634e487b7160e01b81526041600452602490fd5b506000613a3e565b604490613d66615496565b90604051916326fb55dd60e01b835260048301526024820152fd5b81613a33565b634e487b7160e01b82526011600452602482fd5b87613da860449282613194565b604051916338f831a560e11b835260048301526024820152fd5b803b156106e2578190602460405180948193630852cd8d60e31b83528c60048401525af18015613e3e57613e29575b50613dfd903090614cb6565b808203613e0b5788816138da565b60449250604051916302156a8f60e01b835260048301526024820152fd5b98613e37613dfd929a612d1c565b9890613df1565b6040513d8c823e3d90fd5b634e487b7160e01b8b52602160045260248bfd5b60405163717f139360e11b8152600490fd5b604051634e46966960e11b8152600490fd5b604051631f2a200560e01b8152600490fd5b95949392919060008715613e81578215613e6f578315613e5d577f0000000000000000000000000000000000000000000000000000000000000000613ed83082614cb6565b90613f1b60018060a01b0382169a604051906323b872dd60e01b6020830152336024830152306044830152606482015260648152613f1581612d9b565b8b614438565b613f298261389f3084614cb6565b997f0000000000000000000000000000000000000000000000000000000000000000600281101561440c576001146143a2575b50505061ffff8216600052600080516020615d2e83398151915260205260ff600160406000200154168015611f5b57613f9e613f96614c36565b91828b615bc7565b916001600160401b038360081c16613fbb60ff8516938483615b6c565b808c03614395575061395c613fdd91613fd5611d2b614c36565b948591615b6c565b99600080516020615e2e83398151915254976001600160401b03808a16146143815767ffffffffffffffff1989166001600160401b038a8116600101811691909117600080516020615e2e833981519152557f0000000000000000000000000000000000000000000000000000000000000000161561437b5761405e614d41565b508b6001600160401b0380614074612cad615029565b9260081b610100600160481b031660ff8816176140918185615b00565b60081c169160081c16105b811580614374575b6143695781614361575b506140df57505082612f219899610100600160481b0360ff613a7794169160081b16176140da81615656565b6158fe565b61ffff95979896919a506001600160481b0393925061411d7f0000000000000000000000000000000000000000000000000000000000000000615a4d565b614125615496565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a26040519661417288612d2f565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615eae83398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b031982541617815561420d6001600160401b0360608701511682615a25565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613d3f5761426e8354613755565b601f8111614331575b50602090601f83116001146142df57906001600160401b03959683613c8d5750508160011b916000199060031b1c19161790557f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613c89346145db565b95601f19831684885260208820975b8181106143195750916001600160401b03969791846001959410613cd357505050811b019055613c54565b838301518955600190980197602093840193016142ee565b61435b9084835260208320601f850160051c81019160208610613d3557601f0160051c019061378f565b38614277565b9050386140ae565b604483613d66615496565b50806140a4565b8261409c565b634e487b7160e01b83526011600452602483fd5b8b613da860449282613194565b803b156108195783809160248d6040519485938492630852cd8d60e31b845260048401525af18015614401576143ec575b506143df903090614cb6565b808203613e0b5780613f5c565b926143fa6143df9294612d1c565b92906143d3565b6040513d86823e3d90fd5b634e487b7160e01b85526021600452602485fd5b908160209103126105e5575180151581036105e55790565b604051614496916001600160a01b031661445182612d65565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af1614490614512565b91614542565b805190816144a357505050565b82806144b3938301019101614420565b156144bb5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b3d1561453d573d9061452382612dd7565b916145316040519384612db6565b82523d6000602084013e565b606090565b919290156145a45750815115614556575090565b3b1561455f5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156145b75750805190602001fd5b60405162461bcd60e51b815260206004820152908190610645906024830190612cf7565b600080808084335af16145ec614512565b50156145f55750565b60249060405190630b288dc560e21b82526004820152fd5b906020828203126105e55781516001600160401b0381116105e557612f219201612edf565b959492949391936146627f0000000000000000000000000000000000000000000000000000000000000000615a4d565b6040518081600080516020615e0e83398151915260208154938481520190600052600080516020615d6e8339815191529260005b818110614ab95750506146ab92500382612db6565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed9785491815115614aa7576146fe6000916040519485928392635b10743960e11b8452604060048501526044840190612cf7565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105d957600092614a8a575b50614738818388613039565b95863410614a6b5761474a8734613194565b80614a5c575b506040519061475e82612d80565b6001600160481b0386811683527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166020840190815260408085018d815261ffff8d81166060880190815292516315cfa3cb60e11b81529651909416600487015291516024860152905160448501525116606483015260008260848173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105d95761485d926000928d928492614a40575b506001600160401b036040519361482685612d4a565b16835260018060a01b031660208301526040820152604051809381926311692f3760e31b83526020600484015260248301906132ed565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105d957600091614a1d575b5061ffff8816600052600080516020615d2e833981519152602052604060002054938351938515614a015760005b8581106149265750505050505050927fe54e51e42099622516fa3b48e9733581c9dbdcb771cafb093f745a0532a35982949261ffff926148f760c096610475614c36565b906040519586526020860152604085015260608401521660808201526001600160401b03841660a0820152a190565b6001600160a01b036149388284613005565b5116906149458187613005565b5182600052600080516020615e8e83398151915260205261497160ff60406000205460101c1686613005565b51833b156105e5576149b79361ffff8f936000948f8e906149c98d6040519b8c998a988997634b5b050560e01b895216600488015260a0602488015260a4870190613019565b85810360031901604487015290612cf7565b916064840152608483015203925af19182156105d9576149ed926149f25750612ff6565b6148b3565b6149fb90612d1c565b38610d93565b604051630ebc95af60e21b815261ffff8b166004820152602490fd5b614a3a91503d806000833e614a328183612db6565b81019061460d565b38614885565b614a559192503d8086833e614a328183612db6565b9038614810565b614a65906145db565b38614750565b6040516306a91e3760e51b815260048101889052346024820152604490fd5b614aa09192503d806000833e6117c68183612db6565b903861472c565b6040516334e7b19560e11b8152600490fd5b84546001600160a01b0316835260019485019486945060209093019201614696565b9291614b0a9061046d7f0000000000000000000000000000000000000000000000000000000000000000615a4d565b906000937f504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a918580a27f00000000000000000000000000000000000000000000000000000000000000009360028510156120615784614b9f575060405163a9059cbb60e01b60208201526001600160a01b03909116602482015260448101919091529091506134bd906105128160648101610504565b9193600181036105ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156117ff576040516340c10f1960e01b81526001600160a01b03919091166004820152602481019490945291929181908390604490829084905af1908115614c2a5750614c215750565b6134bd90612d1c565b604051903d90823e3d90fd5b600080604051602081019063313ce56760e01b825260048152614c5881612d65565b51907f00000000000000000000000000000000000000000000000000000000000000005afa614c85614512565b9015614ca4576020818051810103126105e5576020612f219101612ed1565b604051631222cd8360e01b8152600490fd5b6040516370a0823160e01b602082019081526001600160a01b039093166024808301919091528152600092839291614ced81612d4a565b51915afa614cf9614512565b9015614ca4576020818051810103126105e5576020015190565b60ff1660ff811461192c5760010190565b15614d2b57565b634e487b7160e01b600052600160045260246000fd5b60405190614d4e82612d4a565b60006040838281528260208201520152565b600080516020615e4e8339815191525460ff8160081c16614d91600080516020615e0e833981519152548214614d24565b60005b818110614e1f575060005b818110614db8575050604060ff6134bd92161115614d24565b6001810180821161192c575b828110614dda5750614dd590612ff6565b614d9f565b614e1a90614e15614dea84613244565b905490614df684613244565b92909160018060a01b03809354600395861b1c16931b1c161415614d24565b612ff6565b614dc4565b80614e15614e2f614e4693613244565b905460039190911b1c6001600160a01b0316614e4b565b614d94565b6001600160a01b039081166000818152600080516020615e8e8339815191526020526040908190209051929190614e8184612d4a565b5460ff91614ebd838316158015938488526020880197604087808460081c16159384158c5260101c1691019581875292614f78575b5050614d24565b600080516020615dee83398151915254946001600160401b0360019687868651161b1616151590511515916000968791600080516020615e4e8339815191525497878960081c16935b848110614f3a575b5050505050816134bd96614f28869594614f309414614d24565b151514614d24565b5116911611614d24565b8282614f4583613244565b90549060031b1c1614614f6057614f5b90612ff6565b614f06565b50919850849250839150614f289050826134bd614f0e565b90915081614f89575b503880614eb6565b90501538614f81565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614614fc457565b604051633c64f99360e21b8152600490fd5b600080516020615eee83398151915254336001600160a01b03918216141591908261501c575b505061500457565b60405163e2a08e5d60e01b8152336004820152602490fd5b1633141590503880614ffc565b6040519061503682612d4a565b8160406001600160401b03600080516020615f0e833981519152546001600160481b0380821685528160481c16602085015260901c16910152565b9060405161507e81612d4a565b60406001600160401b038294546001600160481b0380821685528160481c16602085015260901c16910152565b90600160481b600160901b0382549160481b1690600160481b600160901b031916179055565b600080516020615f0e8339815191529081546001600160481b03908181166001600160401b036008918184841c168015806152c4575b15615175575050855471ffffffffffffffffff0000000000000000001916604886901b600160481b600160901b03161786555050505b825479ffffffffffffffff000000000000000000ffffffffffffffffff19169116174260901b67ffffffffffffffff60901b16179055565b86615181612cad615029565b92600061518e8383615ade565b1561525a57506151ad92916151a291615b00565b8388861c1690615a75565b610100600160481b039290841b831660ff8616176151cb8184615ade565b1561524c578160ff92826151e26151ef9487615b00565b871c169084871c16615a75565b9116921b16175b6152008482615ade565b61522a57600160481b600160901b039060481b1690600160481b600160901b03191617835561513d565b604051631e74e8fb60e31b815290831660048201528383166024820152604490fd5b5050905060ff9150166151f6565b949395929061526c9061527693615b00565b8389841c16615a75565b9260ff881694838087610100600160481b038098871b16176152988185615b00565b851c1691841c16019283116152b057501b16176151f6565b634e487b7160e01b81526011600452602490fd5b5060ff851615615107565b919080546001600160481b03808216916001600160401b03926008908483831c1680158061548b575b1561535e5750505050846153106134bd9596856150ab565b835467ffffffffffffffff60901b19919092161679ffffffffffffffff000000000000000000ffffffffffffffffff1990911617429190911660901b67ffffffffffffffff60901b16179055565b85908961536d612cad8a615071565b93600061537a8383615ade565b1561543557509161539261539d9260ff979894615b00565b838c881c1690615a75565b610100600160481b039490861b85169116176153b98184615ade565b156154275760ff91816153cf6153dc9386615b00565b861c168784871c16615a75565b9116921b16175b6153ed8682615ade565b61540557946154006134bd9596856150ab565b615310565b604051631e74e8fb60e31b815290821660048201529085166024820152604490fd5b5050905060ff9150166153e3565b949650615450935061544691615b00565b868a851c16615a75565b9160ff891693868086610100600160481b038097861b16176154728185615b00565b841c1691831c1601918683116152b057501b16176153e3565b5060ff8416156152f8565b61549e614d41565b50612f2161046d612cad615029565b6154b5614d41565b506000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b86020526040600020604051906154ef82612d4a565b80546001600160481b038116835260481c6001600160401b03166020830152600101546001600160a01b0316604082015290565b811561552d570490565b634e487b7160e01b600052601260045260246000fd5b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000169182156155d7576155c4828260ff936040610100600160481b03960151164203816155a8602085019889519383875160081c1602615523565b9160081c1601915160081c168082106000146155d057506155ee565b9251169160081b161790565b90506155ee565b506020015160ff16610100600160481b0317919050565b6001600160401b0390818111615602571690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608490fd5b6001600160401b0390817f000000000000000000000000000000000000000000000000000000000000000016156157125761568f614d41565b50600160481b600160901b036156a6612cad615029565b610100600160481b0360ff6156e1600080516020615f0e83398151915296808854976156d28188615b00565b60081c16908560081c16615a75565b92169160081b161760481b16906001600160401b0360901b4260901b1690600160481b600160d01b03191617179055565b5050565b6001600160401b0390817f000000000000000000000000000000000000000000000000000000000000000016156157125761574f614d41565b5061575b612cad615029565b90600160481b600160901b03600080516020615f0e83398151915293845493816001600160401b0360901b4260901b16946157968184615b00565b60081c16828260081c16018281116000146158225750610100600160481b0360ff6157c0846155ee565b92169160081b1617906001600160481b038516906157de8284615b00565b80856001600160401b0360901b1988161760081c16908360081c161060001461581b57505b60481b1691600160481b600160d01b03191617179055565b9050615803565b60ff6157c0610100600160481b03926155ee565b6001600160401b03807f0000000000000000000000000000000000000000000000000000000000000000161561363057610100600160481b0360ff6158f061ffff6134bd96615883614d41565b50169384600052600080516020615e6e833981519152806020526158ad612cad6040600020615071565b60009687526020919091526040909520805467ffffffffffffffff60901b191642831660901b67ffffffffffffffff60901b161781559581906156d28188615b00565b92169160081b1617906150ab565b6001600160401b03807f000000000000000000000000000000000000000000000000000000000000000016156136305761ffff6134bd9361593d614d41565b5016600090808252600080516020615e6e83398151915280602052615967612cad60408520615071565b91835260205260408220805467ffffffffffffffff60901b191642851660901b67ffffffffffffffff60901b161781559383906159a48184615b00565b60081c16838260081c1601838111600014615a115750610100600160481b0360ff6159ce856155ee565b92169160081b1617918084546001600160481b038116936159ef8587615b00565b5060081c16908360081c1610600014615a095750906150ab565b9050906150ab565b60ff6159ce610100600160481b03926155ee565b9067ffffffffffffffff60481b82549160481b169067ffffffffffffffff60481b1916179055565b468103615a575750565b604490604051906377d879fb60e01b82526004820152466024820152fd5b6001600160401b03918216908216039190821161192c57565b60009182915b6001600160401b03908181168015615ad65760001901918211615ac2571691615abc90614d13565b91615a94565b634e487b7160e01b85526011600452602485fd5b505050915090565b90615ae98183615b00565b6001600160401b03809160081c169160081c161190565b60ff9182169116818103615b12575050565b604051635ce6db6160e11b815260ff918216600482015291166024820152604490fd5b60ff811660081015612f215750600890565b9060ff8091169116039060ff821161192c57565b60ff16604d811161192c57600a0a90565b919060ff821660ff8216818114615bc0571115615b9f57615b94612f219392615b9992615b47565b615b5b565b90615523565b615b9490615bac92615b47565b9081810291818304149015171561192c5790565b5050505090565b615bfa61395c60ff92610100600160481b039495615be487615b35565b908581168683161015615c055750958691615b6c565b92169160081b161790565b9050958691615b6c565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c1615615c3e57565b604051631afcd79f60e31b8152600490fd5b6001600160a01b03908116908115615cab57600080516020615dae83398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b600080516020615dae833981519152546001600160a01b03163303615ce557565b60405163118cdaa760e01b8152336004820152602490fd5b600080516020615ece8339815191526002815414615d1b5760029055565b604051633ee5aeb560e01b8152600490fdfeebcc9f646b0f459ff8f387587d536b0af3484cf442e1577400f322334e7d1ef047028352a8b3feae1a85fba43bc13f990568bb1637dce33d3dbfd791a0808b7f6c3cb3f3ae91330f31ba2bc0ff8855fc834fb66dc27e8e0b1a398617dabaa5a668dfeeddfa5e4e9adceec01a3aba274bdcbab3f6ac9956417a4332f2b08abdda9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930064bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022fd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f00758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e1ad78307a8b51804c575f26039dcb87c58925afb3b7c08732f3b21b942aed7a768561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d89efb21dcaedea63b55c44882f329622e13a8d0f5b947b3a372826208a9003da1549bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f852fa0677fef8612c6c15b518c9fa56761e9ed15cfd5c6e5399e5467985ac7ed9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00bfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12497c25289a27ec8c9be54d4a154cf80490d69bda989cdb8328232e08fea9220420a2646970667358221220f05bfca11e4f4e6b5c38d73a662c13522a3f5f5988d02259aab20e583604ccb064736f6c63430008130033",U6=c=>typeof c[0]=="string"||Array.isArray(c[0])||"_isInterface"in c[0];class We extends U0.ContractFactory{constructor(...e){if(U6(e))super(...e);else{const[a,i]=e;super(oe,We.linkBytecode(a),i)}}static linkBytecode(e){let a=T1;return a=a.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),a}getDeployTransaction(e,a,i,o,n,u){return super.getDeployTransaction(e,a,i,o,n,u||{})}deploy(e,a,i,o,n,u){return super.deploy(e,a,i,o,n,u||{})}connect(e){return super.connect(e)}static bytecode=T1;static abi=oe;static createInterface(){return new L0.Interface(oe)}static connect(e,a){return new L0.Contract(e,oe,a)}}const fe=[{type:"constructor",inputs:[{name:"nttManager",type:"address",internalType:"address"},{name:"wormholeCoreBridge",type:"address",internalType:"address"},{name:"wormholeRelayerAddr",type:"address",internalType:"address"},{name:"specialRelayerAddr",type:"address",internalType:"address"},{name:"_consistencyLevel",type:"uint8",internalType:"uint8"},{name:"_gasLimit",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"WORMHOLE_TRANSCEIVER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"consistencyLevel",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"encodeWormholeTransceiverInstruction",inputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],outputs:[{name:"",type:"bytes",internalType:"bytes"}],stateMutability:"pure"},{type:"function",name:"gasLimit",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getNttManagerOwner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getNttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getTransceiverType",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"pure"},{type:"function",name:"getWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"payable"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isVAAConsumed",inputs:[{name:"hash",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"nttManager",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"nttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"parseWormholeTransceiverInstruction",inputs:[{name:"encoded",type:"bytes",internalType:"bytes"}],outputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],stateMutability:"pure"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"receiveMessage",inputs:[{name:"encodedMessage",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"receiveWormholeMessages",inputs:[{name:"payload",type:"bytes",internalType:"bytes"},{name:"additionalMessages",type:"bytes[]",internalType:"bytes[]"},{name:"sourceAddress",type:"bytes32",internalType:"bytes32"},{name:"sourceChain",type:"uint16",internalType:"uint16"},{name:"deliveryHash",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"sendMessage",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]},{name:"nttManagerMessage",type:"bytes",internalType:"bytes"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"setIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEvm",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setWormholePeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"specialRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract ISpecialRelayer"}],stateMutability:"view"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferTransceiverOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"wormhole",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormhole"}],stateMutability:"view"},{type:"function",name:"wormholeRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormholeRelayer"}],stateMutability:"view"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"ReceivedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"ReceivedRelayedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"RelayingInfo",inputs:[{name:"relayingType",type:"uint8",indexed:!1,internalType:"uint8"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"deliveryPayment",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"SendTransceiverMessage",inputs:[{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"message",type:"tuple",indexed:!1,internalType:"struct TransceiverStructs.TransceiverMessage",components:[{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"nttManagerPayload",type:"bytes",internalType:"bytes"},{name:"transceiverPayload",type:"bytes",internalType:"bytes"}]}],anonymous:!1},{type:"event",name:"SetIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isEvm",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetWormholePeer",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"CallerNotNttManager",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CallerNotRelayer",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CannotRenounceTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"}]},{type:"error",name:"CannotTransferTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"},{name:"newOwner",type:"address",internalType:"address"}]},{type:"error",name:"InvalidBoolVal",inputs:[{name:"val",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidBoolValue",inputs:[{name:"value",type:"uint256",internalType:"BooleanFlag"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidRelayingConfig",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidVaa",inputs:[{name:"reason",type:"string",internalType:"string"}]},{type:"error",name:"InvalidWormholeChainIdZero",inputs:[]},{type:"error",name:"InvalidWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidWormholePeerZeroAddress",inputs:[]},{type:"error",name:"LengthMismatch",inputs:[{name:"encodedLength",type:"uint256",internalType:"uint256"},{name:"expectedLength",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerAlreadySet",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"TransferAlreadyCompleted",inputs:[{name:"vaaHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"UnexpectedAdditionalMessages",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"deployer",type:"address",internalType:"address"},{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"UnexpectedRecipientNttManagerAddress",inputs:[{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"expectedRecipientNttManagerAddress",type:"bytes32",internalType:"bytes32"}]}],w1="0x6101c06040818152346200031d5760c08262003742803803809162000025828562000322565b8339810103126200031d576200003b826200035c565b906020906200004c8285016200035c565b926200005a8286016200035c565b62000068606087016200035c565b9160808701519660ff881688036200031d5760a00151947ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080549060ff82881c166200030c5782906001600160401b03906002600160401b031984831601620002c9575b50505050306080528160a052845190637e062a3560e11b8252808260048160018060a01b038097165afa908115620002be576000916200027f575b50905060c0523360e0528061012096168652806101409216825261016092168252610180924684526101009687526101a094855251946133d096876200037288396080518761313b015260a051878181610e100152818161154d015281816118d00152818161205501528181612204015281816128e00152612ae4015260c051878181610e9b01528181611c93015281816122560152818161268d0152612d7c015260e05187610d1801525186818161076e01528181610f4d0152818161127401528181611bfe01528181611df1015261239b01525185818161020801528181610c1501528181610f7a015281816112a001528181611ba601528181611e1e015281816122a601528181612e0201528181612ee20152612f800152518481816107a70152818161163601528181611a4a015281816122f60152612cc5015251838181610a7501528181611c3c015281816123460152612db90152518261024c0152518181816106ac01528181611a150152612c9a0152f35b82813d8311620002b6575b62000296818362000322565b81010312620002b35750620002ab906200035c565b803862000107565b80fd5b503d6200028a565b86513d6000823e3d90fd5b6001600160401b0319909316811790925586519182527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291a138818180620000cc565b865163f92ee8a960e01b8152600490fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200034657604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200031d5756fe6080604081815260048036101561001557600080fd5b600092833560e01c908163036de8af146125ab575080630900f010146120845780630b4a1e89146113db57806324fb21db14612040578063320d0d8e14611ffd57806348b330d614611fb75780634b5b05051461183f5780634b795b211461179e578063529dca321461159457806358f709ba14611525578063657b3b2f1461148457806366152efc14611423578063689f90c3146113e0578063694977d7146113db5780637ab564031461118057806380eb3239146111445780638129fc1c14610c8957806381e8ec7f14610c4457806384acd1bb14610c005780638da5cb5b14610bca5780638fd3ab8014610aa457806390ea542814610a60578063935dec0714610a1e57806396dddc63146109695780639fd0506d14610921578063a0926b2a146108d5578063b187bd2614610894578063b5634c7314610847578063bc7f6d3714610804578063d8d28418146107d6578063da25b72514610792578063e8dfd50814610754578063f2fde38b1461071f578063f48066a8146106d3578063f68016b7146106945763f953cec7146101af57600080fd5b34610690576020908160031936011261068c578035906001600160401b0385818411610689576101e5610204943690850161279e565b86518095819263607ec5ef60e11b835288878401526024830190612887565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561067f5786938790889261047a575b501561045757507f000000000000000000000000000000000000000000000000000000000000000046810361043b57506060830161ffff91828251166000526000805160206132bb833981519152865286600020546080860190815180910361040a575061014086016102d281516000526000805160206132db83398151915260205260ff6040600020541690565b6103f157927ff6fc529540981400dc64edf649eb5e2e0eb5812a27f8c81bac2c1d317e71a5f0608060e0948b8a8e9996896103336103849d9b516000526000805160206132db8339815191526020526040600020600160ff19825416179055565b519360a08989511692519301511692519384528d8401528d8301526060820152a1511694015190610362612943565b5061036b612969565b508651630453806b60e11b815293849283928301612ac2565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156103e7576103be9450859186946103c1575b50815191015191612ae1565b80f35b9093506103e091503d8087833e6103d88183612762565b810190612a44565b92386103b2565b84513d87823e3d90fd5b518851632d30ec0360e21b815280870191909152602490fd5b83518951633cd8e72b60e11b815290861661ffff1687820190815260208101929092529081900360400190fd5b0390fd5b826044918751916377d879fb60e01b8352820152466024820152fd5b8551634771719b60e11b8152808401869052908190610437906024830190612887565b945050503d8087853e61048d8185612762565b8301606090818582031261067b5784518381116105ff578501610160928382840312610603578851938401848110868211176106665789526104ce82613053565b84526104db888301613061565b888501526104ea898301613061565b898501528082015161ffff8116810361066257818501526080808301518186015261051760a08401612feb565b60a086015261052860c08401613053565b60c086015260e083015186811161065e57846105459185016129c1565b60e0860152610100610558818501613061565b90860152610120908184015187811161065a57840185601f8201121561065a5780518c946105916105888361284d565b96519687612762565b8186528c8087019260071b84010192888411610656578d01915b83831061060757505050505084015261014080910151908301526105d0868601613072565b94878101519084821161060357019080601f830112156105ff5781516105f792880161298a565b909338610243565b8880fd5b8980fd5b84838a0312610656578d8f9182879351906106218261272c565b865182528387015184830152610638818801613053565b90820152610647858701613053565b858201528152019201916105ab565b8f80fd5b8c80fd5b8b80fd5b8a80fd5b604187634e487b7160e01b6000525260246000fd5b8780fd5b85513d88823e3d90fd5b80fd5b8380fd5b8280fd5b5050346106cf57816003193601126106cf57602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5080fd5b5050346106cf5760203660031901126106cf5760209061ffff6106f46126bc565b166000526000805160206132fb833981519152825261071681600020546130f7565b90519015158152f35b8382346106cf5760203660031901126106cf57356001600160a01b03811681036106cf576103be9061074f61320b565b6131da565b5050346106cf57816003193601126106cf576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5050346106cf57816003193601126106cf57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106cf57816003193601126106cf576020906107f36128cb565b90516001600160a01b039091168152f35b5050346106cf5760203660031901126106cf5760209061ffff6108256126bc565b1660005260008051602061329b833981519152825261071681600020546130f7565b50346106905781600319360112610690576108606126bc565b92602435906001600160401b03821161068957509261088761088d926020953691016127e5565b90612c24565b9051908152f35b5050346106cf57816003193601126106cf5760209060027f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b825802254149051908152f35b5050346106cf57816003193601126106cf57805161091d916108f682612747565b6008825267776f726d686f6c6560c01b602083015251918291602083526020830190612887565b0390f35b5050346106cf57816003193601126106cf577fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12495490516001600160a01b039091168152602090f35b508290346106cf57826003193601126106cf576109846126bc565b61098c61283e565b9161099561320b565b61ffff8216908115610a1057507f4add57d97a7bf5035340ea1212aeeb3d4d3887eb1faf3821a8224c3a6956a10c9394610a0a916109d285613129565b906000526000805160206132fb8339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b0390a180f35b8551630f7662c960e21b8152fd5b5050346106cf5760203660031901126106cf5760209061ffff610a3f6126bc565b166000526000805160206132bb833981519152825280600020549051908152f35b5050346106cf57816003193601126106cf57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b509034610690578260031936011261069057610abe613138565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b038082166001810190828211610bb75760ff84871c16908115610baa575b50610b9a57169360ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e541615610b8c575068ffffffffffffffffff19168317680100000000000000001768ff000000000000000019169055519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a180f35b8351632866815360e11b8152fd5b845163f92ee8a960e01b81528690fd5b9050828216111538610b06565b634e487b7160e01b885260118752602488fd5b5050346106cf57816003193601126106cf5760008051602061333b8339815191525490516001600160a01b039091168152602090f35b5050346106cf57816003193601126106cf57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106cf57816003193601126106cf57805161091d91610c6582612747565b60058252640312e312e360dc1b602083015251918291602083526020830190612887565b508260031936011261069057610c9d613138565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009182549160ff83831c1615906001600160401b03938481168015908161113c575b6001149081611132575b159081611129575b5061111a5767ffffffffffffffff1981166001178655826110fb575b506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116338190036110df5750610d4a613199565b610d52613199565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055610dfe610d816128cb565b610d89613199565b610d91613199565b610d99613199565b60017f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022557fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad124980546001600160a01b03191633179055610df6613199565b61074f613199565b8351634b4fd03b60e01b8152602095907f0000000000000000000000000000000000000000000000000000000000000000831687828681845afa9182156110d5578a9261109e575b508651631dcbf42b60e11b81529188838781855afa928315611094578b9361105d575b5087519360a0850190811185821017610666578852639c23bd3b60e01b845288840191825260ff9081168489019081527f00000000000000000000000000000000000000000000000000000000000000008616606086019081529382166080860190815289516301529f6160e21b815295516001600160e01b031916888701529251602486015251811660448501529151606484015251166084820152878160a48173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156110535791610f74939187938a91611031575b5086518095819482936358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fff565b039134907f0000000000000000000000000000000000000000000000000000000000000000165af1801561102757610fef575b50610fb0578380f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29268ff00000000000000001981541690555160018152a13880808380f35b8381813d8311611020575b6110048183612762565b8101031261101c5761101590612feb565b5038610fa7565b8580fd5b503d610ffa565b83513d88823e3d90fd5b61104d91503d808c833e6110458183612762565b81019061307f565b38610f38565b85513d8a823e3d90fd5b9092508881813d831161108d575b6110758183612762565b810103126106625761108690613053565b9138610e69565b503d61106b565b88513d8d823e3d90fd5b9091508781813d83116110ce575b6110b68183612762565b81010312610603576110c790613053565b9038610e46565b503d6110ac565b87513d8c823e3d90fd5b82604491865191636345072160e11b8352820152336024820152fd5b68ffffffffffffffffff19166801000000000000000117855538610d0d565b50825163f92ee8a960e01b8152fd5b90501538610cf1565b303b159150610ce9565b849150610cdf565b5091346106895760203660031901126106895750610716602092356000526000805160206132db83398151915260205260ff6040600020541690565b5081600319360112610690576111946126bc565b602435916111a061320b565b61ffff8083169081156113cb5784156113bb57816000526000805160206132bb8339815191529160209280845287600020548061139257508160005283528587600020558651916111f083612711565b630c7e33e160e11b8352838301918252878301878152885163077650fb60e51b815293516001600160e01b031916868501529151166024830152516044820152868160648173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156113885761129b938392899161136e575b5087516358cd21bf60e11b815294859283927f0000000000000000000000000000000000000000000000000000000000000000918401612fff565b0381347f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561067f57611312575b5050915161ffff909216825260208201527fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d326466908060408101610a0a565b81813d8311611367575b6113268183612762565b81010312611363577fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d3264669361135c610a0a92612feb565b50936112d5565b8480fd5b503d61131c565b61138291503d808b833e6110458183612762565b38611260565b86513d89823e3d90fd5b885163b55eeae960e01b815261ffff881681880190815260208101929092529081906040010390fd5b855163137063ef60e11b81528390fd5b8551630f7662c960e21b81528390fd5b612677565b5050346106cf57816003193601126106cf5760209060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb541690519015158152f35b5091346106895760203660031901126106895750805191611443836126f6565b35908115159182810361147f5761091d935280519160f81b60208301526001825261146d82612747565b51918291602083526020830190612887565b600080fd5b508290346106cf57826003193601126106cf5761149f6126bc565b6114a761283e565b916114b061320b565b61ffff8216908115610a1057507f528b18a533e892b5401d1fb63597275df9d2bb45b13e7695c3147cd07b9746c39394610a0a916114ed85613129565b9060005260008051602061331b8339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b5034610690576020366003190112610690578035916001600160a01b038084168403611363577f000000000000000000000000000000000000000000000000000000000000000016330361157d57836103be84613244565b60249250519063c5aa615360e01b82523390820152fd5b5060a0366003190112610690576001600160401b038135818111611363576115bf903690840161279e565b60249283359383851161179a573660238601121561179a5784820135936115e58561284d565b946115f288519687612762565b808652602096838888019260051b8201019236841161066257848201925b8484106117745750505050506044356064359461ffff86169081870361147f57608435937f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361176157826000526000805160206132bb8339815191528952838a600020540361173a57848b526000805160206132db833981519152895260ff8a8c20541661172657506116cf846000526000805160206132db8339815191526020526040600020600160ff19825416179055565b5161171657606061038495938a95937ff557dbbb087662f52c815f6c7ee350628a37a51eae9608ff840d996b65f87475938b519283528a8301528a820152a1610362612943565b875163c504ea2960e01b81528490fd5b8951632d30ec0360e21b8152808701869052fd5b8951633cd8e72b60e11b815261ffff89168188019081526020810186905281906040010390fd5b8951631c26958960e01b81523381880152fd5b833582811161065a578a9161178f839289369188010161279e565b815201930192611610565b8680fd5b508290346106cf57826003193601126106cf576117b96126bc565b6117c161283e565b916117ca61320b565b61ffff8216908115610a1057507f0fe301480713b2c2072ee91b3bcfcbf2c0014f0447c89046f020f0f80727003c9394610a0a9161180785613129565b9060005260008051602061329b8339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b509060031960a03682011261068c576118566126bc565b9060249283356001600160401b039081811161067b5761187990369088016127e5565b906044358181116105ff57611891903690890161279e565b90608435977f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00976002895414611fa857600289556001600160a01b03937f000000000000000000000000000000000000000000000000000000000000000085163303611f9257908b61194b819361195a8a519b61190d8d6126f6565b848d528b516304616c8f60e21b81526309945ff160e41b89820152338782015260648035604483015260a0908201529c8d94859460a4860190612887565b91848303016084850152612887565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af4938415611f885782988395611f36575b50611992602080980151612ba9565b80511580611f27575b15611b7e575050928a92859283898997611a0d61ffff8f16968792836000526000805160206132bb8339815191528c526119e16119db8660002054613027565b9b613027565b94519c8d9b8c9a8b9a6312d729bd60e21b8c528b0152169088015260e0604488015260e4870190612887565b9360648601527f0000000000000000000000000000000000000000000000000000000000000000608486015260a48501521660c4830152039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611b7457611b03575b5061ffff926060611ae884611afc9460008051602061337b8339815191528460019c60008051602061335b8339815191529b99519060008252848201523485820152a15b815197889716875281818801528451828801528401518387015283015160808087015260c0860190612887565b910151838203603f190160a0850152612887565b0390a15580f35b9391928185813d8311611b6d575b611b1b8183612762565b8101031261067b576060611ae861ffff95611afc9460008051602061337b8339815191528460019c611b5b60008051602061335b8339815191529c612feb565b509c5050509450949650505092611a77565b503d611b11565b83513d8a823e3d90fd5b919394959250959697989a50511580611efb575b15611dd1578651631a90a21960e01b8152937f000000000000000000000000000000000000000000000000000000000000000082169087868681855afa958d8715611dc657908993929197611d93575b50869291611c26918b519889809481936358cd21bf60e11b83527f0000000000000000000000000000000000000000000000000000000000000000908c8401612fff565b03925af1948515611d89578c95611d52575b50817f00000000000000000000000000000000000000000000000000000000000000001690340390348211611d3e5790818d9796959493923b1561067b578c96889660849561ffff8d519a8b998a98630b5624e160e11b8a527f0000000000000000000000000000000000000000000000000000000000000000169089015216908601528760448601521660648401525af18015611d3457611d1c575b5060008051602061335b833981519152936060611ae8856001999560008051602061337b83398151915284611afc9761ffff9a51908e8252848201523485820152a1611abb565b611d28909692966126cd565b61101c57938538611cd5565b84513d84823e3d90fd5b83601186634e487b7160e01b600052526000fd5b9094508681813d8311611d82575b611d6a8183612762565b8101031261065e57611d7b90612feb565b9338611c38565b503d611d60565b88513d8e823e3d90fd5b9196509181813d8111611dbf575b611dab8183612762565b8101031261147f5751948791611c26611be2565b503d611da1565b8a51903d90823e3d90fd5b9050611e189350849286999799518095819482936358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fff565b039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611ef157611e93575b5091611afc6001956060611ae88560008051602061335b8339815191529760008051602061337b833981519152848d61ffff9a519060028252848201523485820152a1611abb565b9181838195933d8311611eea575b611eab8183612762565b8101031261179a576001956060611ae8611afc9360008051602061335b83398151915297611edb61ffff98612feb565b50959750955050509550611e4b565b503d611ea1565b83513d89823e3d90fd5b5061ffff8a1660005260008051602061329b8339815191528652611f2287600020546130f7565b611b92565b50611f318b6130a4565b61199b565b985093503d80838a3e611f49818a612762565b88019787818a031261069057805185811161068c5789611f6a9183016129db565b98602082015186811161136357611f8192016129c1565b9338611983565b87513d84823e3d90fd5b509085519063c5aa615360e01b82523390820152fd5b508451633ee5aeb560e01b8152fd5b509134610689576020366003190112610689578235906001600160401b0382116106895750611fee602093611ff39236910161279e565b612ba9565b9051905115158152f35b5050346106cf5760203660031901126106cf5760209061ffff61201e6126bc565b1660005260008051602061331b833981519152825261071681600020546130f7565b5050346106cf57816003193601126106cf57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b509034610690576020918260031936011261068c576001600160a01b039181358381169081810361179a576120b761320b565b6120bf613138565b3b15612552577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8680a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e9384549361214c60ff86161561317c565b60ff199485166001178655303b1561179a57825163011fa75760e71b81528781868183305af180156124465761253f575b50825163689f90c360e01b815282818681305afa90811561244657889161250a575b50156121d9575b505050507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b82516324fb21db60e01b815282818681305afa908115612446579061222b9189916124ed575b5082167f000000000000000000000000000000000000000000000000000000000000000083161461317c565b8251630b4a1e8960e01b815282818681305afa908115612446579061227d9189916124c0575b5082167f000000000000000000000000000000000000000000000000000000000000000083161461317c565b82516384acd1bb60e01b815282818681305afa8015612446578890612488575b6122cd915082167f000000000000000000000000000000000000000000000000000000000000000083161461317c565b825163da25b72560e01b815282818681305afa8015612446578890612450575b61231d915082167f000000000000000000000000000000000000000000000000000000000000000083161461317c565b825163121d4a8560e31b815282818681305afa90811561244657889161240c575b508161236e927f00000000000000000000000000000000000000000000000000000000000000001691161461317c565b8082518094631d1bfaa160e31b825281305afa918215612403575085916123cc575b506123c3915060ff807f00000000000000000000000000000000000000000000000000000000000000001691161461317c565b388080806121a6565b905081813d83116123fc575b6123e28183612762565b8101031261068c576123f66123c391613053565b38612390565b503d6123d8565b513d87823e3d90fd5b90508281813d831161243f575b6124238183612762565b8101031261067b575190808216820361067b579061236e61233e565b503d612419565b84513d8a823e3d90fd5b508281813d8311612481575b6124668183612762565b8101031261067b5751818116810361067b5761231d906122ed565b503d61245c565b508281813d83116124b9575b61249e8183612762565b8101031261067b5751818116810361067b576122cd9061229d565b503d612494565b6124e09150843d86116124e6575b6124d88183612762565b8101906128ac565b38612251565b503d6124ce565b6125049150843d86116124e6576124d88183612762565b386121ff565b90508281813d8311612538575b6125218183612762565b8101031261067b5761253290613072565b3861219f565b503d612517565b61254b909791976126cd565b953861217d565b815162461bcd60e51b8152808401869052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b828591346106905760203660031901126106905781356001600160a01b038181169391849003611363578060008051602061333b8339815191525416927fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12499283549283169433861415908161266c575b506126575750506001600160a01b031916831790557f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b63e2a08e5d60e01b8252339082015260249150fd5b90503314158861261b565b3461147f57600036600319011261147f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6004359061ffff8216820361147f57565b6001600160401b0381116126e057604052565b634e487b7160e01b600052604160045260246000fd5b602081019081106001600160401b038211176126e057604052565b606081019081106001600160401b038211176126e057604052565b608081019081106001600160401b038211176126e057604052565b604081019081106001600160401b038211176126e057604052565b90601f801991011681019081106001600160401b038211176126e057604052565b6001600160401b0381116126e057601f01601f191660200190565b81601f8201121561147f578035906127b582612783565b926127c36040519485612762565b8284526020838301011161147f57816000926020809301838601378301015290565b91909160408184031261147f5760408051916001600160401b03918301828111848210176126e0576040528294813560ff8116810361147f578452602082013592831161147f57602092612839920161279e565b910152565b60243590811515820361147f57565b6001600160401b0381116126e05760051b60200190565b60005b8381106128775750506000910152565b8181015183820152602001612867565b906020916128a081518092818552858086019101612864565b601f01601f1916010190565b9081602091031261147f57516001600160a01b038116810361147f5790565b604051638da5cb5b60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156129375760009161291c575090565b612934915060203d81116124e6576124d88183612762565b90565b6040513d6000823e3d90fd5b604051906129508261272c565b6060808360008152600060208201528160408201520152565b6040519061297682612711565b606060408360008152600060208201520152565b9092919261299781612783565b916129a56040519384612762565b82948284528282011161147f5760206129bf930190612864565b565b9080601f8301121561147f5781516129349260200161298a565b919060808382031261147f57604051906129f48261272c565b819380518352602081015160208401526040810151916001600160401b039283811161147f5781612a269184016129c1565b6040850152606082015192831161147f5760609261283992016129c1565b919060408382031261147f578251906001600160401b039182811161147f5781612a6f9186016129db565b9360208101519083821161147f57019060608282031261147f5760405192612a9684612711565b8251845260208301516020850152604083015190811161147f57612aba92016129c1565b604082015290565b6309945ff160e41b815260406020820181905261293492910190612887565b917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690818103612b8b5750803b1561147f5761ffff60008094612b71604080519889978896879563275e091560e21b875216600486015260248501526060604485015280516064850152602081015160848501520151606060a484015260c4830190612887565b03925af1801561293757612b825750565b6129bf906126cd565b60449250604051916339dee99160e11b835260048301526024820152fd5b9060405191612bb7836126f6565b6000835282815115612c1f5750600181015160fe8116612c035760ff16151583525160018103612be45750565b604490604051906355c5b3e360e11b8252600482015260016024820152fd5b60405163f7a37b0760e01b815260ff9091166004820152602490fd5b925050565b90612c33602080920151612ba9565b51612f6a5761ffff82169060009082825260008051602061331b8339815191528152604093612c64858420546130f7565b80612f43575b612f2b57612c77906130a4565b15612d3e5750825163c23ee3c360e01b81526004810192909252602482018190527f0000000000000000000000000000000000000000000000000000000000000000604483015282826064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa928315612d34578193612d03575b50505090565b9091809350813d8311612d2d575b612d1b8183612762565b81010312610689575051388080612cfd565b503d612d11565b51903d90823e3d90fd5b82829394925260008051602061329b8339815191528152612d61828420546130f7565b15612ec957815163209d173960e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820195909552604481018490529381856064817f000000000000000000000000000000000000000000000000000000000000000085165afa948515612ebc578495612e8d575b509080600492845193848092631a90a21960e01b82527f0000000000000000000000000000000000000000000000000000000000000000165afa928315612e8457508392612e56575b50508201809211612e42575090565b634e487b7160e01b81526011600452602490fd5b90809250813d8311612e7d575b612e6d8183612762565b810103126106cf57513880612e33565b503d612e63565b513d85823e3d90fd5b9094508181813d8311612eb5575b612ea58183612762565b8101031261068c57519381612dea565b503d612e9b565b50505051903d90823e3d90fd5b8151631a90a21960e01b815291935090919080836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa938415612f2057508193612d035750505090565b51913d9150823e3d90fd5b845163251268db60e21b815260048101859052602490fd5b508383526000805160206132fb8339815191528252612f64858420546130f7565b15612c6a565b604051631a90a21960e01b8152915080826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561293757600091612fbf575b50905090565b82813d8311612fe4575b612fd38183612762565b810103126106895750518038612fb9565b503d612fc9565b51906001600160401b038216820361147f57565b9060ff61302060409295949560008552606060208601526060850190612887565b9416910152565b8060a01c61303b576001600160a01b031690565b6024906040519063033b960d60e41b82526004820152fd5b519060ff8216820361147f57565b519063ffffffff8216820361147f57565b5190811515820361147f57565b9060208282031261147f5781516001600160401b03811161147f5761293492016129c1565b61ffff168060005260008051602061331b8339815191526020526130cc6040600020546130f7565b90816130d6575090565b90506000526000805160206132fb8339815191526020526129346040600020545b8015613123576001811461311d576024906040519063b998bad560e01b82526004820152fd5b50600190565b50600090565b1561313357600190565b600090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461316a57565b604051633c64f99360e21b8152600490fd5b1561318357565b634e487b7160e01b600052600160045260246000fd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c16156131c857565b604051631afcd79f60e31b8152600490fd5b6001600160a01b038116156131f2576129bf90613244565b604051631e4fbdf760e01b815260006004820152602490fd5b60008051602061333b833981519152546001600160a01b0316330361322c57565b60405163118cdaa760e01b8152336004820152602490fd5b60008051602061333b83398151915280546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a356fed4cbc7742a1e11dcc33209ac33862ef146cfcb6d7f860df12df42105dfedb1c948c66ef0992b4bcc14f2551075db9459fc23bf706abb76034f1c66c1ba2846845e6aacb3f16e5b01c8b072a0ab4c38e919266014a45db863ee64a4580fb3e7e2e79d2e5e46f62be2ac831294e423b664f30320fb9ebaefd78a978cafe07c0f8c16ee6ac6bf7a8d7c37112a9426e00852b215ac4f5c50536beb6c95f1ba47b4af9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930079376a0dc6cbfe6f6f8f89ad24c262a8c6233f8df181d3fe5abb2e2442e8c738c3192e083c87c556db539f071d8a298869f487e951327b5616a6f85ae3da958ea26469706673582212207bc4f63809fac595a807d3db7f0b018f2f37e2fc46722017fb19171aab94e8f964736f6c63430008130033",F6=c=>typeof c[0]=="string"||Array.isArray(c[0])||"_isInterface"in c[0];class ze extends U0.ContractFactory{constructor(...e){if(F6(e))super(...e);else{const[a,i]=e;super(fe,ze.linkBytecode(a),i)}}static linkBytecode(e){let a=w1;return a=a.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),a}getDeployTransaction(e,a,i,o,n,u,g){return super.getDeployTransaction(e,a,i,o,n,u,g||{})}deploy(e,a,i,o,n,u,g){return super.deploy(e,a,i,o,n,u,g||{})}connect(e){return super.connect(e)}static bytecode=w1;static abi=fe;static createInterface(){return new L0.Interface(fe)}static connect(e,a){return new L0.Contract(e,fe,a)}}const q6={NttManager:{connect:_6.connect},NttTransceiver:{connect:N6.connect}},$6={NttManager:{connect:O6.connect},NttTransceiver:{connect:B6.connect}},W6={NttManager:{connect:We.connect},NttTransceiver:{connect:ze.connect}},z6=[["1.1.0",W6],["1.0.0",$6],["0.1.0",q6]];function K6(c){for(const[e,a]of z6)if(D0.abiVersionMatches(c,e))return a;throw new Error(`Unknown ABI version: ${c}`)}class j6{manager;address;transceiver;constructor(e,a,i){this.manager=e,this.address=a,this.transceiver=i.NttTransceiver.connect(a,e.provider)}async getTransceiverType(){return"wormhole"}async getAddress(){return{chain:this.manager.chain,address:f.toUniversal(this.manager.chain,this.address)}}encodeFlags(e){return new Uint8Array([e.skipRelay?1:0])}async*setPeer(e){const i=await new L0.Contract(this.manager.contracts.coreBridge,["function messageFee() public view returns (uint256)"],this.manager.provider).getFunction("messageFee").staticCall(),o=await this.transceiver.setWormholePeer.populateTransaction(f.toChainId(e.chain),f.universalAddress(e));yield this.manager.createUnsignedTx({...o,value:i},"WormholeTransceiver.registerPeer")}async getPauser(){const e=await this.transceiver.pauser();return new f.EvmAddress(e)}async*setPauser(e){const a=f.canonicalAddress({chain:this.manager.chain,address:e}),i=await this.transceiver.transferPauserCapability.populateTransaction(a);yield this.manager.createUnsignedTx(i,"WormholeTransceiver.setPauser")}async getPeer(e){const a=await this.transceiver.getWormholePeer(f.toChainId(e)),i=f.hex.decode(a),o=new Uint8Array(32);return f.bytes.equals(o,i)?null:{chain:e,address:f.toUniversal(e,i)}}async isEvmChain(e){return await this.transceiver.isWormholeEvmChain(f.toChainId(e))}async*setIsEvmChain(e,a){const i=await this.transceiver.setIsWormholeEvmChain.populateTransaction(f.toChainId(e),a);yield this.manager.createUnsignedTx(i,"WormholeTransceiver.setIsEvmChain")}async*receive(e){const a=await this.transceiver.receiveMessage.populateTransaction(f.serialize$1(e));yield this.manager.createUnsignedTx(a,"WormholeTransceiver.receiveMessage")}async isWormholeRelayingEnabled(e){return await this.transceiver.isWormholeRelayingEnabled(f.toChainId(e))}async*setIsWormholeRelayingEnabled(e,a){const i=await this.transceiver.setIsWormholeRelayingEnabled.populateTransaction(f.toChainId(e),a);yield this.manager.createUnsignedTx(i,"WormholeTransceiver.setWormholeRelayingEnabled")}async isSpecialRelayingEnabled(e){return await this.transceiver.isSpecialRelayingEnabled(f.toChainId(e))}async*setIsSpecialRelayingEnabled(e,a){const i=await this.transceiver.setIsSpecialRelayingEnabled.populateTransaction(f.toChainId(e),a);yield this.manager.createUnsignedTx(i,"WormholeTransceiver.setSpecialRelayingEnabled")}}class ue{network;chain;provider;contracts;version;tokenAddress;chainId;manager;xcvrs;managerAddress;constructor(e,a,i,o,n="1.0.0"){if(this.network=e,this.chain=a,this.provider=i,this.contracts=o,this.version=n,!o.ntt)throw new Error("No Ntt Contracts provided");this.chainId=f.networkChainToNativeChainId.get(e,a),this.tokenAddress=o.ntt.token,this.managerAddress=o.ntt.manager;const u=K6(this.version);this.manager=u.NttManager.connect(o.ntt.manager,this.provider),this.xcvrs=[],"wormhole"in o.ntt.transceiver&&o.ntt.transceiver.wormhole&&["wormhole",...Object.keys(o.ntt.transceiver).filter(T=>{})].map(T=>{if(T!=="wormhole")throw new Error(`Unsupported transceiver type: ${T}`);this.xcvrs.push(new j6(this,o.ntt.transceiver[T],u))})}async getTransceiver(e){return this.xcvrs[e]||null}async getMode(){return await this.manager.getMode()===0n?"locking":"burning"}async isPaused(){return await this.manager.isPaused()}async*pause(){const e=await this.manager.pause.populateTransaction();yield this.createUnsignedTx(e,"Ntt.pause")}async*unpause(){const e=await this.manager.unpause.populateTransaction();yield this.createUnsignedTx(e,"Ntt.unpause")}async getOwner(){return new f.EvmAddress(await this.manager.owner())}async getPauser(){return new f.EvmAddress(await this.manager.pauser())}async*setOwner(e){const a=new f.EvmAddress(e).toString(),i=await this.manager.transferOwnership.populateTransaction(a);yield this.createUnsignedTx(i,"Ntt.setOwner")}async*setPauser(e){const a=new f.EvmAddress(e).toString(),i=await this.manager.transferPauserCapability.populateTransaction(a);yield this.createUnsignedTx(i,"Ntt.setPauser")}async getThreshold(){return Number(await this.manager.getThreshold())}async*setThreshold(e,a){const i=await this.manager.setThreshold.populateTransaction(e);yield this.createUnsignedTx(i,"Ntt.setThreshold")}async isRelayingAvailable(e){return(await Promise.all(this.xcvrs.map(async i=>{const[o,n]=await Promise.all([i.isWormholeRelayingEnabled(e),i.isSpecialRelayingEnabled(e)]);return o||n}))).filter(i=>i).length>0}async getIsExecuted(e){const a=e.payloadName==="WormholeTransfer"?e.payload:e.payload.payload;return await this.manager.isMessageExecuted(D0.messageDigest(e.emitterChain,a.nttManagerPayload))?!await this.getIsTransferInboundQueued(e):!1}async getIsTransferInboundQueued(e){const a=e.payloadName==="WormholeTransfer"?e.payload:e.payload.payload;return await this.getInboundQueuedTransfer(e.emitterChain,a.nttManagerPayload)!==null}getIsApproved(e){const a=e.payloadName==="WormholeTransfer"?e.payload:e.payload.payload;return this.manager.isMessageApproved(D0.messageDigest(e.emitterChain,a.nttManagerPayload))}async getTokenDecimals(){return await U0.EvmPlatform.getDecimals(this.network,this.chain,this.provider,this.tokenAddress)}async getPeer(e){const a=await this.manager.getPeer(f.toChainId(e)),i=f.hex.decode(a.peerAddress),o=new Uint8Array(32);return f.bytes.equals(o,i)?null:{address:{chain:e,address:f.toUniversal(e,i)},tokenDecimals:Number(a.tokenDecimals),inboundLimit:await this.getInboundLimit(e)}}static async fromRpc(e,a){const[i,o]=await U0.EvmPlatform.chainFromRpc(e),n=a[o];if(n.network!==i)throw new Error(`Network mismatch: ${n.network} != ${i}`);const u=await ue.getVersion(e,n.contracts);return new ue(i,o,e,n.contracts,u)}encodeOptions(e){const a=[];return a.push({index:0,payload:this.xcvrs[0].encodeFlags({skipRelay:!e.automatic})}),a}static async getVersion(e,a){const i=new L0.Contract(a.ntt.manager,["function NTT_MANAGER_VERSION() public view returns (string)"],e);try{const o=await i.getFunction("NTT_MANAGER_VERSION").staticCall();if(!o)throw new Error("NTT_MANAGER_VERSION not found");return o}catch(o){throw console.error(`Failed to get NTT_MANAGER_VERSION from contract ${a.ntt?.manager} on ${(await e.getNetwork()).name}`),o}}async getCustodyAddress(){return this.managerAddress}async quoteDeliveryPrice(e,a){const[,i]=await this.manager.quoteDeliveryPrice(f.toChainId(e),D0.encodeTransceiverInstructions(this.encodeOptions(a)));return i}async*setPeer(e,a,i){const o=await this.manager.setPeer.populateTransaction(f.toChainId(e.chain),f.universalAddress(e),a,i);yield this.createUnsignedTx(o,"Ntt.setPeer")}async*setWormholeTransceiverPeer(e){yield*this.setTransceiverPeer(0,e)}async*setTransceiverPeer(e,a){if(e>=this.xcvrs.length)throw new Error("Transceiver not found");yield*this.xcvrs[e].setPeer(a)}async*transfer(e,a,i,o){const n=new f.EvmAddress(e).toString(),u=await this.quoteDeliveryPrice(i.chain,o);o.wrapNative&&(yield this.wrapNative(e,a));const g=await this.approve(e,a);g&&(yield g);const T=f.universalAddress(i),w=await this.manager.getFunction("transfer(uint256,uint16,bytes32,bytes32,bool,bytes)").populateTransaction(a,f.toChainId(i.chain),T,T,o.queue,D0.encodeTransceiverInstructions(this.encodeOptions(o)),{value:u});yield this.createUnsignedTx(f.addFrom(w,n),"Ntt.transfer")}async wrapNative(e,a){const i=new f.EvmAddress(e).toString(),n=await new L0.Contract(this.tokenAddress,["function deposit() public payable"]).getFunction("deposit").populateTransaction({value:a});return this.createUnsignedTx(f.addFrom(n,i),"Ntt.Deposit")}async approve(e,a){const i=new f.EvmAddress(e).toString(),o=U0.EvmPlatform.getTokenImplementation(this.provider,this.tokenAddress);if(await o.allowance(i,this.managerAddress)<a){const u=await o.approve.populateTransaction(this.managerAddress,a);return this.createUnsignedTx(f.addFrom(u,i),"Ntt.Approve")}}async*redeem(e){if(e.length!==this.xcvrs.length)throw new Error("Not enough attestations for the registered Transceivers");for(const a in this.xcvrs){const i=this.xcvrs[a],o=e[a];if(o?.payloadName!=="WormholeTransfer")throw new Error("Invalid attestation type for redeem");yield*i.receive(o)}}async getCurrentOutboundCapacity(){return await this.manager.getCurrentOutboundCapacity()}async getOutboundLimit(){const e=(await this.manager.getOutboundLimitParams()).limit,a=M1(e),i=await this.getTokenDecimals();return S1(a,i)}async*setOutboundLimit(e){const a=await this.manager.setOutboundLimit.populateTransaction(e);yield this.createUnsignedTx(a,"Ntt.setOutboundLimit")}async getCurrentInboundCapacity(e){return await this.manager.getCurrentInboundCapacity(f.toChainId(e))}async getInboundLimit(e){const a=(await this.manager.getInboundLimitParams(f.toChainId(e))).limit,i=M1(a),o=await this.getTokenDecimals();return S1(i,o)}async*setInboundLimit(e,a){const i=await this.manager.setInboundLimit.populateTransaction(a,f.toChainId(e));yield this.createUnsignedTx(i,"Ntt.setInboundLimit")}async getRateLimitDuration(){return await this.manager.rateLimitDuration()}async getInboundQueuedTransfer(e,a){const i=await this.manager.getInboundQueuedTransfer(D0.messageDigest(e,a));if(i.txTimestamp>0n){const{recipient:o,amount:n,txTimestamp:u}=i,g=await this.getRateLimitDuration();return{recipient:new f.EvmAddress(o),amount:n,rateLimitExpiryTimestamp:Number(u+g)}}return null}async*completeInboundQueuedTransfer(e,a,i){const o=await this.manager.completeInboundQueuedTransfer.populateTransaction(D0.messageDigest(e,a));yield this.createUnsignedTx(o,"Ntt.completeInboundQueuedTransfer")}async verifyAddresses(){const e={manager:this.managerAddress,token:this.tokenAddress,transceiver:{...this.xcvrs.length>0&&{wormhole:this.xcvrs[0].address}}},a={manager:this.managerAddress,token:await this.manager.token(),transceiver:{wormhole:(await this.manager.getTransceivers())[0]}},i=(o,n)=>{for(const u in o)typeof o[u]=="object"?(i(o[u],n[u]),Object.keys(o[u]).length===0&&delete o[u]):o[u]===n[u]&&delete o[u]};return i(a,e),Object.keys(a).length>0?a:null}createUnsignedTx(e,a,i=!1){return new H1.EvmUnsignedTransaction(f.addChainId(e,this.chainId),this.network,this.chain,a,i)}}function M1(c){const e=Number(c&0xffn);return{amount:c>>8n,decimals:e}}function S1(c,e){const{amount:a,decimals:i}=c;return V6(a,i,e)}function V6(c,e,a){return e==a?c:e>a?c/10n**BigInt(e-a):c*10n**BigInt(a-e)}const Q6={Mainnet:{Arbitrum:"0x0Af42A597b0C201D4dcf450DcD0c06d55ddC1C77",Avalanche:"0x4e9Af03fbf1aa2b79A2D4babD3e22e09f18Bb8EE",Base:"0x83216747fC21b86173D800E2960c0D5395de0F30",Berachain:"0x0a2AF374Cc9CCCbB0Acc4E34B20b9d02a0f08c30",Bsc:"0x39B57Dd9908F8be02CfeE283b67eA1303Bc29fe1",Celo:"0x3d69869fcB9e1CD1F4020b637fb8256030BAc8fC",Ethereum:"0xD2D9c936165a85F27a5a7e07aFb974D022B89463",HyperEVM:"0x431017B1718b86898C7590fFcCC380DEf0456393",Linea:"0xEAa5AddB5b8939Eb73F7faF46e193EefECaF13E9",Mezo:"0x484b5593BbB90383f94FB299470F09427cf6cfE2",Moonbeam:"0x1365593C8bae71a55e48E105a2Bb76d5928c7DE3",Optimism:"0x85C0129bE5226C9F0Cf4e419D2fefc1c3FCa25cF",Plume:"0x6Eb53371f646788De6B4D0225a4Ed1d9267188AD",Polygon:"0x6762157b73941e36cEd0AEf54614DdE545d0F990",Scroll:"0x055625d48968f99409244E8c3e03FbE73B235a62",Sonic:"0xaCa00703bb87F31D6F9fCcc963548b48FA46DfeB",Unichain:"0x607723D6353Dae3ef62B7B277Cfabd0F4bc6CB4C",Worldchain:"0x66b1644400D51e104272337226De3EF1A820eC79",XRPLEVM:"0x6bBd1ff3bB303F88835A714EE3241bF45DE26d29"},Testnet:{ArbitrumSepolia:"0xd048170F1ECB8D47E499D3459aC379DA023E2C1B",Avalanche:"0x4e9Af03fbf1aa2b79A2D4babD3e22e09f18Bb8EE",BaseSepolia:"0x5845E08d890E21687F7Ebf7CbAbD360cD91c6245",OptimismSepolia:"0xaDB1C56D363FF5A75260c3bd27dd7C1fC8421EF5",Sepolia:"0x54DD7080aE169DD923fE56d0C4f814a0a17B8f41",Seievm:"0x3F2D6441C7a59Dfe80f8e14142F9E28F6D440445",Converge:"0x3d8c26b67BDf630FBB44F09266aFA735F1129197",Plume:"0x6Eb53371f646788De6B4D0225a4Ed1d9267188AD",Monad:"0x93FE94Ad887a1B04DBFf1f736bfcD1698D4cfF66",Celo:"0x3d69869fcB9e1CD1F4020b637fb8256030BAc8fC",XRPLEVM:"0xcDD9d7C759b29680f7a516d0058de8293b2AC7b1"}},G6={Mainnet:{Arbitrum:800000n},Testnet:{ArbitrumSepolia:800000n}};class Ke{network;chain;provider;contracts;chainId;executorAddress;constructor(e,a,i,o){this.network=e,this.chain=a,this.provider=i,this.contracts=o,this.chainId=f.networkChainToNativeChainId.get(e,a);const n=Q6[this.network]?.[this.chain];if(!n)throw new Error(`Executor address not found for chain ${this.chain}`);this.executorAddress=n}static async fromRpc(e,a){const[i,o]=await U0.EvmPlatform.chainFromRpc(e),n=a[o];if(n.network!==i)throw new Error(`Network mismatch: ${n.network} != ${i}`);return new Ke(i,o,e,n.contracts)}async*transfer(e,a,i,o,n,u=!1){const g=new f.EvmAddress(e).toString(),T={queue:!1,automatic:!1},w=await n.quoteDeliveryPrice(a.chain,T);u&&(yield n.wrapNative(e,i));const S=U0.EvmPlatform.getTokenImplementation(this.provider,n.tokenAddress);if(await S.allowance(g,this.executorAddress)<i){const G=await S.approve.populateTransaction(this.executorAddress,i);yield n.createUnsignedTx(G,"Ntt.Approve")}const A=["function transfer(address nttManager, uint256 amount, uint16 recipientChain, bytes32 recipientAddress, bytes32 refundAddress, bytes encodedInstructions, (uint256 value, address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint16 dbps, address payee) feeArgs) external payable returns (uint64 msgId)"],I=new L0.Interface(A),C=n.managerAddress,N=f.toChainId(a.chain),R=a.address.toUniversalAddress().toUint8Array(),E=e.toUniversalAddress().toUint8Array(),D=D0.encodeTransceiverInstructions(n.encodeOptions({queue:!1,automatic:!1})),O={value:o.estimatedCost,refundAddress:g,signedQuote:o.signedQuote,instructions:o.relayInstructions},U={dbps:o.referrerFeeDbps,payee:o.referrer.address.toString()},V=I.encodeFunctionData("transfer",[C,i,N,R,E,D,O,U]),z={to:this.executorAddress,data:V,value:o.estimatedCost+w};yield n.createUnsignedTx(z,"NttWithExecutor.transfer")}async estimateMsgValueAndGasLimit(e){return{msgValue:0n,gasLimit:G6[this.network]?.[this.chain]??500000n}}}f.registerProtocol(f._platform,"Ntt",ue);f.registerProtocol(f._platform,"NttWithExecutor",Ke);var be={exports:{}},H6=be.exports,A1;function Z6(){return A1||(A1=1,(function(c){(function(e,a){function i(b,t){if(!b)throw new Error(t||"Assertion failed")}function o(b,t){b.super_=t;var s=function(){};s.prototype=t.prototype,b.prototype=new s,b.prototype.constructor=b}function n(b,t,s){if(n.isBN(b))return b;this.negative=0,this.words=null,this.length=0,this.red=null,b!==null&&((t==="le"||t==="be")&&(s=t,t=10),this._init(b||0,t||10,s||"be"))}typeof e=="object"?e.exports=n:a.BN=n,n.BN=n,n.wordSize=26;var u;try{typeof window<"u"&&typeof window.Buffer<"u"?u=window.Buffer:u=f.requireDist().Buffer}catch{}n.isBN=function(t){return t instanceof n?!0:t!==null&&typeof t=="object"&&t.constructor.wordSize===n.wordSize&&Array.isArray(t.words)},n.max=function(t,s){return t.cmp(s)>0?t:s},n.min=function(t,s){return t.cmp(s)<0?t:s},n.prototype._init=function(t,s,d){if(typeof t=="number")return this._initNumber(t,s,d);if(typeof t=="object")return this._initArray(t,s,d);s==="hex"&&(s=16),i(s===(s|0)&&s>=2&&s<=36),t=t.toString().replace(/\s+/g,"");var l=0;t[0]==="-"&&(l++,this.negative=1),l<t.length&&(s===16?this._parseHex(t,l,d):(this._parseBase(t,s,l),d==="le"&&this._initArray(this.toArray(),s,d)))},n.prototype._initNumber=function(t,s,d){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[t&67108863],this.length=1):t<4503599627370496?(this.words=[t&67108863,t/67108864&67108863],this.length=2):(i(t<9007199254740992),this.words=[t&67108863,t/67108864&67108863,1],this.length=3),d==="le"&&this._initArray(this.toArray(),s,d)},n.prototype._initArray=function(t,s,d){if(i(typeof t.length=="number"),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var l=0;l<this.length;l++)this.words[l]=0;var y,h,v=0;if(d==="be")for(l=t.length-1,y=0;l>=0;l-=3)h=t[l]|t[l-1]<<8|t[l-2]<<16,this.words[y]|=h<<v&67108863,this.words[y+1]=h>>>26-v&67108863,v+=24,v>=26&&(v-=26,y++);else if(d==="le")for(l=0,y=0;l<t.length;l+=3)h=t[l]|t[l+1]<<8|t[l+2]<<16,this.words[y]|=h<<v&67108863,this.words[y+1]=h>>>26-v&67108863,v+=24,v>=26&&(v-=26,y++);return this._strip()};function g(b,t){var s=b.charCodeAt(t);if(s>=48&&s<=57)return s-48;if(s>=65&&s<=70)return s-55;if(s>=97&&s<=102)return s-87;i(!1,"Invalid character in "+b)}function T(b,t,s){var d=g(b,s);return s-1>=t&&(d|=g(b,s-1)<<4),d}n.prototype._parseHex=function(t,s,d){this.length=Math.ceil((t.length-s)/6),this.words=new Array(this.length);for(var l=0;l<this.length;l++)this.words[l]=0;var y=0,h=0,v;if(d==="be")for(l=t.length-1;l>=s;l-=2)v=T(t,s,l)<<y,this.words[h]|=v&67108863,y>=18?(y-=18,h+=1,this.words[h]|=v>>>26):y+=8;else{var m=t.length-s;for(l=m%2===0?s+1:s;l<t.length;l+=2)v=T(t,s,l)<<y,this.words[h]|=v&67108863,y>=18?(y-=18,h+=1,this.words[h]|=v>>>26):y+=8}this._strip()};function w(b,t,s,d){for(var l=0,y=0,h=Math.min(b.length,s),v=t;v<h;v++){var m=b.charCodeAt(v)-48;l*=d,m>=49?y=m-49+10:m>=17?y=m-17+10:y=m,i(m>=0&&y<d,"Invalid character"),l+=y}return l}n.prototype._parseBase=function(t,s,d){this.words=[0],this.length=1;for(var l=0,y=1;y<=67108863;y*=s)l++;l--,y=y/s|0;for(var h=t.length-d,v=h%l,m=Math.min(h,h-v)+d,r=0,p=d;p<m;p+=l)r=w(t,p,p+l,s),this.imuln(y),this.words[0]+r<67108864?this.words[0]+=r:this._iaddn(r);if(v!==0){var x=1;for(r=w(t,p,t.length,s),p=0;p<v;p++)x*=s;this.imuln(x),this.words[0]+r<67108864?this.words[0]+=r:this._iaddn(r)}this._strip()},n.prototype.copy=function(t){t.words=new Array(this.length);for(var s=0;s<this.length;s++)t.words[s]=this.words[s];t.length=this.length,t.negative=this.negative,t.red=this.red};function S(b,t){b.words=t.words,b.length=t.length,b.negative=t.negative,b.red=t.red}if(n.prototype._move=function(t){S(t,this)},n.prototype.clone=function(){var t=new n(null);return this.copy(t),t},n.prototype._expand=function(t){for(;this.length<t;)this.words[this.length++]=0;return this},n.prototype._strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{n.prototype[Symbol.for("nodejs.util.inspect.custom")]=M}catch{n.prototype.inspect=M}else n.prototype.inspect=M;function M(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var A=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],I=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],C=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(t,s){t=t||10,s=s|0||1;var d;if(t===16||t==="hex"){d="";for(var l=0,y=0,h=0;h<this.length;h++){var v=this.words[h],m=((v<<l|y)&16777215).toString(16);y=v>>>24-l&16777215,l+=2,l>=26&&(l-=26,h--),y!==0||h!==this.length-1?d=A[6-m.length]+m+d:d=m+d}for(y!==0&&(d=y.toString(16)+d);d.length%s!==0;)d="0"+d;return this.negative!==0&&(d="-"+d),d}if(t===(t|0)&&t>=2&&t<=36){var r=I[t],p=C[t];d="";var x=this.clone();for(x.negative=0;!x.isZero();){var k=x.modrn(p).toString(t);x=x.idivn(p),x.isZero()?d=k+d:d=A[r-k.length]+k+d}for(this.isZero()&&(d="0"+d);d.length%s!==0;)d="0"+d;return this.negative!==0&&(d="-"+d),d}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var t=this.words[0];return this.length===2?t+=this.words[1]*67108864:this.length===3&&this.words[2]===1?t+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-t:t},n.prototype.toJSON=function(){return this.toString(16,2)},u&&(n.prototype.toBuffer=function(t,s){return this.toArrayLike(u,t,s)}),n.prototype.toArray=function(t,s){return this.toArrayLike(Array,t,s)};var N=function(t,s){return t.allocUnsafe?t.allocUnsafe(s):new t(s)};n.prototype.toArrayLike=function(t,s,d){this._strip();var l=this.byteLength(),y=d||Math.max(1,l);i(l<=y,"byte array longer than desired length"),i(y>0,"Requested array length <= 0");var h=N(t,y),v=s==="le"?"LE":"BE";return this["_toArrayLike"+v](h,l),h},n.prototype._toArrayLikeLE=function(t,s){for(var d=0,l=0,y=0,h=0;y<this.length;y++){var v=this.words[y]<<h|l;t[d++]=v&255,d<t.length&&(t[d++]=v>>8&255),d<t.length&&(t[d++]=v>>16&255),h===6?(d<t.length&&(t[d++]=v>>24&255),l=0,h=0):(l=v>>>24,h+=2)}if(d<t.length)for(t[d++]=l;d<t.length;)t[d++]=0},n.prototype._toArrayLikeBE=function(t,s){for(var d=t.length-1,l=0,y=0,h=0;y<this.length;y++){var v=this.words[y]<<h|l;t[d--]=v&255,d>=0&&(t[d--]=v>>8&255),d>=0&&(t[d--]=v>>16&255),h===6?(d>=0&&(t[d--]=v>>24&255),l=0,h=0):(l=v>>>24,h+=2)}if(d>=0)for(t[d--]=l;d>=0;)t[d--]=0},Math.clz32?n.prototype._countBits=function(t){return 32-Math.clz32(t)}:n.prototype._countBits=function(t){var s=t,d=0;return s>=4096&&(d+=13,s>>>=13),s>=64&&(d+=7,s>>>=7),s>=8&&(d+=4,s>>>=4),s>=2&&(d+=2,s>>>=2),d+s},n.prototype._zeroBits=function(t){if(t===0)return 26;var s=t,d=0;return(s&8191)===0&&(d+=13,s>>>=13),(s&127)===0&&(d+=7,s>>>=7),(s&15)===0&&(d+=4,s>>>=4),(s&3)===0&&(d+=2,s>>>=2),(s&1)===0&&d++,d},n.prototype.bitLength=function(){var t=this.words[this.length-1],s=this._countBits(t);return(this.length-1)*26+s};function R(b){for(var t=new Array(b.bitLength()),s=0;s<t.length;s++){var d=s/26|0,l=s%26;t[s]=b.words[d]>>>l&1}return t}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,s=0;s<this.length;s++){var d=this._zeroBits(this.words[s]);if(t+=d,d!==26)break}return t},n.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},n.prototype.toTwos=function(t){return this.negative!==0?this.abs().inotn(t).iaddn(1):this.clone()},n.prototype.fromTwos=function(t){return this.testn(t-1)?this.notn(t).iaddn(1).ineg():this.clone()},n.prototype.isNeg=function(){return this.negative!==0},n.prototype.neg=function(){return this.clone().ineg()},n.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},n.prototype.iuor=function(t){for(;this.length<t.length;)this.words[this.length++]=0;for(var s=0;s<t.length;s++)this.words[s]=this.words[s]|t.words[s];return this._strip()},n.prototype.ior=function(t){return i((this.negative|t.negative)===0),this.iuor(t)},n.prototype.or=function(t){return this.length>t.length?this.clone().ior(t):t.clone().ior(this)},n.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},n.prototype.iuand=function(t){var s;this.length>t.length?s=t:s=this;for(var d=0;d<s.length;d++)this.words[d]=this.words[d]&t.words[d];return this.length=s.length,this._strip()},n.prototype.iand=function(t){return i((this.negative|t.negative)===0),this.iuand(t)},n.prototype.and=function(t){return this.length>t.length?this.clone().iand(t):t.clone().iand(this)},n.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},n.prototype.iuxor=function(t){var s,d;this.length>t.length?(s=this,d=t):(s=t,d=this);for(var l=0;l<d.length;l++)this.words[l]=s.words[l]^d.words[l];if(this!==s)for(;l<s.length;l++)this.words[l]=s.words[l];return this.length=s.length,this._strip()},n.prototype.ixor=function(t){return i((this.negative|t.negative)===0),this.iuxor(t)},n.prototype.xor=function(t){return this.length>t.length?this.clone().ixor(t):t.clone().ixor(this)},n.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},n.prototype.inotn=function(t){i(typeof t=="number"&&t>=0);var s=Math.ceil(t/26)|0,d=t%26;this._expand(s),d>0&&s--;for(var l=0;l<s;l++)this.words[l]=~this.words[l]&67108863;return d>0&&(this.words[l]=~this.words[l]&67108863>>26-d),this._strip()},n.prototype.notn=function(t){return this.clone().inotn(t)},n.prototype.setn=function(t,s){i(typeof t=="number"&&t>=0);var d=t/26|0,l=t%26;return this._expand(d+1),s?this.words[d]=this.words[d]|1<<l:this.words[d]=this.words[d]&~(1<<l),this._strip()},n.prototype.iadd=function(t){var s;if(this.negative!==0&&t.negative===0)return this.negative=0,s=this.isub(t),this.negative^=1,this._normSign();if(this.negative===0&&t.negative!==0)return t.negative=0,s=this.isub(t),t.negative=1,s._normSign();var d,l;this.length>t.length?(d=this,l=t):(d=t,l=this);for(var y=0,h=0;h<l.length;h++)s=(d.words[h]|0)+(l.words[h]|0)+y,this.words[h]=s&67108863,y=s>>>26;for(;y!==0&&h<d.length;h++)s=(d.words[h]|0)+y,this.words[h]=s&67108863,y=s>>>26;if(this.length=d.length,y!==0)this.words[this.length]=y,this.length++;else if(d!==this)for(;h<d.length;h++)this.words[h]=d.words[h];return this},n.prototype.add=function(t){var s;return t.negative!==0&&this.negative===0?(t.negative=0,s=this.sub(t),t.negative^=1,s):t.negative===0&&this.negative!==0?(this.negative=0,s=t.sub(this),this.negative=1,s):this.length>t.length?this.clone().iadd(t):t.clone().iadd(this)},n.prototype.isub=function(t){if(t.negative!==0){t.negative=0;var s=this.iadd(t);return t.negative=1,s._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var d=this.cmp(t);if(d===0)return this.negative=0,this.length=1,this.words[0]=0,this;var l,y;d>0?(l=this,y=t):(l=t,y=this);for(var h=0,v=0;v<y.length;v++)s=(l.words[v]|0)-(y.words[v]|0)+h,h=s>>26,this.words[v]=s&67108863;for(;h!==0&&v<l.length;v++)s=(l.words[v]|0)+h,h=s>>26,this.words[v]=s&67108863;if(h===0&&v<l.length&&l!==this)for(;v<l.length;v++)this.words[v]=l.words[v];return this.length=Math.max(this.length,v),l!==this&&(this.negative=1),this._strip()},n.prototype.sub=function(t){return this.clone().isub(t)};function E(b,t,s){s.negative=t.negative^b.negative;var d=b.length+t.length|0;s.length=d,d=d-1|0;var l=b.words[0]|0,y=t.words[0]|0,h=l*y,v=h&67108863,m=h/67108864|0;s.words[0]=v;for(var r=1;r<d;r++){for(var p=m>>>26,x=m&67108863,k=Math.min(r,t.length-1),P=Math.max(0,r-b.length+1);P<=k;P++){var F=r-P|0;l=b.words[F]|0,y=t.words[P]|0,h=l*y+x,p+=h/67108864|0,x=h&67108863}s.words[r]=x|0,m=p|0}return m!==0?s.words[r]=m|0:s.length--,s._strip()}var D=function(t,s,d){var l=t.words,y=s.words,h=d.words,v=0,m,r,p,x=l[0]|0,k=x&8191,P=x>>>13,F=l[1]|0,q=F&8191,W=F>>>13,$0=l[2]|0,Z=$0&8191,Y=$0>>>13,Qe=l[3]|0,J=Qe&8191,X=Qe>>>13,Ge=l[4]|0,e0=Ge&8191,t0=Ge>>>13,He=l[5]|0,a0=He&8191,n0=He>>>13,Ze=l[6]|0,i0=Ze&8191,s0=Ze>>>13,Ye=l[7]|0,r0=Ye&8191,o0=Ye>>>13,Je=l[8]|0,f0=Je&8191,d0=Je>>>13,Xe=l[9]|0,c0=Xe&8191,b0=Xe>>>13,e1=y[0]|0,u0=e1&8191,l0=e1>>>13,t1=y[1]|0,m0=t1&8191,p0=t1>>>13,a1=y[2]|0,y0=a1&8191,h0=a1>>>13,n1=y[3]|0,g0=n1&8191,v0=n1>>>13,i1=y[4]|0,T0=i1&8191,w0=i1>>>13,s1=y[5]|0,M0=s1&8191,S0=s1>>>13,r1=y[6]|0,A0=r1&8191,I0=r1>>>13,o1=y[7]|0,x0=o1&8191,k0=o1>>>13,f1=y[8]|0,P0=f1&8191,C0=f1>>>13,d1=y[9]|0,R0=d1&8191,_0=d1>>>13;d.negative=t.negative^s.negative,d.length=19,m=Math.imul(k,u0),r=Math.imul(k,l0),r=r+Math.imul(P,u0)|0,p=Math.imul(P,l0);var he=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(he>>>26)|0,he&=67108863,m=Math.imul(q,u0),r=Math.imul(q,l0),r=r+Math.imul(W,u0)|0,p=Math.imul(W,l0),m=m+Math.imul(k,m0)|0,r=r+Math.imul(k,p0)|0,r=r+Math.imul(P,m0)|0,p=p+Math.imul(P,p0)|0;var ge=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(ge>>>26)|0,ge&=67108863,m=Math.imul(Z,u0),r=Math.imul(Z,l0),r=r+Math.imul(Y,u0)|0,p=Math.imul(Y,l0),m=m+Math.imul(q,m0)|0,r=r+Math.imul(q,p0)|0,r=r+Math.imul(W,m0)|0,p=p+Math.imul(W,p0)|0,m=m+Math.imul(k,y0)|0,r=r+Math.imul(k,h0)|0,r=r+Math.imul(P,y0)|0,p=p+Math.imul(P,h0)|0;var ve=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(ve>>>26)|0,ve&=67108863,m=Math.imul(J,u0),r=Math.imul(J,l0),r=r+Math.imul(X,u0)|0,p=Math.imul(X,l0),m=m+Math.imul(Z,m0)|0,r=r+Math.imul(Z,p0)|0,r=r+Math.imul(Y,m0)|0,p=p+Math.imul(Y,p0)|0,m=m+Math.imul(q,y0)|0,r=r+Math.imul(q,h0)|0,r=r+Math.imul(W,y0)|0,p=p+Math.imul(W,h0)|0,m=m+Math.imul(k,g0)|0,r=r+Math.imul(k,v0)|0,r=r+Math.imul(P,g0)|0,p=p+Math.imul(P,v0)|0;var Te=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(Te>>>26)|0,Te&=67108863,m=Math.imul(e0,u0),r=Math.imul(e0,l0),r=r+Math.imul(t0,u0)|0,p=Math.imul(t0,l0),m=m+Math.imul(J,m0)|0,r=r+Math.imul(J,p0)|0,r=r+Math.imul(X,m0)|0,p=p+Math.imul(X,p0)|0,m=m+Math.imul(Z,y0)|0,r=r+Math.imul(Z,h0)|0,r=r+Math.imul(Y,y0)|0,p=p+Math.imul(Y,h0)|0,m=m+Math.imul(q,g0)|0,r=r+Math.imul(q,v0)|0,r=r+Math.imul(W,g0)|0,p=p+Math.imul(W,v0)|0,m=m+Math.imul(k,T0)|0,r=r+Math.imul(k,w0)|0,r=r+Math.imul(P,T0)|0,p=p+Math.imul(P,w0)|0;var we=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(we>>>26)|0,we&=67108863,m=Math.imul(a0,u0),r=Math.imul(a0,l0),r=r+Math.imul(n0,u0)|0,p=Math.imul(n0,l0),m=m+Math.imul(e0,m0)|0,r=r+Math.imul(e0,p0)|0,r=r+Math.imul(t0,m0)|0,p=p+Math.imul(t0,p0)|0,m=m+Math.imul(J,y0)|0,r=r+Math.imul(J,h0)|0,r=r+Math.imul(X,y0)|0,p=p+Math.imul(X,h0)|0,m=m+Math.imul(Z,g0)|0,r=r+Math.imul(Z,v0)|0,r=r+Math.imul(Y,g0)|0,p=p+Math.imul(Y,v0)|0,m=m+Math.imul(q,T0)|0,r=r+Math.imul(q,w0)|0,r=r+Math.imul(W,T0)|0,p=p+Math.imul(W,w0)|0,m=m+Math.imul(k,M0)|0,r=r+Math.imul(k,S0)|0,r=r+Math.imul(P,M0)|0,p=p+Math.imul(P,S0)|0;var Me=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(Me>>>26)|0,Me&=67108863,m=Math.imul(i0,u0),r=Math.imul(i0,l0),r=r+Math.imul(s0,u0)|0,p=Math.imul(s0,l0),m=m+Math.imul(a0,m0)|0,r=r+Math.imul(a0,p0)|0,r=r+Math.imul(n0,m0)|0,p=p+Math.imul(n0,p0)|0,m=m+Math.imul(e0,y0)|0,r=r+Math.imul(e0,h0)|0,r=r+Math.imul(t0,y0)|0,p=p+Math.imul(t0,h0)|0,m=m+Math.imul(J,g0)|0,r=r+Math.imul(J,v0)|0,r=r+Math.imul(X,g0)|0,p=p+Math.imul(X,v0)|0,m=m+Math.imul(Z,T0)|0,r=r+Math.imul(Z,w0)|0,r=r+Math.imul(Y,T0)|0,p=p+Math.imul(Y,w0)|0,m=m+Math.imul(q,M0)|0,r=r+Math.imul(q,S0)|0,r=r+Math.imul(W,M0)|0,p=p+Math.imul(W,S0)|0,m=m+Math.imul(k,A0)|0,r=r+Math.imul(k,I0)|0,r=r+Math.imul(P,A0)|0,p=p+Math.imul(P,I0)|0;var Se=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(Se>>>26)|0,Se&=67108863,m=Math.imul(r0,u0),r=Math.imul(r0,l0),r=r+Math.imul(o0,u0)|0,p=Math.imul(o0,l0),m=m+Math.imul(i0,m0)|0,r=r+Math.imul(i0,p0)|0,r=r+Math.imul(s0,m0)|0,p=p+Math.imul(s0,p0)|0,m=m+Math.imul(a0,y0)|0,r=r+Math.imul(a0,h0)|0,r=r+Math.imul(n0,y0)|0,p=p+Math.imul(n0,h0)|0,m=m+Math.imul(e0,g0)|0,r=r+Math.imul(e0,v0)|0,r=r+Math.imul(t0,g0)|0,p=p+Math.imul(t0,v0)|0,m=m+Math.imul(J,T0)|0,r=r+Math.imul(J,w0)|0,r=r+Math.imul(X,T0)|0,p=p+Math.imul(X,w0)|0,m=m+Math.imul(Z,M0)|0,r=r+Math.imul(Z,S0)|0,r=r+Math.imul(Y,M0)|0,p=p+Math.imul(Y,S0)|0,m=m+Math.imul(q,A0)|0,r=r+Math.imul(q,I0)|0,r=r+Math.imul(W,A0)|0,p=p+Math.imul(W,I0)|0,m=m+Math.imul(k,x0)|0,r=r+Math.imul(k,k0)|0,r=r+Math.imul(P,x0)|0,p=p+Math.imul(P,k0)|0;var Ae=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,m=Math.imul(f0,u0),r=Math.imul(f0,l0),r=r+Math.imul(d0,u0)|0,p=Math.imul(d0,l0),m=m+Math.imul(r0,m0)|0,r=r+Math.imul(r0,p0)|0,r=r+Math.imul(o0,m0)|0,p=p+Math.imul(o0,p0)|0,m=m+Math.imul(i0,y0)|0,r=r+Math.imul(i0,h0)|0,r=r+Math.imul(s0,y0)|0,p=p+Math.imul(s0,h0)|0,m=m+Math.imul(a0,g0)|0,r=r+Math.imul(a0,v0)|0,r=r+Math.imul(n0,g0)|0,p=p+Math.imul(n0,v0)|0,m=m+Math.imul(e0,T0)|0,r=r+Math.imul(e0,w0)|0,r=r+Math.imul(t0,T0)|0,p=p+Math.imul(t0,w0)|0,m=m+Math.imul(J,M0)|0,r=r+Math.imul(J,S0)|0,r=r+Math.imul(X,M0)|0,p=p+Math.imul(X,S0)|0,m=m+Math.imul(Z,A0)|0,r=r+Math.imul(Z,I0)|0,r=r+Math.imul(Y,A0)|0,p=p+Math.imul(Y,I0)|0,m=m+Math.imul(q,x0)|0,r=r+Math.imul(q,k0)|0,r=r+Math.imul(W,x0)|0,p=p+Math.imul(W,k0)|0,m=m+Math.imul(k,P0)|0,r=r+Math.imul(k,C0)|0,r=r+Math.imul(P,P0)|0,p=p+Math.imul(P,C0)|0;var Ie=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,m=Math.imul(c0,u0),r=Math.imul(c0,l0),r=r+Math.imul(b0,u0)|0,p=Math.imul(b0,l0),m=m+Math.imul(f0,m0)|0,r=r+Math.imul(f0,p0)|0,r=r+Math.imul(d0,m0)|0,p=p+Math.imul(d0,p0)|0,m=m+Math.imul(r0,y0)|0,r=r+Math.imul(r0,h0)|0,r=r+Math.imul(o0,y0)|0,p=p+Math.imul(o0,h0)|0,m=m+Math.imul(i0,g0)|0,r=r+Math.imul(i0,v0)|0,r=r+Math.imul(s0,g0)|0,p=p+Math.imul(s0,v0)|0,m=m+Math.imul(a0,T0)|0,r=r+Math.imul(a0,w0)|0,r=r+Math.imul(n0,T0)|0,p=p+Math.imul(n0,w0)|0,m=m+Math.imul(e0,M0)|0,r=r+Math.imul(e0,S0)|0,r=r+Math.imul(t0,M0)|0,p=p+Math.imul(t0,S0)|0,m=m+Math.imul(J,A0)|0,r=r+Math.imul(J,I0)|0,r=r+Math.imul(X,A0)|0,p=p+Math.imul(X,I0)|0,m=m+Math.imul(Z,x0)|0,r=r+Math.imul(Z,k0)|0,r=r+Math.imul(Y,x0)|0,p=p+Math.imul(Y,k0)|0,m=m+Math.imul(q,P0)|0,r=r+Math.imul(q,C0)|0,r=r+Math.imul(W,P0)|0,p=p+Math.imul(W,C0)|0,m=m+Math.imul(k,R0)|0,r=r+Math.imul(k,_0)|0,r=r+Math.imul(P,R0)|0,p=p+Math.imul(P,_0)|0;var xe=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(xe>>>26)|0,xe&=67108863,m=Math.imul(c0,m0),r=Math.imul(c0,p0),r=r+Math.imul(b0,m0)|0,p=Math.imul(b0,p0),m=m+Math.imul(f0,y0)|0,r=r+Math.imul(f0,h0)|0,r=r+Math.imul(d0,y0)|0,p=p+Math.imul(d0,h0)|0,m=m+Math.imul(r0,g0)|0,r=r+Math.imul(r0,v0)|0,r=r+Math.imul(o0,g0)|0,p=p+Math.imul(o0,v0)|0,m=m+Math.imul(i0,T0)|0,r=r+Math.imul(i0,w0)|0,r=r+Math.imul(s0,T0)|0,p=p+Math.imul(s0,w0)|0,m=m+Math.imul(a0,M0)|0,r=r+Math.imul(a0,S0)|0,r=r+Math.imul(n0,M0)|0,p=p+Math.imul(n0,S0)|0,m=m+Math.imul(e0,A0)|0,r=r+Math.imul(e0,I0)|0,r=r+Math.imul(t0,A0)|0,p=p+Math.imul(t0,I0)|0,m=m+Math.imul(J,x0)|0,r=r+Math.imul(J,k0)|0,r=r+Math.imul(X,x0)|0,p=p+Math.imul(X,k0)|0,m=m+Math.imul(Z,P0)|0,r=r+Math.imul(Z,C0)|0,r=r+Math.imul(Y,P0)|0,p=p+Math.imul(Y,C0)|0,m=m+Math.imul(q,R0)|0,r=r+Math.imul(q,_0)|0,r=r+Math.imul(W,R0)|0,p=p+Math.imul(W,_0)|0;var ke=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(ke>>>26)|0,ke&=67108863,m=Math.imul(c0,y0),r=Math.imul(c0,h0),r=r+Math.imul(b0,y0)|0,p=Math.imul(b0,h0),m=m+Math.imul(f0,g0)|0,r=r+Math.imul(f0,v0)|0,r=r+Math.imul(d0,g0)|0,p=p+Math.imul(d0,v0)|0,m=m+Math.imul(r0,T0)|0,r=r+Math.imul(r0,w0)|0,r=r+Math.imul(o0,T0)|0,p=p+Math.imul(o0,w0)|0,m=m+Math.imul(i0,M0)|0,r=r+Math.imul(i0,S0)|0,r=r+Math.imul(s0,M0)|0,p=p+Math.imul(s0,S0)|0,m=m+Math.imul(a0,A0)|0,r=r+Math.imul(a0,I0)|0,r=r+Math.imul(n0,A0)|0,p=p+Math.imul(n0,I0)|0,m=m+Math.imul(e0,x0)|0,r=r+Math.imul(e0,k0)|0,r=r+Math.imul(t0,x0)|0,p=p+Math.imul(t0,k0)|0,m=m+Math.imul(J,P0)|0,r=r+Math.imul(J,C0)|0,r=r+Math.imul(X,P0)|0,p=p+Math.imul(X,C0)|0,m=m+Math.imul(Z,R0)|0,r=r+Math.imul(Z,_0)|0,r=r+Math.imul(Y,R0)|0,p=p+Math.imul(Y,_0)|0;var Pe=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(Pe>>>26)|0,Pe&=67108863,m=Math.imul(c0,g0),r=Math.imul(c0,v0),r=r+Math.imul(b0,g0)|0,p=Math.imul(b0,v0),m=m+Math.imul(f0,T0)|0,r=r+Math.imul(f0,w0)|0,r=r+Math.imul(d0,T0)|0,p=p+Math.imul(d0,w0)|0,m=m+Math.imul(r0,M0)|0,r=r+Math.imul(r0,S0)|0,r=r+Math.imul(o0,M0)|0,p=p+Math.imul(o0,S0)|0,m=m+Math.imul(i0,A0)|0,r=r+Math.imul(i0,I0)|0,r=r+Math.imul(s0,A0)|0,p=p+Math.imul(s0,I0)|0,m=m+Math.imul(a0,x0)|0,r=r+Math.imul(a0,k0)|0,r=r+Math.imul(n0,x0)|0,p=p+Math.imul(n0,k0)|0,m=m+Math.imul(e0,P0)|0,r=r+Math.imul(e0,C0)|0,r=r+Math.imul(t0,P0)|0,p=p+Math.imul(t0,C0)|0,m=m+Math.imul(J,R0)|0,r=r+Math.imul(J,_0)|0,r=r+Math.imul(X,R0)|0,p=p+Math.imul(X,_0)|0;var Ce=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,m=Math.imul(c0,T0),r=Math.imul(c0,w0),r=r+Math.imul(b0,T0)|0,p=Math.imul(b0,w0),m=m+Math.imul(f0,M0)|0,r=r+Math.imul(f0,S0)|0,r=r+Math.imul(d0,M0)|0,p=p+Math.imul(d0,S0)|0,m=m+Math.imul(r0,A0)|0,r=r+Math.imul(r0,I0)|0,r=r+Math.imul(o0,A0)|0,p=p+Math.imul(o0,I0)|0,m=m+Math.imul(i0,x0)|0,r=r+Math.imul(i0,k0)|0,r=r+Math.imul(s0,x0)|0,p=p+Math.imul(s0,k0)|0,m=m+Math.imul(a0,P0)|0,r=r+Math.imul(a0,C0)|0,r=r+Math.imul(n0,P0)|0,p=p+Math.imul(n0,C0)|0,m=m+Math.imul(e0,R0)|0,r=r+Math.imul(e0,_0)|0,r=r+Math.imul(t0,R0)|0,p=p+Math.imul(t0,_0)|0;var Re=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(Re>>>26)|0,Re&=67108863,m=Math.imul(c0,M0),r=Math.imul(c0,S0),r=r+Math.imul(b0,M0)|0,p=Math.imul(b0,S0),m=m+Math.imul(f0,A0)|0,r=r+Math.imul(f0,I0)|0,r=r+Math.imul(d0,A0)|0,p=p+Math.imul(d0,I0)|0,m=m+Math.imul(r0,x0)|0,r=r+Math.imul(r0,k0)|0,r=r+Math.imul(o0,x0)|0,p=p+Math.imul(o0,k0)|0,m=m+Math.imul(i0,P0)|0,r=r+Math.imul(i0,C0)|0,r=r+Math.imul(s0,P0)|0,p=p+Math.imul(s0,C0)|0,m=m+Math.imul(a0,R0)|0,r=r+Math.imul(a0,_0)|0,r=r+Math.imul(n0,R0)|0,p=p+Math.imul(n0,_0)|0;var _e=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(_e>>>26)|0,_e&=67108863,m=Math.imul(c0,A0),r=Math.imul(c0,I0),r=r+Math.imul(b0,A0)|0,p=Math.imul(b0,I0),m=m+Math.imul(f0,x0)|0,r=r+Math.imul(f0,k0)|0,r=r+Math.imul(d0,x0)|0,p=p+Math.imul(d0,k0)|0,m=m+Math.imul(r0,P0)|0,r=r+Math.imul(r0,C0)|0,r=r+Math.imul(o0,P0)|0,p=p+Math.imul(o0,C0)|0,m=m+Math.imul(i0,R0)|0,r=r+Math.imul(i0,_0)|0,r=r+Math.imul(s0,R0)|0,p=p+Math.imul(s0,_0)|0;var Ee=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,m=Math.imul(c0,x0),r=Math.imul(c0,k0),r=r+Math.imul(b0,x0)|0,p=Math.imul(b0,k0),m=m+Math.imul(f0,P0)|0,r=r+Math.imul(f0,C0)|0,r=r+Math.imul(d0,P0)|0,p=p+Math.imul(d0,C0)|0,m=m+Math.imul(r0,R0)|0,r=r+Math.imul(r0,_0)|0,r=r+Math.imul(o0,R0)|0,p=p+Math.imul(o0,_0)|0;var Ne=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,m=Math.imul(c0,P0),r=Math.imul(c0,C0),r=r+Math.imul(b0,P0)|0,p=Math.imul(b0,C0),m=m+Math.imul(f0,R0)|0,r=r+Math.imul(f0,_0)|0,r=r+Math.imul(d0,R0)|0,p=p+Math.imul(d0,_0)|0;var Le=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(Le>>>26)|0,Le&=67108863,m=Math.imul(c0,R0),r=Math.imul(c0,_0),r=r+Math.imul(b0,R0)|0,p=Math.imul(b0,_0);var Oe=(v+m|0)+((r&8191)<<13)|0;return v=(p+(r>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,h[0]=he,h[1]=ge,h[2]=ve,h[3]=Te,h[4]=we,h[5]=Me,h[6]=Se,h[7]=Ae,h[8]=Ie,h[9]=xe,h[10]=ke,h[11]=Pe,h[12]=Ce,h[13]=Re,h[14]=_e,h[15]=Ee,h[16]=Ne,h[17]=Le,h[18]=Oe,v!==0&&(h[19]=v,d.length++),d};Math.imul||(D=E);function O(b,t,s){s.negative=t.negative^b.negative,s.length=b.length+t.length;for(var d=0,l=0,y=0;y<s.length-1;y++){var h=l;l=0;for(var v=d&67108863,m=Math.min(y,t.length-1),r=Math.max(0,y-b.length+1);r<=m;r++){var p=y-r,x=b.words[p]|0,k=t.words[r]|0,P=x*k,F=P&67108863;h=h+(P/67108864|0)|0,F=F+v|0,v=F&67108863,h=h+(F>>>26)|0,l+=h>>>26,h&=67108863}s.words[y]=v,d=h,h=l}return d!==0?s.words[y]=d:s.length--,s._strip()}function U(b,t,s){return O(b,t,s)}n.prototype.mulTo=function(t,s){var d,l=this.length+t.length;return this.length===10&&t.length===10?d=D(this,t,s):l<63?d=E(this,t,s):l<1024?d=O(this,t,s):d=U(this,t,s),d},n.prototype.mul=function(t){var s=new n(null);return s.words=new Array(this.length+t.length),this.mulTo(t,s)},n.prototype.mulf=function(t){var s=new n(null);return s.words=new Array(this.length+t.length),U(this,t,s)},n.prototype.imul=function(t){return this.clone().mulTo(t,this)},n.prototype.imuln=function(t){var s=t<0;s&&(t=-t),i(typeof t=="number"),i(t<67108864);for(var d=0,l=0;l<this.length;l++){var y=(this.words[l]|0)*t,h=(y&67108863)+(d&67108863);d>>=26,d+=y/67108864|0,d+=h>>>26,this.words[l]=h&67108863}return d!==0&&(this.words[l]=d,this.length++),s?this.ineg():this},n.prototype.muln=function(t){return this.clone().imuln(t)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(t){var s=R(t);if(s.length===0)return new n(1);for(var d=this,l=0;l<s.length&&s[l]===0;l++,d=d.sqr());if(++l<s.length)for(var y=d.sqr();l<s.length;l++,y=y.sqr())s[l]!==0&&(d=d.mul(y));return d},n.prototype.iushln=function(t){i(typeof t=="number"&&t>=0);var s=t%26,d=(t-s)/26,l=67108863>>>26-s<<26-s,y;if(s!==0){var h=0;for(y=0;y<this.length;y++){var v=this.words[y]&l,m=(this.words[y]|0)-v<<s;this.words[y]=m|h,h=v>>>26-s}h&&(this.words[y]=h,this.length++)}if(d!==0){for(y=this.length-1;y>=0;y--)this.words[y+d]=this.words[y];for(y=0;y<d;y++)this.words[y]=0;this.length+=d}return this._strip()},n.prototype.ishln=function(t){return i(this.negative===0),this.iushln(t)},n.prototype.iushrn=function(t,s,d){i(typeof t=="number"&&t>=0);var l;s?l=(s-s%26)/26:l=0;var y=t%26,h=Math.min((t-y)/26,this.length),v=67108863^67108863>>>y<<y,m=d;if(l-=h,l=Math.max(0,l),m){for(var r=0;r<h;r++)m.words[r]=this.words[r];m.length=h}if(h!==0)if(this.length>h)for(this.length-=h,r=0;r<this.length;r++)this.words[r]=this.words[r+h];else this.words[0]=0,this.length=1;var p=0;for(r=this.length-1;r>=0&&(p!==0||r>=l);r--){var x=this.words[r]|0;this.words[r]=p<<26-y|x>>>y,p=x&v}return m&&p!==0&&(m.words[m.length++]=p),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},n.prototype.ishrn=function(t,s,d){return i(this.negative===0),this.iushrn(t,s,d)},n.prototype.shln=function(t){return this.clone().ishln(t)},n.prototype.ushln=function(t){return this.clone().iushln(t)},n.prototype.shrn=function(t){return this.clone().ishrn(t)},n.prototype.ushrn=function(t){return this.clone().iushrn(t)},n.prototype.testn=function(t){i(typeof t=="number"&&t>=0);var s=t%26,d=(t-s)/26,l=1<<s;if(this.length<=d)return!1;var y=this.words[d];return!!(y&l)},n.prototype.imaskn=function(t){i(typeof t=="number"&&t>=0);var s=t%26,d=(t-s)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=d)return this;if(s!==0&&d++,this.length=Math.min(d,this.length),s!==0){var l=67108863^67108863>>>s<<s;this.words[this.length-1]&=l}return this._strip()},n.prototype.maskn=function(t){return this.clone().imaskn(t)},n.prototype.iaddn=function(t){return i(typeof t=="number"),i(t<67108864),t<0?this.isubn(-t):this.negative!==0?this.length===1&&(this.words[0]|0)<=t?(this.words[0]=t-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(t),this.negative=1,this):this._iaddn(t)},n.prototype._iaddn=function(t){this.words[0]+=t;for(var s=0;s<this.length&&this.words[s]>=67108864;s++)this.words[s]-=67108864,s===this.length-1?this.words[s+1]=1:this.words[s+1]++;return this.length=Math.max(this.length,s+1),this},n.prototype.isubn=function(t){if(i(typeof t=="number"),i(t<67108864),t<0)return this.iaddn(-t);if(this.negative!==0)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var s=0;s<this.length&&this.words[s]<0;s++)this.words[s]+=67108864,this.words[s+1]-=1;return this._strip()},n.prototype.addn=function(t){return this.clone().iaddn(t)},n.prototype.subn=function(t){return this.clone().isubn(t)},n.prototype.iabs=function(){return this.negative=0,this},n.prototype.abs=function(){return this.clone().iabs()},n.prototype._ishlnsubmul=function(t,s,d){var l=t.length+d,y;this._expand(l);var h,v=0;for(y=0;y<t.length;y++){h=(this.words[y+d]|0)+v;var m=(t.words[y]|0)*s;h-=m&67108863,v=(h>>26)-(m/67108864|0),this.words[y+d]=h&67108863}for(;y<this.length-d;y++)h=(this.words[y+d]|0)+v,v=h>>26,this.words[y+d]=h&67108863;if(v===0)return this._strip();for(i(v===-1),v=0,y=0;y<this.length;y++)h=-(this.words[y]|0)+v,v=h>>26,this.words[y]=h&67108863;return this.negative=1,this._strip()},n.prototype._wordDiv=function(t,s){var d=this.length-t.length,l=this.clone(),y=t,h=y.words[y.length-1]|0,v=this._countBits(h);d=26-v,d!==0&&(y=y.ushln(d),l.iushln(d),h=y.words[y.length-1]|0);var m=l.length-y.length,r;if(s!=="mod"){r=new n(null),r.length=m+1,r.words=new Array(r.length);for(var p=0;p<r.length;p++)r.words[p]=0}var x=l.clone()._ishlnsubmul(y,1,m);x.negative===0&&(l=x,r&&(r.words[m]=1));for(var k=m-1;k>=0;k--){var P=(l.words[y.length+k]|0)*67108864+(l.words[y.length+k-1]|0);for(P=Math.min(P/h|0,67108863),l._ishlnsubmul(y,P,k);l.negative!==0;)P--,l.negative=0,l._ishlnsubmul(y,1,k),l.isZero()||(l.negative^=1);r&&(r.words[k]=P)}return r&&r._strip(),l._strip(),s!=="div"&&d!==0&&l.iushrn(d),{div:r||null,mod:l}},n.prototype.divmod=function(t,s,d){if(i(!t.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var l,y,h;return this.negative!==0&&t.negative===0?(h=this.neg().divmod(t,s),s!=="mod"&&(l=h.div.neg()),s!=="div"&&(y=h.mod.neg(),d&&y.negative!==0&&y.iadd(t)),{div:l,mod:y}):this.negative===0&&t.negative!==0?(h=this.divmod(t.neg(),s),s!=="mod"&&(l=h.div.neg()),{div:l,mod:h.mod}):(this.negative&t.negative)!==0?(h=this.neg().divmod(t.neg(),s),s!=="div"&&(y=h.mod.neg(),d&&y.negative!==0&&y.isub(t)),{div:h.div,mod:y}):t.length>this.length||this.cmp(t)<0?{div:new n(0),mod:this}:t.length===1?s==="div"?{div:this.divn(t.words[0]),mod:null}:s==="mod"?{div:null,mod:new n(this.modrn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new n(this.modrn(t.words[0]))}:this._wordDiv(t,s)},n.prototype.div=function(t){return this.divmod(t,"div",!1).div},n.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},n.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},n.prototype.divRound=function(t){var s=this.divmod(t);if(s.mod.isZero())return s.div;var d=s.div.negative!==0?s.mod.isub(t):s.mod,l=t.ushrn(1),y=t.andln(1),h=d.cmp(l);return h<0||y===1&&h===0?s.div:s.div.negative!==0?s.div.isubn(1):s.div.iaddn(1)},n.prototype.modrn=function(t){var s=t<0;s&&(t=-t),i(t<=67108863);for(var d=(1<<26)%t,l=0,y=this.length-1;y>=0;y--)l=(d*l+(this.words[y]|0))%t;return s?-l:l},n.prototype.modn=function(t){return this.modrn(t)},n.prototype.idivn=function(t){var s=t<0;s&&(t=-t),i(t<=67108863);for(var d=0,l=this.length-1;l>=0;l--){var y=(this.words[l]|0)+d*67108864;this.words[l]=y/t|0,d=y%t}return this._strip(),s?this.ineg():this},n.prototype.divn=function(t){return this.clone().idivn(t)},n.prototype.egcd=function(t){i(t.negative===0),i(!t.isZero());var s=this,d=t.clone();s.negative!==0?s=s.umod(t):s=s.clone();for(var l=new n(1),y=new n(0),h=new n(0),v=new n(1),m=0;s.isEven()&&d.isEven();)s.iushrn(1),d.iushrn(1),++m;for(var r=d.clone(),p=s.clone();!s.isZero();){for(var x=0,k=1;(s.words[0]&k)===0&&x<26;++x,k<<=1);if(x>0)for(s.iushrn(x);x-- >0;)(l.isOdd()||y.isOdd())&&(l.iadd(r),y.isub(p)),l.iushrn(1),y.iushrn(1);for(var P=0,F=1;(d.words[0]&F)===0&&P<26;++P,F<<=1);if(P>0)for(d.iushrn(P);P-- >0;)(h.isOdd()||v.isOdd())&&(h.iadd(r),v.isub(p)),h.iushrn(1),v.iushrn(1);s.cmp(d)>=0?(s.isub(d),l.isub(h),y.isub(v)):(d.isub(s),h.isub(l),v.isub(y))}return{a:h,b:v,gcd:d.iushln(m)}},n.prototype._invmp=function(t){i(t.negative===0),i(!t.isZero());var s=this,d=t.clone();s.negative!==0?s=s.umod(t):s=s.clone();for(var l=new n(1),y=new n(0),h=d.clone();s.cmpn(1)>0&&d.cmpn(1)>0;){for(var v=0,m=1;(s.words[0]&m)===0&&v<26;++v,m<<=1);if(v>0)for(s.iushrn(v);v-- >0;)l.isOdd()&&l.iadd(h),l.iushrn(1);for(var r=0,p=1;(d.words[0]&p)===0&&r<26;++r,p<<=1);if(r>0)for(d.iushrn(r);r-- >0;)y.isOdd()&&y.iadd(h),y.iushrn(1);s.cmp(d)>=0?(s.isub(d),l.isub(y)):(d.isub(s),y.isub(l))}var x;return s.cmpn(1)===0?x=l:x=y,x.cmpn(0)<0&&x.iadd(t),x},n.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var s=this.clone(),d=t.clone();s.negative=0,d.negative=0;for(var l=0;s.isEven()&&d.isEven();l++)s.iushrn(1),d.iushrn(1);do{for(;s.isEven();)s.iushrn(1);for(;d.isEven();)d.iushrn(1);var y=s.cmp(d);if(y<0){var h=s;s=d,d=h}else if(y===0||d.cmpn(1)===0)break;s.isub(d)}while(!0);return d.iushln(l)},n.prototype.invm=function(t){return this.egcd(t).a.umod(t)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(t){return this.words[0]&t},n.prototype.bincn=function(t){i(typeof t=="number");var s=t%26,d=(t-s)/26,l=1<<s;if(this.length<=d)return this._expand(d+1),this.words[d]|=l,this;for(var y=l,h=d;y!==0&&h<this.length;h++){var v=this.words[h]|0;v+=y,y=v>>>26,v&=67108863,this.words[h]=v}return y!==0&&(this.words[h]=y,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(t){var s=t<0;if(this.negative!==0&&!s)return-1;if(this.negative===0&&s)return 1;this._strip();var d;if(this.length>1)d=1;else{s&&(t=-t),i(t<=67108863,"Number is too big");var l=this.words[0]|0;d=l===t?0:l<t?-1:1}return this.negative!==0?-d|0:d},n.prototype.cmp=function(t){if(this.negative!==0&&t.negative===0)return-1;if(this.negative===0&&t.negative!==0)return 1;var s=this.ucmp(t);return this.negative!==0?-s|0:s},n.prototype.ucmp=function(t){if(this.length>t.length)return 1;if(this.length<t.length)return-1;for(var s=0,d=this.length-1;d>=0;d--){var l=this.words[d]|0,y=t.words[d]|0;if(l!==y){l<y?s=-1:l>y&&(s=1);break}}return s},n.prototype.gtn=function(t){return this.cmpn(t)===1},n.prototype.gt=function(t){return this.cmp(t)===1},n.prototype.gten=function(t){return this.cmpn(t)>=0},n.prototype.gte=function(t){return this.cmp(t)>=0},n.prototype.ltn=function(t){return this.cmpn(t)===-1},n.prototype.lt=function(t){return this.cmp(t)===-1},n.prototype.lten=function(t){return this.cmpn(t)<=0},n.prototype.lte=function(t){return this.cmp(t)<=0},n.prototype.eqn=function(t){return this.cmpn(t)===0},n.prototype.eq=function(t){return this.cmp(t)===0},n.red=function(t){return new L(t)},n.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),t.convertTo(this)._forceRed(t)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(t){return this.red=t,this},n.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},n.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},n.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},n.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},n.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},n.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},n.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},n.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var V={k256:null,p224:null,p192:null,p25519:null};function z(b,t){this.name=b,this.p=new n(t,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}z.prototype._tmp=function(){var t=new n(null);return t.words=new Array(Math.ceil(this.n/13)),t},z.prototype.ireduce=function(t){var s=t,d;do this.split(s,this.tmp),s=this.imulK(s),s=s.iadd(this.tmp),d=s.bitLength();while(d>this.n);var l=d<this.n?-1:s.ucmp(this.p);return l===0?(s.words[0]=0,s.length=1):l>0?s.isub(this.p):s.strip!==void 0?s.strip():s._strip(),s},z.prototype.split=function(t,s){t.iushrn(this.n,0,s)},z.prototype.imulK=function(t){return t.imul(this.k)};function G(){z.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}o(G,z),G.prototype.split=function(t,s){for(var d=4194303,l=Math.min(t.length,9),y=0;y<l;y++)s.words[y]=t.words[y];if(s.length=l,t.length<=9){t.words[0]=0,t.length=1;return}var h=t.words[9];for(s.words[s.length++]=h&d,y=10;y<t.length;y++){var v=t.words[y]|0;t.words[y-10]=(v&d)<<4|h>>>22,h=v}h>>>=22,t.words[y-10]=h,h===0&&t.length>10?t.length-=10:t.length-=9},G.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var s=0,d=0;d<t.length;d++){var l=t.words[d]|0;s+=l*977,t.words[d]=s&67108863,s=l*64+(s/67108864|0)}return t.words[t.length-1]===0&&(t.length--,t.words[t.length-1]===0&&t.length--),t};function O0(){z.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}o(O0,z);function N0(){z.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}o(N0,z);function H(){z.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}o(H,z),H.prototype.imulK=function(t){for(var s=0,d=0;d<t.length;d++){var l=(t.words[d]|0)*19+s,y=l&67108863;l>>>=26,t.words[d]=y,s=l}return s!==0&&(t.words[t.length++]=s),t},n._prime=function(t){if(V[t])return V[t];var s;if(t==="k256")s=new G;else if(t==="p224")s=new O0;else if(t==="p192")s=new N0;else if(t==="p25519")s=new H;else throw new Error("Unknown prime "+t);return V[t]=s,s};function L(b){if(typeof b=="string"){var t=n._prime(b);this.m=t.p,this.prime=t}else i(b.gtn(1),"modulus must be greater than 1"),this.m=b,this.prime=null}L.prototype._verify1=function(t){i(t.negative===0,"red works only with positives"),i(t.red,"red works only with red numbers")},L.prototype._verify2=function(t,s){i((t.negative|s.negative)===0,"red works only with positives"),i(t.red&&t.red===s.red,"red works only with red numbers")},L.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):(S(t,t.umod(this.m)._forceRed(this)),t)},L.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},L.prototype.add=function(t,s){this._verify2(t,s);var d=t.add(s);return d.cmp(this.m)>=0&&d.isub(this.m),d._forceRed(this)},L.prototype.iadd=function(t,s){this._verify2(t,s);var d=t.iadd(s);return d.cmp(this.m)>=0&&d.isub(this.m),d},L.prototype.sub=function(t,s){this._verify2(t,s);var d=t.sub(s);return d.cmpn(0)<0&&d.iadd(this.m),d._forceRed(this)},L.prototype.isub=function(t,s){this._verify2(t,s);var d=t.isub(s);return d.cmpn(0)<0&&d.iadd(this.m),d},L.prototype.shl=function(t,s){return this._verify1(t),this.imod(t.ushln(s))},L.prototype.imul=function(t,s){return this._verify2(t,s),this.imod(t.imul(s))},L.prototype.mul=function(t,s){return this._verify2(t,s),this.imod(t.mul(s))},L.prototype.isqr=function(t){return this.imul(t,t.clone())},L.prototype.sqr=function(t){return this.mul(t,t)},L.prototype.sqrt=function(t){if(t.isZero())return t.clone();var s=this.m.andln(3);if(i(s%2===1),s===3){var d=this.m.add(new n(1)).iushrn(2);return this.pow(t,d)}for(var l=this.m.subn(1),y=0;!l.isZero()&&l.andln(1)===0;)y++,l.iushrn(1);i(!l.isZero());var h=new n(1).toRed(this),v=h.redNeg(),m=this.m.subn(1).iushrn(1),r=this.m.bitLength();for(r=new n(2*r*r).toRed(this);this.pow(r,m).cmp(v)!==0;)r.redIAdd(v);for(var p=this.pow(r,l),x=this.pow(t,l.addn(1).iushrn(1)),k=this.pow(t,l),P=y;k.cmp(h)!==0;){for(var F=k,q=0;F.cmp(h)!==0;q++)F=F.redSqr();i(q<P);var W=this.pow(p,new n(1).iushln(P-q-1));x=x.redMul(W),p=W.redSqr(),k=k.redMul(p),P=q}return x},L.prototype.invm=function(t){var s=t._invmp(this.m);return s.negative!==0?(s.negative=0,this.imod(s).redNeg()):this.imod(s)},L.prototype.pow=function(t,s){if(s.isZero())return new n(1).toRed(this);if(s.cmpn(1)===0)return t.clone();var d=4,l=new Array(1<<d);l[0]=new n(1).toRed(this),l[1]=t;for(var y=2;y<l.length;y++)l[y]=this.mul(l[y-1],t);var h=l[0],v=0,m=0,r=s.bitLength()%26;for(r===0&&(r=26),y=s.length-1;y>=0;y--){for(var p=s.words[y],x=r-1;x>=0;x--){var k=p>>x&1;if(h!==l[0]&&(h=this.sqr(h)),k===0&&v===0){m=0;continue}v<<=1,v|=k,m++,!(m!==d&&(y!==0||x!==0))&&(h=this.mul(h,l[v]),m=0,v=0)}r=26}return h},L.prototype.convertTo=function(t){var s=t.umod(this.m);return s===t?s.clone():s},L.prototype.convertFrom=function(t){var s=t.clone();return s.red=null,s},n.mont=function(t){return new K(t)};function K(b){L.call(this,b),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}o(K,L),K.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},K.prototype.convertFrom=function(t){var s=this.imod(t.mul(this.rinv));return s.red=null,s},K.prototype.imul=function(t,s){if(t.isZero()||s.isZero())return t.words[0]=0,t.length=1,t;var d=t.imul(s),l=d.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),y=d.isub(l).iushrn(this.shift),h=y;return y.cmp(this.m)>=0?h=y.isub(this.m):y.cmpn(0)<0&&(h=y.iadd(this.m)),h._forceRed(this)},K.prototype.mul=function(t,s){if(t.isZero()||s.isZero())return new n(0)._forceRed(this);var d=t.mul(s),l=d.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),y=d.isub(l).iushrn(this.shift),h=y;return y.cmp(this.m)>=0?h=y.isub(this.m):y.cmpn(0)<0&&(h=y.iadd(this.m)),h._forceRed(this)},K.prototype.invm=function(t){var s=this.imod(t._invmp(this.m).mul(this.r2));return s._forceRed(this)}})(c,H6)})(be)),be.exports}var Y6=Z6();const F0=f.getDefaultExportFromCjs(Y6),I1={version:"1.0.0",name:"example_native_token_transfers",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"deployer",isMut:!1,isSigner:!0},{name:"programData",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"rateLimit",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["The custody account that holds tokens in locking mode.","NOTE: the account is unconditionally initialized, but not used in","burning mode.","function if the token account has already been created."]},{name:"tokenProgram",isMut:!1,isSigner:!1,docs:["associated token account for the given mint."]},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"version",accounts:[],args:[],returns:"string"},{name:"transferBurn",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"transferLock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"redeem",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!1,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"inboxItem",isMut:!0,isSigner:!1,docs:["NOTE: This account is content-addressed (PDA seeded by the message hash).","This is because in a multi-transceiver configuration, the different",'transceivers "vote" on messages (by delivering them). By making the inbox',"items content-addressed, we can ensure that disagreeing votes don't","interfere with each other.","On the first call to [`redeem()`], [`InboxItem`] will be allocated and initialized with","default values.",'On subsequent calls, we want to modify the `InboxItem` by "voting" on it. Therefore the',"program should not fail which would occur when using the `init` constraint.","The [`InboxItem::init`] field is used to guard against malicious or accidental modification","InboxItem fields that should remain constant."]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RedeemArgs"}}]},{name:"releaseInboundMint",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"releaseInboundUnlock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}]},{name:"custody",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"transferOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"newOwner",isMut:!1,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"claimOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"newOwner",isMut:!1,isSigner:!0},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setPaused",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"pause",type:"bool"}]},{name:"setPeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!0,isSigner:!1},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetPeerArgs"}}]},{name:"registerTransceiver",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"transceiver",isMut:!1,isSigner:!1},{name:"registeredTransceiver",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setOutboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetOutboundLimitArgs"}}]},{name:"setInboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetInboundLimitArgs"}}]},{name:"setWormholePeer",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"peer",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetTransceiverPeerArgs"}}]},{name:"receiveWormholeMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"releaseWormholeOutbound",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseOutboundArgs"}}]},{name:"broadcastWormholeId",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[]},{name:"broadcastWormholePeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"BroadcastPeerArgs"}}]}],accounts:[{name:"config",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"owner",docs:["Owner of the program."],type:"publicKey"},{name:"pendingOwner",docs:["Pending next owner (before claiming ownership)."],type:{option:"publicKey"}},{name:"mint",docs:["Mint address of the token managed by this program."],type:"publicKey"},{name:"tokenProgram",docs:["Address of the token program (token or token22). This could always be queried","from the [`mint`] account's owner, but storing it here avoids an indirection","on the client side."],type:"publicKey"},{name:"mode",docs:["The mode that this program is running in. This is used to determine","whether the program is burning tokens or locking tokens."],type:{defined:"Mode"}},{name:"chainId",docs:["The chain id of the chain that this program is running on. We don't","hardcode this so that the program is deployable on any potential SVM","forks."],type:{defined:"ChainId"}},{name:"nextTransceiverId",docs:["The next transceiver id to use when registering an transceiver."],type:"u8"},{name:"threshold",docs:["The number of transceivers that must attest to a transfer before it is","accepted."],type:"u8"},{name:"enabledTransceivers",docs:["Bitmap of enabled transceivers.","The maximum number of transceivers is equal to [`Bitmap::BITS`]."],type:{defined:"Bitmap"}},{name:"paused",docs:["Pause the program. This is useful for upgrades and other maintenance."],type:"bool"},{name:"custody",docs:["The custody account that holds tokens in locking mode."],type:"publicKey"}]}},{name:"nttManagerPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}},{name:"tokenDecimals",type:"u8"}]}},{name:"inboxItem",type:{kind:"struct",fields:[{name:"init",type:"bool"},{name:"bump",type:"u8"},{name:"amount",type:"u64"},{name:"recipientAddress",type:"publicKey"},{name:"votes",type:{defined:"Bitmap"}},{name:"releaseStatus",type:{defined:"ReleaseStatus"}}]}},{name:"inboxRateLimit",docs:["Inbound rate limit per chain.","SECURITY: must check the PDA (since there are multiple PDAs, namely one for each chain.)"],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"outboxItem",type:{kind:"struct",fields:[{name:"amount",type:{defined:"TrimmedAmount"}},{name:"sender",type:"publicKey"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientNttManager",type:{array:["u8",32]}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"releaseTimestamp",type:"i64"},{name:"released",type:{defined:"Bitmap"}}]}},{name:"outboxRateLimit",type:{kind:"struct",fields:[{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"registeredTransceiver",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"id",type:"u8"},{name:"transceiverAddress",type:"publicKey"}]}},{name:"transceiverPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}},{name:"bridgeData",type:{kind:"struct",fields:[{name:"guardianSetIndex",docs:["The current guardian set index, used to decide which signature sets to accept."],type:"u32"},{name:"lastLamports",docs:["Lamports in the collection account"],type:"u64"},{name:"config",docs:["Bridge configuration, which is set once upon initialization."],type:{defined:"BridgeConfig"}}]}}],types:[{name:"Bitmap",type:{kind:"struct",fields:[{name:"map",type:"u128"}]}},{name:"SetInboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"},{name:"chainId",type:{defined:"ChainId"}}]}},{name:"SetOutboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"}]}},{name:"SetPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}},{name:"limit",type:"u64"},{name:"tokenDecimals",docs:["The token decimals on the peer chain."],type:"u8"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"},{name:"limit",type:"u64"},{name:"mode",type:{defined:"Mode"}}]}},{name:"RedeemArgs",type:{kind:"struct",fields:[]}},{name:"ReleaseInboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"TransferArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"shouldQueue",type:"bool"}]}},{name:"ReleaseStatus",docs:["The status of an InboxItem. This determines whether the tokens are minted/unlocked to the recipient. As","such, this must be used as a state machine that moves forward in a linear manner. A state",'should never "move backward" to a previous state (e.g. should never move from `Released` to',"`ReleaseAfter`)."],type:{kind:"enum",variants:[{name:"NotApproved"},{name:"ReleaseAfter",fields:["i64"]},{name:"Released"}]}},{name:"RateLimitState",type:{kind:"struct",fields:[{name:"limit",docs:["The maximum capacity of the rate limiter."],type:"u64"},{name:"capacityAtLastTx",docs:["The capacity of the rate limiter at `last_tx_timestamp`.","The actual current capacity is calculated in `capacity_at`, by","accounting for the time that has passed since `last_tx_timestamp` and","the refill rate."],type:"u64"},{name:"lastTxTimestamp",docs:["The timestamp of the last transaction that counted towards the current","capacity. Transactions that exceeded the capacity do not count, they are","just delayed."],type:"i64"}]}},{name:"SetTransceiverPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}}]}},{name:"BroadcastPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"ReleaseOutboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"ChainId",type:{kind:"struct",fields:[{name:"id",type:"u16"}]}},{name:"Mode",type:{kind:"enum",variants:[{name:"Locking"},{name:"Burning"}]}},{name:"TrimmedAmount",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]}},{name:"BridgeConfig",type:{kind:"struct",fields:[{name:"guardianSetExpirationTime",docs:["Period for how long a guardian set is valid after it has been replaced by a new one. This","guarantees that VAAs issued by that set can still be submitted for a certain period. In","this period we still trust the old guardian set."],type:"u32"},{name:"fee",docs:["Amount of lamports that needs to be paid to the protocol to post a message"],type:"u64"}]}}],errors:[{code:6e3,name:"CantReleaseYet",msg:"CantReleaseYet"},{code:6001,name:"InvalidPendingOwner",msg:"InvalidPendingOwner"},{code:6002,name:"InvalidChainId",msg:"InvalidChainId"},{code:6003,name:"InvalidRecipientAddress",msg:"InvalidRecipientAddress"},{code:6004,name:"InvalidTransceiverPeer",msg:"InvalidTransceiverPeer"},{code:6005,name:"InvalidNttManagerPeer",msg:"InvalidNttManagerPeer"},{code:6006,name:"InvalidRecipientNttManager",msg:"InvalidRecipientNttManager"},{code:6007,name:"TransferAlreadyRedeemed",msg:"TransferAlreadyRedeemed"},{code:6008,name:"TransferCannotBeRedeemed",msg:"TransferCannotBeRedeemed"},{code:6009,name:"TransferNotApproved",msg:"TransferNotApproved"},{code:6010,name:"MessageAlreadySent",msg:"MessageAlreadySent"},{code:6011,name:"InvalidMode",msg:"InvalidMode"},{code:6012,name:"InvalidMintAuthority",msg:"InvalidMintAuthority"},{code:6013,name:"TransferExceedsRateLimit",msg:"TransferExceedsRateLimit"},{code:6014,name:"Paused",msg:"Paused"},{code:6015,name:"DisabledTransceiver",msg:"DisabledTransceiver"},{code:6016,name:"InvalidDeployer",msg:"InvalidDeployer"},{code:6017,name:"BadAmountAfterTransfer",msg:"BadAmountAfterTransfer"},{code:6018,name:"BadAmountAfterBurn",msg:"BadAmountAfterBurn"},{code:6019,name:"ZeroThreshold",msg:"ZeroThreshold"},{code:6020,name:"OverflowExponent",msg:"OverflowExponent"},{code:6021,name:"OverflowScaledAmount",msg:"OverflowScaledAmount"},{code:6022,name:"BitmapIndexOutOfBounds",msg:"BitmapIndexOutOfBounds"}]},J6={version:"2.0.0",name:"ntt_quoter",instructions:[{name:"requestRelay",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!1,isSigner:!1,docs:["and checking the release constraint into a single function"]},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RequestRelayArgs"}}]},{name:"closeRelay",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"feeRecipient",isMut:!0,isSigner:!1},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"initialize",accounts:[{name:"owner",isMut:!0,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1,docs:["We use the program data to make sure this owner is the upgrade authority (the true owner,","who deployed this program)."]},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAssistant",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"assistant",isMut:!1,isSigner:!1,isOptional:!0}],args:[]},{name:"setFeeRecipient",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1}],args:[]},{name:"registerChain",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainArgs"}}]},{name:"registerNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterNttArgs"}}]},{name:"deregisterNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"DeregisterNttArgs"}}]},{name:"updateSolPrice",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateSolPriceArgs"}}]},{name:"updateChainPrices",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainPricesArgs"}}]},{name:"updateChainParams",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainParamsArgs"}}]}],accounts:[{name:"instance",type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"assistant",type:"publicKey"},{name:"feeRecipient",type:"publicKey"},{name:"solPrice",type:"u64"}]}},{name:"registeredChain",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"},{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"registeredNtt",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"relayRequest",type:{kind:"struct",fields:[{name:"requestedGasDropoff",type:"u64"}]}}],types:[{name:"RegisterChainArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"RegisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"DeregisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"}]}},{name:"RequestRelayArgs",type:{kind:"struct",fields:[{name:"gasDropoff",type:"u64"},{name:"maxFee",type:"u64"}]}},{name:"UpdateSolPriceArgs",type:{kind:"struct",fields:[{name:"solPrice",type:"u64"}]}},{name:"UpdateChainPricesArgs",type:{kind:"struct",fields:[{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"UpdateChainParamsArgs",type:{kind:"struct",fields:[{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"}]}}],errors:[{code:6001,name:"ExceedsUserMaxFee",msg:"Relay fees exceeds specified max"},{code:6002,name:"ExceedsMaxGasDropoff",msg:"Requested gas dropoff exceeds max allowed for chain"},{code:6003,name:"InvalidFeeRecipient",msg:"The specified fee recipient does not match the address in the instance accound"},{code:6004,name:"RelayingToChainDisabled",msg:"Relaying to the specified chain is disabled"},{code:6005,name:"OutboxItemNotReleased",msg:"Relaying to the specified chain is disabled"},{code:6006,name:"ScalingOverflow",msg:"Scaled value exceeds u64::MAX"},{code:6007,name:"DivByZero",msg:"Cannot divide by zero"},{code:6257,name:"FeeRecipientCannotBeDefault",msg:"The fee recipient cannot be the default address (0x0)"},{code:6258,name:"NotAuthorized",msg:"Must be owner or assistant"},{code:6259,name:"PriceCannotBeZero",msg:"The price cannot be zero"}]},X6={version:"1.0.0",name:"wormhole_governance",instructions:[{name:"governance",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"governance",isMut:!0,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"replay",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"replayProtection",type:{kind:"struct",fields:[{name:"bump",type:"u8"}]}}],errors:[{code:6e3,name:"InvalidGovernanceChain",msg:"InvalidGovernanceChain"},{code:6001,name:"InvalidGovernanceEmitter",msg:"InvalidGovernanceEmitter"}]};var Fe;(function(c){c.idl={ntt:I1,transceiver:I1,quoter:J6,governance:X6}})(Fe||(Fe={}));const x1={version:"2.0.0",name:"example_native_token_transfers",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"deployer",isMut:!1,isSigner:!0},{name:"programData",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"rateLimit",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["In any case, this function is used to set the Config and initialize the program so we","assume the caller of this function will have total control over the program.","",'TODO: Using `UncheckedAccount` here leads to "Access violation in stack frame ...".',"Could refactor code to use `Box<_>` to reduce stack size."]},{name:"custody",isMut:!0,isSigner:!1,docs:["The custody account that holds tokens in locking mode and temporarily","holds tokens in burning mode.","function if the token account has already been created."]},{name:"tokenProgram",isMut:!1,isSigner:!1,docs:["associated token account for the given mint."]},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"initializeLut",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"authority",isMut:!1,isSigner:!1},{name:"lutAddress",isMut:!0,isSigner:!1},{name:"lut",isMut:!0,isSigner:!1},{name:"lutProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"entries",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"custody",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"outboxRateLimit",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}]}],args:[{name:"recentSlot",type:"u64"}]},{name:"version",accounts:[],args:[],returns:"string"},{name:"transferBurn",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["Tokens are always transferred to the custody account first regardless of","the mode.","For an explanation, see the note in [`transfer_burn`]."]},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1,docs:["See [`crate::SESSION_AUTHORITY_SEED`] for an explanation of the flow."]},{name:"tokenAuthority",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"transferLock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["Tokens are always transferred to the custody account first regardless of","the mode.","For an explanation, see the note in [`transfer_burn`]."]},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1,docs:["See [`crate::SESSION_AUTHORITY_SEED`] for an explanation of the flow."]}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"redeem",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!1,isSigner:!1,docs:["`Account<T>` and `owner` constraints are mutually-exclusive"]},{name:"transceiver",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"inboxItem",isMut:!0,isSigner:!1,docs:["NOTE: This account is content-addressed (PDA seeded by the message hash).","This is because in a multi-transceiver configuration, the different",'transceivers "vote" on messages (by delivering them). By making the inbox',"items content-addressed, we can ensure that disagreeing votes don't","interfere with each other.","On the first call to [`redeem()`], [`InboxItem`] will be allocated and initialized with","default values.",'On subsequent calls, we want to modify the `InboxItem` by "voting" on it. Therefore the',"program should not fail which would occur when using the `init` constraint.","The [`InboxItem::init`] field is used to guard against malicious or accidental modification","InboxItem fields that should remain constant."]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RedeemArgs"}}]},{name:"releaseInboundMint",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["CHECK The seeds constraint ensures that this is the correct address"]},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"releaseInboundUnlock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["CHECK The seeds constraint ensures that this is the correct address"]},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"transferOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"newOwner",isMut:!1,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"claimOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"newOwner",isMut:!1,isSigner:!0},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setPaused",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"pause",type:"bool"}]},{name:"setPeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!0,isSigner:!1},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetPeerArgs"}}]},{name:"registerTransceiver",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"transceiver",isMut:!1,isSigner:!1,docs:["used here that wraps the Transceiver account type."]},{name:"registeredTransceiver",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setOutboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetOutboundLimitArgs"}}]},{name:"setInboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetInboundLimitArgs"}}]},{name:"setWormholePeer",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"peer",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetTransceiverPeerArgs"}}]},{name:"receiveWormholeMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"releaseWormholeOutbound",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseOutboundArgs"}}]},{name:"broadcastWormholeId",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[]},{name:"broadcastWormholePeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"BroadcastPeerArgs"}}]}],accounts:[{name:"config",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"owner",docs:["Owner of the program."],type:"publicKey"},{name:"pendingOwner",docs:["Pending next owner (before claiming ownership)."],type:{option:"publicKey"}},{name:"mint",docs:["Mint address of the token managed by this program."],type:"publicKey"},{name:"tokenProgram",docs:["Address of the token program (token or token22). This could always be queried","from the [`mint`] account's owner, but storing it here avoids an indirection","on the client side."],type:"publicKey"},{name:"mode",docs:["The mode that this program is running in. This is used to determine","whether the program is burning tokens or locking tokens."],type:{defined:"Mode"}},{name:"chainId",docs:["The chain id of the chain that this program is running on. We don't","hardcode this so that the program is deployable on any potential SVM","forks."],type:{defined:"ChainId"}},{name:"nextTransceiverId",docs:["The next transceiver id to use when registering an transceiver."],type:"u8"},{name:"threshold",docs:["The number of transceivers that must attest to a transfer before it is","accepted."],type:"u8"},{name:"enabledTransceivers",docs:["Bitmap of enabled transceivers.","The maximum number of transceivers is equal to [`Bitmap::BITS`]."],type:{defined:"Bitmap"}},{name:"paused",docs:["Pause the program. This is useful for upgrades and other maintenance."],type:"bool"},{name:"custody",docs:["The custody account that holds tokens in locking mode."],type:"publicKey"}]}},{name:"LUT",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:"publicKey"}]}},{name:"nttManagerPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}},{name:"tokenDecimals",type:"u8"}]}},{name:"inboxItem",type:{kind:"struct",fields:[{name:"init",type:"bool"},{name:"bump",type:"u8"},{name:"amount",type:"u64"},{name:"recipientAddress",type:"publicKey"},{name:"votes",type:{defined:"Bitmap"}},{name:"releaseStatus",type:{defined:"ReleaseStatus"}}]}},{name:"inboxRateLimit",docs:["Inbound rate limit per chain.","SECURITY: must check the PDA (since there are multiple PDAs, namely one for each chain.)"],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"outboxItem",type:{kind:"struct",fields:[{name:"amount",type:{defined:"TrimmedAmount"}},{name:"sender",type:"publicKey"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientNttManager",type:{array:["u8",32]}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"releaseTimestamp",type:"i64"},{name:"released",type:{defined:"Bitmap"}}]}},{name:"outboxRateLimit",type:{kind:"struct",fields:[{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"registeredTransceiver",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"id",type:"u8"},{name:"transceiverAddress",type:"publicKey"}]}},{name:"transceiverPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}},{name:"bridgeData",type:{kind:"struct",fields:[{name:"guardianSetIndex",docs:["The current guardian set index, used to decide which signature sets to accept."],type:"u32"},{name:"lastLamports",docs:["Lamports in the collection account"],type:"u64"},{name:"config",docs:["Bridge configuration, which is set once upon initialization."],type:{defined:"BridgeConfig"}}]}}],types:[{name:"Bitmap",type:{kind:"struct",fields:[{name:"map",type:"u128"}]}},{name:"SetInboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"},{name:"chainId",type:{defined:"ChainId"}}]}},{name:"SetOutboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"}]}},{name:"SetPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}},{name:"limit",type:"u64"},{name:"tokenDecimals",docs:["The token decimals on the peer chain."],type:"u8"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"},{name:"limit",type:"u64"},{name:"mode",type:{defined:"Mode"}}]}},{name:"RedeemArgs",type:{kind:"struct",fields:[]}},{name:"ReleaseInboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"TransferArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"shouldQueue",type:"bool"}]}},{name:"ReleaseStatus",docs:["The status of an InboxItem. This determines whether the tokens are minted/unlocked to the recipient. As","such, this must be used as a state machine that moves forward in a linear manner. A state",'should never "move backward" to a previous state (e.g. should never move from `Released` to',"`ReleaseAfter`)."],type:{kind:"enum",variants:[{name:"NotApproved"},{name:"ReleaseAfter",fields:["i64"]},{name:"Released"}]}},{name:"RateLimitState",type:{kind:"struct",fields:[{name:"limit",docs:["The maximum capacity of the rate limiter."],type:"u64"},{name:"capacityAtLastTx",docs:["The capacity of the rate limiter at `last_tx_timestamp`.","The actual current capacity is calculated in `capacity_at`, by","accounting for the time that has passed since `last_tx_timestamp` and","the refill rate."],type:"u64"},{name:"lastTxTimestamp",docs:["The timestamp of the last transaction that counted towards the current","capacity. Transactions that exceeded the capacity do not count, they are","just delayed."],type:"i64"}]}},{name:"SetTransceiverPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}}]}},{name:"BroadcastPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"ReleaseOutboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"ChainId",type:{kind:"struct",fields:[{name:"id",type:"u16"}]}},{name:"Mode",type:{kind:"enum",variants:[{name:"Locking"},{name:"Burning"}]}},{name:"TrimmedAmount",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]}},{name:"BridgeConfig",type:{kind:"struct",fields:[{name:"guardianSetExpirationTime",docs:["Period for how long a guardian set is valid after it has been replaced by a new one. This","guarantees that VAAs issued by that set can still be submitted for a certain period. In","this period we still trust the old guardian set."],type:"u32"},{name:"fee",docs:["Amount of lamports that needs to be paid to the protocol to post a message"],type:"u64"}]}}],errors:[{code:6e3,name:"CantReleaseYet",msg:"CantReleaseYet"},{code:6001,name:"InvalidPendingOwner",msg:"InvalidPendingOwner"},{code:6002,name:"InvalidChainId",msg:"InvalidChainId"},{code:6003,name:"InvalidRecipientAddress",msg:"InvalidRecipientAddress"},{code:6004,name:"InvalidTransceiverPeer",msg:"InvalidTransceiverPeer"},{code:6005,name:"InvalidNttManagerPeer",msg:"InvalidNttManagerPeer"},{code:6006,name:"InvalidRecipientNttManager",msg:"InvalidRecipientNttManager"},{code:6007,name:"TransferAlreadyRedeemed",msg:"TransferAlreadyRedeemed"},{code:6008,name:"TransferCannotBeRedeemed",msg:"TransferCannotBeRedeemed"},{code:6009,name:"TransferNotApproved",msg:"TransferNotApproved"},{code:6010,name:"MessageAlreadySent",msg:"MessageAlreadySent"},{code:6011,name:"InvalidMode",msg:"InvalidMode"},{code:6012,name:"InvalidMintAuthority",msg:"InvalidMintAuthority"},{code:6013,name:"TransferExceedsRateLimit",msg:"TransferExceedsRateLimit"},{code:6014,name:"Paused",msg:"Paused"},{code:6015,name:"DisabledTransceiver",msg:"DisabledTransceiver"},{code:6016,name:"InvalidDeployer",msg:"InvalidDeployer"},{code:6017,name:"BadAmountAfterTransfer",msg:"BadAmountAfterTransfer"},{code:6018,name:"BadAmountAfterBurn",msg:"BadAmountAfterBurn"},{code:6019,name:"ZeroThreshold",msg:"ZeroThreshold"},{code:6020,name:"OverflowExponent",msg:"OverflowExponent"},{code:6021,name:"OverflowScaledAmount",msg:"OverflowScaledAmount"},{code:6022,name:"BitmapIndexOutOfBounds",msg:"BitmapIndexOutOfBounds"},{code:6023,name:"NoRegisteredTransceivers",msg:"NoRegisteredTransceivers"}]},et={version:"2.0.0",name:"ntt_quoter",instructions:[{name:"requestRelay",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!1,isSigner:!1,docs:["and checking the release constraint into a single function"]},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RequestRelayArgs"}}]},{name:"closeRelay",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"feeRecipient",isMut:!0,isSigner:!1},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"initialize",accounts:[{name:"owner",isMut:!0,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1,docs:["We use the program data to make sure this owner is the upgrade authority (the true owner,","who deployed this program)."]},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAssistant",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"assistant",isMut:!1,isSigner:!1,isOptional:!0}],args:[]},{name:"setFeeRecipient",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1}],args:[]},{name:"registerChain",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainArgs"}}]},{name:"registerNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterNttArgs"}}]},{name:"deregisterNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"DeregisterNttArgs"}}]},{name:"updateSolPrice",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateSolPriceArgs"}}]},{name:"updateChainPrices",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainPricesArgs"}}]},{name:"updateChainParams",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainParamsArgs"}}]}],accounts:[{name:"instance",type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"assistant",type:"publicKey"},{name:"feeRecipient",type:"publicKey"},{name:"solPrice",type:"u64"}]}},{name:"registeredChain",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"},{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"registeredNtt",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"relayRequest",type:{kind:"struct",fields:[{name:"requestedGasDropoff",type:"u64"}]}}],types:[{name:"RegisterChainArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"RegisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"DeregisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"}]}},{name:"RequestRelayArgs",type:{kind:"struct",fields:[{name:"gasDropoff",type:"u64"},{name:"maxFee",type:"u64"}]}},{name:"UpdateSolPriceArgs",type:{kind:"struct",fields:[{name:"solPrice",type:"u64"}]}},{name:"UpdateChainPricesArgs",type:{kind:"struct",fields:[{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"UpdateChainParamsArgs",type:{kind:"struct",fields:[{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"}]}}],errors:[{code:6001,name:"ExceedsUserMaxFee",msg:"Relay fees exceeds specified max"},{code:6002,name:"ExceedsMaxGasDropoff",msg:"Requested gas dropoff exceeds max allowed for chain"},{code:6003,name:"InvalidFeeRecipient",msg:"The specified fee recipient does not match the address in the instance accound"},{code:6004,name:"RelayingToChainDisabled",msg:"Relaying to the specified chain is disabled"},{code:6005,name:"OutboxItemNotReleased",msg:"Relaying to the specified chain is disabled"},{code:6006,name:"ScalingOverflow",msg:"Scaled value exceeds u64::MAX"},{code:6007,name:"DivByZero",msg:"Cannot divide by zero"},{code:6257,name:"FeeRecipientCannotBeDefault",msg:"The fee recipient cannot be the default address (0x0)"},{code:6258,name:"NotAuthorized",msg:"Must be owner or assistant"},{code:6259,name:"PriceCannotBeZero",msg:"The price cannot be zero"}]},tt={version:"2.0.0",name:"wormhole_governance",instructions:[{name:"governance",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"governance",isMut:!0,isSigner:!1,docs:["governed program. This account is validated by Wormhole, not this program."]},{name:"vaa",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"replay",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"replayProtection",type:{kind:"struct",fields:[{name:"bump",type:"u8"}]}}],errors:[{code:6e3,name:"InvalidGovernanceChain",msg:"InvalidGovernanceChain"},{code:6001,name:"InvalidGovernanceEmitter",msg:"InvalidGovernanceEmitter"},{code:6002,name:"InvalidGovernanceProgram",msg:"InvalidGovernanceProgram"}]};var qe;(function(c){c.idl={ntt:x1,transceiver:x1,quoter:et,governance:tt}})(qe||(qe={}));const at={version:"3.0.0",name:"example_native_token_transfers",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"deployer",isMut:!1,isSigner:!0},{name:"programData",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"rateLimit",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["In any case, this function is used to set the Config and initialize the program so we","assume the caller of this function will have total control over the program.","",'TODO: Using `UncheckedAccount` here leads to "Access violation in stack frame ...".',"Could refactor code to use `Box<_>` to reduce stack size."]},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"custody",isMut:!0,isSigner:!1,docs:["The custody account that holds tokens in locking mode and temporarily","holds tokens in burning mode.","function if the token account has already been created."]},{name:"tokenProgram",isMut:!1,isSigner:!1,docs:["associated token account for the given mint."]},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"initializeLut",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"authority",isMut:!1,isSigner:!1},{name:"lutAddress",isMut:!0,isSigner:!1},{name:"lut",isMut:!0,isSigner:!1},{name:"lutProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"entries",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"custody",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"outboxRateLimit",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}]}],args:[{name:"recentSlot",type:"u64"}]},{name:"version",accounts:[],args:[],returns:"string"},{name:"transferBurn",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["Tokens are always transferred to the custody account first regardless of","the mode.","For an explanation, see the note in [`transfer_burn`]."]},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1,docs:["See [`crate::SESSION_AUTHORITY_SEED`] for an explanation of the flow."]},{name:"tokenAuthority",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"transferLock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["Tokens are always transferred to the custody account first regardless of","the mode.","For an explanation, see the note in [`transfer_burn`]."]},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1,docs:["See [`crate::SESSION_AUTHORITY_SEED`] for an explanation of the flow."]}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"redeem",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!1,isSigner:!1,docs:["`Account<T>` and `owner` constraints are mutually-exclusive"]},{name:"transceiver",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"inboxItem",isMut:!0,isSigner:!1,docs:["NOTE: This account is content-addressed (PDA seeded by the message hash).","This is because in a multi-transceiver configuration, the different",'transceivers "vote" on messages (by delivering them). By making the inbox',"items content-addressed, we can ensure that disagreeing votes don't","interfere with each other.","On the first call to [`redeem()`], [`InboxItem`] will be allocated and initialized with","default values.",'On subsequent calls, we want to modify the `InboxItem` by "voting" on it. Therefore the',"program should not fail which would occur when using the `init` constraint.","The [`InboxItem::init`] field is used to guard against malicious or accidental modification","InboxItem fields that should remain constant."]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RedeemArgs"}}]},{name:"releaseInboundMint",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}]},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"releaseInboundUnlock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"transferOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"newOwner",isMut:!1,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"transferOwnershipOneStepUnchecked",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"newOwner",isMut:!1,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"claimOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"newOwner",isMut:!1,isSigner:!0},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"acceptTokenAuthority",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}]},{name:"currentAuthority",isMut:!1,isSigner:!0}],args:[]},{name:"acceptTokenAuthorityFromMultisig",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}]},{name:"currentMultisigAuthority",isMut:!1,isSigner:!1}],args:[]},{name:"setTokenAuthorityOneStepUnchecked",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"newAuthority",isMut:!1,isSigner:!1}]},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setTokenAuthority",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"newAuthority",isMut:!1,isSigner:!1}]},{name:"rentPayer",isMut:!0,isSigner:!0},{name:"pendingTokenAuthority",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"revertTokenAuthority",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"rentPayer",isMut:!0,isSigner:!1},{name:"pendingTokenAuthority",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"owner",isMut:!1,isSigner:!0}],args:[]},{name:"claimTokenAuthority",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"rentPayer",isMut:!0,isSigner:!1},{name:"pendingTokenAuthority",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"newAuthority",isMut:!1,isSigner:!0}],args:[]},{name:"claimTokenAuthorityToMultisig",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"rentPayer",isMut:!0,isSigner:!1},{name:"pendingTokenAuthority",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"newMultisigAuthority",isMut:!1,isSigner:!1}],args:[]},{name:"setPaused",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"pause",type:"bool"}]},{name:"setPeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!0,isSigner:!1},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetPeerArgs"}}]},{name:"registerTransceiver",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"transceiver",isMut:!1,isSigner:!1,docs:["used here that wraps the Transceiver account type."]},{name:"registeredTransceiver",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"deregisterTransceiver",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"registeredTransceiver",isMut:!1,isSigner:!1}],args:[]},{name:"setOutboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetOutboundLimitArgs"}}]},{name:"setInboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetInboundLimitArgs"}}]},{name:"markOutboxItemAsReleased",accounts:[{name:"signer",isMut:!1,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1}],args:[],returns:"bool"},{name:"setThreshold",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"threshold",type:"u8"}]},{name:"setWormholePeer",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"peer",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetTransceiverPeerArgs"}}]},{name:"receiveWormholeMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"releaseWormholeOutbound",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseOutboundArgs"}}]},{name:"broadcastWormholeId",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1,docs:["enforced by the [`CpiContext`] call in [`post_message`].","The seeds constraint ensures that this is the correct address"]},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[]},{name:"broadcastWormholePeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"BroadcastPeerArgs"}}]}],accounts:[{name:"config",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"owner",docs:["Owner of the program."],type:"publicKey"},{name:"pendingOwner",docs:["Pending next owner (before claiming ownership)."],type:{option:"publicKey"}},{name:"mint",docs:["Mint address of the token managed by this program."],type:"publicKey"},{name:"tokenProgram",docs:["Address of the token program (token or token22). This could always be queried","from the [`mint`] account's owner, but storing it here avoids an indirection","on the client side."],type:"publicKey"},{name:"mode",docs:["The mode that this program is running in. This is used to determine","whether the program is burning tokens or locking tokens."],type:{defined:"Mode"}},{name:"chainId",docs:["The chain id of the chain that this program is running on. We don't","hardcode this so that the program is deployable on any potential SVM","forks."],type:{defined:"ChainId"}},{name:"nextTransceiverId",docs:["The next transceiver id to use when registering an transceiver."],type:"u8"},{name:"threshold",docs:["The number of transceivers that must attest to a transfer before it is","accepted."],type:"u8"},{name:"enabledTransceivers",docs:["Bitmap of enabled transceivers.","The maximum number of transceivers is equal to [`Bitmap::BITS`]."],type:{defined:"Bitmap"}},{name:"paused",docs:["Pause the program. This is useful for upgrades and other maintenance."],type:"bool"},{name:"custody",docs:["The custody account that holds tokens in locking mode."],type:"publicKey"}]}},{name:"LUT",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:"publicKey"}]}},{name:"nttManagerPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}},{name:"tokenDecimals",type:"u8"}]}},{name:"pendingTokenAuthority",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"pendingAuthority",type:"publicKey"},{name:"rentPayer",type:"publicKey"}]}},{name:"inboxItem",type:{kind:"struct",fields:[{name:"init",type:"bool"},{name:"bump",type:"u8"},{name:"amount",type:"u64"},{name:"recipientAddress",type:"publicKey"},{name:"votes",type:{defined:"Bitmap"}},{name:"releaseStatus",type:{defined:"ReleaseStatus"}}]}},{name:"inboxRateLimit",docs:["Inbound rate limit per chain.","SECURITY: must check the PDA (since there are multiple PDAs, namely one for each chain.)"],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"outboxItem",type:{kind:"struct",fields:[{name:"amount",type:{defined:"TrimmedAmount"}},{name:"sender",type:"publicKey"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientNttManager",type:{array:["u8",32]}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"releaseTimestamp",type:"i64"},{name:"released",type:{defined:"Bitmap"}}]}},{name:"outboxRateLimit",type:{kind:"struct",fields:[{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"registeredTransceiver",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"id",type:"u8"},{name:"transceiverAddress",type:"publicKey"}]}},{name:"transceiverPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}},{name:"bridgeData",type:{kind:"struct",fields:[{name:"guardianSetIndex",docs:["The current guardian set index, used to decide which signature sets to accept."],type:"u32"},{name:"lastLamports",docs:["Lamports in the collection account"],type:"u64"},{name:"config",docs:["Bridge configuration, which is set once upon initialization."],type:{defined:"BridgeConfig"}}]}}],types:[{name:"Bitmap",type:{kind:"struct",fields:[{name:"map",type:"u128"}]}},{name:"SetInboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"},{name:"chainId",type:{defined:"ChainId"}}]}},{name:"SetOutboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"}]}},{name:"SetPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}},{name:"limit",type:"u64"},{name:"tokenDecimals",docs:["The token decimals on the peer chain."],type:"u8"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"},{name:"limit",type:"u64"},{name:"mode",type:{defined:"Mode"}}]}},{name:"RedeemArgs",type:{kind:"struct",fields:[]}},{name:"ReleaseInboundArgs",type:{kind:"struct",fields:[{name:"revertWhenNotReady",type:"bool"}]}},{name:"TransferArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"shouldQueue",type:"bool"}]}},{name:"ReleaseStatus",docs:["The status of an InboxItem. This determines whether the tokens are minted/unlocked to the recipient. As","such, this must be used as a state machine that moves forward in a linear manner. A state",'should never "move backward" to a previous state (e.g. should never move from `Released` to',"`ReleaseAfter`)."],type:{kind:"enum",variants:[{name:"NotApproved"},{name:"ReleaseAfter",fields:["i64"]},{name:"Released"}]}},{name:"RateLimitState",type:{kind:"struct",fields:[{name:"limit",docs:["The maximum capacity of the rate limiter."],type:"u64"},{name:"capacityAtLastTx",docs:["The capacity of the rate limiter at `last_tx_timestamp`.","The actual current capacity is calculated in `capacity_at`, by","accounting for the time that has passed since `last_tx_timestamp` and","the refill rate."],type:"u64"},{name:"lastTxTimestamp",docs:["The timestamp of the last transaction that counted towards the current","capacity. Transactions that exceeded the capacity do not count, they are","just delayed."],type:"i64"}]}},{name:"SetTransceiverPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}}]}},{name:"BroadcastPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"ReleaseOutboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"ChainId",type:{kind:"struct",fields:[{name:"id",type:"u16"}]}},{name:"Mode",type:{kind:"enum",variants:[{name:"Locking"},{name:"Burning"}]}},{name:"TrimmedAmount",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]}},{name:"BridgeConfig",type:{kind:"struct",fields:[{name:"guardianSetExpirationTime",docs:["Period for how long a guardian set is valid after it has been replaced by a new one. This","guarantees that VAAs issued by that set can still be submitted for a certain period. In","this period we still trust the old guardian set."],type:"u32"},{name:"fee",docs:["Amount of lamports that needs to be paid to the protocol to post a message"],type:"u64"}]}}],errors:[{code:6e3,name:"CantReleaseYet",msg:"CantReleaseYet"},{code:6001,name:"InvalidPendingOwner",msg:"InvalidPendingOwner"},{code:6002,name:"InvalidChainId",msg:"InvalidChainId"},{code:6003,name:"InvalidRecipientAddress",msg:"InvalidRecipientAddress"},{code:6004,name:"InvalidTransceiverPeer",msg:"InvalidTransceiverPeer"},{code:6005,name:"InvalidNttManagerPeer",msg:"InvalidNttManagerPeer"},{code:6006,name:"InvalidRecipientNttManager",msg:"InvalidRecipientNttManager"},{code:6007,name:"TransferAlreadyRedeemed",msg:"TransferAlreadyRedeemed"},{code:6008,name:"TransferCannotBeRedeemed",msg:"TransferCannotBeRedeemed"},{code:6009,name:"TransferNotApproved",msg:"TransferNotApproved"},{code:6010,name:"MessageAlreadySent",msg:"MessageAlreadySent"},{code:6011,name:"InvalidMode",msg:"InvalidMode"},{code:6012,name:"InvalidMintAuthority",msg:"InvalidMintAuthority"},{code:6013,name:"TransferExceedsRateLimit",msg:"TransferExceedsRateLimit"},{code:6014,name:"Paused",msg:"Paused"},{code:6015,name:"DisabledTransceiver",msg:"DisabledTransceiver"},{code:6016,name:"InvalidDeployer",msg:"InvalidDeployer"},{code:6017,name:"BadAmountAfterTransfer",msg:"BadAmountAfterTransfer"},{code:6018,name:"BadAmountAfterBurn",msg:"BadAmountAfterBurn"},{code:6019,name:"ZeroThreshold",msg:"ZeroThreshold"},{code:6020,name:"OverflowExponent",msg:"OverflowExponent"},{code:6021,name:"OverflowScaledAmount",msg:"OverflowScaledAmount"},{code:6022,name:"BitmapIndexOutOfBounds",msg:"BitmapIndexOutOfBounds"},{code:6023,name:"NoRegisteredTransceivers",msg:"NoRegisteredTransceivers"},{code:6024,name:"NotPaused",msg:"NotPaused"},{code:6025,name:"InvalidPendingTokenAuthority",msg:"InvalidPendingTokenAuthority"},{code:6026,name:"IncorrectRentPayer",msg:"IncorrectRentPayer"},{code:6027,name:"InvalidMultisig",msg:"InvalidMultisig"},{code:6028,name:"ThresholdTooHigh",msg:"ThresholdTooHigh"},{code:6029,name:"InvalidTransceiverProgram",msg:"InvalidTransceiverProgram"}]},nt={version:"3.0.0",name:"ntt_transceiver",instructions:[{name:"transceiverType",accounts:[],args:[],returns:"string"},{name:"setWormholePeer",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"peer",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetTransceiverPeerArgs"}}]},{name:"receiveWormholeMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"releaseWormholeOutbound",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]},{name:"manager",isMut:!1,isSigner:!1},{name:"outboxItemSigner",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"ReleaseOutboundArgs"}}]},{name:"broadcastWormholeId",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1,docs:["enforced by the [`CpiContext`] call in [`post_message`].","The seeds constraint ensures that this is the correct address"]},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[]},{name:"broadcastWormholePeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"BroadcastPeerArgs"}}]}],accounts:[{name:"config",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"owner",docs:["Owner of the program."],type:"publicKey"},{name:"pendingOwner",docs:["Pending next owner (before claiming ownership)."],type:{option:"publicKey"}},{name:"mint",docs:["Mint address of the token managed by this program."],type:"publicKey"},{name:"tokenProgram",docs:["Address of the token program (token or token22). This could always be queried","from the [`mint`] account's owner, but storing it here avoids an indirection","on the client side."],type:"publicKey"},{name:"mode",docs:["The mode that this program is running in. This is used to determine","whether the program is burning tokens or locking tokens."],type:{defined:"Mode"}},{name:"chainId",docs:["The chain id of the chain that this program is running on. We don't","hardcode this so that the program is deployable on any potential SVM","forks."],type:{defined:"ChainId"}},{name:"nextTransceiverId",docs:["The next transceiver id to use when registering an transceiver."],type:"u8"},{name:"threshold",docs:["The number of transceivers that must attest to a transfer before it is","accepted."],type:"u8"},{name:"enabledTransceivers",docs:["Bitmap of enabled transceivers.","The maximum number of transceivers is equal to [`Bitmap::BITS`]."],type:{defined:"Bitmap"}},{name:"paused",docs:["Pause the program. This is useful for upgrades and other maintenance."],type:"bool"},{name:"custody",docs:["The custody account that holds tokens in locking mode."],type:"publicKey"}]}},{name:"outboxItem",type:{kind:"struct",fields:[{name:"amount",type:{defined:"TrimmedAmount"}},{name:"sender",type:"publicKey"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientNttManager",type:{array:["u8",32]}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"releaseTimestamp",type:"i64"},{name:"released",type:{defined:"Bitmap"}}]}},{name:"registeredTransceiver",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"id",type:"u8"},{name:"transceiverAddress",type:"publicKey"}]}},{name:"transceiverPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}},{name:"bridgeData",type:{kind:"struct",fields:[{name:"guardianSetIndex",docs:["The current guardian set index, used to decide which signature sets to accept."],type:"u32"},{name:"lastLamports",docs:["Lamports in the collection account"],type:"u64"},{name:"config",docs:["Bridge configuration, which is set once upon initialization."],type:{defined:"BridgeConfig"}}]}}],types:[{name:"Bitmap",type:{kind:"struct",fields:[{name:"map",type:"u128"}]}},{name:"ChainId",type:{kind:"struct",fields:[{name:"id",type:"u16"}]}},{name:"Mode",type:{kind:"enum",variants:[{name:"Locking"},{name:"Burning"}]}},{name:"TrimmedAmount",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]}},{name:"SetTransceiverPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}}]}},{name:"BroadcastPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"ReleaseOutboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"BridgeConfig",type:{kind:"struct",fields:[{name:"guardianSetExpirationTime",docs:["Period for how long a guardian set is valid after it has been replaced by a new one. This","guarantees that VAAs issued by that set can still be submitted for a certain period. In","this period we still trust the old guardian set."],type:"u32"},{name:"fee",docs:["Amount of lamports that needs to be paid to the protocol to post a message"],type:"u64"}]}}]},it={version:"3.0.0",name:"ntt_quoter",instructions:[{name:"requestRelay",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!1,isSigner:!1,docs:["and checking the release constraint into a single function"]},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RequestRelayArgs"}}]},{name:"closeRelay",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"feeRecipient",isMut:!0,isSigner:!1},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"initialize",accounts:[{name:"owner",isMut:!0,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1,docs:["We use the program data to make sure this owner is the upgrade authority (the true owner,","who deployed this program)."]},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAssistant",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"assistant",isMut:!1,isSigner:!1,isOptional:!0}],args:[]},{name:"setFeeRecipient",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1}],args:[]},{name:"registerChain",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainArgs"}}]},{name:"registerNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterNttArgs"}}]},{name:"deregisterNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"DeregisterNttArgs"}}]},{name:"updateSolPrice",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateSolPriceArgs"}}]},{name:"updateChainPrices",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainPricesArgs"}}]},{name:"updateChainParams",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainParamsArgs"}}]}],accounts:[{name:"instance",type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"assistant",type:"publicKey"},{name:"feeRecipient",type:"publicKey"},{name:"solPrice",type:"u64"}]}},{name:"registeredChain",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"},{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"registeredNtt",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"relayRequest",type:{kind:"struct",fields:[{name:"requestedGasDropoff",type:"u64"}]}}],types:[{name:"RegisterChainArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"RegisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"DeregisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"}]}},{name:"RequestRelayArgs",type:{kind:"struct",fields:[{name:"gasDropoff",type:"u64"},{name:"maxFee",type:"u64"}]}},{name:"UpdateSolPriceArgs",type:{kind:"struct",fields:[{name:"solPrice",type:"u64"}]}},{name:"UpdateChainPricesArgs",type:{kind:"struct",fields:[{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"UpdateChainParamsArgs",type:{kind:"struct",fields:[{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"}]}}],errors:[{code:6001,name:"ExceedsUserMaxFee",msg:"Relay fees exceeds specified max"},{code:6002,name:"ExceedsMaxGasDropoff",msg:"Requested gas dropoff exceeds max allowed for chain"},{code:6003,name:"InvalidFeeRecipient",msg:"The specified fee recipient does not match the address in the instance accound"},{code:6004,name:"RelayingToChainDisabled",msg:"Relaying to the specified chain is disabled"},{code:6005,name:"OutboxItemNotReleased",msg:"Relaying to the specified chain is disabled"},{code:6006,name:"ScalingOverflow",msg:"Scaled value exceeds u64::MAX"},{code:6007,name:"DivByZero",msg:"Cannot divide by zero"},{code:6257,name:"FeeRecipientCannotBeDefault",msg:"The fee recipient cannot be the default address (0x0)"},{code:6258,name:"NotAuthorized",msg:"Must be owner or assistant"},{code:6259,name:"PriceCannotBeZero",msg:"The price cannot be zero"}]},st={version:"3.0.0",name:"wormhole_governance",instructions:[{name:"governance",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"governance",isMut:!0,isSigner:!1,docs:["governed program. This account is validated by Wormhole, not this program."]},{name:"vaa",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"replay",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"replayProtection",type:{kind:"struct",fields:[{name:"bump",type:"u8"}]}}],errors:[{code:6e3,name:"InvalidGovernanceChain",msg:"InvalidGovernanceChain"},{code:6001,name:"InvalidGovernanceEmitter",msg:"InvalidGovernanceEmitter"},{code:6002,name:"InvalidGovernanceProgram",msg:"InvalidGovernanceProgram"}]};var $e;(function(c){c.idl={ntt:at,transceiver:nt,quoter:it,governance:st}})($e||($e={}));const W1=[["3.0.0",$e],["2.0.0",qe],["1.0.0",Fe]];function z1(c){for(const[e,a]of W1)if(D0.abiVersionMatches(c,e))return a;throw new Error(`Unknown IDL version: ${c}`)}function K1(c,e,a){const{idl:{ntt:i}}=z1(a);return new z0.Program(i,e,{connection:c})}function k1(c,e,a){const{idl:{transceiver:i}}=z1(a);return new z0.Program(i,e,{connection:c})}const Y0=new f.PublicKey("BPFLoaderUpgradeab1e11111111111111111111111");function J0(c){return f.PublicKey.findProgramAddressSync([new f.PublicKey(c).toBytes()],Y0)[0]}function G0(c){const e=c.split(".");if(e.length<3)throw new Error("Invalid version string");const a=e[2],i=a.split(/[^0-9]/)[0],o=a.slice(i.length);return[Number(e[0]),Number(e[1]),Number(i),o]}const rt={to:c=>new f.PublicKey(c),from:c=>c.toBytes()},ot=[{name:"slot",binary:"uint",endianness:"little",size:8},{name:"upgradeAuthority",binary:"switch",idSize:1,idTag:"isSome",layouts:[[[0,!1],[]],[[1,!0],[{name:"value",binary:"bytes",size:32,custom:rt}]]]}],ft=[{name:"length",binary:"uint",endianness:"little",size:4},{name:"version",binary:"bytes"}],E0={MAX:new F0((2n**64n-1n).toString()),to:(c,e)=>{const a=new F0(Math.round(c*e));if(a.isNeg())throw new Error("Value negative");if(a.bitLength()>64)throw new Error("Value too large");return a},from:(c,e)=>c.toNumber()/e};function j(c,e){const a=i=>typeof i=="string"?f.bytes.encode(i):i;return f.PublicKey.findProgramAddressSync(Array.isArray(c)?c.map(a):[a(c)],new f.PublicKey(e))[0]}const q0=c=>f.bignum.toBytes(f.toChainId(c),2),dt=c=>({relayRequestAccount:n=>j(["relay_request",n.toBytes()],c),instanceAccount:()=>j("instance",c),registeredChainAccount:n=>j(["registered_chain",q0(n)],c),registeredNttAccount:n=>j(["registered_ntt",n.toBytes()],c)});new f.PublicKey(f.Buffer.from("owner".padEnd(32,"\0")));new f.PublicKey(f.Buffer.from("payer".padEnd(32,"\0")));var Q;(function(c){function e(b,t,s){return{amount:new F0(b.toString()),recipientChain:{id:f.toChainId(t.chain)},recipientAddress:Array.from(t.address.toUniversalAddress().toUint8Array()),shouldQueue:s}}c.transferArgs=e,c.pdas=b=>({configAccount:()=>j("config",b),outboxRateLimitAccount:()=>j("outbox_rate_limit",b),inboxRateLimitAccount:P=>j(["inbox_rate_limit",q0(P)],b),inboxItemAccount:(P,F)=>j(["inbox_item",D0.messageDigest(P,F)],b),upgradeLock:()=>j("upgrade_lock",b),sessionAuthority:(P,F)=>j(["session_authority",P.toBytes(),f.keccak_256(f.bytes.concat(f.bytes.zpad(new Uint8Array(F.amount.toArray()),8),q0(F.recipientChain.id),new Uint8Array(F.recipientAddress),new Uint8Array([F.shouldQueue?1:0])))],b),tokenAuthority:()=>j("token_authority",b),pendingTokenAuthority:()=>j("pending_token_authority",b),peerAccount:P=>j(["peer",q0(P)],b),registeredTransceiver:P=>j(["registered_transceiver",P.toBytes()],b),lutAccount:()=>j("lut",b),lutAuthority:()=>j("lut_authority",b)}),c.transceiverPdas=b=>({emitterAccount:()=>j("emitter",b),outboxItemSigner:()=>j(["outbox_item_signer"],b),transceiverPeerAccount:h=>j(["transceiver_peer",q0(h)],b),transceiverMessageAccount:(h,v)=>j(["transceiver_message",q0(h),v],b),wormholeMessageAccount:h=>j(["message",h.toBytes()],b)});async function a(b,t,s){if(!s){const k=b.rpcEndpoint===f.rpcAddress("Devnet","Solana")?"6sbzC1eH4FTujJXWj51eQe25cYvr4xfXbJ1vAj7j2k5J":b.rpcEndpoint.startsWith("http://localhost")?"98evdAiWr7ey9MAQzoQQMwFQkTsSR6KkWQuFqKrgwNwb":"Hk3SdYTJFpawrvRz4qRztuEt2SqoCG7BGj2yJfDJSFbJ";s=new f.PublicKey(k)}const d=K1(b,t.toString(),"1.0.0"),l=await d.methods.version().accountsStrict({}).instruction(),{blockhash:y}=await d.provider.connection.getLatestBlockhash("finalized"),h=new f.TransactionMessage({payerKey:s,recentBlockhash:y,instructions:[l]}).compileToV0Message(),v=new f.VersionedTransaction(h),m=await d.provider.connection.simulateTransaction(v,{sigVerify:!1});if(!m.value.returnData||m.value.err)throw new Error("Could not fetch IDL version: "+JSON.stringify(z0.translateError(m.value.err,z0.parseIdlErrors(d.idl))));const r=f.b64.decode(m.value.returnData?.data[0]),p=f.deserialize$1(ft,r),x=f.bytes.decode(p.version);for(const[k]of W1)if(D0.abiVersionMatches(x,k))return k;throw new Error(`Unknown IDL version: ${x}`)}c.getVersion=a;async function i(b,t,s){const[d,,,]=G0(b.idl.version),l=t.mode==="burning"?{burning:{}}:{locking:{}},y=f.toChainId(t.chain);s=s??c.pdas(b.programId);const h=new F0(t.outboundLimit.toString());return b.methods.initialize({chainId:y,limit:h,mode:l}).accounts({payer:t.payer,deployer:t.owner,programData:J0(b.programId),config:s.configAccount(),mint:t.mint,rateLimit:s.outboxRateLimitAccount(),tokenProgram:t.tokenProgram,tokenAuthority:s.tokenAuthority(),...d>=3&&{multisigTokenAuthority:t.multisigTokenAuthority??null},custody:await c.custodyAccountAddress(s,t.mint,t.tokenProgram),bpfLoaderUpgradeableProgram:Y0,associatedTokenProgram:B.ASSOCIATED_TOKEN_PROGRAM_ID,systemProgram:f.SystemProgram.programId}).instruction()}c.createInitializeInstruction=i;async function o(b,t,s,d,l){const[y,,,]=G0(b.idl.version);if(y<2)return;l=l??c.pdas(b.programId);const h=await b.provider.connection.getSlot()-1,[v,m]=f.AddressLookupTableProgram.createLookupTable({authority:l.lutAuthority(),payer:d.payer,recentSlot:h}),r=Q0.getWormholeDerivedAccounts(s,d.wormholeId.toString()),p={config:l.configAccount(),custody:t.custody,tokenProgram:t.tokenProgram,mint:t.mint,tokenAuthority:l.tokenAuthority(),outboxRateLimit:l.outboxRateLimitAccount(),wormhole:{bridge:r.wormholeBridge,feeCollector:r.wormholeFeeCollector,sequence:r.wormholeSequence,program:d.wormholeId,systemProgram:f.SystemProgram.programId,clock:f.SYSVAR_CLOCK_PUBKEY,rent:f.SYSVAR_RENT_PUBKEY}},x=F=>{const q=new Array;for(const W in F){const $0=F[W];$0 instanceof f.PublicKey?q.push($0):typeof $0=="object"&&q.push(...x($0))}return q},k=x(p).map(F=>F.toBase58()),P=await L(b,l);if(P!==null){const F=P.state.addresses?.map(W=>W.toBase58())??[];if(k.filter(W=>!F.includes(W)).length===0)return null}return b.methods.initializeLut(new F0(h)).accountsStrict({payer:d.payer,owner:d.owner,authority:l.lutAuthority(),lutAddress:m,lut:l.lutAccount(),lutProgram:f.AddressLookupTableProgram.programId,systemProgram:f.SystemProgram.programId,entries:p}).instruction()}c.initializeOrUpdateLUT=o;async function n(b,t,s,d){d=d??c.pdas(b.programId);const l=await K(d,t),y=f.toChain(s.transferArgs.recipientChain.id),h=await b.methods.transferBurn(s.transferArgs).accountsStrict({common:{payer:s.payer,config:{config:d.configAccount()},mint:t.mint,from:s.from,tokenProgram:t.tokenProgram,outboxItem:s.outboxItem,outboxRateLimit:d.outboxRateLimitAccount(),systemProgram:f.SystemProgram.programId,custody:l},peer:d.peerAccount(y),inboxRateLimit:d.inboxRateLimitAccount(y),sessionAuthority:d.sessionAuthority(s.fromAuthority,s.transferArgs),tokenAuthority:d.tokenAuthority()}).instruction(),v=await B.getMint(b.provider.connection,t.mint,void 0,t.tokenProgram),m=ae(v);if(m){const r=s.from,p=t.mint,x=await K(d,t),k=d.sessionAuthority(s.fromAuthority,s.transferArgs);await de(b.provider.connection,h,m.programId,r,p,x,k,0)}return h}c.createTransferBurnInstruction=n;async function u(b,t,s,d){if(t.paused)throw new Error("Contract is paused");d=d??c.pdas(b.programId);const l=f.toChain(s.transferArgs.recipientChain.id),y=await K(d,t),h=await b.methods.transferLock(s.transferArgs).accountsStrict({common:{payer:s.payer,config:{config:d.configAccount()},mint:t.mint,from:s.from,tokenProgram:t.tokenProgram,outboxItem:s.outboxItem,outboxRateLimit:d.outboxRateLimitAccount(),custody:y,systemProgram:f.SystemProgram.programId},peer:d.peerAccount(l),inboxRateLimit:d.inboxRateLimitAccount(l),sessionAuthority:d.sessionAuthority(s.fromAuthority,s.transferArgs),custody:y}).instruction(),v=await B.getMint(b.provider.connection,t.mint,void 0,t.tokenProgram),m=ae(v);if(m){const r=s.from,p=await K(d,t),x=d.sessionAuthority(s.fromAuthority,s.transferArgs);await de(b.provider.connection,h,m.programId,r,t.mint,p,x,0)}return h}c.createTransferLockInstruction=u;async function g(b,t,s,d){const[l,,,]=G0(b.idl.version);d=d??c.pdas(b.programId);const y=await B.getMint(b.provider.connection,t.mint,void 0,t.tokenProgram);let h=null;y.mintAuthority?.equals(d.tokenAuthority())||(h=y.mintAuthority);const v=s.recipient??(await H(b,s.chain,s.nttMessage)).recipientAddress,m=await b.methods.releaseInboundMint({revertOnDelay:s.revertWhenNotReady,revertWhenNotReady:s.revertWhenNotReady}).accounts({common:{payer:s.payer,config:{config:d.configAccount()},inboxItem:d.inboxItemAccount(s.chain,s.nttMessage),recipient:B.getAssociatedTokenAddressSync(t.mint,v,!0,t.tokenProgram),mint:t.mint,tokenAuthority:d.tokenAuthority(),tokenProgram:t.tokenProgram,custody:await K(d,t)},...l>=3&&{multisigTokenAuthority:h}}).instruction(),r=ae(y);if(r){const p=await K(d,t),x=t.mint,k=B.getAssociatedTokenAddressSync(x,v,!0,t.tokenProgram),P=d.tokenAuthority();await de(b.provider.connection,m,r.programId,p,x,k,P,0)}return m}c.createReleaseInboundMintInstruction=g;async function T(b,t,s,d){const l=s.recipient??(await c.getInboxItem(b,s.chain,s.nttMessage)).recipientAddress;d=d??c.pdas(b.programId);const y=await K(d,t),h=await b.methods.releaseInboundUnlock({revertOnDelay:s.revertWhenNotReady,revertWhenNotReady:s.revertWhenNotReady}).accountsStrict({common:{payer:s.payer,config:{config:d.configAccount()},inboxItem:d.inboxItemAccount(s.chain,s.nttMessage),recipient:B.getAssociatedTokenAddressSync(t.mint,l,!0,t.tokenProgram),mint:t.mint,tokenAuthority:d.tokenAuthority(),tokenProgram:t.tokenProgram,custody:y},custody:y}).instruction(),v=await B.getMint(b.provider.connection,t.mint,void 0,t.tokenProgram),m=ae(v);if(m){const r=await K(d,t),p=t.mint,x=B.getAssociatedTokenAddressSync(p,l,!0,t.tokenProgram),k=d.tokenAuthority();await de(b.provider.connection,h,m.programId,r,p,x,k,0)}return h}c.createReleaseInboundUnlockInstruction=T;async function w(b,t,s){return s=s??c.pdas(b.programId),b.methods.transferOwnershipOneStepUnchecked().accountsStrict({config:s.configAccount(),owner:t.owner,newOwner:t.newOwner,upgradeLock:s.upgradeLock(),programData:J0(b.programId),bpfLoaderUpgradeableProgram:Y0}).instruction()}c.createTransferOwnershipOneStepUncheckedInstruction=w;async function S(b,t,s){return s=s??c.pdas(b.programId),b.methods.transferOwnership().accountsStrict({config:s.configAccount(),owner:t.owner,newOwner:t.newOwner,upgradeLock:s.upgradeLock(),programData:J0(b.programId),bpfLoaderUpgradeableProgram:Y0}).instruction()}c.createTransferOwnershipInstruction=S;async function M(b,t,s){return s=s??c.pdas(b.programId),b.methods.claimOwnership().accountsStrict({config:s.configAccount(),newOwner:t.newOwner,upgradeLock:s.upgradeLock(),programData:J0(b.programId),bpfLoaderUpgradeableProgram:Y0}).instruction()}c.createClaimOwnershipInstruction=M;async function A(b,t,s,d){return d=d??c.pdas(b.programId),b.methods.acceptTokenAuthority().accountsStrict({common:{config:d.configAccount(),mint:t.mint,tokenProgram:t.tokenProgram,tokenAuthority:d.tokenAuthority(),multisigTokenAuthority:s.multisigTokenAuthority??null},currentAuthority:s.currentAuthority}).instruction()}c.createAcceptTokenAuthorityInstruction=A;async function I(b,t,s,d){return d=d??c.pdas(b.programId),b.methods.acceptTokenAuthorityFromMultisig().accountsStrict({common:{config:d.configAccount(),mint:t.mint,tokenProgram:t.tokenProgram,tokenAuthority:d.tokenAuthority(),multisigTokenAuthority:s.multisigTokenAuthority??null},currentMultisigAuthority:s.currentMultisigAuthority}).remainingAccounts(s.additionalSigners.map(l=>({pubkey:l,isSigner:!0,isWritable:!1}))).instruction()}c.createAcceptTokenAuthorityFromMultisigInstruction=I;async function C(b,t,s,d){return d=d??c.pdas(b.programId),b.methods.setTokenAuthorityOneStepUnchecked().accountsStrict({common:{config:d.configAccount(),tokenAuthority:d.tokenAuthority(),mint:t.mint,owner:s.owner,newAuthority:s.newAuthority,multisigTokenAuthority:s.multisigTokenAuthority??null},tokenProgram:t.tokenProgram}).instruction()}c.createSetTokenAuthorityOneStepUncheckedInstruction=C;async function N(b,t,s,d){return d=d??c.pdas(b.programId),b.methods.setTokenAuthority().accountsStrict({common:{config:d.configAccount(),tokenAuthority:d.tokenAuthority(),mint:t.mint,owner:s.owner,newAuthority:s.newAuthority,multisigTokenAuthority:s.multisigTokenAuthority??null},rentPayer:s.rentPayer,pendingTokenAuthority:d.pendingTokenAuthority(),systemProgram:f.SystemProgram.programId}).instruction()}c.createSetTokenAuthorityInstruction=N;async function R(b,t,s,d){return d=d??c.pdas(b.programId),b.methods.revertTokenAuthority().accountsStrict({common:{config:d.configAccount(),mint:t.mint,tokenAuthority:d.tokenAuthority(),tokenProgram:t.tokenProgram,systemProgram:f.SystemProgram.programId,rentPayer:s.rentPayer,pendingTokenAuthority:d.pendingTokenAuthority(),multisigTokenAuthority:s.multisigTokenAuthority??null},owner:s.owner}).instruction()}c.createRevertTokenAuthorityInstruction=R;async function E(b,t,s,d){return d=d??c.pdas(b.programId),b.methods.claimTokenAuthority().accountsStrict({common:{config:d.configAccount(),mint:t.mint,tokenAuthority:d.tokenAuthority(),tokenProgram:t.tokenProgram,systemProgram:f.SystemProgram.programId,rentPayer:s.rentPayer,pendingTokenAuthority:d.pendingTokenAuthority(),multisigTokenAuthority:s.multisigTokenAuthority??null},newAuthority:s.newAuthority}).instruction()}c.createClaimTokenAuthorityInstruction=E;async function D(b,t,s,d){return d=d??c.pdas(b.programId),b.methods.claimTokenAuthorityToMultisig().accountsStrict({common:{config:d.configAccount(),mint:t.mint,tokenAuthority:d.tokenAuthority(),tokenProgram:t.tokenProgram,systemProgram:f.SystemProgram.programId,rentPayer:s.rentPayer,pendingTokenAuthority:d.pendingTokenAuthority(),multisigTokenAuthority:s.multisigTokenAuthority??null},newMultisigAuthority:s.newMultisigAuthority}).remainingAccounts(s.additionalSigners.map(l=>({pubkey:l,isSigner:!0,isWritable:!1}))).instruction()}c.createClaimTokenAuthorityToMultisigInstruction=D;async function O(b,t,s){return s=s??c.pdas(b.programId),b.methods.setPeer({chainId:{id:f.toChainId(t.chain)},address:Array.from(t.address),limit:t.limit,tokenDecimals:t.tokenDecimals}).accounts({payer:t.payer,owner:t.owner,config:s.configAccount(),peer:s.peerAccount(t.chain),inboxRateLimit:s.inboxRateLimitAccount(t.chain)}).instruction()}c.createSetPeerInstruction=O;async function U(b,t,s){return s=s??c.pdas(b.programId),b.methods.setPaused(t.paused).accountsStrict({owner:t.owner,config:s.configAccount()}).instruction()}c.createSetPausedInstruction=U;async function V(b,t,s){return s=s??c.pdas(b.programId),b.methods.setThreshold(t.threshold).accountsStrict({owner:t.owner,config:s.configAccount()}).instruction()}c.createSetThresholdInstruction=V;async function z(b,t,s){return s=s??c.pdas(b.programId),b.methods.setOutboundLimit({limit:t.limit}).accounts({owner:t.owner,config:s.configAccount(),rateLimit:s.outboxRateLimitAccount()}).instruction()}c.createSetOutboundLimitInstruction=z;async function G(b,t,s){return s=s??c.pdas(b.programId),b.methods.setInboundLimit({chainId:{id:f.toChainId(t.chain)},limit:t.limit}).accounts({owner:t.owner,config:s.configAccount(),rateLimit:s.inboxRateLimitAccount(t.chain)}).instruction()}c.createSetInboundLimitInstruction=G;async function O0(b,t,s,d,l,y){l=l??c.pdas(b.programId),y=y??c.transceiverPdas(s);const h=d.vaa,v=h.payload.nttManagerPayload,m=h.emitterChain;return b.methods.redeem({}).accounts({payer:d.payer,config:l.configAccount(),peer:l.peerAccount(m),transceiverMessage:y.transceiverMessageAccount(m,v.id),transceiver:l.registeredTransceiver(s),mint:t.mint,inboxItem:l.inboxItemAccount(m,v),inboxRateLimit:l.inboxRateLimitAccount(m),outboxRateLimit:l.outboxRateLimitAccount()}).instruction()}c.createRedeemInstruction=O0;async function N0(b,t){return b.account.config.fetch(t.configAccount())}c.getConfig=N0;async function H(b,t,s){return b.account.inboxItem.fetch(c.pdas(b.programId).inboxItemAccount(t,s))}c.getInboxItem=H;async function L(b,t){const[s,,,]=G0(b.idl.version);if(s<2)return null;t=t??c.pdas(b.programId);const d=await b.account.lut.fetchNullable(t.lutAccount());if(!d)return null;const l=await b.provider.connection.getAddressLookupTable(d.address);if(l.value===null)throw new Error("Could not fetch LUT");return l.value}c.getAddressLookupTable=L;async function K(b,t,s=B.TOKEN_PROGRAM_ID){return t instanceof f.PublicKey?B.getAssociatedTokenAddress(t,b.tokenAuthority(),!0,s):B.getAssociatedTokenAddress(t.mint,b.tokenAuthority(),!0,t.tokenProgram)}c.custodyAccountAddress=K})(Q||(Q={}));async function de(c,e,a,i,o,n,u,g,T){const w=b6(o,a),S=await c.getAccountInfo(w,T);if(S==null)return e;const M=m6(S);if(![i,o,n,u].every(I=>e.keys.some(C=>C.pubkey.equals(I))))throw new Error("Missing required account in instruction");const A=y6(a,i,o,n,u,w,BigInt(g));for(const I of M)A.keys.push(ct(await p6(c,I,A.keys,A.data,A.programId),A.keys));e.keys.push(...A.keys.slice(5)),e.keys.push({pubkey:a,isSigner:!1,isWritable:!1}),e.keys.push({pubkey:w,isSigner:!1,isWritable:!1})}function ct(c,e){const a=e.filter(i=>i.pubkey.equals(c.pubkey)).reduce((i,o)=>i?{isSigner:i.isSigner||o.isSigner,isWritable:i.isWritable||o.isWritable}:{isSigner:o.isSigner,isWritable:o.isWritable},void 0);if(a){const{isSigner:i,isWritable:o}=a;!i&&i!==c.isSigner&&(c.isSigner=!1),!o&&o!==c.isWritable&&(c.isWritable=!1)}return c}const bt="2.0.0",ut="ntt_quoter",lt=[{name:"requestRelay",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!1,isSigner:!1,docs:["and checking the release constraint into a single function"]},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RequestRelayArgs"}}]},{name:"closeRelay",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"feeRecipient",isMut:!0,isSigner:!1},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"initialize",accounts:[{name:"owner",isMut:!0,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1,docs:["We use the program data to make sure this owner is the upgrade authority (the true owner,","who deployed this program)."]},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAssistant",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"assistant",isMut:!1,isSigner:!1,isOptional:!0}],args:[]},{name:"setFeeRecipient",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1}],args:[]},{name:"registerChain",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainArgs"}}]},{name:"registerNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterNttArgs"}}]},{name:"deregisterNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"DeregisterNttArgs"}}]},{name:"updateSolPrice",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateSolPriceArgs"}}]},{name:"updateChainPrices",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainPricesArgs"}}]},{name:"updateChainParams",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainParamsArgs"}}]}],mt=[{name:"Instance",type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"assistant",type:"publicKey"},{name:"feeRecipient",type:"publicKey"},{name:"solPrice",type:"u64"}]}},{name:"RegisteredChain",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"},{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"RegisteredNtt",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"RelayRequest",type:{kind:"struct",fields:[{name:"requestedGasDropoff",type:"u64"}]}}],pt=[{name:"RegisterChainArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"RegisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"DeregisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"}]}},{name:"RequestRelayArgs",type:{kind:"struct",fields:[{name:"gasDropoff",type:"u64"},{name:"maxFee",type:"u64"}]}},{name:"UpdateSolPriceArgs",type:{kind:"struct",fields:[{name:"solPrice",type:"u64"}]}},{name:"UpdateChainPricesArgs",type:{kind:"struct",fields:[{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"UpdateChainParamsArgs",type:{kind:"struct",fields:[{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"}]}}],yt=[{code:6001,name:"ExceedsUserMaxFee",msg:"Relay fees exceeds specified max"},{code:6002,name:"ExceedsMaxGasDropoff",msg:"Requested gas dropoff exceeds max allowed for chain"},{code:6003,name:"InvalidFeeRecipient",msg:"The specified fee recipient does not match the address in the instance accound"},{code:6004,name:"RelayingToChainDisabled",msg:"Relaying to the specified chain is disabled"},{code:6005,name:"OutboxItemNotReleased",msg:"Relaying to the specified chain is disabled"},{code:6006,name:"ScalingOverflow",msg:"Scaled value exceeds u64::MAX"},{code:6007,name:"DivByZero",msg:"Cannot divide by zero"},{code:6257,name:"FeeRecipientCannotBeDefault",msg:"The fee recipient cannot be the default address (0x0)"},{code:6258,name:"NotAuthorized",msg:"Must be owner or assistant"},{code:6259,name:"PriceCannotBeZero",msg:"The price cannot be zero"}],ht={version:bt,name:ut,instructions:lt,accounts:mt,types:pt,errors:yt},j0=1e6,V0=1e9,P1=1e9,gt="instance",vt="registered_chain",Tt="registered_ntt",wt="relay_request";class Mt{instance;program;nttProgramId;pdas;constructor(e,a,i){this.program=new z0.Program(ht,new f.PublicKey(a),{connection:e}),this.nttProgramId=new f.PublicKey(i),this.pdas=dt(this.program.programId),this.instance=j([gt],this.program.programId)}async isRelayEnabled(e){try{const{paused:a}=await this.getRegisteredChain(e);return!a}catch(a){if(a.message?.includes("Account does not exist"))return!1;throw a}}async calcRelayCostInSol(e,a,i){const[o,n,u,g]=await Promise.all([this.getRegisteredChain(a),this.getRegisteredNtt(e),this.getInstance(),this.program.provider.connection.getMinimumBalanceForRentExemption(this.program.account.relayRequest.size)]);if(i>o.maxGasDropoffEth)throw new Error("Requested gas dropoff exceeds allowed maximum");const T=o.nativePriceUsd*(i+o.gasPriceGwei*n.gasCost/V0);return g/f.LAMPORTS_PER_SOL+(o.basePriceUsd+T)/u.solPriceUsd}async quoteDeliveryPrice(e,a){if(f.chainToPlatform(e)!=="Evm")throw new Error("Only EVM chains are supported");const i=f.whole(f.fromBaseUnits(a??0n,18)),[o,n,u,g]=await Promise.all([this.getRegisteredChain(e),this.getInstance(),this.getRegisteredNtt(this.nttProgramId),this.program.provider.connection.getMinimumBalanceForRentExemption(this.program.account.relayRequest.size)]);if(o.nativePriceUsd===0)throw new Error("Native price is 0");if(n.solPriceUsd===0)throw new Error("SOL price is 0");if(i>o.maxGasDropoffEth)throw new Error("Requested gas dropoff exceeds allowed maximum");const T=o.nativePriceUsd*(i+o.gasPriceGwei*u.gasCost/V0),w=g/f.LAMPORTS_PER_SOL+(o.basePriceUsd+T)/n.solPriceUsd;return BigInt(E0.to(w*1.05,f.LAMPORTS_PER_SOL).toString())}async createRequestRelayInstruction(e,a,i,o,n){return this.program.methods.requestRelay({maxFee:E0.to(o,f.LAMPORTS_PER_SOL),gasDropoff:E0.to(n,V0)}).accountsStrict({payer:e,instance:this.instance,registeredChain:this.registeredChainPda(i),outboxItem:a,relayRequest:this.relayRequestPda(a),systemProgram:f.SystemProgram.programId,registeredNtt:this.pdas.registeredNttAccount(this.nttProgramId)}).instruction()}async getInstance(){const e=await this.program.account.instance.fetch(this.instance);return{owner:e.owner,assistant:e.assistant,feeRecipient:e.feeRecipient,solPriceUsd:E0.from(e.solPrice,j0)}}async getRegisteredChain(e){const a=await this.program.account.registeredChain.fetch(this.registeredChainPda(e));return{paused:a.basePrice.eq(E0.MAX),maxGasDropoffEth:E0.from(a.maxGasDropoff,V0),basePriceUsd:E0.from(a.basePrice,j0),nativePriceUsd:E0.from(a.nativePrice,j0),gasPriceGwei:E0.from(a.gasPrice,P1)}}async getRegisteredNtt(e){const a=await this.program.account.registeredNtt.fetch(this.registeredNttPda(e));return{gasCost:a.gasCost,wormholeTransceiverIndex:a.wormholeTransceiverIndex}}async wasRelayRequested(e){const a=await this.program.account.relayRequest.fetchNullable(this.relayRequestPda(e));return a?E0.from(a.requestedGasDropoff,V0):null}async createInitalizeInstruction(e){if(!this.program.account.instance.fetchNullable(this.instance))throw new Error("Already initialized");const a=J0(this.program.programId),i=await this.program.provider.connection.getAccountInfo(a);if(!i)throw new Error("Could not find program data account");const o=f.deserialize$1(ot,i.data);if(!o.upgradeAuthority.isSome)throw new Error("Could not determine program owner from program data.");return this.program.methods.initialize().accounts({owner:o.upgradeAuthority.value,instance:this.instance,feeRecipient:e,programData:a,systemProgram:f.SystemProgram.programId}).instruction()}async createSetAssistantInstruction(e){const{owner:a,assistant:i}=await this.getInstance();if(i.equals(e))throw new Error("Is already assistant");return this.program.methods.setAssistant().accounts({owner:a,instance:this.instance,assistant:e}).instruction()}async createSetFeeRecipientInstruction(e){if(e.equals(f.PublicKey.default))throw new Error("Fee recipient cannot be default public key");const{owner:a,feeRecipient:i}=await this.getInstance();if(i.equals(e))throw new Error("Is already feeRecipient");return this.program.methods.setFeeRecipient().accounts({owner:a,instance:this.instance,feeRecipient:e}).instruction()}async createRegisterChainInstruction(e,a){const i=f.toChainId(a);return this.program.methods.registerChain({chainId:i}).accounts({authority:e,instance:this.instance,registeredChain:this.registeredChainPda(a),systemProgram:f.SystemProgram.programId}).instruction()}async createRegisterNttInstruction(e,a,i,o){return this.program.methods.registerNtt({nttProgramId:a,gasCost:i,wormholeTransceiverIndex:o}).accounts({authority:e,instance:this.instance,registeredNtt:this.registeredNttPda(a),systemProgram:f.SystemProgram.programId}).instruction()}async createDeregisterNttInstruction(e,a){return this.program.methods.deregisterNtt({nttProgramId:a}).accounts({authority:e,instance:this.instance,registeredNtt:this.registeredNttPda(a),systemProgram:f.SystemProgram.programId}).instruction()}async createUpdateSolPriceInstruction(e,a){return this.program.methods.updateSolPrice({solPrice:E0.to(a,j0)}).accounts({authority:e,instance:this.instance}).instruction()}async createUpdateChainParamsInstruction(e,a,i,o){return this.program.methods.updateChainParams({maxGasDropoff:E0.to(i,V0),basePrice:E0.to(o,j0)}).accounts({authority:e,instance:this.instance,registeredChain:this.registeredChainPda(a)}).instruction()}async createPauseRelayForChainInstruction(e,a){return this.program.methods.updateChainParams({maxGasDropoff:E0.to(0,1),basePrice:E0.MAX}).accounts({authority:e,instance:this.instance,registeredChain:this.registeredChainPda(a)}).instruction()}async createUpdateChainPricesInstruction(e,a,i,o){return this.program.methods.updateChainPrices({nativePrice:E0.to(i,j0),gasPrice:E0.to(o,P1)}).accounts({authority:e,instance:this.instance,registeredChain:this.registeredChainPda(a)}).instruction()}async createCloseRelayInstruction(e,a){return this.program.methods.closeRelay().accounts({authority:e,instance:this.instance,relayRequest:this.relayRequestPda(a)}).instruction()}registeredChainPda(e){return j([vt,q0(e)],this.program.programId)}registeredNttPda(e){return j([Tt,e.toBytes()],this.program.programId)}relayRequestPda(e){return j([wt,e.toBytes()],this.program.programId)}}class C1{manager;program;version;programId;pdas;constructor(e,a,i="3.0.0"){this.manager=e,this.program=a,this.version=i,this.programId=a.programId,this.pdas=Q.transceiverPdas(a.programId)}async getPauser(){return null}async*setPauser(e,a){throw new Error("Method not implemented.")}async*receive(e,a){if(e.payloadName!=="WormholeTransfer")throw new Error("Invalid attestation payload");const i=new f.SolanaAddress(a).unwrap(),o=await this.createReceiveIx(e,i),n=new f.Transaction;n.feePayer=i,n.add(o),yield this.manager.createUnsignedTx({transaction:n},"Ntt.Redeem")}async createReceiveIx(e,a){const i=e.payload.nttManagerPayload,o=e.emitterChain;return this.program.methods.receiveWormholeMessage().accounts({payer:a,config:{config:this.manager.pdas.configAccount()},peer:this.pdas.transceiverPeerAccount(o),vaa:Q0.derivePostedVaaKey(this.manager.core.address,f.Buffer.from(e.hash)),transceiverMessage:this.pdas.transceiverMessageAccount(o,i.id)}).instruction()}async getTransceiverType(e){const[a,,,]=G0(this.version);if(a<3)return"wormhole";const i=new f.SolanaAddress(e).unwrap(),o=await this.program.methods.transceiverType().accountsStrict({}).instruction(),n=await this.program.provider.connection.getLatestBlockhash(),u=new f.TransactionMessage({payerKey:i,recentBlockhash:n.blockhash,instructions:[o]}).compileToV0Message(),g=new f.VersionedTransaction(u),T=await this.program.provider.connection.simulateTransaction(g,{sigVerify:!1});if(T.value.returnData?.data[0]){const w=f.Buffer.from(T.value.returnData?.data[0],"base64"),S=w.readUInt32LE(0);return w.subarray(4,S+4).toString()}else throw new Error("no transceiver type found")}async getAddress(){return{chain:this.manager.chain,address:f.toUniversal(this.manager.chain,this.pdas.emitterAccount().toBase58())}}async*setPeer(e,a){const i=new f.SolanaAddress(a).unwrap(),o=await this.program.methods.setWormholePeer({chainId:{id:f.toChainId(e.chain)},address:Array.from(e.address.toUniversalAddress().toUint8Array())}).accounts({payer:i,owner:i,config:this.manager.pdas.configAccount(),peer:this.pdas.transceiverPeerAccount(e.chain)}).instruction(),n=f.Keypair.generate(),u=await this.createBroadcastWormholePeerIx(e.chain,i,n.publicKey),g=new f.Transaction;g.feePayer=i,g.add(o,u),yield this.manager.createUnsignedTx({transaction:g,signers:[n]},"Ntt.SetWormholeTransceiverPeer")}async getPeer(e){const a=await this.manager.program.account.transceiverPeer.fetchNullable(this.pdas.transceiverPeerAccount(e));return a?{chain:e,address:f.toUniversal(e,new Uint8Array(a.address))}:null}async createBroadcastWormholeIdIx(e,a,i){const o=Q0.getWormholeDerivedAccounts(this.program.programId,this.manager.core.address);return this.program.methods.broadcastWormholeId().accountsStrict({payer:e,config:this.manager.pdas.configAccount(),mint:a.mint,wormholeMessage:i,emitter:o.wormholeEmitter,wormhole:{bridge:o.wormholeBridge,feeCollector:o.wormholeFeeCollector,sequence:o.wormholeSequence,program:this.manager.core.address,systemProgram:f.SystemProgram.programId,clock:f.SYSVAR_CLOCK_PUBKEY,rent:f.SYSVAR_RENT_PUBKEY}}).instruction()}async createBroadcastWormholePeerIx(e,a,i){const o=Q0.getWormholeDerivedAccounts(this.program.programId,this.manager.core.address);return this.program.methods.broadcastWormholePeer({chainId:f.toChainId(e)}).accounts({payer:a,config:this.manager.pdas.configAccount(),peer:this.pdas.transceiverPeerAccount(e),wormholeMessage:i,emitter:o.wormholeEmitter,wormhole:{bridge:o.wormholeBridge,feeCollector:o.wormholeFeeCollector,sequence:o.wormholeSequence,program:this.manager.core.address}}).instruction()}async createReleaseWormholeOutboundIx(e,a,i){const[o,,,]=G0(this.version),n=Q0.getWormholeDerivedAccounts(this.program.programId,this.manager.core.address);return this.program.methods.releaseWormholeOutbound({revertOnDelay:i}).accounts({payer:e,config:{config:this.manager.pdas.configAccount()},outboxItem:a,wormholeMessage:this.pdas.wormholeMessageAccount(a),emitter:n.wormholeEmitter,transceiver:this.manager.pdas.registeredTransceiver(this.program.programId),wormhole:{bridge:n.wormholeBridge,feeCollector:n.wormholeFeeCollector,sequence:n.wormholeSequence,program:this.manager.core.address},...o>=3&&{manager:this.manager.program.programId,outboxItemSigner:this.pdas.outboxItemSigner()}}).instruction()}}class le{network;chain;connection;contracts;version;core;pdas;program;config;quoter;addressLookupTable;transceivers;managerAddress;tokenAddress;constructor(e,a,i,o,n="3.0.0"){if(this.network=e,this.chain=a,this.connection=i,this.contracts=o,this.version=n,!o.ntt)throw new Error("Ntt contracts not found");this.program=K1(i,o.ntt.manager,n),this.transceivers=[],"wormhole"in o.ntt.transceiver&&o.ntt.transceiver.wormhole&&["wormhole",...Object.keys(o.ntt.transceiver).filter(g=>{})].map(g=>{if(g!=="wormhole")throw new Error(`Unsupported transceiver type: ${g}`);const T=new f.PublicKey(o.ntt.transceiver[g]);if(f.PublicKey.isOnCurve(T))this.transceivers.push(k1(i,o.ntt.transceiver[g],n));else{const w=new C1(this,k1(i,o.ntt.manager,n),n);if(!w.pdas.emitterAccount().equals(T))throw new Error(`Invalid emitterAccount provided. Expected: ${w.pdas.emitterAccount().toBase58()}; Actual: ${T.toBase58()}`);this.transceivers.push(w.program)}}),this.managerAddress=o.ntt.manager,this.tokenAddress=o.ntt.token,this.contracts.ntt?.quoter&&(this.quoter=new Mt(i,this.contracts.ntt.quoter,this.contracts.ntt.manager)),this.core=new Q0.SolanaWormholeCore(e,a,i,o),this.pdas=Q.pdas(this.program.programId)}async getTransceiver(e){const a=this.transceivers[e]??null;return a&&e===0?new C1(this,a,this.version):null}async getWormholeTransceiver(){return this.getTransceiver(0)}async getMode(){return(await this.getConfig()).mode.locking!=null?"locking":"burning"}async isPaused(){return(await this.getConfig()).paused}async*pause(e){const a=new f.SolanaAddress(e).unwrap(),i=await Q.createSetPausedInstruction(this.program,{owner:a,paused:!0}),o=new f.Transaction;o.feePayer=a,o.add(i),yield this.createUnsignedTx({transaction:o},"Ntt.Pause")}async*unpause(e){const a=new f.SolanaAddress(e).unwrap(),i=await Q.createSetPausedInstruction(this.program,{owner:a,paused:!1}),o=new f.Transaction;o.feePayer=a,o.add(i),yield this.createUnsignedTx({transaction:o},"Ntt.Unpause")}async getThreshold(){return(await this.getConfig()).threshold}async*setThreshold(e,a){const i=new f.SolanaAddress(a).unwrap(),o=await this.createSetThresholdInstruction(i,e),n=new f.Transaction;n.feePayer=i,n.add(o),yield this.createUnsignedTx({transaction:n},"Ntt.SetThreshold")}async createSetThresholdInstruction(e,a){return await this.program.methods.setThreshold(a).accountsStrict({owner:e,config:this.pdas.configAccount()}).instruction()}async getOwner(){const e=await this.getConfig();return new f.SolanaAddress(e.owner)}async getPauser(){return null}async*setOwner(e,a){const i=new f.SolanaAddress(a).unwrap(),o=await Q.createTransferOwnershipInstruction(this.program,{owner:new f.SolanaAddress(await this.getOwner()).unwrap(),newOwner:new f.SolanaAddress(e).unwrap()}),n=new f.Transaction;n.feePayer=i,n.add(o),yield this.createUnsignedTx({transaction:n},"Ntt.SetOwner")}async*setPauser(e,a){throw new Error("Pauser role not supported on Solana.")}async isRelayingAvailable(e){return this.quoter?await this.quoter.isRelayEnabled(e):!1}async quoteDeliveryPrice(e,a){if(!this.quoter)throw new Error("Quoter not available");if(!this.quoter.isRelayEnabled(e))throw new Error("Relay not enabled");return await this.quoter.quoteDeliveryPrice(e,0n)}static async fromRpc(e,a){const[i,o]=await ce.SolanaPlatform.chainFromRpc(e),n=a[o];if(n.network!==i)throw new Error(`Network mismatch: ${n.network} != ${i}`);if(!("ntt"in n.contracts))throw new Error("Ntt contracts not found");const u=n.contracts.ntt,g=await le.getVersion(e,n.contracts);return new le(i,o,e,{...n.contracts,ntt:u},g)}async getConfig(){return this.config=this.config??await Q.getConfig(this.program,this.pdas),this.config}async getTokenDecimals(){const e=await this.getConfig();return await ce.SolanaPlatform.getDecimals(this.network,this.chain,this.connection,e.mint)}async getPeer(e){const a=await this.program.account.nttManagerPeer.fetchNullable(this.pdas.peerAccount(e));return a?{address:{chain:e,address:f.toUniversal(e,new Uint8Array(a.address))},tokenDecimals:a.tokenDecimals,inboundLimit:await this.getInboundLimit(e)}:null}async getCustodyAddress(){return(await this.getConfig()).custody.toBase58()}static async getVersion(e,a,i){try{return await Q.getVersion(e,new f.PublicKey(a.ntt.manager),i?new f.SolanaAddress(i).unwrap():void 0)}catch{return"3.0.0"}}async*initialize(e,a){const i=await this.connection.getAccountInfo(a.mint);if(i===null)throw new Error("Couldn't determine token program. Mint account is null.");const o=new f.SolanaAddress(e).unwrap(),n=await Q.createInitializeInstruction(this.program,{...a,payer:o,owner:o,chain:this.chain,tokenProgram:i.owner,multisigTokenAuthority:a.multisigTokenAuthority},this.pdas),u=new f.Transaction;u.feePayer=o,u.add(n),yield this.createUnsignedTx({transaction:u,signers:[]},"Ntt.Initialize"),yield*this.initializeOrUpdateLUT({payer:o,owner:o})}async*initializeOrUpdateLUT(e){const a=await this.getConfig(),i=await this.getWormholeTransceiver();if(!i)throw new Error("wormhole transceiver not found");const o=i.programId,n=await Q.initializeOrUpdateLUT(this.program,a,o,{payer:e.payer,owner:e.owner,wormholeId:new f.PublicKey(this.core.address)});if(!n)return;const u=new f.Transaction().add(n);u.feePayer=e.payer,yield this.createUnsignedTx({transaction:u},"Ntt.InitializeLUT")}async*registerWormholeTransceiver(e){const a=new f.SolanaAddress(e.payer).unwrap(),i=new f.SolanaAddress(e.owner).unwrap(),o=await this.getConfig();if(o.paused)throw new Error("Contract is paused");const n=await this.createRegisterTransceiverIx(0,a,i),u=await this.getWormholeTransceiver(),g=f.Keypair.generate(),T=await u.createBroadcastWormholeIdIx(a,o,g.publicKey),w=new f.Transaction;w.feePayer=a,w.add(n,T),yield this.createUnsignedTx({transaction:w,signers:[g]},"Ntt.RegisterTransceiver")}async createRegisterTransceiverIx(e,a,i){const o=await this.getTransceiver(e);if(!o)throw new Error("Transceiver not found");const n=o.programId;return this.program.methods.registerTransceiver().accountsStrict({payer:a,owner:i,config:this.pdas.configAccount(),transceiver:n,registeredTransceiver:this.pdas.registeredTransceiver(n),systemProgram:f.SystemProgram.programId}).instruction()}async createDeregisterTransceiverIx(e,a){const i=await this.getTransceiver(e);if(!i)throw new Error("Transceiver not found");const o=i.programId;return this.program.methods.deregisterTransceiver().accountsStrict({owner:a,config:this.pdas.configAccount(),registeredTransceiver:this.pdas.registeredTransceiver(o)}).instruction()}async*setWormholeTransceiverPeer(e,a){yield*this.setTransceiverPeer(0,e,a)}async*setTransceiverPeer(e,a,i){const o=await this.getTransceiver(e);if(!o)throw new Error("Transceiver not found");yield*o.setPeer(a,i)}async*setPeer(e,a,i,o){const n=new f.SolanaAddress(o).unwrap(),u=await Q.createSetPeerInstruction(this.program,{payer:n,owner:n,chain:e.chain,address:e.address.toUniversalAddress().toUint8Array(),limit:new F0(i.toString()),tokenDecimals:a}),g=new f.Transaction;g.feePayer=n,g.add(u),yield this.createUnsignedTx({transaction:g},"Ntt.SetPeer")}async*transfer(e,a,i,o,n){const u=await this.getConfig();if(u.paused)throw new Error("Contract is paused");n=n??f.Keypair.generate();const g=new f.SolanaAddress(e).unwrap(),T=g,w=await this.getTokenAccount(T);if(o.wrapNative){if(this.tokenAddress!==B.NATIVE_MINT.toBase58())throw new Error("Configured token must be native mint for wrapping");const O=B.getAssociatedTokenAddressSync(B.NATIVE_MINT,g),V=[...await this.connection.getAccountInfo(O)?[]:[K0.createAssociatedTokenAccountInstruction(g,O,g,B.NATIVE_MINT)],f.SystemProgram.transfer({fromPubkey:g,toPubkey:O,lamports:a}),v6(O)],{blockhash:z}=await this.connection.getLatestBlockhash(),G=new f.TransactionMessage({payerKey:g,instructions:V,recentBlockhash:z}).compileToV0Message(),O0=new f.VersionedTransaction(G);yield this.createUnsignedTx({transaction:O0},"Ntt.WrapNative")}const S=Q.transferArgs(a,i,o.queue),M={transferArgs:S,payer:g,from:w,fromAuthority:T,outboxItem:n.publicKey},A=Z1(w,this.pdas.sessionAuthority(T,S),T,a,[],u.tokenProgram),I=[],C=u.mode.locking!=null?Q.createTransferLockInstruction(this.program,u,M,this.pdas):Q.createTransferBurnInstruction(this.program,u,M,this.pdas);I.push(C);for(let O=0;O<this.transceivers.length;++O)if(O===0){const U=await this.getWormholeTransceiver();if(!U)throw new Error("wormhole transceiver not found");const V=U.createReleaseWormholeOutboundIx(g,n.publicKey,!o.queue);I.push(V)}const N=new f.Transaction;if(N.feePayer=g,N.add(A,...await Promise.all(I)),o.automatic){if(!this.quoter)throw new Error("No quoter available, cannot initiate an automatic transfer.");const O=await this.quoteDeliveryPrice(i.chain,o),U=await this.quoter.createRequestRelayInstruction(g,n.publicKey,i.chain,Number(O)/f.LAMPORTS_PER_SOL,0);N.add(U)}const R=[];try{R.push(await this.getAddressLookupTable())}catch{}const E=new f.TransactionMessage({payerKey:g,instructions:N.instructions,recentBlockhash:(await this.connection.getLatestBlockhash()).blockhash}).compileToV0Message(R),D=new f.VersionedTransaction(E);yield this.createUnsignedTx({transaction:D,signers:[n]},"Ntt.Transfer")}async getTokenAccount(e){const a=await this.getConfig();return await B.getAssociatedTokenAddress(a.mint,e,!0,a.tokenProgram)}async*createAta(e){const a=await this.getConfig(),i=new f.SolanaAddress(e).unwrap(),o=await this.getTokenAccount(i);if(await this.connection.getAccountInfo(o)===null){const u=new f.Transaction().add(K0.createAssociatedTokenAccountInstruction(i,o,i,a.mint,a.tokenProgram));u.feePayer=i,yield this.createUnsignedTx({transaction:u},"Redeem.CreateATA")}}async*redeem(e,a){const i=await this.getConfig();if(i.paused)throw new Error("Contract is paused");if(e.length!==this.transceivers.length)throw new Error("Not enough attestations provided");for(const{attestation:o,ix:n}of e.map((u,g)=>({attestation:u,ix:g})))if(n===0){const u=o;if(u.payloadName!=="WormholeTransfer")throw new Error("Invalid attestation payload");const g=await this.getWormholeTransceiver();if(!g)throw new Error("wormhole transceiver not found");yield*this.createAta(a),yield*this.core.postVaa(a,u);const T=new f.SolanaAddress(a).unwrap(),w=g.createReceiveIx(u,T),S=Q.createRedeemInstruction(this.program,i,g.program.programId,{payer:T,vaa:u}),M=u.payload.nttManagerPayload,A=u.emitterChain,I={payer:T,config:i,nttMessage:M,recipient:new f.PublicKey(M.payload.recipientAddress.toUint8Array()),chain:A,revertWhenNotReady:!1};let C=i.mode.locking!=null?Q.createReleaseInboundUnlockInstruction(this.program,i,{...I}):Q.createReleaseInboundMintInstruction(this.program,i,{...I});const N=new f.Transaction;N.feePayer=T,N.add(...await Promise.all([w,S,C]));const R=[];try{R.push(await this.getAddressLookupTable())}catch{}const E=new f.TransactionMessage({payerKey:T,instructions:N.instructions,recentBlockhash:(await this.connection.getLatestBlockhash()).blockhash}).compileToV0Message(R),D=new f.VersionedTransaction(E);yield this.createUnsignedTx({transaction:D},"Ntt.Redeem")}}async getCurrentOutboundCapacity(){const e=await this.program.account.outboxRateLimit.fetch(this.pdas.outboxRateLimitAccount());return BigInt(e.rateLimit.capacityAtLastTx.toString())}async getOutboundLimit(){const e=await this.program.account.outboxRateLimit.fetch(this.pdas.outboxRateLimitAccount());return BigInt(e.rateLimit.limit.toString())}async*setOutboundLimit(e,a){const i=new f.SolanaAddress(a).unwrap(),o=await Q.createSetOutboundLimitInstruction(this.program,{owner:i,limit:new F0(e.toString())}),n=new f.Transaction;n.feePayer=i,n.add(o),yield this.createUnsignedTx({transaction:n},"Ntt.SetOutboundLimit")}async getCurrentInboundCapacity(e){const a=await this.program.account.inboxRateLimit.fetch(this.pdas.inboxRateLimitAccount(e));return BigInt(a.rateLimit.capacityAtLastTx.toString())}async getRateLimitDuration(){return BigInt(1440*60)}async getInboundLimit(e){const a=await this.program.account.inboxRateLimit.fetch(this.pdas.inboxRateLimitAccount(e));return BigInt(a.rateLimit.limit.toString())}async*setInboundLimit(e,a,i){const o=new f.SolanaAddress(i).unwrap(),n=await Q.createSetInboundLimitInstruction(this.program,{owner:o,chain:e,limit:new F0(a.toString())}),u=new f.Transaction;u.feePayer=o,u.add(n),yield this.createUnsignedTx({transaction:u},"Ntt.SetInboundLimit")}async getIsExecuted(e){if(e.payloadName!=="WormholeTransfer")return!1;const a=e.payload.nttManagerPayload;let i;try{i=await this.program.account.inboxItem.fetch(this.pdas.inboxItemAccount(e.emitterChain,a))}catch(o){if(o.message?.includes("Account does not exist"))return!1;throw o}return!!i.releaseStatus.released}async getIsTransferInboundQueued(e){if(e.payloadName!=="WormholeTransfer")return!1;const a=e.payload.nttManagerPayload;let i;try{i=await this.program.account.inboxItem.fetch(this.pdas.inboxItemAccount(e.emitterChain,a))}catch(o){if(o.message?.includes("Account does not exist"))return!1;throw o}return!!i.releaseStatus.releaseAfter}async getIsApproved(e){if(e.payloadName!=="WormholeTransfer")throw new Error(`Invalid payload: ${e.payloadName}`);const a=e.payload.nttManagerPayload;try{return(await this.program.account.inboxItem.fetch(this.pdas.inboxItemAccount(e.emitterChain,a))).init}catch(i){if(i.message?.includes("Account does not exist"))return!1;throw i}}async*completeInboundQueuedTransfer(e,a,i){const o=await this.getConfig();if(o.paused)throw new Error("Contract is paused");const n=new f.SolanaAddress(i).unwrap(),u=new f.Transaction;u.feePayer=n;const g={payer:n,config:o,nttMessage:a,recipient:new f.PublicKey(a.payload.recipientAddress.toUint8Array()),chain:e,revertWhenNotReady:!1};u.add(await(o.mode.locking!=null?Q.createReleaseInboundUnlockInstruction(this.program,o,g):Q.createReleaseInboundMintInstruction(this.program,o,g))),yield this.createUnsignedTx({transaction:u},"Ntt.CompleteInboundTransfer")}async getInboundQueuedTransfer(e,a){let i;try{i=await this.program.account.inboxItem.fetch(this.pdas.inboxItemAccount(e,a))}catch(o){if(o.message?.includes("Account does not exist"))return null;throw o}if(i.releaseStatus.releaseAfter){const{recipientAddress:o,amount:n,releaseStatus:u}=i,g=u.releaseAfter[0].toNumber();return{recipient:new f.SolanaAddress(o),amount:BigInt(n.toString()),rateLimitExpiryTimestamp:g}}return null}async verifyAddresses(){const e=await this.getWormholeTransceiver(),a={manager:this.managerAddress,token:this.tokenAddress,transceiver:{...e&&{wormhole:e.pdas.emitterAccount().toBase58()}}},i={manager:this.program.programId.toBase58(),token:(await this.getConfig()).mint.toBase58(),transceiver:{wormhole:Q.transceiverPdas(this.program.programId).emitterAccount().toBase58()}},o=(n,u)=>{for(const g in n)typeof n[g]=="object"?(o(n[g],u[g]),Object.keys(n[g]).length===0&&delete n[g]):n[g]===u[g]&&delete n[g]};return o(i,a),Object.keys(i).length>0?i:null}async getAddressLookupTable(e=!0){if(!e||!this.addressLookupTable){const a=await Q.getAddressLookupTable(this.program,this.pdas);a&&(this.addressLookupTable=a)}if(!this.addressLookupTable)throw new Error("Address lookup table not found. Did you forget to call initializeLUT?");return this.addressLookupTable}createUnsignedTx(e,a,i=!1){return new ce.SolanaUnsignedTransaction(e,this.network,this.chain,a,i)}}const St={version:"0.1.0",name:"example_ntt_svm_lut",instructions:[{name:"initializeLut",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"nttProgramId",isMut:!1,isSigner:!1},{name:"nttConfig",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!1},{name:"lutAddress",isMut:!0,isSigner:!1},{name:"lut",isMut:!0,isSigner:!1},{name:"lutProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"recentSlot",type:"u64"}]}],accounts:[{name:"LUT",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:"publicKey"}]}}]},At={version:"0.1.0",name:"example_ntt_with_executor",instructions:[{name:"relayNttMesage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"payee",isMut:!0,isSigner:!1},{name:"nttProgramId",isMut:!1,isSigner:!1},{name:"nttPeer",isMut:!1,isSigner:!1},{name:"nttMessage",isMut:!1,isSigner:!1},{name:"executorProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"relayNttMessageArgs"}}]}],types:[{name:"relayNttMessageArgs",type:{kind:"struct",fields:[{name:"recipientChain",type:"u16"},{name:"execAmount",type:"u64"},{name:"signedQuoteBytes",type:"bytes"},{name:"relayInstructions",type:"bytes"}]}}]};class H0{network;chain;connection;contracts;nttWithExecutorProgramId;nttLutProgramId;executorProgramId;constructor(e,a,i,o){this.network=e,this.chain=a,this.connection=i,this.contracts=o,this.nttWithExecutorProgramId=new f.PublicKey("nex1gkSWtRBheEJuQZMqHhbMG5A45qPU76KqnCZNVHR"),this.nttLutProgramId=new f.PublicKey("1uteB5DZdNfns9B12rgGf5msKh1d7FbbkvciWmhsZiC"),this.executorProgramId=new f.PublicKey("execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV")}static async fromRpc(e,a){const[i,o]=await ce.SolanaPlatform.chainFromRpc(e),n=a[o];if(n.network!==i)throw new Error(`Network mismatch: ${n.network} != ${i}`);return new H0(i,o,e,n.contracts)}async*transfer(e,a,i,o,n,u=!1){const g=new f.SolanaAddress(e).unwrap(),T={queue:!1,automatic:!1,wrapNative:u},w=f.Keypair.generate(),S=n.transfer(e,o.remainingAmount,a,T,w);for await(const M of S)if(M.description==="Ntt.Transfer"){const A=[];try{A.push(await n.getAddressLookupTable())}catch(E){console.debug(E)}const I=f.TransactionMessage.decompile(M.transaction.transaction.message,{addressLookupTableAccounts:A});if(o.referrerFee>0n){const E=new f.PublicKey(o.referrer.address.toString()),{mint:D,tokenProgram:O}=await n.getConfig(),U=B.getAssociatedTokenAddressSync(D,E,!0,O),V=B.getAssociatedTokenAddressSync(D,g,!0,O);await this.connection.getAccountInfo(U)||I.instructions.push(K0.createAssociatedTokenAccountIdempotentInstruction(g,U,E,D,O)),I.instructions.push(K0.createTransferInstruction(V,U,g,o.referrerFee,void 0,O))}const C=new z0.Program(At,this.nttWithExecutorProgramId,{connection:this.connection}),N=new f.PublicKey(this.contracts.ntt.manager),R=f.PublicKey.findProgramAddressSync([f.Buffer.from("peer"),q0(a.chain)],N)[0];if(I.instructions.push(await C.methods.relayNttMesage({execAmount:new F0(o.estimatedCost.toString()),recipientChain:f.toChainId(a.chain),signedQuoteBytes:f.Buffer.from(o.signedQuote),relayInstructions:f.Buffer.from(o.relayInstructions)}).accounts({payer:g,payee:new f.PublicKey(o.payeeAddress),nttProgramId:N,nttPeer:R,nttMessage:w.publicKey,executorProgram:this.executorProgramId}).instruction()),A.length===0){console.debug("no manager lookup table found, checking helper program");const E=new z0.Program(St,this.nttLutProgramId,{connection:this.connection}),D=f.PublicKey.findProgramAddressSync([f.Buffer.from("lut"),N.toBuffer()],E.programId)[0];let O=await E.account.lut.fetchNullable(D);if(!O){console.debug("no helper program lookup table found, initializing...");const[V]=await f.PublicKey.findProgramAddressSync([f.Buffer.from("config")],N),[z]=await f.PublicKey.findProgramAddressSync([f.Buffer.from("lut_authority")],E.programId),G=await this.connection.getSlot("finalized")-10,[O0]=await f.PublicKey.findProgramAddressSync([z.toBuffer(),new F0(G).toArrayLike(f.Buffer,"le",8)],f.AddressLookupTableProgram.programId),[N0]=await f.PublicKey.findProgramAddressSync([f.Buffer.from("lut"),N.toBuffer()],E.programId),H=await E.methods.initializeLut(new F0(G)).accounts({nttProgramId:N,nttConfig:V,authority:z,lutAddress:O0,lut:N0,lutProgram:f.AddressLookupTableProgram.programId,systemProgram:f.SystemProgram.programId,payer:g}).instruction(),L=new f.TransactionMessage({payerKey:g,recentBlockhash:(await this.connection.getLatestBlockhash("finalized")).blockhash,instructions:[H]}).compileToV0Message();yield n.createUnsignedTx({transaction:new f.VersionedTransaction(L)},"NttSvmLut.InitializeLut"),console.debug(`initialized lookup table: ${M}`);let K=0;for(;!O&&K<10;)await new Promise(b=>setTimeout(b,2e3)),O=await E.account.lut.fetchNullable(D),K++}const U=await this.connection.getAddressLookupTable(O.address);if(!U.value)throw new Error("unable to fetch lookup table");A.push(U.value)}M.transaction.transaction.message=I.compileToV0Message(A),yield M}else yield M}static associatedTokenAccountMinRent=void 0;async estimateMsgValueAndGasLimit(e){let a=0n;if(a+=2n*5000n+7n*5000n+1400000n,a+=2n*5000n+7n*5000n,a+=5000n+3200000n,a+=5000n+5000000n,a+=5000n,e){const i=new f.PublicKey(e.address.toString()),o=new f.SolanaAddress(this.contracts.ntt.token).unwrap(),n=await this.connection.getAccountInfo(o);if(n===null)throw new Error("Couldn't determine token program. Mint account is null.");const u=B.getAssociatedTokenAddressSync(o,i,!0,n.owner);await this.connection.getAccountInfo(u)===null&&(H0.associatedTokenAccountMinRent||(H0.associatedTokenAccountMinRent=BigInt(await this.connection.getMinimumBalanceForRentExemption(165))),a+=H0.associatedTokenAccountMinRent)}return{msgValue:a,gasLimit:250000n}}}const It=console.info;console.info=function(c){c!=="secp256k1 unavailable, reverting to browser version"&&It(c)};const xt=console.warn;console.warn=function(c){c!=="bigint: Failed to load bindings, pure JS will be used (try npm run rebuild?)"&&xt(c)};f.registerProtocol(f._platform$1,"Ntt",le);f.registerProtocol(f._platform$1,"NttWithExecutor",H0);const X0={Mainnet:{coreBridgeStateId:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",executorId:"0xdb0fe8bb1e2b5be628adbea0636063325073e1070ee11e4281457dfd7f158235",executorRequestsId:"0xa55f6f81649b071b5967dc56227bbee289e4c411ab610caeec7abce499e262b8"},Testnet:{coreBridgeStateId:"0x31358d198147da50db32eda2562951d53973a0c0ad5ed738e9b17d88b213d790",executorId:"0x4000cfe2955d8355b3d3cf186f854fea9f787a457257056926fde1ec977670eb",executorRequestsId:"0x8e5ec98738885325294060fd067fde47e10313bedc531d0500b24a752be41788"}},De=BigInt(1440*60*1e3),kt=["native","0x2::sui::SUI"],Pt=_.bcs.struct("Bitmap",{bitmap:_.bcs.u128()}),Ct=_.bcs.enum("ReleaseStatus",{NotApproved:null,ReleaseAfter:_.bcs.u64(),Released:null}),Rt=_.bcs.struct("TrimmedAmount",{amount:_.bcs.u64(),decimals:_.bcs.u8()}),_t=_.bcs.struct("Bytes32",{data:_.bcs.vector(_.bcs.u8())}),R1=_.bcs.struct("ExternalAddress",{value:_t}),Et=_.bcs.struct("NativeTokenTransfer",{amount:Rt,source_token:R1,to:R1,to_chain:_.bcs.u16(),payload:_.bcs.option(_.bcs.vector(_.bcs.u8()))});function Nt(c){return _.bcs.struct(`InboxItem<${c.name}>`,{votes:Pt,release_status:Ct,data:c})}const Lt=Nt(Et);function j1(c){return kt.includes(c)}function Ot(c){return c.data?.content?.dataType==="moveObject"?c.data.content.fields:null}async function Dt(c,e){if(!f.isValidSuiAddress(e))throw new Error(`Invalid object ID: ${e}`);const a=await c.getObject({id:e,options:{showContent:!0}});return Ot(a)}async function W0(c,e,a){const i=await c.getObject({id:e,options:{showContent:!0}});if(!i.data?.content||i.data.content.dataType!=="moveObject")throw new Error(a||`Failed to fetch object ${e}`);return i.data.content}async function ee(c,e){let a,i;do{const u=await c.getDynamicFields({parentId:e,cursor:i});a=u.data.find(g=>g.name.type.endsWith("CurrentPackage")),i=u.hasNextPage?u.nextCursor:null}while(i&&!a);if(!a)throw new Error("CurrentPackage not found");const n=(await Dt(c,a.objectId))?.value?.fields?.package;if(!n)throw new Error("Unable to get current package");return n}async function _1(c,e){const a=await c.getObject({id:e,options:{showContent:!0}});if(!a.data?.content||a.data.content.dataType!=="moveObject")throw new Error("Failed to fetch state object");const o=a.data.content.type.split("::")[0];if(!o||!o.startsWith("0x"))throw new Error("Could not extract package ID from state object type");const n=a.data.content.fields;return{packageId:o,fields:n}}async function Bt(c,e){const a=await c.getDynamicFields({parentId:e});for(const i of a.data)if(i.name?.type?.includes("transceiver_registry::Key"))try{const o=await c.getObject({id:i.objectId,options:{showContent:!0}});if(o.data?.content&&o.data.content.dataType==="moveObject"){const n=o.data.content.fields.value.fields;if(n.id===0)return[n.state_object_id]}}catch(o){console.warn(`Failed to read transceiver info: ${o}`)}throw new Error("Unable to find transceivers")}async function Ut(c,e){const a=await W0(c,e,"Failed to fetch state object"),o=a.type.split("::")[0];if(!o||!o.startsWith("0x"))throw new Error("Could not extract package ID from state object type");if(a.fields.upgrade_cap_id){const n=await W0(c,a.fields.upgrade_cap_id,"Failed to fetch upgrade cap object");return{object:a,original:o,current:n.fields.cap.fields.package}}return{object:a,original:o,current:o}}function Ft(c){let e=0;for(;c;)c&=c-1,e+=1;return e}function E1(c){const e=c.match("<(.+)>")?.[1]?.split("::")[0];if(!e)throw new Error(`Unable to extract NTT common package ID from inbox type: ${c}`);return e}function N1(c,e,a,i,o,n){const[u]=c.moveCall({target:`${e}::native_token_transfer::parse`,arguments:[c.pure.vector("u8",i)]}),[g]=c.moveCall({target:`${a}::bytes32::from_bytes`,arguments:[c.pure.vector("u8",o)]}),[T]=c.moveCall({target:`${a}::external_address::from_address`,arguments:[c.pure.address("0x"+f.Buffer.from(n).toString("hex"))]}),[w]=c.moveCall({target:`${e}::ntt_manager_message::new`,typeArguments:[`${e}::native_token_transfer::NativeTokenTransfer`],arguments:[g,T,u]});return w}function qt(c,e){if(!c.results||c.results.length===0)throw new Error("No results returned from devInspectTransactionBlock");const i=c.results[c.results.length-1]?.returnValues?.[0];if(!Array.isArray(i))throw new Error("Invalid result format from devInspectTransactionBlock");const[o,n]=i;if(n!=="vector<u8>"||!Array.isArray(o))throw new Error(`Expected vector<u8> but got ${n}`);const u=new Uint8Array(o),g=_.bcs.vector(_.bcs.u8()).parse(u),T=Lt.parse(Uint8Array.from(g));return{inboxItemFields:{votes:{fields:{bitmap:T.votes.bitmap.toString()}},release_status:T.release_status,data:T.data},threshold:e}}class me{contracts;coreBridgeStateId;static async extractTokenTypeFromSuiState(e,a){const i=await e.getObject({id:a,options:{showType:!0}});if(!i.data?.type)throw new Error("Failed to fetch state object type");const o=i.data.type,n=o.indexOf("<"),u=o.lastIndexOf(">");if(n===-1||u===-1)throw new Error(`No generic type parameter found in state object type: ${o}`);return o.substring(n+1,u)}async getNttState(){try{return(await W0(this.provider,this.contracts.ntt.manager,"Failed to fetch NTT state object")).fields}catch(e){throw new Error(`Failed to fetch NTT state object: ${e instanceof Error?e.message:String(e)}`)}}network;chain;provider;adminCapId;packageId;constructor(e,a,i,o){if(this.contracts=o,!o.ntt)throw new Error("NTT contracts not found");if(!o.coreBridge)throw new Error("Core Bridge contract not found");this.network=e,this.chain=a,this.provider=i,this.coreBridgeStateId=X0[e].coreBridgeStateId}static async fromRpc(e,a){const[i,o]=await _.SuiPlatform.chainFromRpc(e),n=a[o];if(n.network!==i)throw new Error(`Network mismatch: ${n.network} != ${i}`);if(!("ntt"in n.contracts))throw new Error("Ntt contracts not found");const u=n.contracts.ntt;return new me(i,o,e,{...n.contracts,ntt:u})}async getMode(){const a=(await this.getNttState()).mode;if(a.variant==="Locking")return"locking";if(a.variant==="Burning")return"burning";throw new Error("Invalid mode in NTT state")}async isPaused(){return(await this.getNttState()).paused}async getAdminCapId(){if(this.adminCapId)return this.adminCapId;const e=await this.getNttState();if(!e.admin_cap_id)throw new Error("AdminCap ID not found in NTT state");return this.adminCapId=e.admin_cap_id,this.adminCapId}async getPackageId(){if(this.packageId)return this.packageId;const e=await this.getPackageIdFromObject(this.contracts.ntt.manager);return this.packageId=e,this.packageId}async getPackageIdFromObject(e){return(await Ut(this.provider,e)).current}async getOwner(){const e=await this.getAdminCapId();try{const a=await this.provider.getObject({id:e,options:{showOwner:!0}});if(!a.data?.owner)throw new Error("Could not fetch AdminCap owner information");let i;if(typeof a.data.owner=="object"&&"AddressOwner"in a.data.owner)i=a.data.owner.AddressOwner;else if(typeof a.data.owner=="string")i=a.data.owner;else throw new Error(`AdminCap has unexpected owner type: ${JSON.stringify(a.data.owner)}`);return i}catch(a){throw new Error(`Failed to get AdminCap owner: ${a}`)}}async getPauser(){return this.getOwner()}async getThreshold(){const e=await this.getNttState();return parseInt(e.threshold,10)}async*setThreshold(e,a){const i=await this.getAdminCapId(),o=await this.getPackageId(),n=new _.Transaction;n.moveCall({target:`${o}::state::set_threshold`,typeArguments:[this.contracts.ntt.token],arguments:[n.object(i),n.object(this.contracts.ntt.manager),n.pure.u8(e)]}),yield new B0.SuiUnsignedTransaction(n,this.network,this.chain,"Set Threshold")}async getTokenDecimals(){const e=await this.provider.getCoinMetadata({coinType:this.contracts.ntt.token});if(!e?.decimals)throw new Error(`CoinMetadata not found for ${this.contracts.ntt.token}`);return e.decimals}async getCustodyAddress(){return this.contracts.ntt.manager}async*pause(){const e=await this.getAdminCapId(),a=await this.getPackageId(),i=new _.Transaction;i.moveCall({target:`${a}::state::pause`,typeArguments:[this.contracts.ntt.token],arguments:[i.object(e),i.object(this.contracts.ntt.manager)]}),yield new B0.SuiUnsignedTransaction(i,this.network,this.chain,"Pause Contract")}async*unpause(){const e=await this.getAdminCapId(),a=await this.getPackageId(),i=new _.Transaction;i.moveCall({target:`${a}::state::unpause`,typeArguments:[this.contracts.ntt.token],arguments:[i.object(e),i.object(this.contracts.ntt.manager)]}),yield new B0.SuiUnsignedTransaction(i,this.network,this.chain,"Unpause Contract")}async*setOwner(e,a){const i=new _.Transaction,o=await this.getAdminCapId(),n=await this.getUpgradeCapId();i.transferObjects([i.object(o),i.object(n)],e.toString()),yield new B0.SuiUnsignedTransaction(i,this.network,this.chain,"Transfer Ownership")}async*setPauser(e,a){throw new Error("setPauser not supported: owner and pauser are the same in Sui NTT. Use setOwner instead.")}async*setPeer(e,a,i,o){const n=await this.getAdminCapId(),u=await this.getPackageId(),g=new _.Transaction,T=f.chainToChainId(e.chain),w=e.address.toUint8Array();try{const M=await this.getPackageIdFromObject(this.contracts.coreBridge),A=g.moveCall({target:`${M}::bytes32::from_bytes`,arguments:[g.pure.vector("u8",w)]}),I=g.moveCall({target:`${M}::external_address::new`,arguments:[A]});g.moveCall({target:`${u}::state::set_peer`,typeArguments:[this.contracts.ntt.token],arguments:[g.object(n),g.object(this.contracts.ntt.manager),g.pure.u16(T),I,g.pure.u8(a),g.pure.u64(i.toString()),g.object(_.SUI_CLOCK_OBJECT_ID)]})}catch(M){throw new Error(`Failed to create setPeer transaction: ${M instanceof Error?M.message:String(M)}`)}yield new B0.SuiUnsignedTransaction(g,this.network,this.chain,"Set Peer")}async getPeer(e){const a=await this.provider.getObject({id:this.contracts.ntt.manager,options:{showContent:!0}});if(!a.data?.content||a.data.content.dataType!=="moveObject")throw new Error("Failed to fetch NTT state object");const o=a.data.content.fields.peers,n=f.chainToChainId(e);try{const u=await this.provider.getDynamicFieldObject({parentId:o.fields.id.id,name:{type:"u16",value:n}});if(!u.data?.content||u.data.content.dataType!=="moveObject")return null;const g=u.data.content.fields.value.fields,w=g.address.fields.value.fields.data,S=new Uint8Array(w),M={chain:e,address:f.toUniversal(e,S)},A=parseInt(g.token_decimals,10),I=g.inbound_rate_limit.fields,C=BigInt(I.limit);return{address:M,tokenDecimals:A,inboundLimit:C}}catch(u){return console.error(u),null}}async*setTransceiverPeer(e,a,i){if(e!==0)throw new Error("Only transceiver index 0 (wormhole) is currently supported");const o=this.contracts.ntt.transceiver?.wormhole;if(!o)throw new Error("Wormhole transceiver not found in contracts");const n=await this.getPackageIdFromObject(o),T=(await W0(this.provider,o,"Failed to fetch transceiver state object")).fields.admin_cap_id,w=new _.Transaction,S=f.chainToChainId(a.chain),M=a.address.toUint8Array(),A=Array.from(M);try{const C=await this.getPackageIdFromObject(this.contracts.coreBridge),N=w.moveCall({target:`${C}::bytes32::from_bytes`,arguments:[w.pure.vector("u8",A)]}),R=w.moveCall({target:`${C}::external_address::new`,arguments:[N]}),E=await this.getPackageId(),D=w.moveCall({target:`${n}::wormhole_transceiver::set_peer`,typeArguments:[`${E}::auth::ManagerAuth`],arguments:[w.object(T),w.object(o),w.pure.u16(S),R]}),O=this.contracts.coreBridge,[U]=w.splitCoins(w.gas,[0]);w.moveCall({target:`${C}::publish_message::publish_message`,arguments:[w.object(O),U,D,w.object(_.SUI_CLOCK_OBJECT_ID)]})}catch(C){throw new Error(`Failed to create setTransceiverPeer transaction: ${C instanceof Error?C.message:String(C)}`)}yield new B0.SuiUnsignedTransaction(w,this.network,this.chain,"Set Transceiver Peer")}async*transfer(e,a,i,o){const n=await this.getPackageId(),u=new _.Transaction,g=f.chainToChainId(i.chain);let T;try{if(typeof i.address.toUint8Array=="function")T=i.address.toUint8Array();else if(typeof i.address.toUniversalAddress=="function"){const L=i.address.toUniversalAddress();if(!L)throw new Error("toUniversalAddress() returned null or undefined");T=L.toUint8Array()}else throw new Error(`destination.address does not have expected methods. Type: ${typeof i.address}`)}catch(L){throw new Error(`Failed to convert destination address to bytes: ${L instanceof Error?L.message:String(L)}`)}let w;try{const L=await this.provider.getCoinMetadata({coinType:this.contracts.ntt.token});if(!L?.id)throw new Error(`CoinMetadata not found for ${this.contracts.ntt.token}`);w=L.id}catch(L){throw new Error(`Failed to get CoinMetadata for ${this.contracts.ntt.token}: ${L instanceof Error?L.message:String(L)}`)}const S=this.contracts.ntt.token,M=j1(S),I=new f.SuiAddress(M?_.SuiPlatform.nativeTokenId(this.network,this.chain).address:S).getCoinType(),[C]=await(async()=>{if(M)return u.splitCoins(u.gas,[a]);{const L=await _.SuiPlatform.getCoins(this.provider,e,I);if(L.length===0)throw new Error(`No coins found for token type ${I}`);const[K,...b]=L;if(!K)throw new Error(`No primary coin found for token type ${I}`);const t=u.object(K.coinObjectId);return b.length>0&&u.mergeCoins(t,b.map(s=>u.object(s.coinObjectId))),u.splitCoins(t,[a])}})(),[N]=u.moveCall({target:`${n}::upgrades::new_version_gated`,arguments:[]}),[R,E]=u.moveCall({target:`${n}::ntt::prepare_transfer`,typeArguments:[I],arguments:[u.object(this.contracts.ntt.manager),C,u.object(w),u.pure.u16(g),u.pure.vector("u8",T),u.pure.option("vector<u8>",null),u.pure.bool(o.queue||!1)]}),[D]=u.moveCall({target:`${n}::state::get_next_sequence`,typeArguments:[I],arguments:[u.object(this.contracts.ntt.manager)]}),O=await ee(this.provider,this.coreBridgeStateId);u.moveCall({target:`${n}::ntt::transfer_tx_sender`,typeArguments:[I],arguments:[u.object(this.contracts.ntt.manager),N,u.object(w),R,u.object(_.SUI_CLOCK_OBJECT_ID)]});const U=this.contracts.ntt.transceiver?.wormhole;if(!U)throw new Error("Wormhole transceiver not found in contracts");const V=await this.getPackageIdFromObject(U),[z]=u.moveCall({target:`${n}::state::create_transceiver_message`,typeArguments:[`${V}::wormhole_transceiver::TransceiverAuth`,I],arguments:[u.object(this.contracts.ntt.manager),D,u.object(_.SUI_CLOCK_OBJECT_ID)]}),[G]=u.moveCall({target:`${V}::wormhole_transceiver::release_outbound`,typeArguments:[`${n}::auth::ManagerAuth`],arguments:[u.object(U),z]}),[O0]=u.splitCoins(u.gas,[u.pure.u64(0n)]);u.moveCall({target:`${O}::publish_message::publish_message`,arguments:[u.object(this.coreBridgeStateId),O0,G,u.object(_.SUI_CLOCK_OBJECT_ID)]});const[N0]=u.moveCall({target:"0x2::coin::from_balance",typeArguments:[I],arguments:[E]});M?u.mergeCoins(u.gas,[N0]):u.transferObjects([N0],e.toString()),yield new B0.SuiUnsignedTransaction(u,this.network,this.chain,"NTT Transfer")}async*redeem(e,a){if(await this.isPaused())throw new Error("Contract is paused");if(e.length===0)throw new Error("No attestations provided");const o=await this.getPackageId(),n=await this.provider.getCoinMetadata({coinType:this.contracts.ntt.token});if(!n?.id)throw new Error(`CoinMetadata not found for ${this.contracts.ntt.token}`);const u=new _.Transaction;for(const T of e)await this.addRedeemCall(u,T,o,n.id);await this.addReleaseCall(u,e,o,n.id),yield new B0.SuiUnsignedTransaction(u,this.network,this.chain,"Redeem NTT Transfer")}async quoteDeliveryPrice(e,a){throw new Error("Not implemented")}async isRelayingAvailable(e){return!1}async getCurrentOutboundCapacity(){const i=(await W0(this.provider,this.contracts.ntt.manager,"Failed to fetch NTT state object")).fields.outbox.fields.rate_limit.fields,o=Date.now(),n=BigInt(i.limit),u=BigInt(i.capacity_at_last_tx),g=BigInt(i.last_tx_timestamp),T=BigInt(o)-g,w=De,S=T*n/w,M=u+S;return M>n?n:M}async getOutboundLimit(){const i=(await W0(this.provider,this.contracts.ntt.manager,"Failed to fetch NTT state object")).fields.outbox.fields.rate_limit.fields;return BigInt(i.limit)}async*setOutboundLimit(e,a){const i=await this.getAdminCapId();if(!i)throw new Error("AdminCap ID not found");const o=await this.getPackageId();if(!o)throw new Error("Package ID not found");const n=new _.Transaction;n.moveCall({target:`${o}::state::set_outbound_rate_limit`,typeArguments:[this.contracts.ntt.token],arguments:[n.object(i),n.object(this.contracts.ntt.manager),n.pure.u64(e.toString()),n.object(_.SUI_CLOCK_OBJECT_ID)]}),yield new B0.SuiUnsignedTransaction(n,this.network,this.chain,"Set Outbound Limit")}async getCurrentInboundCapacity(e){const a=await this.provider.getObject({id:this.contracts.ntt.manager,options:{showContent:!0}});if(!a.data?.content||a.data.content.dataType!=="moveObject")throw new Error("Failed to fetch NTT state object");const o=a.data.content.fields.peers,n=f.chainToChainId(e);try{const u=await this.provider.getDynamicFieldObject({parentId:o.fields.id.id,name:{type:"u16",value:n}});if(!u.data?.content||u.data.content.dataType!=="moveObject")throw new Error(`No peer found for chain ${e}`);const T=u.data.content.fields.value.fields.inbound_rate_limit.fields,w=Date.now(),S=BigInt(T.limit),M=BigInt(T.capacity_at_last_tx),A=BigInt(T.last_tx_timestamp),I=BigInt(w)-A,C=De,N=I*S/C,R=M+N;return R>S?S:R}catch(u){throw new Error(`Failed to get inbound capacity for chain ${e}: ${u instanceof Error?u.message:String(u)}`)}}async getInboundLimit(e){const a=await this.getPeer(e);if(!a)throw new Error(`No peer found for chain ${e}. Set up the peer first using setPeer.`);return a.inboundLimit}async*setInboundLimit(e,a,i){const o=await this.getAdminCapId(),n=await this.getPackageId(),u=await this.getPeer(e);if(!u)throw new Error(`No peer found for chain ${e}. Set up the peer first using setPeer.`);const g=new _.Transaction,T=f.chainToChainId(e),w=u.address.address.toUint8Array(),S=Array.from(w);try{const A=await this.getPackageIdFromObject(this.contracts.coreBridge),I=g.moveCall({target:`${A}::bytes32::from_bytes`,arguments:[g.pure.vector("u8",S)]}),C=g.moveCall({target:`${A}::external_address::new`,arguments:[I]});g.moveCall({target:`${n}::state::set_peer`,typeArguments:[this.contracts.ntt.token],arguments:[g.object(o),g.object(this.contracts.ntt.manager),g.pure.u16(T),C,g.pure.u8(u.tokenDecimals),g.pure.u64(a.toString()),g.object(_.SUI_CLOCK_OBJECT_ID)]})}catch(A){throw new Error(`Failed to create setInboundLimit transaction: ${A instanceof Error?A.message:String(A)}`)}yield new B0.SuiUnsignedTransaction(g,this.network,this.chain,"Set Inbound Limit")}async getRateLimitDuration(){return De}async getIsApproved(e){const a=await this.getInboxItem(e);if(!a)return!1;const{inboxItemFields:i,threshold:o}=a,n=i.votes;let u=0;return n?.fields?.bitmap&&(u=Ft(parseInt(n.fields.bitmap))),u>=o}async getIsExecuted(e){return(await this.getTransferReleaseStatus(e))?.$kind==="Released"}async getIsTransferInboundQueued(e){return(await this.getTransferReleaseStatus(e))?.$kind==="ReleaseAfter"}async getInboundQueuedTransfer(e,a){const i={emitterChain:e,payload:{nttManagerPayload:a}},o=await this.getTransferReleaseStatus(i);if(o?.$kind!=="ReleaseAfter")return null;const n=parseInt(o.ReleaseAfter),u=await this.getInboxItem(i);if(!u)return null;const{inboxItemFields:g}=u,T=g.data||{};let w;if(a.payload?.recipientAddress)w=a.payload.recipientAddress;else if(T.recipient)w=f.toUniversal(this.chain,T.recipient);else if(T.recipient_address)w=f.toUniversal(this.chain,T.recipient_address);else return null;let S;if(a.payload?.trimmedAmount)S=a.payload.trimmedAmount.amount;else if(T.amount)S=BigInt(T.amount.toString());else return null;return{recipient:w,amount:S,rateLimitExpiryTimestamp:n/1e3}}async*completeInboundQueuedTransfer(e,a,i){if(await this.isPaused())throw new Error("Contract is paused");const n={emitterChain:e,payload:{nttManagerPayload:a}};yield*this.redeem([n],i)}async getTransceiver(e){if(e!==0)return null;const a=this.contracts.ntt.transceiver?.wormhole;if(a){const i=this.chain,o=this;return{async getTransceiverType(){return"wormhole"},async getAddress(){const n=await W0(o.provider,a);return{chain:i,address:f.toUniversal(i,n.fields.emitter_cap.fields.id.id)}},async*setPeer(n,u){yield*o.setTransceiverPeer(0,n,u)},async getPeer(n){return await o.getTransceiverPeer(0,n)},async*setPauser(){throw new Error("setPauser not implemented for Sui transceiver")},async getPauser(){return null},async*receive(){throw new Error("receive not implemented for Sui transceiver")}}}return null}async getTransceiverPeer(e,a){if(e!==0)return null;const i=this.contracts.ntt.transceiver?.wormhole;if(!i)return null;try{const o=await this.provider.getObject({id:i,options:{showContent:!0}});if(!o.data?.content||o.data.content.dataType!=="moveObject")return null;const u=o.data.content.fields.peers,g=f.chainToChainId(a),T=await this.provider.getDynamicFieldObject({parentId:u.fields.id.id,name:{type:"u16",value:g}});if(!T.data?.content||T.data.content.dataType!=="moveObject")return null;const S=T.data.content.fields.value.fields.value.fields.data,M=new Uint8Array(S);return{chain:a,address:f.toUniversal(a,M)}}catch(o){return console.error(o),null}}async getTransceiverType(e=0){if(e!==0)throw new Error(`Transceiver index ${e} not supported`);const a=this.contracts.ntt.transceiver?.wormhole;if(!a)throw new Error("Wormhole transceiver not found in contracts");const i=await this.provider.getObject({id:a,options:{showType:!0}});if(!i.data?.type)throw new Error("Unable to determine transceiver object type");const o=i.data.type.split("::")[0],n=new _.Transaction;n.moveCall({target:`${o}::transceiver::get_transceiver_type`,arguments:[]});const u=await this.provider.devInspectTransactionBlock({transactionBlock:n,sender:"0x0000000000000000000000000000000000000000000000000000000000000000"});if(u.results&&u.results.length>0){const g=u.results[0];if(g&&g.returnValues&&g.returnValues.length>0){const T=g.returnValues[0];if(T&&Array.isArray(T)&&T.length>0){const w=T[0];if(Array.isArray(w))return new TextDecoder().decode(new Uint8Array(w))}}}throw new Error("Failed to get transceiver info from response")}async verifyAddresses(){try{const e=await this.provider.getObject({id:this.contracts.ntt.manager,options:{showContent:!0}});if(!e.data?.content||e.data.content.dataType!=="moveObject")return null;const o=e.data.content.fields.transceivers.fields.id.id,n=await this.provider.getDynamicFields({parentId:o}),u={manager:this.contracts.ntt.manager,token:await me.extractTokenTypeFromSuiState(this.provider,this.contracts.ntt.manager),transceiver:{}};for(const w of n.data)if(w.name?.type?.includes("transceiver_registry::Key"))try{const S=await this.provider.getObject({id:w.objectId,options:{showContent:!0}});if(S.data?.content&&S.data.content.dataType==="moveObject"){const M=S.data.content.fields.value.fields,A=M.state_object_id;M.id===0&&(u.transceiver.wormhole=A)}}catch(S){console.warn(`Failed to read transceiver info: ${S}`)}const g={manager:this.contracts.ntt.manager,token:this.contracts.ntt.token,transceiver:this.contracts.ntt.transceiver||{}},T=(w,S)=>{for(const M in w)typeof w[M]=="object"&&w[M]!==null&&typeof S[M]=="object"&&S[M]!==null?(T(w[M],S[M]),Object.keys(w[M]).length===0&&delete w[M]):w[M]===S[M]&&delete w[M]};return T(u,g),Object.keys(u).length>0?u:null}catch(e){return console.warn(`Failed to verify addresses: ${e}`),null}}async getUpgradeCapId(){const e=await this.getNttState();if(!e.upgrade_cap_id)throw new Error("UpgradeCap ID not found in NTT state");return e.upgrade_cap_id}async addReleaseCall(e,a,i,o){const n=a.find(C=>C.payloadName==="WormholeTransfer");if(!n)throw new Error("No wormhole attestation found");const u=await this.provider.getObject({id:this.contracts.ntt.manager,options:{showContent:!0}});if(!u.data?.content||u.data.content.dataType!=="moveObject")throw new Error("Failed to fetch manager state");const g=u.data.content,T=E1(g.fields.inbox.type),w=n.payload.nttManagerPayload;let S;try{S=f.serialize(te,w.payload)}catch(C){throw new Error(`Failed to serialize native token transfer payload: ${C instanceof Error?C.message:String(C)}`)}const M=await ee(this.provider,this.coreBridgeStateId),A=N1(e,T,M,S,w.id,w.sender.toUint8Array()),[I]=e.moveCall({target:`${i}::upgrades::new_version_gated`,arguments:[]});if(!I)throw new Error("Failed to create version gated object");e.moveCall({target:`${i}::ntt::release`,typeArguments:[this.contracts.ntt.token],arguments:[e.object(this.contracts.ntt.manager),I,e.pure.u16(f.chainToChainId(n.emitterChain)),A,e.object(o),e.object(_.SUI_CLOCK_OBJECT_ID)]})}async addRedeemCall(e,a,i,o){const n=this.contracts.ntt.transceiver?.wormhole;if(!n)throw new Error("Wormhole transceiver not found in contracts");const u=await this.getPackageIdFromObject(n),g=await ee(this.provider,this.coreBridgeStateId),T=f.serialize$1(a),[w]=e.moveCall({target:`${g}::vaa::parse_and_verify`,arguments:[e.object(this.coreBridgeStateId),e.pure.vector("u8",Array.from(T)),e.object(_.SUI_CLOCK_OBJECT_ID)]});if(!w)throw new Error("Failed to parse VAA");const S=await this.getPackageId(),[M]=e.moveCall({target:`${u}::wormhole_transceiver::validate_message`,typeArguments:[`${S}::auth::ManagerAuth`],arguments:[e.object(n),w]});if(!M)throw new Error("Failed to validate VAA through transceiver");const A=e.moveCall({target:`${i}::upgrades::new_version_gated`,arguments:[]});e.moveCall({target:`${i}::ntt::redeem`,typeArguments:[this.contracts.ntt.token,`${u}::wormhole_transceiver::TransceiverAuth`],arguments:[e.object(this.contracts.ntt.manager),A,e.object(o),M,e.object(_.SUI_CLOCK_OBJECT_ID)]})}async getTransferReleaseStatus(e){const a=await this.getInboxItem(e);if(!a)return null;const{inboxItemFields:i}=a;return i.release_status}async getInboxItem(e){const a=await this.getNttState(),i=parseInt(a.threshold),o=E1(a.inbox.type),n=this.contracts.ntt.token,u=e.emitterChain;if(!u)throw new Error("No emitter chain found in attestation");const g=f.chainToChainId(u),T=await this.getPackageId(),w=e.payload.nttManagerPayload;if(!w)throw new Error("No NTT manager payload found in attestation");let S;try{S=f.serialize(te,w.payload)}catch(R){throw new Error(`Failed to serialize native token transfer payload: ${R instanceof Error?R.message:String(R)}`)}const M=new _.Transaction,A=await ee(this.provider,this.contracts.coreBridge),I=N1(M,o,A,S,w.id,w.sender.toUint8Array()),[C]=M.moveCall({target:`${T}::state::borrow_inbox_item`,typeArguments:[n],arguments:[M.object(this.contracts.ntt.manager),M.pure.u16(g),I]});M.moveCall({target:"0x2::bcs::to_bytes",typeArguments:[`${T}::inbox::InboxItem<${o}::native_token_transfer::NativeTokenTransfer>`],arguments:[C]});const N=await this.provider.devInspectTransactionBlock({transactionBlock:M,sender:"0x0000000000000000000000000000000000000000000000000000000000000000"});return qt(N,i)}}class je{network;chain;provider;contracts;executorId;executorRequestsId;coreBridgeStateId;nttContracts;constructor(e,a,i,o){if(this.network=e,this.chain=a,this.provider=i,this.contracts=o,!X0[e])throw new Error(`Network ${e} not supported`);this.executorId=X0[e].executorId,this.executorRequestsId=X0[e].executorRequestsId,this.coreBridgeStateId=X0[e].coreBridgeStateId,this.nttContracts=o.ntt}static async fromRpc(e,a){const[i,o]=await _.SuiPlatform.chainFromRpc(e),n=a[o];if(n.network!==i)throw new Error(`Network mismatch: ${n.network} != ${i}`);return new je(i,o,e,n.contracts)}async*transfer(e,a,i,o,n,u=!1){if(new Date>o.expires)throw new Error("Quote has expired");if(!(await this.getSupportedDestinationChains()).includes(a.chain))throw new Error("Executor only supports Solana and EVM destination chains");const T=await this.createSuiNttTransferWithExecutor(e,a,o,n);yield new B0.SuiUnsignedTransaction(T,this.network,this.chain,"NTT Transfer with Executor")}async createSuiNttTransferWithExecutor(e,a,i,o){const n=new _.Transaction,u=f.chainToChainId(a.chain),g=o.contracts.ntt.manager,T=o.contracts.ntt.token,w=j1(T),M=new f.SuiAddress(w?_.SuiPlatform.nativeTokenId(this.network,this.chain).address:T).getCoinType(),{packageId:A,fields:I}=await _1(o.provider,g),[C]=await Bt(o.provider,I.transceivers.fields.id.id);if(!C)throw new Error("No transceiver state ID found");const{packageId:N}=await _1(o.provider,C);let R;try{a.address.toUniversalAddress?R=a.address.toUniversalAddress().toUint8Array():R=a.address.toUint8Array()}catch(p){throw new Error(`Failed to convert destination address to bytes: ${p instanceof Error?p.message:String(p)}`)}const E=await o.provider.getCoinMetadata({coinType:M});if(!E?.id)throw new Error(`CoinMetadata not found for ${M}`);const D=E.id;let O;if(!w){const p=await _.SuiPlatform.getCoins(this.provider,e,M),[x,...k]=p.filter(P=>_.isSameType(P.coinType,M));if(x===void 0)throw new Error(`Coins array doesn't contain any coins of type ${M}`);O=n.object(x.coinObjectId),k.length&&n.mergeCoins(O,k.map(P=>n.object(P.coinObjectId)))}const[U]=w?n.splitCoins(n.gas,[n.pure.u64(i.remainingAmount)]):n.splitCoins(O,[n.pure.u64(i.remainingAmount)]),[V]=n.moveCall({target:`${A}::upgrades::new_version_gated`,arguments:[]}),[z,G]=n.moveCall({target:`${A}::ntt::prepare_transfer`,typeArguments:[M],arguments:[n.object(g),U,n.object(D),n.pure.u16(u),n.pure.vector("u8",Array.from(R)),n.pure.option("vector<u8>",null),n.pure.bool(!1)]}),[O0]=n.moveCall({target:`${A}::state::get_chain_id`,typeArguments:[M],arguments:[n.object(g)]}),[N0]=n.moveCall({target:`${A}::state::get_next_sequence`,typeArguments:[M],arguments:[n.object(g)]}),H=await ee(this.provider,this.coreBridgeStateId),[L]=n.moveCall({target:`${H}::bytes32::to_bytes`,arguments:[N0]});n.moveCall({target:`${A}::ntt::transfer_tx_sender`,typeArguments:[M],arguments:[n.object(g),V,n.object(D),z,n.object(_.SUI_CLOCK_OBJECT_ID)]});const[K]=n.moveCall({target:`${A}::state::create_transceiver_message`,typeArguments:[`${N}::wormhole_transceiver::TransceiverAuth`,M],arguments:[n.object(g),N0,n.object(_.SUI_CLOCK_OBJECT_ID)]}),[b]=n.moveCall({target:`${N}::wormhole_transceiver::release_outbound`,typeArguments:[`${A}::auth::ManagerAuth`],arguments:[n.object(C),K]}),[t]=n.splitCoins(n.gas,[n.pure.u64(0n)]);n.moveCall({target:`${H}::publish_message::publish_message`,arguments:[n.object(this.coreBridgeStateId),t,b,n.object(_.SUI_CLOCK_OBJECT_ID)]});const[s]=n.moveCall({target:"0x2::coin::from_balance",typeArguments:[M],arguments:[G]});if(w?n.mergeCoins(n.gas,[s]):n.transferObjects([s],`0x${f.Buffer.from(e.address).toString("hex")}`),i.referrerFee>0n){const p=`0x${f.Buffer.from(i.referrer.address.toUint8Array()).toString("hex")}`,[x]=w?n.splitCoins(n.gas,[n.pure.u64(i.referrerFee)]):n.splitCoins(O,[n.pure.u64(i.referrerFee)]);n.transferObjects([x],p)}const d=f.Buffer.from(g.substring(2),"hex"),[l]=n.moveCall({target:`${this.executorRequestsId}::executor_requests::make_ntt_v1_request`,arguments:[O0,n.pure.vector("u8",d),L]}),[y]=n.splitCoins(n.gas,[n.pure.u64(i.estimatedCost)]);let h;if(a.chain==="Solana"){const p=a.address.toString();h=`0x${new f.PublicKey(p).toBuffer().toString("hex")}`}else h=a.address.toString(),h.startsWith("0x")||(h=`0x${h}`);let v;const m=(await o.getPeer(a.chain))?.address;m&&(v=m.address.toString());let r;return v?r=v:r=h,n.moveCall({target:`${this.executorId}::executor::request_execution`,arguments:[y,n.object(_.SUI_CLOCK_OBJECT_ID),n.pure.u16(u),n.pure.address(r),n.pure.address(typeof e=="string"?e:`0x${Array.from(e.address||[]).map(p=>p.toString(16).padStart(2,"0")).join("")}`),n.pure.vector("u8",Array.from(i.signedQuote)),l,n.pure.vector("u8",Array.from(i.relayInstructions))]}),n}async estimateMsgValueAndGasLimit(e){return{msgValue:0n,gasLimit:20000000n}}getSupportedDestinationChains(){return["Solana","Ethereum","Bsc","Polygon","Avalanche","Arbitrum","Optimism","Base"]}}f.registerProtocol(_._platform,"Ntt",me);f.registerProtocol(_._platform,"NttWithExecutor",je);var $;(function(c){c.TRIMMED_DECIMALS=8,c.ManualOptions={automatic:!1},c.AutomaticOptions={automatic:!0};function e(w){return["Mainnet","Testnet"]}c.resolveSupportedNetworks=e;function a(w,S){return Object.values(w.tokens).flatMap(A=>A.map(I=>I.chain))}c.resolveSupportedChains=a;function i(w,S){return Object.entries(w.tokens).reduce((A,[,I])=>{const C=I.find(N=>N.chain===S.chain);return C&&(A.push(f.Wormhole.tokenId(S.chain,C.token)),C.isWrappedGasToken&&A.push(f.nativeTokenId(S.chain))),A},[])}c.resolveSourceTokens=i;function o(w,S,M,A){return Object.entries(w.tokens).map(([,I])=>{if(!I.find(R=>R.chain===M.chain&&(R.token.toLowerCase()===f.canonicalAddress(S).toLowerCase()||f.isNative(S.address)&&R.isWrappedGasToken)))return;const N=I.find(R=>R.chain===A.chain);if(N)return f.Wormhole.tokenId(A.chain,N.token)}).filter(I=>!!I)}c.resolveDestinationTokens=o;function n(w,S,M){const A=Object.values(w.tokens),I=f.canonicalAddress(S),C=f.canonicalAddress(M);for(const N of A){const R=N.find(E=>E.chain===S.chain&&(E.token.toLowerCase()===I.toLowerCase()||f.isNative(S.address)&&E.isWrappedGasToken));if(R){const E=N.find(D=>D.chain===M.chain&&(D.token.toLowerCase()===C.toLowerCase()||f.isNative(M.address)&&D.isWrappedGasToken));if(E)return{srcContracts:{token:R.token,manager:R.manager,transceiver:{wormhole:R.transceiver.find(D=>D.type==="wormhole").address},quoter:R.quoter},dstContracts:{token:E.token,manager:E.manager,transceiver:{wormhole:E.transceiver.find(D=>D.type==="wormhole").address}}}}}throw new Error("Cannot find Ntt contracts in config for: "+I)}c.resolveNttContracts=n;function u(w,S,M){const A=Object.values(w.tokens),I=f.canonicalAddress(S);for(const C of A)if(C.find(R=>R.manager.toLowerCase()===I.toLowerCase()&&R.chain===S.chain)){const R=C.find(E=>E.chain===M);if(!R)throw new Error(`Cannot find destination Ntt contracts in config for: ${I}`);return{token:R.token,manager:R.manager,transceiver:{wormhole:R.transceiver.find(E=>E.type==="wormhole").address},quoter:R.quoter}}throw new Error("Cannot find Ntt contracts in config for: "+I)}c.resolveDestinationNttContracts=u;function g(w,S){const M=S*95n/100n;return w>M}c.isCapacityThresholdExceeded=g;function T(w,S){return f.truncate(w,Math.min(w.decimals,S,c.TRIMMED_DECIMALS))}c.trimAmount=T})($||($={}));function V1(c){class e extends $t{static config=c}return e}class $t extends f.FinalizableRoute{static NATIVE_GAS_DROPOFF_SUPPORTED=!1;static IS_AUTOMATIC=!1;staticConfig=this.constructor.config;static config={tokens:{}};static meta={name:"ManualNtt"};static supportedNetworks(){return $.resolveSupportedNetworks(this.config)}static supportedChains(e){return $.resolveSupportedChains(this.config,e)}static async supportedSourceTokens(e){return $.resolveSourceTokens(this.config,e)}static async supportedDestinationTokens(e,a,i){return $.resolveDestinationTokens(this.config,e,a,i)}static isProtocolSupported(e){return e.supportsProtocol("Ntt")}getDefaultOptions(){return $.ManualOptions}async validate(e,a){const i=a.options??this.getDefaultOptions(),o=f.parse(a.amount,e.source.decimals),n=$.trimAmount(o,e.destination.decimals),u=f.isNative(e.source.id.address),{srcContracts:g,dstContracts:T}=$.resolveNttContracts(this.staticConfig,e.source.id,e.destination.id);return{valid:!0,params:{amount:a.amount,normalizedParams:{amount:n,sourceContracts:g,destinationContracts:T,options:{queue:!1,automatic:!1,wrapNative:u}},options:i}}}async quote(e,a){const i=f.scale(a.normalizedParams.amount,e.destination.decimals),o={success:!0,params:a,sourceToken:{token:e.source.id,amount:a.normalizedParams.amount},destinationToken:{token:e.destination.id,amount:i},eta:f.estimateFinalityTime(e.fromChain.chain)+f.guardianAttestationEta*1e3},{fromChain:n,toChain:u}=e,g=await u.getProtocol("Ntt",{ntt:a.normalizedParams.destinationContracts}),T=await g.getRateLimitDuration();if(T>0n){const w=await g.getCurrentInboundCapacity(n.chain);$.isCapacityThresholdExceeded(f.units(i),w)&&(o.warnings=[{type:"DestinationCapacityWarning",delayDurationSec:Number(T)}])}return o}async initiate(e,a,i,o){const{params:n}=i,{fromChain:u}=e,g=f.Wormhole.parseAddress(a.chain(),a.address()),w=(await u.getProtocol("Ntt",{ntt:n.normalizedParams.sourceContracts})).transfer(g,f.units(n.normalizedParams.amount),o,n.normalizedParams.options),S=await f.signSendWait(u,w,a);return{from:u.chain,to:o.chain,state:f.TransferState.SourceInitiated,originTxs:S,params:n}}async complete(e,a){if(!f.isAttested(a)){if(f.isRedeemed(a))return a;throw new Error("The source must be finalized in order to complete the transfer")}const i=this.wh.getChain(a.to),o=await i.getProtocol("Ntt",{ntt:a.params.normalizedParams.destinationContracts}),n=f.Wormhole.parseAddress(e.chain(),e.address()),u=o.redeem([a.attestation.attestation],n),g=await f.signSendWait(i,u,e);return{...a,state:f.TransferState.DestinationInitiated,destinationTxs:g}}async resume(e){const a=await this.wh.getVaa(e.txid,"Ntt:WormholeTransfer");if(!a)throw new Error("No VAA found for transaction: "+e.txid);const i={chain:a.emitterChain,emitter:a.emitterAddress,sequence:a.sequence},{recipientChain:o,trimmedAmount:n}=a.payload.nttManagerPayload.payload,u=f.canonicalAddress({chain:a.emitterChain,address:a.payload.nttManagerPayload.payload.sourceToken}),g=f.canonicalAddress({chain:a.emitterChain,address:a.payload.sourceNttManager}),T=f.chainToPlatform(a.emitterChain)==="Solana"?g:f.canonicalAddress({chain:a.emitterChain,address:a.emitterAddress}),w=$.resolveDestinationNttContracts(this.staticConfig,{chain:a.emitterChain,address:a.payload.sourceNttManager},o),S=f.fromBaseUnits(n.amount,n.decimals);return{from:a.emitterChain,to:o,state:f.TransferState.Attested,originTxs:[e],attestation:{id:i,attestation:a},params:{amount:f.display(S),options:{automatic:!1},normalizedParams:{amount:S,options:{queue:!1},sourceContracts:{token:u,manager:g,transceiver:{wormhole:T}},destinationContracts:{token:w.token,manager:w.manager,transceiver:{wormhole:w.transceiver.wormhole}}}}}}async finalize(e,a){if(!f.isDestinationQueued(a))throw new Error("The transfer must be destination queued in order to finalize");const{attestation:{attestation:i}}=a,o=this.wh.getChain(a.to),n=await o.getProtocol("Ntt",{ntt:a.params.normalizedParams.destinationContracts}),u=f.Wormhole.chainAddress(e.chain(),e.address()),g=n.completeInboundQueuedTransfer(a.from,i.payload.nttManagerPayload,u.address),T=await f.signSendWait(o,g,e);return{...a,state:f.TransferState.DestinationFinalized,destinationTxs:[...a.destinationTxs??[],...T]}}async*track(e,a){if(f.isSourceInitiated(e)||f.isSourceFinalized(e)){const{txid:n}=e.originTxs[e.originTxs.length-1],u=await this.wh.getVaa(n,"Ntt:WormholeTransfer",a);if(!u)throw new Error("No VAA found for transaction: "+n);const g={chain:u.emitterChain,emitter:u.emitterAddress,sequence:u.sequence};e={...e,state:f.TransferState.Attested,attestation:{id:g,attestation:u}},yield e}const o=await this.wh.getChain(e.to).getProtocol("Ntt",{ntt:e.params.normalizedParams.destinationContracts});if(f.isAttested(e)){const{attestation:{attestation:n}}=e;await o.getIsApproved(n)&&(e={...e,state:f.TransferState.DestinationInitiated},yield e)}if(f.isRedeemed(e)||f.isDestinationQueued(e)){const{attestation:{attestation:n}}=e,u=await o.getInboundQueuedTransfer(n.emitterChain,n.payload.nttManagerPayload);u!==null?(e={...e,state:f.TransferState.DestinationQueued,queueReleaseTime:new Date(u.rateLimitExpiryTimestamp*1e3)},yield e):await o.getIsExecuted(n)&&(e={...e,state:f.TransferState.DestinationFinalized},yield e)}yield e}}function Q1(c){class e extends Wt{static config=c}return e}class Wt extends f.AutomaticRoute{static NATIVE_GAS_DROPOFF_SUPPORTED=!1;staticConfig=this.constructor.config;static config={tokens:{}};static meta={name:"AutomaticNtt"};static supportedNetworks(){return $.resolveSupportedNetworks(this.config)}static supportedChains(e){return $.resolveSupportedChains(this.config,e)}static async supportedSourceTokens(e){return $.resolveSourceTokens(this.config,e)}static async supportedDestinationTokens(e,a,i){return $.resolveDestinationTokens(this.config,e,a,i)}static isProtocolSupported(e){return e.supportsProtocol("Ntt")}getDefaultOptions(){return $.AutomaticOptions}async isAvailable(e){const{srcContracts:a}=$.resolveNttContracts(this.staticConfig,e.source.id,e.destination.id);return(await e.fromChain.getProtocol("Ntt",{ntt:a})).isRelayingAvailable(e.toChain.chain)}async validate(e,a){const i=a.options??this.getDefaultOptions(),o=f.isNative(e.source.id.address),n=f.parse(a.amount,e.source.decimals),u=$.trimAmount(n,e.destination.decimals),{srcContracts:g,dstContracts:T}=$.resolveNttContracts(this.staticConfig,e.source.id,e.destination.id);return{valid:!0,params:{amount:a.amount,normalizedParams:{amount:u,sourceContracts:g,destinationContracts:T,options:{queue:!1,automatic:!0,wrapNative:o}},options:i}}}async quote(e,a){const{fromChain:i,toChain:o}=e,n=await i.getProtocol("Ntt",{ntt:a.normalizedParams.sourceContracts});if(!await n.isRelayingAvailable(o.chain))return{success:!1,error:new Error(`Relaying to chain ${o.chain} is not available`)};const u=await n.quoteDeliveryPrice(o.chain,a.normalizedParams.options),g=f.scale(a.normalizedParams.amount,e.destination.decimals),T={success:!0,params:a,sourceToken:{token:e.source.id,amount:a.normalizedParams.amount},destinationToken:{token:e.destination.id,amount:g},relayFee:{token:f.Wormhole.tokenId(i.chain,"native"),amount:f.fromBaseUnits(u,i.config.nativeTokenDecimals)},eta:f.estimateFinalityTime(e.fromChain.chain)+f.guardianAttestationEta*1e3},w=await o.getProtocol("Ntt",{ntt:a.normalizedParams.destinationContracts}),S=await w.getRateLimitDuration();if(S>0n){const M=await w.getCurrentInboundCapacity(i.chain);$.isCapacityThresholdExceeded(f.units(g),M)&&(T.warnings=[{type:"DestinationCapacityWarning",delayDurationSec:Number(S)}])}return T}async initiate(e,a,i,o){const{params:n}=i,{fromChain:u}=e,g=f.Wormhole.parseAddress(a.chain(),a.address()),w=(await u.getProtocol("Ntt",{ntt:n.normalizedParams.sourceContracts})).transfer(g,f.units(n.normalizedParams.amount),o,n.normalizedParams.options),S=await f.signSendWait(u,w,a);return{from:u.chain,to:o.chain,state:f.TransferState.SourceInitiated,originTxs:S,params:n}}async resume(e){const a=await this.wh.getVaa(e.txid,"Ntt:WormholeTransferStandardRelayer");if(!a)throw new Error("No VAA found for transaction: "+e.txid);const i={chain:a.emitterChain,emitter:a.emitterAddress,sequence:a.sequence},{payload:o}=a.payload,{recipientChain:n,trimmedAmount:u}=o.nttManagerPayload.payload,g=f.canonicalAddress({chain:a.emitterChain,address:o.nttManagerPayload.payload.sourceToken}),T=f.canonicalAddress({chain:a.emitterChain,address:o.sourceNttManager}),w=f.chainToPlatform(a.emitterChain)==="Solana"?T:f.canonicalAddress({chain:a.emitterChain,address:a.emitterAddress}),S=$.resolveDestinationNttContracts(this.staticConfig,{chain:a.emitterChain,address:o.sourceNttManager},n),M=f.fromBaseUnits(u.amount,u.decimals);return{from:a.emitterChain,to:n,state:f.TransferState.Attested,originTxs:[e],attestation:{id:i,attestation:a},params:{amount:f.display(M),options:{automatic:!0},normalizedParams:{amount:M,options:{queue:!1,automatic:!0},sourceContracts:{token:g,manager:T,transceiver:{wormhole:w}},destinationContracts:{token:S.token,manager:S.manager,transceiver:{wormhole:S.transceiver.wormhole}}}}}}async finalize(e,a){if(!f.isDestinationQueued(a))throw new Error("The transfer must be destination queued in order to finalize");const{attestation:{attestation:i}}=a,o=this.wh.getChain(a.to),n=await o.getProtocol("Ntt",{ntt:a.params.normalizedParams.destinationContracts}),u=f.Wormhole.chainAddress(e.chain(),e.address()),g=i.payloadName==="WormholeTransfer"?i.payload:i.payload.payload,T=n.completeInboundQueuedTransfer(a.from,g.nttManagerPayload,u.address),w=await f.signSendWait(o,T,e);return{...a,state:f.TransferState.DestinationFinalized,destinationTxs:[...a.destinationTxs??[],...w]}}async*track(e,a){if(f.isSourceInitiated(e)||f.isSourceFinalized(e)){const{txid:n}=e.originTxs[e.originTxs.length-1],u=S=>f.chainToPlatform(S)==="Evm",g=u(e.from)&&u(e.to)?"Ntt:WormholeTransferStandardRelayer":"Ntt:WormholeTransfer",T=await this.wh.getVaa(n,g,a);if(!T)throw new Error(`No VAA found for transaction: ${n}`);const w={chain:T.emitterChain,emitter:T.emitterAddress,sequence:T.sequence};e={...e,state:f.TransferState.Attested,attestation:{id:w,attestation:T}},yield e}const o=await this.wh.getChain(e.to).getProtocol("Ntt",{ntt:e.params.normalizedParams.destinationContracts});if(f.isAttested(e)){const{attestation:{attestation:n}}=e;await o.getIsApproved(n)&&(e={...e,state:f.TransferState.DestinationInitiated},yield e)}if(f.isRedeemed(e)||f.isDestinationQueued(e)){const{attestation:{attestation:n}}=e,u=n.payloadName==="WormholeTransfer"?n.payload:n.payload.payload,g=await o.getInboundQueuedTransfer(n.emitterChain,u.nttManagerPayload);g!==null?(e={...e,state:f.TransferState.DestinationQueued,queueReleaseTime:new Date(g.rateLimitExpiryTimestamp*1e3)},yield e):await o.getIsExecuted(n)&&(e={...e,state:f.TransferState.DestinationFinalized},yield e)}yield e}}const Ve={Mainnet:"https://executor.labsapis.com",Testnet:"https://executor-testnet.labsapis.com"},zt=c=>{let e="";if(f.chainToPlatform(c)==="Evm")e="0x9b2A3B92b1D86938D3Ed37B0519952C227bA6D09";else if(f.chainToPlatform(c)==="Solana")e="9q2q3EtP1VNdyaxzju1CGfh3EDj7heGABgxAJNyQDXgT";else if(f.chainToPlatform(c)==="Sui")e="0xbfa1240e48c622d97881473953be730091161b7931d89bd6afe667841cf69ef4";else throw new Error(`No referrer address for chain ${c}`);return f.Wormhole.chainAddress(c,e)};var Z0;(function(c){c.Pending="pending",c.Failed="failed",c.Unsupported="unsupported",c.Submitted="submitted",c.Underpaid="underpaid",c.Aborted="aborted"})(Z0||(Z0={}));var L1;(function(c){c.ERM1="ERM1",c.ERV1="ERV1",c.ERN1="ERN1",c.ERC1="ERC1",c.ERC2="ERC2"})(L1||(L1={}));async function Kt(c){const e=`${Ve[c]}/v0/capabilities`;try{return(await f.axios.get(e)).data}catch{throw new Error(`Failed to fetch capabilities for network: ${c}.`)}}async function jt(c,e,a,i){const o=`${Ve[c]}/v0/quote`;try{return(await f.axios.post(o,{srcChain:f.toChainId(e),dstChain:f.toChainId(a),relayInstructions:i})).data}catch{throw new Error("Failed to fetch signed quote.")}}async function O1(c,e,a){const i=`${Ve[c]}/v0/status/tx`;try{return(await f.axios.post(i,{txHash:e,chainId:f.toChainId(a)})).data}catch{throw new Error(`Failed to fetch status for txHash: ${e}.`)}}const Vt=65535n;function Qt(c,e,a){if(e>Vt)throw new Error("dBps exceeds max u16");const i=f.units(c);let o=i,n=0n;if(e>0){n=i*e/100000n;const u=$.trimAmount(f.fromBaseUnits(n,c.decimals),a);o=i-f.units(u)}return{referrerFee:n,remainingAmount:o,referrerFeeDbps:e}}function G1(c){class e extends Gt{static config=c}return e}class Gt extends f.AutomaticRoute{static NATIVE_GAS_DROPOFF_SUPPORTED=!0;staticConfig=this.constructor.config;static config={ntt:{tokens:{}}};static meta={name:"NttExecutorRoute"};static supportedNetworks(){return $.resolveSupportedNetworks(this.config.ntt)}static supportedChains(e){return $.resolveSupportedChains(this.config.ntt,e)}static async supportedSourceTokens(e){return $.resolveSourceTokens(this.config.ntt,e)}static async supportedDestinationTokens(e,a,i){return $.resolveDestinationTokens(this.config.ntt,e,a,i)}static isProtocolSupported(e){return e.supportsProtocol("Ntt")}getDefaultOptions(){return{nativeGas:0}}async validate(e,a){const i=a.options??this.getDefaultOptions();if(i.nativeGas!==void 0&&(i.nativeGas<0||i.nativeGas>1))return{valid:!1,error:new Error("Invalid native gas percentage"),params:a};const o=f.parse(a.amount,e.source.decimals),n=$.trimAmount(o,e.destination.decimals),{srcContracts:u,dstContracts:g}=$.resolveNttContracts(this.staticConfig.ntt,e.source.id,e.destination.id);let T=0n;if(this.staticConfig.referrerFee&&(T=this.staticConfig.referrerFee.feeDbps,this.staticConfig.referrerFee.perTokenOverrides)){const S=f.canonicalAddress(e.source.id),M=this.staticConfig.referrerFee.perTokenOverrides[e.source.id.chain]?.[S];M?.referrerFeeDbps!==void 0&&(T=M.referrerFeeDbps)}return{valid:!0,params:{amount:a.amount,normalizedParams:{amount:n,sourceContracts:u,destinationContracts:g,referrerFeeDbps:T},options:i}}}async quote(e,a){const{fromChain:i,toChain:o}=e;try{const n=await this.fetchExecutorQuote(e,a),{remainingAmount:u,estimatedCost:g,gasDropOff:T,expires:w}=n,S=f.scale(f.fromBaseUnits(u,e.source.decimals),e.destination.decimals),M={success:!0,params:a,sourceToken:{token:e.source.id,amount:a.normalizedParams.amount},destinationToken:{token:e.destination.id,amount:S},relayFee:{token:f.nativeTokenId(i.chain),amount:f.fromBaseUnits(g,i.config.nativeTokenDecimals)},destinationNativeGas:f.fromBaseUnits(T,o.config.nativeTokenDecimals),eta:f.estimateFinalityTime(e.fromChain.chain)+f.guardianAttestationEta*1e3,expires:w,details:n},A=await o.getProtocol("Ntt",{ntt:a.normalizedParams.destinationContracts}),I=await A.getRateLimitDuration();if(I>0n){const C=await A.getCurrentInboundCapacity(i.chain);$.isCapacityThresholdExceeded(f.units(S),C)&&(M.warnings=[{type:"DestinationCapacityWarning",delayDurationSec:Number(I)}])}return M}catch(n){return{success:!1,error:n instanceof Error?n:new Error(String(n))}}}async fetchExecutorQuote(e,a){const{fromChain:i,toChain:o}=e;let n=zt(i.chain);const u=this.staticConfig.referrerFee;if(u){const N0=f.chainToPlatform(i.chain),H=u.referrerAddresses?.[N0]??"";H&&(n=f.Wormhole.chainAddress(i.chain,H))}const{referrerFee:g,remainingAmount:T,referrerFeeDbps:w}=Qt(a.normalizedParams.amount,a.normalizedParams.referrerFeeDbps,e.destination.decimals);if(T<=0n)throw new Error("Amount after fee <= 0");const S=await Kt(i.network);if(!S[f.toChainId(i.chain)])throw new Error("Unsupported source chain");const A=S[f.toChainId(o.chain)];if(!A||!A.requestPrefixes.includes("ERN1"))throw new Error("Unsupported destination chain");const{recipient:I}=e,C=await o.getProtocol("NttWithExecutor",{ntt:a.normalizedParams.destinationContracts}),N=BigInt(A.gasDropOffLimit),R=a.options.nativeGas&&N>0n?BigInt(Math.round(a.options.nativeGas*100))*N/100n:0n;let{msgValue:E,gasLimit:D}=await C.estimateMsgValueAndGasLimit(I);if(this.staticConfig.referrerFee?.perTokenOverrides){const N0=f.canonicalAddress(e.destination.id),H=this.staticConfig.referrerFee.perTokenOverrides[e.destination.id.chain]?.[N0];H?.gasLimit!==void 0&&(D=H.gasLimit),H?.msgValue!==void 0&&(E=H.msgValue)}const O=[];O.push({request:{type:"GasInstruction",gasLimit:D,msgValue:E}}),R>0n&&O.push({request:{type:"GasDropOffInstruction",dropOff:R,recipient:I?I.address.toUniversalAddress():new f.UniversalAddress(new Uint8Array(32))}});const U=f.serialize(f.relayInstructionsLayout,{requests:O}),V=await jt(i.network,i.chain,o.chain,f.hex.encode(U,!0));if(!V.estimatedCost)throw new Error("No estimated cost");const z=BigInt(V.estimatedCost),G=f.hex.decode(V.signedQuote),O0=f.deserialize$1(f.signedQuoteLayout,G);return{signedQuote:G,relayInstructions:U,estimatedCost:z,payeeAddress:O0.quote.payeeAddress,referrer:n,referrerFee:g,remainingAmount:T,referrerFeeDbps:w,expires:O0.quote.expiryTime,gasDropOff:R}}async initiate(e,a,i,o){if(!i.details)throw new Error("Missing quote details");const{params:n,details:u}=i;f.deserialize$1(f.relayInstructionsLayout,u.relayInstructions).requests.forEach(({request:E})=>{if(E.type==="GasDropOffInstruction"&&!E.recipient.equals(o.address.toUniversalAddress()))throw new Error("Gas drop-off recipient does not match")});const{fromChain:T}=e,w=f.Wormhole.parseAddress(a.chain(),a.address()),S=await T.getProtocol("NttWithExecutor",{ntt:n.normalizedParams.sourceContracts}),M=await T.getProtocol("Ntt",{ntt:n.normalizedParams.sourceContracts}),A=f.isNative(e.source.id.address),I=S.transfer(w,o,f.units(n.normalizedParams.amount),u,M,A),C=await f.signSendWait(T,I,a);let N=0;return(async()=>{for(;N<20;){try{const[E]=await O1(T.network,C.at(-1).txid,T.chain);if(E)break}catch{}N++,await new Promise(E=>setTimeout(E,2e3))}})(),{from:T.chain,to:o.chain,state:f.TransferState.SourceInitiated,originTxs:C,params:n}}async complete(e,a){if(!f.isAttested(a)&&!f.isFailed(a)){if(f.isRedeemed(a))return a;throw new Error("The source must be finalized in order to complete the transfer")}if(!a.attestation)throw new Error("No attestation found for the transfer");const i=this.wh.getChain(a.to),o=await i.getProtocol("Ntt",{ntt:a.params.normalizedParams.destinationContracts}),n=f.Wormhole.parseAddress(e.chain(),e.address()),u=o.redeem([a.attestation.attestation],n),g=await f.signSendWait(i,u,e);return{...a,state:f.TransferState.DestinationInitiated,attestation:a.attestation,destinationTxs:g}}async resume(e){const a=await this.wh.getVaa(e.txid,"Ntt:WormholeTransfer");if(!a)throw new Error("No VAA found for transaction: "+e.txid);const i={chain:a.emitterChain,emitter:a.emitterAddress,sequence:a.sequence},{recipientChain:o,trimmedAmount:n}=a.payload.nttManagerPayload.payload,u=f.canonicalAddress({chain:a.emitterChain,address:a.payload.nttManagerPayload.payload.sourceToken}),g=f.canonicalAddress({chain:a.emitterChain,address:a.payload.sourceNttManager}),T=f.chainToPlatform(a.emitterChain)==="Solana"?g:f.canonicalAddress({chain:a.emitterChain,address:a.emitterAddress}),w=$.resolveDestinationNttContracts(this.staticConfig.ntt,{chain:a.emitterChain,address:a.payload.sourceNttManager},o),S=f.fromBaseUnits(n.amount,n.decimals);return{from:a.emitterChain,to:o,state:f.TransferState.Attested,originTxs:[e],attestation:{id:i,attestation:a},params:{amount:f.display(S),options:{},normalizedParams:{amount:S,sourceContracts:{token:u,manager:g,transceiver:{wormhole:T}},destinationContracts:{token:w.token,manager:w.manager,transceiver:{wormhole:w.transceiver.wormhole}},referrerFeeDbps:0n}}}}async finalize(e,a){if(!f.isDestinationQueued(a))throw new Error("The transfer must be destination queued in order to finalize");const{attestation:{attestation:i}}=a,o=this.wh.getChain(a.to),n=await o.getProtocol("Ntt",{ntt:a.params.normalizedParams.destinationContracts}),u=f.Wormhole.chainAddress(e.chain(),e.address()),g=n.completeInboundQueuedTransfer(a.from,i.payload.nttManagerPayload,u.address),T=await f.signSendWait(o,g,e);return{...a,state:f.TransferState.DestinationFinalized,destinationTxs:[...a.destinationTxs??[],...T]}}async*track(e,a){if(f.isSourceInitiated(e)||f.isSourceFinalized(e)){const{txid:n}=e.originTxs.at(-1),u=await this.wh.getVaa(n,"Ntt:WormholeTransfer",a);if(!u)throw new Error("No VAA found for transaction: "+n);const g={chain:u.emitterChain,emitter:u.emitterAddress,sequence:u.sequence};e={...e,state:f.TransferState.Attested,attestation:{id:g,attestation:u}},yield e}const o=await this.wh.getChain(e.to).getProtocol("Ntt",{ntt:e.params.normalizedParams.destinationContracts});if(f.isAttested(e)&&!f.isFailed(e)){const[n]=await O1(this.wh.network,e.originTxs.at(-1).txid,e.from);if(!n)throw new Error("No transaction status found");const u=n.status;(u===Z0.Failed||u===Z0.Underpaid||u===Z0.Unsupported||u===Z0.Aborted)&&(e={...e,state:f.TransferState.Failed,error:new f.RelayFailedError(`Relay failed with status: ${u}`)},yield e)}if(f.isAttested(e)||f.isFailed(e)){if(!e.attestation)throw new Error("No attestation found");const{attestation:{attestation:n}}=e;await o.getIsApproved(n)&&(e={...e,state:f.TransferState.DestinationInitiated,attestation:e.attestation},yield e)}if(f.isRedeemed(e)||f.isDestinationQueued(e)){const{attestation:{attestation:n}}=e,u=await o.getInboundQueuedTransfer(n.emitterChain,n.payload.nttManagerPayload);u!==null?(e={...e,state:f.TransferState.DestinationQueued,queueReleaseTime:new Date(u.rateLimitExpiryTimestamp*1e3)},yield e):await o.getIsExecuted(n)&&(e={...e,state:f.TransferState.DestinationFinalized},yield e)}yield e}}const Ht=(c,e)=>[V1(c),Q1(c),G1({ntt:c,...e})];exports.nttAutomaticRoute=Q1;exports.nttExecutorRoute=G1;exports.nttManualRoute=V1;exports.nttRoutes=Ht;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("./web3-BKaP497Y.js");require("./index-BZZZ8OeS.js");const U0=require("./platform-qdbxkhTI.js"),L0=require("./contract-CTycrpaK.js"),H1=require("./unsignedTransaction-Bv76DnOj.js"),z0=require("./index-B7HBnPLP.js"),Q0=require("./index-CjjP3Qp5.js"),B=require("./mint-B4t2SvV6.js"),ce=require("./unsignedTransaction-DL3WyIkF.js"),K0=require("./transfer-BinEH6ml.js"),_=require("./platform-Bkbg7A9d.js"),B0=require("./unsignedTransaction-5HCmv6m2.js"),c1=f.LayoutExports.struct([f.LayoutExports.u8("instruction"),f.u64("amount")]);function Z1(c,e,a,i,o=[],n=B.TOKEN_PROGRAM_ID){const u=K0.addSigners([{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!1}],a,o),g=f.Buffer.alloc(c1.span);return c1.encode({instruction:K0.TokenInstruction.Approve,amount:BigInt(i)},g),new f.TransactionInstruction({keys:u,programId:n,data:g})}const pe=1,Y1=1,J1=1,X1=1,e6=1,t6=1,a6=1,n6=1;function i6(c){if(c.length<1)throw new B.TokenTransferHookInvalidSeed;const[e,...a]=c;if(a.length<e)throw new B.TokenTransferHookInvalidSeed;return{data:f.Buffer.from(a.slice(0,e)),packedLength:pe+Y1+e}}function s6(c,e){if(c.length<2)throw new B.TokenTransferHookInvalidSeed;const[a,i]=c;if(e.length<i+a)throw new B.TokenTransferHookInvalidSeed;return{data:e.subarray(a,a+i),packedLength:pe+J1+X1}}function r6(c,e){if(c.length<1)throw new B.TokenTransferHookInvalidSeed;const[a]=c;if(e.length<=a)throw new B.TokenTransferHookInvalidSeed;return{data:e[a].pubkey.toBuffer(),packedLength:pe+e6}}async function o6(c,e,a){if(c.length<3)throw new B.TokenTransferHookInvalidSeed;const[i,o,n]=c;if(e.length<=i)throw new B.TokenTransferHookInvalidSeed;const u=await a.getAccountInfo(e[i].pubkey);if(u==null)throw new B.TokenTransferHookAccountDataNotFound;if(u.data.length<o+n)throw new B.TokenTransferHookInvalidSeed;return{data:u.data.subarray(o,o+n),packedLength:pe+t6+a6+n6}}async function f6(c,e,a,i){const[o,...n]=c,u=new Uint8Array(n);switch(o){case 0:return null;case 1:return i6(u);case 2:return s6(u,a);case 3:return r6(u,e);case 4:return o6(u,e,i);default:throw new B.TokenTransferHookInvalidSeed}}async function d6(c,e,a,i){const o=[];let n=0;for(;n<32;){const u=await f6(c.slice(n),e,a,i);if(u==null)break;o.push(u.data),n+=u.packedLength}return o}const D1=f.LayoutExports.struct([f.publicKey("authority"),f.publicKey("programId")]);D1.span;function ae(c){const e=g6(Be.TransferHook,c.tlvData);return e!==null?D1.decode(e):null}const c6=f.LayoutExports.struct([f.bool("transferring")]);c6.span;function b6(c,e){const a=[f.Buffer.from("extra-account-metas"),c.toBuffer()];return f.PublicKey.findProgramAddressSync(a,e)[0]}const b1=f.LayoutExports.struct([f.LayoutExports.u8("discriminator"),f.LayoutExports.blob(32,"addressConfig"),f.bool("isSigner"),f.bool("isWritable")]),u6=f.LayoutExports.struct([f.LayoutExports.u32("count"),f.LayoutExports.seq(b1,f.LayoutExports.greedy(b1.span),"extraAccounts")]),l6=f.LayoutExports.struct([f.u64("instructionDiscriminator"),f.LayoutExports.u32("length"),u6.replicate("extraAccountsList")]);function m6(c){const e=l6.decode(c.data).extraAccountsList;return e.extraAccounts.slice(0,e.count)}async function p6(c,e,a,i,o){if(e.discriminator===0)return{pubkey:new f.PublicKey(e.addressConfig),isSigner:e.isSigner,isWritable:e.isWritable};let n=f.PublicKey.default;if(e.discriminator===1)n=o;else{const T=e.discriminator-128;if(a.length<=T)throw new B.TokenTransferHookAccountNotFound;n=a[T].pubkey}const u=await d6(e.addressConfig,a,i,c);return{pubkey:f.PublicKey.findProgramAddressSync(u,n)[0],isSigner:e.isSigner,isWritable:e.isWritable}}var u1;(function(c){c[c.Initialize=0]="Initialize",c[c.Update=1]="Update"})(u1||(u1={}));f.LayoutExports.struct([f.LayoutExports.u8("instruction"),f.LayoutExports.u8("transferHookInstruction"),f.publicKey("authority"),f.publicKey("transferHookProgramId")]);f.LayoutExports.struct([f.LayoutExports.u8("instruction"),f.LayoutExports.u8("transferHookInstruction"),f.publicKey("transferHookProgramId")]);function y6(c,e,a,i,o,n,u){const g=[e,a,i,o,n].map(w=>({pubkey:w,isSigner:!1,isWritable:!1})),T=f.Buffer.alloc(16);return T.set(f.Buffer.from([105,37,101,197,75,251,102,26]),0),T.writeBigUInt64LE(BigInt(u),8),new f.TransactionInstruction({keys:g,programId:c,data:T})}var Be;(function(c){c[c.Uninitialized=0]="Uninitialized",c[c.TransferFeeConfig=1]="TransferFeeConfig",c[c.TransferFeeAmount=2]="TransferFeeAmount",c[c.MintCloseAuthority=3]="MintCloseAuthority",c[c.ConfidentialTransferMint=4]="ConfidentialTransferMint",c[c.ConfidentialTransferAccount=5]="ConfidentialTransferAccount",c[c.DefaultAccountState=6]="DefaultAccountState",c[c.ImmutableOwner=7]="ImmutableOwner",c[c.MemoTransfer=8]="MemoTransfer",c[c.NonTransferable=9]="NonTransferable",c[c.InterestBearingConfig=10]="InterestBearingConfig",c[c.CpiGuard=11]="CpiGuard",c[c.PermanentDelegate=12]="PermanentDelegate",c[c.NonTransferableAccount=13]="NonTransferableAccount",c[c.TransferHook=14]="TransferHook",c[c.TransferHookAccount=15]="TransferHookAccount",c[c.MetadataPointer=18]="MetadataPointer",c[c.TokenMetadata=19]="TokenMetadata"})(Be||(Be={}));const B1=2,h6=2;function l1(c){return c+B1+h6}function g6(c,e){let a=0;for(;l1(a)<=e.length;){const i=e.readUInt16LE(a),o=e.readUInt16LE(a+B1),n=l1(a);if(i==c)return e.slice(n,n+o);a=n+o}return null}const m1=f.LayoutExports.struct([f.LayoutExports.u8("instruction")]);function v6(c,e=B.TOKEN_PROGRAM_ID){const a=[{pubkey:c,isSigner:!1,isWritable:!0}],i=f.Buffer.alloc(m1.span);return m1.encode({instruction:K0.TokenInstruction.SyncNative},i),new f.TransactionInstruction({keys:a,programId:e,data:i})}const Ue=c=>[{name:"id",binary:"bytes",size:32},{name:"sender",...f.universalAddressItem},f.customizableBytes({name:"payload",lengthSize:2},c)],ye=c=>({name:"prefix",binary:"bytes",custom:Uint8Array.from(c),omit:!0}),T6=(c,e,a)=>[ye(c),{name:"sourceNttManager",...f.universalAddressItem},{name:"recipientNttManager",...f.universalAddressItem},f.customizableBytes({name:"nttManagerPayload",lengthSize:2},e),f.customizableBytes({name:"transceiverPayload",lengthSize:2},a)],w6=[ye([156,35,189,59]),{name:"managerAddress",...f.universalAddressItem},{name:"mode",binary:"uint",size:1},{name:"token",...f.universalAddressItem},{name:"decimals",binary:"uint",size:1}],M6=[ye([24,252,103,194]),{name:"chain",...f.chainItem()},{name:"transceiver",...f.universalAddressItem}],S6=[{name:"decimals",binary:"uint",size:1},{name:"amount",binary:"uint",size:8}],A6={binary:"bytes",layout:S6};function I6(c,e){let a=0n;for(let i=0;i<e;++i)a|=BigInt(c[i])<<BigInt(8*(e-i-1));return Number(a)}function x6(c,e){const a=2n**BigInt(e*8);if(c>=a)throw new Error(`Value ${c} is too large for ${e} bytes`);const i=new Uint8Array(e);for(let o=0;o<e;++o)i[o]=Number(BigInt(c)>>BigInt(8*(e-o-1))&0xffn);return i}const k6={binary:"bytes",custom:{to:c=>{if(c.byteLength>=2){const e=I6(c,2);return c.slice(2,2+e)}return new Uint8Array},from:c=>c.byteLength>0?new Uint8Array([...x6(c.byteLength,2),...c]):new Uint8Array}},te=[ye([153,78,84,84]),{name:"trimmedAmount",...A6},{name:"sourceToken",...f.universalAddressItem},{name:"recipientAddress",...f.universalAddressItem},{name:"recipientChain",...f.chainItem()},{name:"additionalPayload",...k6}],p1=c=>T6([153,69,255,16],c,new Uint8Array(0)),P6=c=>[{name:"index",binary:"uint",size:1},f.customizableBytes({name:"payload",lengthSize:1},c)],C6=[["WormholeTransfer",p1(Ue(te))],["WormholeTransferStandardRelayer",f.deliveryInstructionLayout(p1(Ue(te)))],["TransceiverInfo",w6],["TransceiverRegistration",M6]];var D0;(function(c){function e(o){if(o.length>255)throw new Error(`Too many instructions (${o.length})`);return f.bytes.concat(new Uint8Array([o.length]),...o.map(n=>f.serialize(P6(),n)))}c.encodeTransceiverInstructions=e;function a(o,n){return f.keccak_256(f.bytes.concat(f.bignum.toBytes(f.toChainId(o),2),f.serialize(Ue(te),n)))}c.messageDigest=a;function i(o,n){const u=M=>{const A=/^(\d+)\.(\d+)\.(.*)$/,I=M.match(A);if(!I)throw new Error(`Invalid version format: ${M}`);const[,C,N,R]=I;return{major:Number(C),minor:Number(N),patchAndTag:R}},{major:g,minor:T}=u(o),{major:w,minor:S}=u(n);return g===w&&T>=S}c.abiVersionMatches=i})(D0||(D0={}));f.registerPayloadTypes("Ntt",C6);const ne=[{type:"constructor",inputs:[{name:"_token",type:"address",internalType:"address"},{name:"_mode",type:"uint8",internalType:"enum IManagerBase.Mode"},{name:"_chainId",type:"uint16",internalType:"uint16"},{name:"_rateLimitDuration",type:"uint64",internalType:"uint64"},{name:"_skipRateLimiting",type:"bool",internalType:"bool"}],stateMutability:"nonpayable"},{type:"function",name:"NTT_MANAGER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"attestationReceived",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"cancelOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"chainId",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"completeInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"completeOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"executeMsg",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"message",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"getCurrentInboundCapacity",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getCurrentOutboundCapacity",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getInboundLimitParams",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"view"},{type:"function",name:"getInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.InboundQueuedTransfer",components:[{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipient",type:"address",internalType:"address"}]}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getMode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getOutboundLimitParams",inputs:[],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"pure"},{type:"function",name:"getOutboundQueuedTransfer",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.OutboundQueuedTransfer",components:[{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"sender",type:"address",internalType:"address"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}]}],stateMutability:"view"},{type:"function",name:"getPeer",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct INttManager.NttManagerPeer",components:[{name:"peerAddress",type:"bytes32",internalType:"bytes32"},{name:"tokenDecimals",type:"uint8",internalType:"uint8"}]}],stateMutability:"view"},{type:"function",name:"getThreshold",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getTransceivers",inputs:[],outputs:[{name:"result",type:"address[]",internalType:"address[]"}],stateMutability:"pure"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"isMessageApproved",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isMessageExecuted",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"messageAttestations",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"count",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"mode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"enum IManagerBase.Mode"}],stateMutability:"view"},{type:"function",name:"nextMessageSequence",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"pause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"},{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"rateLimitDuration",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"removeTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setInboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"},{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setOutboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"},{name:"decimals",type:"uint8",internalType:"uint8"},{name:"inboundLimit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setThreshold",inputs:[{name:"threshold",type:"uint8",internalType:"uint8"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"token",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"tokenDecimals",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"transceiverAttestedToMessage",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"index",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"shouldQueue",type:"bool",internalType:"bool"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"unpause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"InboundTransferQueued",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"MessageAlreadyExecuted",inputs:[{name:"sourceNttManager",type:"bytes32",indexed:!0,internalType:"bytes32"},{name:"msgHash",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"MessageAttestedTo",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"index",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OutboundTransferCancelled",inputs:[{name:"sequence",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipient",type:"address",indexed:!1,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OutboundTransferQueued",inputs:[{name:"queueSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"OutboundTransferRateLimited",inputs:[{name:"sender",type:"address",indexed:!0,internalType:"address"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"currentCapacity",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"PeerUpdated",inputs:[{name:"chainId_",type:"uint16",indexed:!0,internalType:"uint16"},{name:"oldPeerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"oldPeerDecimals",type:"uint8",indexed:!1,internalType:"uint8"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"peerDecimals",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"ThresholdChanged",inputs:[{name:"oldThreshold",type:"uint8",indexed:!1,internalType:"uint8"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverAdded",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"transceiversNum",type:"uint256",indexed:!1,internalType:"uint256"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverRemoved",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransferRedeemed",inputs:[{name:"digest",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"TransferSent",inputs:[{name:"recipient",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"fee",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"msgSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"BurnAmountDifferentThanBalanceDiff",inputs:[{name:"burnAmount",type:"uint256",internalType:"uint256"},{name:"balanceDiff",type:"uint256",internalType:"uint256"}]},{type:"error",name:"CallerNotTransceiver",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CancellerNotSender",inputs:[{name:"canceller",type:"address",internalType:"address"},{name:"sender",type:"address",internalType:"address"}]},{type:"error",name:"CapacityCannotExceedLimit",inputs:[{name:"newCurrentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"newLimit",type:"uint72",internalType:"TrimmedAmount"}]},{type:"error",name:"DeliveryPaymentTooLow",inputs:[{name:"requiredPayment",type:"uint256",internalType:"uint256"},{name:"providedPayment",type:"uint256",internalType:"uint256"}]},{type:"error",name:"DisabledTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"InboundQueuedTransferNotFound",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InboundQueuedTransferStillQueued",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidMode",inputs:[{name:"mode",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidPeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidPeerChainIdZero",inputs:[]},{type:"error",name:"InvalidPeerDecimals",inputs:[]},{type:"error",name:"InvalidPeerZeroAddress",inputs:[]},{type:"error",name:"InvalidRecipient",inputs:[]},{type:"error",name:"InvalidRefundAddress",inputs:[]},{type:"error",name:"InvalidTargetChain",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"thisChain",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidTransceiverZeroAddress",inputs:[]},{type:"error",name:"MessageNotApproved",inputs:[{name:"msgHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NoEnabledTransceivers",inputs:[]},{type:"error",name:"NonRegisteredTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotEnoughCapacity",inputs:[{name:"currentCapacity",type:"uint256",internalType:"uint256"},{name:"amount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"NumberOfDecimalsNotEqual",inputs:[{name:"decimals",type:"uint8",internalType:"uint8"},{name:"decimalsOther",type:"uint8",internalType:"uint8"}]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OutboundQueuedTransferNotFound",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}]},{type:"error",name:"OutboundQueuedTransferStillQueued",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerNotRegistered",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RefundFailed",inputs:[{name:"refundAmount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"RetrievedIncorrectRegisteredTransceivers",inputs:[{name:"retrieved",type:"uint256",internalType:"uint256"},{name:"registered",type:"uint256",internalType:"uint256"}]},{type:"error",name:"ThresholdTooHigh",inputs:[{name:"threshold",type:"uint256",internalType:"uint256"},{name:"transceivers",type:"uint256",internalType:"uint256"}]},{type:"error",name:"TooManyTransceivers",inputs:[]},{type:"error",name:"TransceiverAlreadyAttestedToMessage",inputs:[{name:"nttManagerMessageHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"TransceiverAlreadyEnabled",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"TransferAmountHasDust",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"dust",type:"uint256",internalType:"uint256"}]},{type:"error",name:"UndefinedRateLimiting",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"expectedOwner",type:"address",internalType:"address"},{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"ZeroAmount",inputs:[]},{type:"error",name:"ZeroThreshold",inputs:[]}],y1="0x61016034620005a857601f620062e138819003918201601f19168301916001600160401b038311848410176200055b5780849260a094604052833981010312620005a8578051906001600160a01b0382168203620005a8576020810151916002831015620005a85760408201519161ffff83168303620005a8576060810151906001600160401b03821690818303620005a8576080015180159182158203620005a857158092816200059f575b50821562000583575b505062000571576080527f8561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d8954620001147e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e15460ff8360081c1614620005ad565b7ffd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f5460005b60ff8360081c168110620003ce57505060005b60ff8260081c1681106200033a5750604060ff6200016d92161115620005ad565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c1662000328576002600160401b03196001600160401b03821601620002dc575b50503060a05260c0526101009182526101209081526101404681523360e05260405191615cb693846200062b85396080518481816112ee0152818161192e01528181611d7f015281816127c501528181613241015281816137e701528181613e3a015281816152ca015281816153dd0152818161549d015281816155bc0152615684015260a05184614cf1015260c051848181610285015281816104e00152818161052d015281816126b10152818161365701528181613cb8015281816145240152818161494301526149f3015260e05184611a7801525183818161047701528181611df801528181611f3e015281816126ff015281816136d901528181613d3501526148cb0152518281816111960152818161276801526131cb0152518161312d0152f35b6001600160401b0319166001600160401b039081179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880620001b6565b60405163f92ee8a960e01b8152600490fd5b60018101808211620003b8575b60ff8360081c1681106200036757506200036190620005cb565b6200014c565b620003b290620003ac6200037b84620005db565b90546200038884620005db565b9054600391821b1c6001600160a01b039081169390911b9190911c161415620005ad565b620005cb565b62000347565b634e487b7160e01b600052601160045260246000fd5b620003d981620005db565b9054600382901b81901c6001600160a01b031660009081527f49bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f602052604090819020905192906001600160401b0360608501908111908511176200055b5760608401604052546200047b60ff821615801592838752602087019360ff808360081c1615928315875260101c16908160408a0152926200053e575b5050620005ad565b60018060401b03600160ff6040870151161b87161615159051151592600092835b60ff8a60081c168110620004ec575b50505082620004e6959492620004cb620003ac95620004d49414620005ad565b151514620005ad565b60ff60408188169201511610620005ad565b62000139565b620004f781620005db565b9054600391821b1c6001600160a01b039081169184901b85901c161462000529576200052390620005cb565b6200049c565b5060019350849150829050620004cb620004ab565b9091508162000551575b50388062000473565b9050153862000548565b634e487b7160e01b600052604160045260246000fd5b60405163e543ef0560e01b8152600490fd5b1591508162000596575b503880620000b5565b9050386200058d565b925038620000ac565b600080fd5b15620005b557565b634e487b7160e01b600052600160045260246000fd5b6000198114620003b85760010190565b7e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e18054821015620006145760005260206000200190600090565b634e487b7160e01b600052603260045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c80630271725014612a42578063036de8af146129b75780630677df54146129985780630900f01014612531578063186ce612146124dc57806319017175146124a65780631f97c9a8146122b4578063203e4a9b14611fb657806323d75e3114611f82578063295a521214611f28578063396c16b714611eec5780633b97e85614611ed15780633f4ba83a14611e435780634b4fd03b14611de5578063689f90c314611da357806374aa7bfc14611d5f5780637c91863414611c0a5780638129fc1c146119e75780638413bcba146118cb5780638456cb591461184e57806386e11ffa1461182957806389c619dd146117c95780638da5cb5b146117935780638e3ba8c91461175c5780638fd3ab801461161d5780639057412d146114a0578063961b94d01461144257806397c35146146111ba5780639a8a05921461117b5780639d78245414610f405780639f86029c14610c2f5780639fd0506d14610bf9578063b187bd2614610bcb578063b293f97f14610b35578063b4d591bb14610a74578063c0b07bde14610a2e578063c128d170146109b2578063d788c14714610927578063da4856a1146108f4578063e5a9860314610848578063e75235b81461081a578063f2fde38b146106d5578063f5cfec18146106b2578063f7514fbc146102b4578063fc0c546a1461026f5763fd96063c1461021757600080fd5b3461026c57602036600319011261026c576060610235600435615228565b6040805182516001600160481b031681526020808401516001600160401b031690820152918101516001600160a01b031690820152f35b80fd5b503461026c578060031936011261026c576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461026c57602036600319011261026c576004356001600160401b03811681036106ae576102e1615a50565b6002600080516020615b21833981519152541461069c576001600160401b038116600052600080516020615c0183398151915260205260406000206040519061032982612b1a565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a083015260405190818560048301549261039084613587565b808452936001811690811561067a5750600114610636575b506103b592500382612ba1565b60c08201526001600160401b03606082015116156106155760a08101516001600160a01b03163381036105e85750606061045860407ff80e572ae1b63e2449629b6c7d783add85c36473926f216077f17ee002bcfd07936001600160401b038616600052600080516020615c01833981519152602052610437826000206135d8565b01516104416149cd565b906001600160401b0360ff82169160081c166158bf565b926001600160401b0360405191168152336020820152836040820152a17f000000000000000000000000000000000000000000000000000000000000000060028110156105d25780610522575060405163a9059cbb60e01b6020820152336024820152604481019190915261050d906104de81606481015b03601f198101835282612ba1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316614218565b6001600080516020615c218339815191525580f35b600181036105b657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156105b1576040516340c10f1960e01b815233600482015260248101929092526000908290604490829084905af180156105a557610596575b5061050d565b61059f90612b07565b38610590565b6040513d6000823e3d90fd5b600080fd5b6040516366001a8960e01b815260ff9091166004820152602490fd5b634e487b7160e01b600052602160045260246000fd5b60405163ceb40a8560e01b81523360048201526001600160a01b03919091166024820152604490fd5b0390fd5b604051635feafa3160e11b81526001600160401b0383166004820152602490fd5b60040187525060208620909186915b81831061065e5750509060206103b592820101386103a8565b6020919350806001915483858801015201910190918392610645565b9050602092506103b594915060ff191682840152151560051b820101386103a8565b6040516309e3d0f360e11b8152600490fd5b5080fd5b503461026c578060031936011261026c5760206106cd615211565b604051908152f35b503461026c57602036600319011261026c576001600160a01b03600435818116908181036107e55761071690610709615a17565b610711615a17565b6159a3565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed97891825460ff600080516020615ba183398151915254168082036107fc575050908391825b84548110156107f8578460005281817f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd1015416803b156107f457848091602460405180948193632c7b84dd60e11b83528960048401525af19081156107e95785916107d1575b50506107cc90612de1565b61075b565b6107da90612b07565b6107e55783386107c1565b8380fd5b6040513d87823e3d90fd5b8480fd5b8380f35b604492506040519163d2a13a2960e01b835260048301526024820152fd5b503461026c578060031936011261026c57602060ff600080516020615aa18339815191525416604051908152f35b503461026c57602036600319011261026c5760043560ff8116908181036105b157610871615a17565b81156108e2577f2a855b929b9a53c6fb5b5ed248b27e502b709c088e036a5aa17620c8fc5085a9916108dc60ff92600080516020615aa1833981519152805493851985161790556108c0613060565b6040805160ff9490951684168552921660208401528291820190565b0390a180f35b60405163831761d760e01b8152600490fd5b503461026c5761090336612c24565b906002600080516020615b21833981519152541461069c5761092492613129565b80f35b503461026c57602036600319011261026c5761ffff610944612a9d565b61094c6151f2565b5016600052600080516020615bc18339815191526020526109ae6109736040600020614dcd565b6040519182918291909160406001600160401b038160608401956001600160481b038082511686526020820151166020860152015116910152565b0390f35b503461026c57602036600319011261026c5761ffff906109d0612a9d565b9060206040516109df81612b50565b828152015216600052600080516020615a8183398151915260205260408060002060ff8251610a0d81612b50565b60208260018554958685520154169101908152835192835251166020820152f35b503461026c578060031936011261026c576109ae604051610a4e81612b50565b60058152640302e312e360dc1b6020820152604051918291602083526020830190612ae2565b503461026c578060031936011261026c576040518091600080516020615b6183398151915290815480845260208094019081938352600080516020615ac183398151915290835b818110610b185750505084610ad1910385612ba1565b60405193838594850191818652518092526040850193925b828110610af857505050500390f35b83516001600160a01b031685528695509381019392810192600101610ae9565b82546001600160a01b031684529286019260019283019201610abb565b5060c036600319011261026c57610b4a612aae565b906084359182151583036106ae5760a4356001600160401b039283821161026c5750610b7a903690600401612bdd565b610b82615a50565b6002600080516020615b21833981519152541461069c57602093610bb0926064359060443590600435613c9c565b6001600080516020615c218339815191525560405191168152f35b503461026c578060031936011261026c5760206002600080516020615b218339815191525414604051908152f35b503461026c578060031936011261026c57600080516020615c41833981519152546040516001600160a01b039091168152602090f35b503461026c576020806003193601126106ae576001600160a01b039060043582811691908281036107f457610c62615a17565b8215610f2e5782600052600080516020615be183398151915280835260ff91826040600020541615610f1557846000528184528260406000205460081c1615610efc5784600052818452604060002061ff001990818154169055600080516020615ba1833981519152928354858160081c16928315610ee85761ff0060001980950160081b169116178455600080516020615b418339815191528054918860005287526001600160401b03600192610d2f82858a60406000205460101c161b198316169282168310614a9f565b6001600160401b0319161790558897600080516020615b618339815191528054938b5b858110610de2575b505050505050918091610da26040969594610d957f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f99614a9f565b610d9d614abc565b614ba7565b5460081c16600080516020615aa18339815191529081548381168210610dd4575b50505416908351928352820152a180f35b60ff19161781553880610dc3565b838b610ded8361302f565b929054600393841b1c1614610e0b5750610e0690612de1565b610d52565b9590918093959798999a9b9c508101908111610ed45790610e3f84610e32610e5e9461302f565b905490891b1c169161302f565b90919082549060031b9160018060a01b03809116831b921b1916179055565b82548015610ec057946040999794610da2948a9894610d95947f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f9e9c990192610ea68461302f565b81939154921b1b1916905555998496979899839650610d5a565b634e487b7160e01b8c52603160045260248cfd5b634e487b7160e01b8d52601160045260248dfd5b634e487b7160e01b8b52601160045260248bfd5b6040516307d86e9160e21b815260048101869052602490fd5b604051630d583f4760e41b815260048101869052602490fd5b604051632f44bd7760e01b8152600490fd5b503461026c57610f4f36612c24565b9033600052600080516020615be183398151915260209080825260ff60406000205460081c161561116357600080516020615b2183398151915291600283541461069c5761ffff861680600052600080516020615a8183398151915282528460406000205403611145575060405163b3f07bbd60e01b815291818380610fd9898b600484016130ff565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af492831561113a57889361110b575b503360005280825261101d60ff60406000205460101c1684612ff9565b6110f25760606110d193927f35a2101eaac94b493e0dfca061f9a7f087913fde8678e7cde0aca9897edba0e592336000528082528a6001600160401b03610100600160481b03604082600160ff836000205460101c161b1693898152600080516020615ae1833981519152875220928354928360081c161760081b1690610100600160481b03191617905533600052815260ff60406000205460101c166040519185835233908301526040820152a1612f8c565b6110d9578480f35b5460021461069c576110ea92613129565b388080808480f35b604051631089c4a160e11b815260048101849052602490fd5b9092508181813d8311611133575b6111238183612ba1565b810103126105b157519138611000565b503d611119565b6040513d8a823e3d90fd5b6044908560405191635788c0fd60e11b835260048301526024820152fd5b60405163a0ae911d60e01b8152336004820152602490fd5b503461026c578060031936011261026c57602060405161ffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50602036600319011261026c576001600160401b036004351690816004350361026c576111e5615a50565b6002600080516020615b21833981519152541461069c5781600052600080516020615c018339815191526020526040600020916040519261122584612b1a565b805484526001810154602085015261ffff60028201546001600160481b03811660408701526001600160401b038160481c16606087015260881c16608085015260018060a01b0360038201541660a08501526040518381949060048401549361128d85613587565b808552946001811690811561141e57506001146113d9575b50506112b392500383612ba1565b60c083019182526001600160401b03606084015116156113c1576112e46001600160401b0360608501511642612f7f565b6001600160401b037f00000000000000000000000000000000000000000000000000000000000000001611611396579161137391602093600052600080516020615c01833981519152845261133c60406000206135d8565b6001600160481b036040830151169161ffff608082015116815190868301519260a0600180821b0391015116935194600435614412565b6001600080516020615c21833981519152556001600160401b0360405191168152f35b6044906001600160401b036060850151166040519163c06cf05f60e01b835260048301526024820152fd5b60249060405190635feafa3160e11b82526004820152fd5b60049193949250018252602082205b8183106114025750509060206112b39282010138806112a5565b60209193508060019154838589010152019101909184926113e8565b915050602092506112b394915060ff191682840152151560051b82010138806112a5565b50606036600319011261026c57611457612aae565b604435611462615a50565b6002600080516020615b21833981519152541461069c5760209181611373926040519261148e84612b50565b6001845285368186013760043561363a565b503461026c57604036600319011261026c576114ba612a9d565b6024356001600160401b038111611619576114d9903690600401612bdd565b91604051918290600080516020615b61833981519152828154918287526020809701908652600080516020615ac183398151915292865b888282106115fa5750505061152792500383612ba1565b826115518351966040519788928392635b10743960e11b8452604060048501526044840190612ae2565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156115ef5783949561158a94926115cb575b50612e24565b604051926040840160408552835180915285606086019401915b8181106115b75750505082938301520390f35b8251855293860193918601916001016115a4565b6115e89192503d8087833e6115e08183612ba1565b810190612d0f565b9038611584565b6040513d85823e3d90fd5b85546001600160a01b0316845260019586019588955093019201611510565b8280fd5b503461026c578060031936011261026c57611636614cee565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b038082169060018201918183116117465760ff8460401c16908115611739575b5061172757600160401b911680926001600160481b03191617179081835560ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e541615611715577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2926020926116f5613060565b6116fd614abc565b68ff000000000000000019169055604051908152a180f35b604051632866815360e11b8152600490fd5b60405163f92ee8a960e01b8152600490fd5b9050818316111538611680565b634e487b7160e01b600052601160045260246000fd5b503461026c57604036600319011261026c5760243560ff811681036105b157611789602091600435612ff9565b6040519015158152f35b503461026c578060031936011261026c57600080516020615b01833981519152546040516001600160a01b039091168152602090f35b503461026c57602036600319011261026c5761181e6001600160401b036020926040600080516020615b4183398151915254916004358152600080516020615ae18339815191528652205460081c16166157e1565b60ff60405191168152f35b503461026c578060031936011261026c576118426151f2565b506109ae610973614d85565b503461026c578060031936011261026c57600080516020615b0183398151915254611881906001600160a01b0316614d32565b600080516020615b21833981519152600281541461069c57600290557f0e2fb031ee032dc02d8011dc50b816eb450cf856abd8261680dac74f72165bd2602060405160018152a180f35b503461026c57602036600319011261026c576004356118e8615a50565b6002600080516020615b21833981519152541461069c5761190881615228565b602081016001600160401b039081815116156119ce5761192b8282511642612f7f565b827f000000000000000000000000000000000000000000000000000000000000000016116119ac578385527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b860205260408086208681556001018690558301518351869161050d916001600160481b0316906001600160a01b031687614893565b516040516301cb739d60e71b8152600481019490945216602483015250604490fd5b604051630301bcaf60e61b815260048101859052602490fd5b503461026c578060031936011261026c57611a00614cee565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c1615906001600160401b03811680159081611c02575b6001149081611bf8575b159081611bef575b506117275767ffffffffffffffff198116600117835581611bd0575b50611a76615962565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381163303611ba75750611ab0615962565b611ab8615962565b611ac0615962565b6001600080516020615b2183398151915255600080516020615c4183398151915280546001600160a01b03191633179055611af9615962565b611b01615962565b611b0a336159a3565b611b12615962565b611b1a615962565b6001600080516020615c2183398151915255611b51610100600160481b0360ff611b4a611b456149cd565b615888565b1617614e2d565b611b59613060565b611b61614abc565b611b69575080f35b68ff00000000000000001981541690557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b604051636345072160e11b81526001600160a01b03919091166004820152336024820152604490fd5b68ffffffffffffffffff19166801000000000000000117825538611a6d565b90501538611a51565b303b159150611a49565b839150611a3f565b503461026c57608036600319011261026c57611c24612a9d565b6024356044359160ff83168093036105b15761ffff90611c42615a17565b16918215611d4d578115611d3b578015611d29577f1456404e7f41f35c3daac941bb50bad417a66275c3040061b4287d787719599d9160809184600052600080516020615a81833981519152918260205260ff604060002081600160405192611caa84612b50565b805484520154169460208201958652886000526020526001604060002084815501848319825416179055611d0c611ceb611ce26149cd565b8060643561591a565b89600052600080516020615bc183398151915260205260406000209061502b565b51935116604051938452602084015260408301526060820152a280f35b60405163ade64f0b60e01b8152600490fd5b60405163f839a0cb60e01b8152600490fd5b60405163100b0f2760e11b8152600490fd5b503461026c578060031936011261026c5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461026c578060031936011261026c57602060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb54166040519015158152f35b503461026c578060031936011261026c577f0000000000000000000000000000000000000000000000000000000000000000906002821015611e2f5760208260ff60405191168152f35b634e487b7160e01b81526021600452602490fd5b503461026c578060031936011261026c57600080516020615b0183398151915254611e76906001600160a01b0316614d32565b600080516020615b218339815191526002815403611ebf57600190557fe11c2112add17fb763d3bd59f63b10429c3e11373da4fb8ef6725107a2fdc4b06020604051838152a180f35b604051637e38d1d360e11b8152600490fd5b503461026c578060031936011261026c57602061181e6149cd565b503461026c57602036600319011261026c5760ff60406020926004358152600080516020615ae183398151915284522054166040519015158152f35b503461026c578060031936011261026c576040517f00000000000000000000000000000000000000000000000000000000000000006002811015611f6e57602092508152f35b634e487b7160e01b83526021600452602483fd5b503461026c578060031936011261026c5760206001600160401b03600080516020615b818339815191525416604051908152f35b503461026c576020806003193601126106ae576004356001600160a01b038116918282036107e557611fe6615a17565b8215610f2e5782600052600080516020615be18339815191529182825260ff90816040600020541660001461218a5784600052838352604060002061010061ff00198254161790555b600080516020615b6183398151915290815491600160401b8310156121745782610e3f9160016120619501905561302f565b600080516020615ba183398151915292835461ff00612084848360081c16614a8e565b60081b169061ff00191617809455600080516020615b4183398151915280546001600160401b0390818116918860005284875260018660406000205460101c161b16821791821461215b5767ffffffffffffffff19161790557ff05962b5774c658e85ed80c91a75af9d66d2af2253dda480f90bce78aff5eda594606094909390929091612110614abc565b84600052825280600080516020615aa183398151915280548281161561214c575b5054169260405194855260081c16908301526040820152a180f35b60ff1916600117815538612131565b604051638d68f84d60e01b815260048101899052602490fd5b634e487b7160e01b600052604160045260246000fd5b600080516020615ba18339815191528281541660408110156122a257604051906121b382612b35565b6001825285820190600182526040830190815288600052878752604060002092511515918662ff000061ff0086549351151560081b16935160101b1693169062ffffff1916171717905580548361220b818316614a8e565b169060ff19161790557f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed978805490600160401b821015612174576001820180825582101561228c576000527f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd10180546001600160a01b0319168617905561202f565b634e487b7160e01b600052603260045260246000fd5b60405163891684c360e01b8152600490fd5b503461026c57602036600319011261026c576004356001600160401b0381168091036106ae57606060c06040516122ea81612b1a565b84815284602082015284604082015284838201528460808201528460a08201520152600052600080516020615c0183398151915260205260406000206040519061233382612b1a565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a08301526040518381949060048401549361239b85613587565b8085529460018116908115612482575060011461243d575b50506123c192500383612ba1565b60c081019182526109ae6040519283926020845280516020850152602081015160408501526001600160481b0360408201511660608501526001600160401b03606082015116608085015261ffff60808201511660a085015260a0600180821b039101511660c08401525160e080840152610100830190612ae2565b60049193949250018252602082205b8183106124665750509060206123c19282010138806123b3565b602091935080600191548385890101520191019091849261244c565b915050602092506123c194915060ff191682840152151560051b82010138806123b3565b503461026c57602036600319011261026c576124c0615a17565b6109246124d76124ce6149cd565b8060043561591a565b614e2d565b503461026c57604036600319011261026c576109246124f9612aae565b612501615a17565b61ffff61250f6124ce6149cd565b9116600052600080516020615bc183398151915260205260406000209061502b565b503461026c576020806003193601126106ae576001600160a01b03600435818116908181036107f457612562615a17565b61256a614cee565b3b1561293d577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e918254916125f760ff841615614a9f565b60ff199283166001178455303b156107f45760405163011fa75760e71b8152858160048183305af180156128f25761292a575b5060405163689f90c360e01b81528281600481305afa9081156128f25786916128fd575b5015612686575b50507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b604051637e062a3560e11b81528281600481305afa9081156128f25786916128b4575b50816126d9927f000000000000000000000000000000000000000000000000000000000000000016911614614a9f565b6040516314ad290960e11b81528181600481305afa9081156107e957859161287e575b507f000000000000000000000000000000000000000000000000000000000000000090600282101561286a57600281101561286a5761273b9114614a9f565b604051634d4502c960e11b81528181600481305afa80156107e9578590612834575b612790915061ffff807f000000000000000000000000000000000000000000000000000000000000000016911614614a9f565b604051631d2a9eff60e21b8152908082600481305afa9081156107e95785916127f4575b506127ed91506001600160401b03807f000000000000000000000000000000000000000000000000000000000000000016911614614a9f565b3880612655565b905081813d831161282d575b61280a8183612ba1565b810103126107e557516001600160401b03811681036107e5576127ed90386127b4565b503d612800565b508181813d8311612863575b61284a8183612ba1565b810103126107f45761285e6127909161311a565b61275d565b503d612840565b634e487b7160e01b86526021600452602486fd5b90508181813d83116128ad575b6128958183612ba1565b810103126107f4575160028110156107f457386126fc565b503d61288b565b90508281813d83116128eb575b6128cb8183612ba1565b810103126128e757519080821682036128e757906126d96126a9565b8580fd5b503d6128c1565b6040513d88823e3d90fd5b61291d9150833d8511612923575b6129158183612ba1565b810190614200565b3861264e565b503d61290b565b61293690959195612b07565b933861262a565b60405162461bcd60e51b815260048101849052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b503461026c57602036600319011261026c576020611789600435612f8c565b503461026c57602036600319011261026c576004356001600160a01b0381811691829003611619576129f981600080516020615b018339815191525416614d32565b600080516020615c4183398151915280546001600160a01b031981168417909155167f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b503461026c57602036600319011261026c576106cd612a95612a90604060209461ffff612a6d612a9d565b612a756151f2565b50168152600080516020615bc1833981519152865220614dcd565b6152be565b6104416149cd565b6004359061ffff821682036105b157565b6024359061ffff821682036105b157565b60005b838110612ad25750506000910152565b8181015183820152602001612ac2565b90602091612afb81518092818552858086019101612abf565b601f01601f1916010190565b6001600160401b03811161217457604052565b60e081019081106001600160401b0382111761217457604052565b606081019081106001600160401b0382111761217457604052565b604081019081106001600160401b0382111761217457604052565b608081019081106001600160401b0382111761217457604052565b60a081019081106001600160401b0382111761217457604052565b90601f801991011681019081106001600160401b0382111761217457604052565b6001600160401b03811161217457601f01601f191660200190565b81601f820112156105b157803590612bf482612bc2565b92612c026040519485612ba1565b828452602083830101116105b157816000926020809301838601378301015290565b90600319906060828401126105b15760043561ffff811681036105b1579260243592604435916001600160401b03918284116105b15760609084830301126105b15760405192612c7384612b35565b806004013584526024810135602085015260448101359283116105b157612c9d9201600401612bdd565b604082015290565b6001600160401b0381116121745760051b60200190565b519060ff821682036105b157565b81601f820112156105b1578051612ce081612bc2565b92612cee6040519485612ba1565b818452602082840101116105b157612d0c9160208085019101612abf565b90565b9060209081838203126105b15782516001600160401b03938482116105b157019080601f830112156105b1578151612d4681612ca5565b94604090612d5682519788612ba1565b828752858088019360051b860101948486116105b157868101935b868510612d8357505050505050505090565b84518381116105b15782019084601f1983890301126105b157845190612da882612b50565b612db38a8401612cbc565b825285830151918583116105b157612dd2898c80969581960101612cca565b83820152815201940193612d71565b60001981146117465760010190565b805182101561228c5760209160051b010190565b9060406020612d0c9360ff81511684520151918160208201520190612ae2565b909291805191612e3383612ca5565b92604091612e4383519586612ba1565b818552601f19612e5283612ca5565b01602090368288013760009788955b848710612e7357505050505050509190565b909192939495988685612eec868d612e9260018060a01b039188612df0565b511680600052600080516020615be18339815191528252612ebd60ff866000205460101c1689612df0565b51908551808095819463b5634c7360e01b835261ffff60049916898401526024998a8401526044830190612e04565b03915afa908115612f7457908d91600091612f42575b50612f0e81928d612df0565b528301809311612f2f575050612f249099612de1565b959493929190612e61565b601190634e487b7160e01b600052526000fd5b91508782813d8311612f6d575b612f598183612ba1565b8101031261026c5750518c90612f0e612f02565b503d612f4f565b8a513d6000823e3d90fd5b9190820391821161174657565b6001600160401b039060ff612fe581600080516020615aa18339815191525416938493600080516020615b418339815191525490600052600080516020615ae183398151915260205260406000205460081c16166157e1565b1610159081612ff2575090565b9050151590565b906001600160401b0391600052600080516020615ae1833981519152602052600160ff60406000205460081c92161b1616151590565b600080516020615b61833981519152805482101561228c57600052600080516020615ac18339815191520190600090565b60ff600080516020615aa1833981519152541660405161307f81612b50565b60ff600080516020615ba183398151915254818116835260081c168060208301528083116130ba57505160ff166130b35750565b156108e257565b82604491604051916313c3d1b160e01b835260048301526024820152fd5b9060606040612d0c9380518452602081015160208501520151918160408201520190612ae2565b60409061ffff612d0c949316815281602082015201906130d8565b519061ffff821682036105b157565b91907f000000000000000000000000000000000000000000000000000000000000000046810361344957508161315f9184613467565b9190916134445760408091015191815192635399ded560e11b8452608084806131946020948560048401526024830190612ae2565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af4938415613439576000946133c4575b5061ffff9283606086015116847f0000000000000000000000000000000000000000000000000000000000000000168082036133a95750506131fc6149cd565b8161322587519280613220816001600160401b03968760ff82169160081c166158bf565b61591a565b960151908160a01c613392576001600160a01b039182169560007f000000000000000000000000000000000000000000000000000000000000000083161561338b57506132706151f2565b508816600052600080516020615bc18339815191528452613296612a9084600020614dcd565b6132a08882615853565b81808960081c169160081c16105b6132d357505050506132c36132d194846155b1565b6132cc83615491565b614893565b565b7f7f63c9251d82a933210c2b6d0b0f116252c3c116788120e64e8e8215df6f316297509561336f839596949760019394519261330e84612b35565b6001600160481b038091168452898401908242168252888501978852896000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b88b52886000209451166001600160481b03198554161784555116826157a0565b019151166001600160601b0360a01b82541617905551908152a1565b90506132ae565b50602491519063033b960d60e41b82526004820152fd5b6044925191631ee5902560e11b835260048301526024820152fd5b6080949194813d8211613431575b816133df60809383612ba1565b810103126106ae578351916133f383612b6b565b8151906001600160481b038216820361026c57508252848101518583015283810151848301526134259060600161311a565b606082015292386131bc565b3d91506133d2565b83513d6000823e3d90fd5b505050565b604490604051906377d879fb60e01b82526004820152466024820152fd5b60405163b3f07bbd60e01b81529193926020918391829161348c9190600484016130ff565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105a55760009161351d575b506134be81612f8c565b15613505576134cc8161354e565b92836134da57509150600090565b7f4069dff8c9df7e38d2867c0910bd96fd61787695e5380281148c04932d02bef2600080a360009190565b60249060405190630451c4fb60e41b82526004820152fd5b906020823d8211613546575b8161353660209383612ba1565b8101031261026c575051386134b4565b3d9150613529565b600052600080516020615ae18339815191526020526040600020805460ff81166135805760ff19166001179055600090565b5050600190565b90600182811c921680156135b7575b60208310146135a157565b634e487b7160e01b600052602260045260246000fd5b91607f1691613596565b8181106135cc575050565b600081556001016135c1565b6004600091828155826001820155826002820155826003820155016135fd8154613587565b8061360757505050565b82601f821160011461361857505055565b9091808252613636601f60208420940160051c8401600185016135c1565b5555565b9194939290946000958315613c8a578115613c78578215613c66577f00000000000000000000000000000000000000000000000000000000000000006136803082614a36565b906136c360018060a01b03821696604051906323b872dd60e01b60208301523360248301523060448301526064820152606481526136bd81612b86565b87614218565b6136d6826136d13084614a36565b612f7f565b957f00000000000000000000000000000000000000000000000000000000000000006002811015613c52579060018b9214613bcb575b5050505061ffff8116600052600080516020615a8183398151915260205260ff600160406000200154168015611d295761374f6137476149cd565b91828761591a565b906001600160401b038260081c1661376c60ff84169283836158bf565b808803613ba4575061378e61379391613786611b456149cd565b9384916158bf565b615369565b98600080516020615b8183398151915254966001600160401b0380891614613b905767ffffffffffffffff1988166001600160401b03898116600101811691909117600080516020615b81833981519152557f00000000000000000000000000000000000000000000000000000000000000001615613b8a576138146151f2565b50613820612a90614d85565b61383d8c610100600160481b0360ff87169160081b161782615853565b6001600160401b03808d610100600160481b0360ff88169160081b161760081c169160081c16105b613b64578180613b5c575b6138b957505082612d0c9899610100600160481b0360ff8461389d826138a99716848660081b16176153d1565b169160081b1617615679565b6001600160401b03339516614412565b61ffff95979896919a506001600160481b039392506138d6615211565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a26040519661392388612b1a565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615c0183398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b03198254161781556139be6001600160401b03606087015116826157a0565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613b4857613a1f8354613587565b601f8111613b0d575b50602090601f8311600114613aa157906001600160401b03959683613a96575b50508160011b916000199060031b1c19161790555b7f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613a92346143bb565b1690565b015190503880613a48565b95601f19831684885260208820975b818110613af55750916001600160401b03969791846001959410613adc575b505050811b019055613a5d565b015160001960f88460031b161c19169055388080613acf565b83830151895560019098019760209384019301613ab0565b613b389084835260208320601f850160051c81019160208610613b3e575b601f0160051c01906135c1565b38613a28565b9091508190613b2b565b634e487b7160e01b81526041600452602490fd5b506000613870565b604490613b6f615211565b90604051916326fb55dd60e01b835260048301526024820152fd5b81613865565b634e487b7160e01b82526011600452602482fd5b87613bb160449282612f7f565b604051916338f831a560e11b835260048301526024820152fd5b803b156106ae578190602460405180948193630852cd8d60e31b83528c60048401525af18015613c4757613c32575b50613c06903090614a36565b808203613c1457888161370c565b60449250604051916302156a8f60e01b835260048301526024820152fd5b98613c40613c06929a612b07565b9890613bfa565b6040513d8c823e3d90fd5b634e487b7160e01b8b52602160045260248bfd5b60405163717f139360e11b8152600490fd5b604051634e46966960e11b8152600490fd5b604051631f2a200560e01b8152600490fd5b95949392919060008715613c8a578215613c78578315613c66577f0000000000000000000000000000000000000000000000000000000000000000613ce13082614a36565b90613d2460018060a01b0382169a604051906323b872dd60e01b6020830152336024830152306044830152606482015260648152613d1e81612b86565b8b614218565b613d32826136d13084614a36565b997f000000000000000000000000000000000000000000000000000000000000000060028110156141ec57600114614182575b50505061ffff8216600052600080516020615a8183398151915260205260ff600160406000200154168015611d2957613da7613d9f6149cd565b91828b61591a565b916001600160401b038360081c16613dc460ff85169384836158bf565b808c03614175575061378e613de691613dde611b456149cd565b9485916158bf565b99600080516020615b8183398151915254976001600160401b03808a16146141615767ffffffffffffffff1989166001600160401b038a8116600101811691909117600080516020615b81833981519152557f0000000000000000000000000000000000000000000000000000000000000000161561415b57613e676151f2565b508b6001600160401b0380613e7d612a90614d85565b9260081b610100600160481b031660ff881617613e9a8185615853565b60081c169160081c16105b811580614154575b6141495781614141575b50613ee857505082612d0c9899610100600160481b0360ff6138a994169160081b1617613ee3816153d1565b615679565b61ffff95979896919a506001600160481b03939250613f05615211565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a260405196613f5288612b1a565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615c0183398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b0319825416178155613fed6001600160401b03606087015116826157a0565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613b485761404e8354613587565b601f8111614111575b50602090601f83116001146140bf57906001600160401b03959683613a965750508160011b916000199060031b1c19161790557f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613a92346143bb565b95601f19831684885260208820975b8181106140f95750916001600160401b03969791846001959410613adc57505050811b019055613a5d565b838301518955600190980197602093840193016140ce565b61413b9084835260208320601f850160051c81019160208610613b3e57601f0160051c01906135c1565b38614057565b905038613eb7565b604483613b6f615211565b5080613ead565b82613ea5565b634e487b7160e01b83526011600452602483fd5b8b613bb160449282612f7f565b803b156107e55783809160248d6040519485938492630852cd8d60e31b845260048401525af180156141e1576141cc575b506141bf903090614a36565b808203613c145780613d65565b926141da6141bf9294612b07565b92906141b3565b6040513d86823e3d90fd5b634e487b7160e01b85526021600452602485fd5b908160209103126105b1575180151581036105b15790565b604051614276916001600160a01b031661423182612b50565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af16142706142f2565b91614322565b8051908161428357505050565b8280614293938301019101614200565b1561429b5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b3d1561431d573d9061430382612bc2565b916143116040519384612ba1565b82523d6000602084013e565b606090565b919290156143845750815115614336575090565b3b1561433f5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156143975750805190602001fd5b60405162461bcd60e51b815260206004820152908190610611906024830190612ae2565b600080808084335af16143cc6142f2565b50156143d55750565b60249060405190630b288dc560e21b82526004820152fd5b906020828203126105b15781516001600160401b0381116105b157612d0c9201612cca565b959492949391936040518081600080516020615b6183398151915260208154938481520190600052600080516020615ac18339815191529260005b81811061487157505061446292500382612ba1565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed978549181511561485f576144b56000916040519485928392635b10743960e11b8452604060048501526044840190612ae2565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105a557600092614842575b506144ef818388612e24565b95863410614823576145018734612f7f565b80614814575b506040519061451582612b6b565b6001600160481b0386811683527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166020840190815260408085018d815261ffff8d81166060880190815292516315cfa3cb60e11b81529651909416600487015291516024860152905160448501525116606483015260008260848173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105a557614614926000928d9284926147f8575b506001600160401b03604051936145dd85612b35565b16835260018060a01b031660208301526040820152604051809381926311692f3760e31b83526020600484015260248301906130d8565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105a5576000916147d5575b5061ffff8816600052600080516020615a818339815191526020526040600020549383519385156147b95760005b8581106146dd5750505050505050927fe54e51e42099622516fa3b48e9733581c9dbdcb771cafb093f745a0532a35982949261ffff926146ae60c0966104416149cd565b906040519586526020860152604085015260608401521660808201526001600160401b03841660a0820152a190565b6001600160a01b036146ef8284612df0565b5116906146fc8187612df0565b5182600052600080516020615be183398151915260205261472860ff60406000205460101c1686612df0565b51833b156105b15761476e9361ffff8f936000948f8e906147808d6040519b8c998a988997634b5b050560e01b895216600488015260a0602488015260a4870190612e04565b85810360031901604487015290612ae2565b916064840152608483015203925af19182156105a5576147a5926147aa575b50612de1565b61466a565b6147b390612b07565b3861479f565b604051630ebc95af60e21b815261ffff8b166004820152602490fd5b6147f291503d806000833e6147ea8183612ba1565b8101906143ed565b3861463c565b61480d9192503d8086833e6147ea8183612ba1565b90386145c7565b61481d906143bb565b38614507565b6040516306a91e3760e51b815260048101889052346024820152604490fd5b6148589192503d806000833e6115e08183612ba1565b90386144e3565b6040516334e7b19560e11b8152600490fd5b84546001600160a01b031683526001948501948694506020909301920161444d565b92916148a1906104416149cd565b906000937f504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a918580a27f0000000000000000000000000000000000000000000000000000000000000000936002851015611e2f5784614936575060405163a9059cbb60e01b60208201526001600160a01b03909116602482015260448101919091529091506132d1906104de81606481016104d0565b9193600181036105b657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b15611619576040516340c10f1960e01b81526001600160a01b03919091166004820152602481019490945291929181908390604490829084905af19081156149c157506149b85750565b6132d190612b07565b604051903d90823e3d90fd5b600080604051602081019063313ce56760e01b8252600481526149ef81612b50565b51907f00000000000000000000000000000000000000000000000000000000000000005afa50614a1d6142f2565b6020818051810103126105b1576020612d0c9101612cbc565b6040516370a0823160e01b602082019081526001600160a01b039093166024808301919091528152600092839291614a6d81612b35565b51915afa50614a7a6142f2565b6020818051810103126105b1576020015190565b60ff1660ff81146117465760010190565b15614aa657565b634e487b7160e01b600052600160045260246000fd5b600080516020615ba18339815191525460ff8160081c16614aed600080516020615b61833981519152548214614a9f565b60005b818110614b7b575060005b818110614b14575050604060ff6132d192161115614a9f565b60018101808211611746575b828110614b365750614b3190612de1565b614afb565b614b7690614b71614b468461302f565b905490614b528461302f565b92909160018060a01b03809354600395861b1c16931b1c161415614a9f565b612de1565b614b20565b80614b71614b8b614ba29361302f565b905460039190911b1c6001600160a01b0316614ba7565b614af0565b6001600160a01b039081166000818152600080516020615be18339815191526020526040908190209051929190614bdd84612b35565b5460ff91614c19838316158015938488526020880197604087808460081c16159384158c5260101c1691019581875292614cd4575b5050614a9f565b600080516020615b4183398151915254946001600160401b0360019687868651161b1616151590511515916000968791600080516020615ba18339815191525497878960081c16935b848110614c96575b5050505050816132d196614c84869594614c8c9414614a9f565b151514614a9f565b5116911611614a9f565b8282614ca18361302f565b90549060031b1c1614614cbc57614cb790612de1565b614c62565b50919850849250839150614c849050826132d1614c6a565b90915081614ce5575b503880614c12565b90501538614cdd565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614614d2057565b604051633c64f99360e21b8152600490fd5b600080516020615c4183398151915254336001600160a01b039182161415919082614d78575b5050614d6057565b60405163e2a08e5d60e01b8152336004820152602490fd5b1633141590503880614d58565b60405190614d9282612b35565b8160406001600160401b03600080516020615c61833981519152546001600160481b0380821685528160481c16602085015260901c16910152565b90604051614dda81612b35565b60406001600160401b038294546001600160481b0380821685528160481c16602085015260901c16910152565b90600160481b600160901b0382549160481b1690600160481b600160901b031916179055565b600080516020615c618339815191529081546001600160481b03908181166001600160401b036008918184841c16801580615020575b15614ed1575050855471ffffffffffffffffff0000000000000000001916604886901b600160481b600160901b03161786555050505b825479ffffffffffffffff000000000000000000ffffffffffffffffff19169116174260901b67ffffffffffffffff60901b16179055565b86614edd612a90614d85565b926000614eea8383615831565b15614fb65750614f099291614efe91615853565b8388861c16906157c8565b610100600160481b039290841b831660ff861617614f278184615831565b15614fa8578160ff9282614f3e614f4b9487615853565b871c169084871c166157c8565b9116921b16175b614f5c8482615831565b614f8657600160481b600160901b039060481b1690600160481b600160901b031916178355614e99565b604051631e74e8fb60e31b815290831660048201528383166024820152604490fd5b5050905060ff915016614f52565b9493959290614fc890614fd293615853565b8389841c166157c8565b9260ff881694838087610100600160481b038098871b1617614ff48185615853565b851c1691841c160192831161500c57501b1617614f52565b634e487b7160e01b81526011600452602490fd5b5060ff851615614e63565b919080546001600160481b03808216916001600160401b03926008908483831c168015806151e7575b156150ba57505050508461506c6132d1959685614e07565b835467ffffffffffffffff60901b19919092161679ffffffffffffffff000000000000000000ffffffffffffffffff1990911617429190911660901b67ffffffffffffffff60901b16179055565b8590896150c9612a908a614dcd565b9360006150d68383615831565b156151915750916150ee6150f99260ff979894615853565b838c881c16906157c8565b610100600160481b039490861b85169116176151158184615831565b156151835760ff918161512b6151389386615853565b861c168784871c166157c8565b9116921b16175b6151498682615831565b615161579461515c6132d1959685614e07565b61506c565b604051631e74e8fb60e31b815290821660048201529085166024820152604490fd5b5050905060ff91501661513f565b9496506151ac93506151a291615853565b868a851c166157c8565b9160ff891693868086610100600160481b038097861b16176151ce8185615853565b841c1691831c16019186831161500c57501b161761513f565b5060ff841615615054565b604051906151ff82612b35565b60006040838281528260208201520152565b6152196151f2565b50612d0c612a95612a90614d85565b6152306151f2565b506000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b860205260406000206040519061526a82612b35565b80546001600160481b038116835260481c6001600160401b03166020830152600101546001600160a01b0316604082015290565b81156152a8570490565b634e487b7160e01b600052601260045260246000fd5b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000169182156153525761533f828260ff936040610100600160481b0396015116420381615323602085019889519383875160081c160261529e565b9160081c1601915160081c1680821060001461534b5750615369565b9251169160081b161790565b9050615369565b506020015160ff16610100600160481b0317919050565b6001600160401b039081811161537d571690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608490fd5b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000161561548d5761540a6151f2565b50600160481b600160901b03615421612a90614d85565b610100600160481b0360ff61545c600080516020615c61833981519152968088549761544d8188615853565b60081c16908560081c166157c8565b92169160081b161760481b16906001600160401b0360901b4260901b1690600160481b600160d01b03191617179055565b5050565b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000161561548d576154ca6151f2565b506154d6612a90614d85565b90600160481b600160901b03600080516020615c6183398151915293845493816001600160401b0360901b4260901b16946155118184615853565b60081c16828260081c160182811160001461559d5750610100600160481b0360ff61553b84615369565b92169160081b1617906001600160481b038516906155598284615853565b80856001600160401b0360901b1988161760081c16908360081c161060001461559657505b60481b1691600160481b600160d01b03191617179055565b905061557e565b60ff61553b610100600160481b0392615369565b6001600160401b03807f0000000000000000000000000000000000000000000000000000000000000000161561344457610100600160481b0360ff61566b61ffff6132d1966155fe6151f2565b50169384600052600080516020615bc183398151915280602052615628612a906040600020614dcd565b60009687526020919091526040909520805467ffffffffffffffff60901b191642831660901b67ffffffffffffffff60901b1617815595819061544d8188615853565b92169160081b161790614e07565b6001600160401b03807f000000000000000000000000000000000000000000000000000000000000000016156134445761ffff6132d1936156b86151f2565b5016600090808252600080516020615bc1833981519152806020526156e2612a9060408520614dcd565b91835260205260408220805467ffffffffffffffff60901b191642851660901b67ffffffffffffffff60901b1617815593839061571f8184615853565b60081c16838260081c160183811160001461578c5750610100600160481b0360ff61574985615369565b92169160081b1617918084546001600160481b0381169361576a8587615853565b5060081c16908360081c1610600014615784575090614e07565b905090614e07565b60ff615749610100600160481b0392615369565b9067ffffffffffffffff60481b82549160481b169067ffffffffffffffff60481b1916179055565b6001600160401b03918216908216039190821161174657565b60009182915b6001600160401b03908181168015615829576000190191821161581557169161580f90614a8e565b916157e7565b634e487b7160e01b85526011600452602485fd5b505050915090565b9061583c8183615853565b6001600160401b03809160081c169160081c161190565b60ff9182169116818103615865575050565b604051635ce6db6160e11b815260ff918216600482015291166024820152604490fd5b60ff811660081015612d0c5750600890565b9060ff8091169116039060ff821161174657565b60ff16604d811161174657600a0a90565b919060ff821660ff82168181146159135711156158f2576158e7612d0c93926158ec9261589a565b6158ae565b9061529e565b6158e7906158ff9261589a565b908181029181830414901517156117465790565b5050505090565b61594d61378e60ff92610100600160481b03949561593787615888565b90858116868316101561595857509586916158bf565b92169160081b161790565b90509586916158bf565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561599157565b604051631afcd79f60e31b8152600490fd5b6001600160a01b039081169081156159fe57600080516020615b0183398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b600080516020615b01833981519152546001600160a01b03163303615a3857565b60405163118cdaa760e01b8152336004820152602490fd5b600080516020615c218339815191526002815414615a6e5760029055565b604051633ee5aeb560e01b8152600490fdfeebcc9f646b0f459ff8f387587d536b0af3484cf442e1577400f322334e7d1ef047028352a8b3feae1a85fba43bc13f990568bb1637dce33d3dbfd791a0808b7f6c3cb3f3ae91330f31ba2bc0ff8855fc834fb66dc27e8e0b1a398617dabaa5a668dfeeddfa5e4e9adceec01a3aba274bdcbab3f6ac9956417a4332f2b08abdda9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930064bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022fd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f00758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e1ad78307a8b51804c575f26039dcb87c58925afb3b7c08732f3b21b942aed7a768561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d89efb21dcaedea63b55c44882f329622e13a8d0f5b947b3a372826208a9003da1549bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f852fa0677fef8612c6c15b518c9fa56761e9ed15cfd5c6e5399e5467985ac7ed9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00bfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12497c25289a27ec8c9be54d4a154cf80490d69bda989cdb8328232e08fea9220420a2646970667358221220ff24bb6218d11a60fad2e17b2c54e55dfe3f8155f61d7f10dfd1f2886b23efbc64736f6c63430008130033",R6=c=>typeof c[0]=="string"||Array.isArray(c[0])||"_isInterface"in c[0];let _6=class U1 extends U0.ContractFactory{constructor(...e){if(R6(e))super(...e);else{const[a,i]=e;super(ne,U1.linkBytecode(a),i)}}static linkBytecode(e){let a=y1;return a=a.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),a}getDeployTransaction(e,a,i,o,n,u){return super.getDeployTransaction(e,a,i,o,n,u||{})}deploy(e,a,i,o,n,u){return super.deploy(e,a,i,o,n,u||{})}connect(e){return super.connect(e)}static bytecode=y1;static abi=ne;static createInterface(){return new L0.Interface(ne)}static connect(e,a){return new L0.Contract(e,ne,a)}};const ie=[{type:"constructor",inputs:[{name:"nttManager",type:"address",internalType:"address"},{name:"wormholeCoreBridge",type:"address",internalType:"address"},{name:"wormholeRelayerAddr",type:"address",internalType:"address"},{name:"specialRelayerAddr",type:"address",internalType:"address"},{name:"_consistencyLevel",type:"uint8",internalType:"uint8"},{name:"_gasLimit",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"WORMHOLE_TRANSCEIVER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"consistencyLevel",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"encodeWormholeTransceiverInstruction",inputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],outputs:[{name:"",type:"bytes",internalType:"bytes"}],stateMutability:"pure"},{type:"function",name:"gasLimit",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getNttManagerOwner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getNttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isVAAConsumed",inputs:[{name:"hash",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"nttManager",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"nttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"parseWormholeTransceiverInstruction",inputs:[{name:"encoded",type:"bytes",internalType:"bytes"}],outputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],stateMutability:"pure"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"receiveMessage",inputs:[{name:"encodedMessage",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"receiveWormholeMessages",inputs:[{name:"payload",type:"bytes",internalType:"bytes"},{name:"additionalMessages",type:"bytes[]",internalType:"bytes[]"},{name:"sourceAddress",type:"bytes32",internalType:"bytes32"},{name:"sourceChain",type:"uint16",internalType:"uint16"},{name:"deliveryHash",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"sendMessage",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]},{name:"nttManagerMessage",type:"bytes",internalType:"bytes"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"setIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEvm",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setWormholePeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"specialRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract ISpecialRelayer"}],stateMutability:"view"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferTransceiverOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"wormhole",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormhole"}],stateMutability:"view"},{type:"function",name:"wormholeRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormholeRelayer"}],stateMutability:"view"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"ReceivedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"ReceivedRelayedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"RelayingInfo",inputs:[{name:"relayingType",type:"uint8",indexed:!1,internalType:"uint8"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"deliveryPayment",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"SendTransceiverMessage",inputs:[{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"message",type:"tuple",indexed:!1,internalType:"struct TransceiverStructs.TransceiverMessage",components:[{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"nttManagerPayload",type:"bytes",internalType:"bytes"},{name:"transceiverPayload",type:"bytes",internalType:"bytes"}]}],anonymous:!1},{type:"event",name:"SetIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isEvm",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetWormholePeer",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"CallerNotNttManager",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CallerNotRelayer",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CannotRenounceTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"}]},{type:"error",name:"CannotTransferTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"},{name:"newOwner",type:"address",internalType:"address"}]},{type:"error",name:"InvalidBoolVal",inputs:[{name:"val",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidBoolValue",inputs:[{name:"value",type:"uint256",internalType:"BooleanFlag"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidRelayingConfig",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidVaa",inputs:[{name:"reason",type:"string",internalType:"string"}]},{type:"error",name:"InvalidWormholeChainIdZero",inputs:[]},{type:"error",name:"InvalidWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidWormholePeerZeroAddress",inputs:[]},{type:"error",name:"LengthMismatch",inputs:[{name:"encodedLength",type:"uint256",internalType:"uint256"},{name:"expectedLength",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerAlreadySet",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"TransferAlreadyCompleted",inputs:[{name:"vaaHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"UnexpectedAdditionalMessages",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"deployer",type:"address",internalType:"address"},{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"UnexpectedRecipientNttManagerAddress",inputs:[{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"expectedRecipientNttManagerAddress",type:"bytes32",internalType:"bytes32"}]}],h1="0x6101c06040818152346200031d5760c082620036f8803803809162000025828562000322565b8339810103126200031d576200003b826200035c565b906020906200004c8285016200035c565b926200005a8286016200035c565b62000068606087016200035c565b9160808701519660ff881688036200031d5760a00151947ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080549060ff82881c166200030c5782906001600160401b03906002600160401b031984831601620002c9575b50505050306080528160a052845190637e062a3560e11b8252808260048160018060a01b038097165afa908115620002be576000916200027f575b50905060c0523360e0528061012096168652806101409216825261016092168252610180924684526101009687526101a094855251946133869687620003728839608051876130f1015260a051878181610dc201528181611503015281816118860152818161200b015281816121ba015281816128960152612a9a015260c051878181610e4d01528181611c490152818161220c015281816126430152612d32015260e05187610cca01525186818161076301528181610f000152818161122a01528181611bb401528181611da701526123510152518581816101fd01528181610bbe01528181610f2b0152818161125601528181611b5c01528181611dd40152818161225c01528181612db801528181612e980152612f3601525184818161079c015281816115ec01528181611a00015281816122ac0152612c7b015251838181610a1e01528181611bf2015281816122fc0152612d6f015251826102410152518181816106a1015281816119cb0152612c500152f35b82813d8311620002b6575b62000296818362000322565b81010312620002b35750620002ab906200035c565b803862000107565b80fd5b503d6200028a565b86513d6000823e3d90fd5b6001600160401b0319909316811790925586519182527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291a138818180620000cc565b865163f92ee8a960e01b8152600490fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200034657604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200031d5756fe6080604081815260048036101561001557600080fd5b600092833560e01c908163036de8af14612561575080630900f0101461203a5780630b4a1e891461139157806324fb21db14611ff6578063320d0d8e14611fb357806348b330d614611f6d5780634b5b0505146117f55780634b795b2114611754578063529dca321461154a57806358f709ba146114db578063657b3b2f1461143a57806366152efc146113d9578063689f90c314611396578063694977d7146113915780637ab564031461113157806380eb3239146110f55780638129fc1c14610c3657806381e8ec7f14610bed57806384acd1bb14610ba95780638da5cb5b14610b735780638fd3ab8014610a4d57806390ea542814610a09578063935dec07146109c757806396dddc63146109125780639fd0506d146108ca578063b187bd2614610889578063b5634c731461083c578063bc7f6d37146107f9578063d8d28418146107cb578063da25b72514610787578063e8dfd50814610749578063f2fde38b14610714578063f48066a8146106c8578063f68016b7146106895763f953cec7146101a457600080fd5b346106855760209081600319360112610681578035906001600160401b038581841161067e576101da6101f99436908501612754565b86518095819263607ec5ef60e11b83528887840152602483019061283d565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156106745786938790889261046f575b501561044c57507f000000000000000000000000000000000000000000000000000000000000000046810361043057506060830161ffff918282511660005260008051602061327183398151915286528660002054608086019081518091036103ff575061014086016102c7815160005260008051602061329183398151915260205260ff6040600020541690565b6103e657927ff6fc529540981400dc64edf649eb5e2e0eb5812a27f8c81bac2c1d317e71a5f0608060e0948b8a8e9996896103286103799d9b516000526000805160206132918339815191526020526040600020600160ff19825416179055565b519360a08989511692519301511692519384528d8401528d8301526060820152a15116940151906103576128f9565b5061036061291f565b508651630453806b60e11b815293849283928301612a78565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156103dc576103b39450859186946103b6575b50815191015191612a97565b80f35b9093506103d591503d8087833e6103cd8183612718565b8101906129fa565b92386103a7565b84513d87823e3d90fd5b518851632d30ec0360e21b815280870191909152602490fd5b83518951633cd8e72b60e11b815290861661ffff1687820190815260208101929092529081900360400190fd5b0390fd5b826044918751916377d879fb60e01b8352820152466024820152fd5b8551634771719b60e11b815280840186905290819061042c90602483019061283d565b945050503d8087853e6104828185612718565b830160609081858203126106705784518381116105f45785016101609283828403126105f85788519384018481108682111761065b5789526104c382613009565b84526104d0888301613017565b888501526104df898301613017565b898501528082015161ffff8116810361065757818501526080808301518186015261050c60a08401612fa1565b60a086015261051d60c08401613009565b60c086015260e0830151868111610653578461053a918501612977565b60e086015261010061054d818501613017565b90860152610120908184015187811161064f57840185601f8201121561064f5780518c9461058661057d83612803565b96519687612718565b8186528c8087019260071b8401019288841161064b578d01915b8383106105fc57505050505084015261014080910151908301526105c5868601613028565b9487810151908482116105f857019080601f830112156105f45781516105ec928801612940565b909338610238565b8880fd5b8980fd5b84838a031261064b578d8f918287935190610616826126e2565b86518252838701518483015261062d818801613009565b9082015261063c858701613009565b858201528152019201916105a0565b8f80fd5b8c80fd5b8b80fd5b8a80fd5b604187634e487b7160e01b6000525260246000fd5b8780fd5b85513d88823e3d90fd5b80fd5b8380fd5b8280fd5b5050346106c457816003193601126106c457602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5080fd5b5050346106c45760203660031901126106c45760209061ffff6106e9612672565b166000526000805160206132b1833981519152825261070b81600020546130ad565b90519015158152f35b8382346106c45760203660031901126106c457356001600160a01b03811681036106c4576103b3906107446131c1565b613190565b5050346106c457816003193601126106c4576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106c457816003193601126106c4576020906107e8612881565b90516001600160a01b039091168152f35b5050346106c45760203660031901126106c45760209061ffff61081a612672565b16600052600080516020613251833981519152825261070b81600020546130ad565b5034610685578160031936011261068557610855612672565b92602435906001600160401b03821161067e57509261087c6108829260209536910161279b565b90612bda565b9051908152f35b5050346106c457816003193601126106c45760209060027f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b825802254149051908152f35b5050346106c457816003193601126106c4577fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12495490516001600160a01b039091168152602090f35b508290346106c457826003193601126106c45761092d612672565b6109356127f4565b9161093e6131c1565b61ffff82169081156109b957507f4add57d97a7bf5035340ea1212aeeb3d4d3887eb1faf3821a8224c3a6956a10c93946109b39161097b856130df565b906000526000805160206132b18339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b0390a180f35b8551630f7662c960e21b8152fd5b5050346106c45760203660031901126106c45760209061ffff6109e8612672565b16600052600080516020613271833981519152825280600020549051908152f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b509034610685578260031936011261068557610a676130ee565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b038082166001810190828211610b605760ff84871c16908115610b53575b50610b4357169360ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e541615610b35575068ffffffffffffffffff19168317680100000000000000001768ff000000000000000019169055519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a180f35b8351632866815360e11b8152fd5b845163f92ee8a960e01b81528690fd5b9050828216111538610aaf565b634e487b7160e01b885260118752602488fd5b5050346106c457816003193601126106c4576000805160206132f18339815191525490516001600160a01b039091168152602090f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106c457816003193601126106c4578051610c3291610c0e826126fd565b60058252640302e312e360dc1b60208301525191829160208352602083019061283d565b0390f35b5034610685578260031936011261068557610c4f6130ee565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009182549160ff83831c1615906001600160401b0393848116801590816110ed575b60011490816110e3575b1590816110da575b506110cb5767ffffffffffffffff1981166001178655826110ac575b506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116338190036110905750610cfc61314f565b610d0461314f565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055610db0610d33612881565b610d3b61314f565b610d4361314f565b610d4b61314f565b60017f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022557fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad124980546001600160a01b03191633179055610da861314f565b61074461314f565b8351634b4fd03b60e01b8152602095907f0000000000000000000000000000000000000000000000000000000000000000831687828681845afa918215611086578a9261104f575b508651631dcbf42b60e11b81529188838781855afa928315611045578b9361100e575b5087519360a085019081118582101761065b578852639c23bd3b60e01b845288840191825260ff9081168489019081527f00000000000000000000000000000000000000000000000000000000000000008616606086019081529382166080860190815289516301529f6160e21b815295516001600160e01b031916888701529251602486015251811660448501529151606484015251166084820152878160a48173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156110045791610f27939187938a91610fe2575b508987518096819582946358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fb5565b03927f0000000000000000000000000000000000000000000000000000000000000000165af18015610fd857610fa0575b50610f61578380f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29268ff00000000000000001981541690555160018152a13880808380f35b8381813d8311610fd1575b610fb58183612718565b81010312610fcd57610fc690612fa1565b5038610f58565b8580fd5b503d610fab565b83513d88823e3d90fd5b610ffe91503d808c833e610ff68183612718565b810190613035565b38610eea565b85513d8a823e3d90fd5b9092508881813d831161103e575b6110268183612718565b810103126106575761103790613009565b9138610e1b565b503d61101c565b88513d8d823e3d90fd5b9091508781813d831161107f575b6110678183612718565b810103126105f85761107890613009565b9038610df8565b503d61105d565b87513d8c823e3d90fd5b82604491865191636345072160e11b8352820152336024820152fd5b68ffffffffffffffffff19166801000000000000000117855538610cbf565b50825163f92ee8a960e01b8152fd5b90501538610ca3565b303b159150610c9b565b849150610c91565b50913461067e57602036600319011261067e575061070b6020923560005260008051602061329183398151915260205260ff6040600020541690565b503461068557816003193601126106855761114a612672565b602435916111566131c1565b61ffff80831690811561138157841561137157816000526000805160206132718339815191529160209280845287600020548061134857508160005283528587600020558651916111a6836126c7565b630c7e33e160e11b8352838301918252878301878152885163077650fb60e51b815293516001600160e01b031916868501529151166024830152516044820152868160648173__$93083e246e55d56d98f3df2872cd16bfd0$__5af492831561133e576112519383928991611324575b5087516358cd21bf60e11b815294859283927f0000000000000000000000000000000000000000000000000000000000000000918401612fb5565b0381897f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610674576112c8575b5050915161ffff909216825260208201527fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d3264669080604081016109b3565b81813d831161131d575b6112dc8183612718565b81010312611319577fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d326466936113126109b392612fa1565b509361128b565b8480fd5b503d6112d2565b61133891503d808b833e610ff68183612718565b38611216565b86513d89823e3d90fd5b885163b55eeae960e01b815261ffff881681880190815260208101929092529081906040010390fd5b855163137063ef60e11b81528390fd5b8551630f7662c960e21b81528390fd5b61262d565b5050346106c457816003193601126106c45760209060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb541690519015158152f35b50913461067e57602036600319011261067e57508051916113f9836126ac565b35908115159182810361143557610c32935280519160f81b602083015260018252611423826126fd565b5191829160208352602083019061283d565b600080fd5b508290346106c457826003193601126106c457611455612672565b61145d6127f4565b916114666131c1565b61ffff82169081156109b957507f528b18a533e892b5401d1fb63597275df9d2bb45b13e7695c3147cd07b9746c393946109b3916114a3856130df565b906000526000805160206132d18339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b5034610685576020366003190112610685578035916001600160a01b038084168403611319577f000000000000000000000000000000000000000000000000000000000000000016330361153357836103b3846131fa565b60249250519063c5aa615360e01b82523390820152fd5b5060a0366003190112610685576001600160401b038135818111611319576115759036908401612754565b602492833593838511611750573660238601121561175057848201359361159b85612803565b946115a888519687612718565b808652602096838888019260051b8201019236841161065757848201925b84841061172a5750505050506044356064359461ffff86169081870361143557608435937f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361171757826000526000805160206132718339815191528952838a60002054036116f057848b52600080516020613291833981519152895260ff8a8c2054166116dc5750611685846000526000805160206132918339815191526020526040600020600160ff19825416179055565b516116cc57606061037995938a95937ff557dbbb087662f52c815f6c7ee350628a37a51eae9608ff840d996b65f87475938b519283528a8301528a820152a16103576128f9565b875163c504ea2960e01b81528490fd5b8951632d30ec0360e21b8152808701869052fd5b8951633cd8e72b60e11b815261ffff89168188019081526020810186905281906040010390fd5b8951631c26958960e01b81523381880152fd5b833582811161064f578a916117458392893691880101612754565b8152019301926115c6565b8680fd5b508290346106c457826003193601126106c45761176f612672565b6117776127f4565b916117806131c1565b61ffff82169081156109b957507f0fe301480713b2c2072ee91b3bcfcbf2c0014f0447c89046f020f0f80727003c93946109b3916117bd856130df565b906000526000805160206132518339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b509060031960a0368201126106815761180c612672565b9060249283356001600160401b03908181116106705761182f903690880161279b565b906044358181116105f4576118479036908901612754565b90608435977f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00976002895414611f5e57600289556001600160a01b03937f000000000000000000000000000000000000000000000000000000000000000085163303611f4857908b61190181936119108a519b6118c38d6126ac565b848d528b516304616c8f60e21b81526309945ff160e41b89820152338782015260648035604483015260a0908201529c8d94859460a486019061283d565b9184830301608485015261283d565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af4938415611f3e5782988395611eec575b50611948602080980151612b5f565b80511580611edd575b15611b34575050928a928592838989976119c361ffff8f16968792836000526000805160206132718339815191528c526119976119918660002054612fdd565b9b612fdd565b94519c8d9b8c9a8b9a6312d729bd60e21b8c528b0152169088015260e0604488015260e487019061283d565b9360648601527f0000000000000000000000000000000000000000000000000000000000000000608486015260a48501521660c4830152039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611b2a57611ab9575b5061ffff926060611a9e84611ab2946000805160206133318339815191528460019c6000805160206133118339815191529b99519060008252848201523485820152a15b815197889716875281818801528451828801528401518387015283015160808087015260c086019061283d565b910151838203603f190160a085015261283d565b0390a15580f35b9391928185813d8311611b23575b611ad18183612718565b81010312610670576060611a9e61ffff95611ab2946000805160206133318339815191528460019c611b116000805160206133118339815191529c612fa1565b509c5050509450949650505092611a2d565b503d611ac7565b83513d8a823e3d90fd5b919394959250959697989a50511580611eb1575b15611d87578651631a90a21960e01b8152937f000000000000000000000000000000000000000000000000000000000000000082169087868681855afa958d8715611d7c57908993929197611d49575b50869291611bdc918b519889809481936358cd21bf60e11b83527f0000000000000000000000000000000000000000000000000000000000000000908c8401612fb5565b03925af1948515611d3f578c95611d08575b50817f00000000000000000000000000000000000000000000000000000000000000001690340390348211611cf45790818d9796959493923b15610670578c96889660849561ffff8d519a8b998a98630b5624e160e11b8a527f0000000000000000000000000000000000000000000000000000000000000000169089015216908601528760448601521660648401525af18015611cea57611cd2575b50600080516020613311833981519152936060611a9e856001999560008051602061333183398151915284611ab29761ffff9a51908e8252848201523485820152a1611a71565b611cde90969296612683565b610fcd57938538611c8b565b84513d84823e3d90fd5b83601186634e487b7160e01b600052526000fd5b9094508681813d8311611d38575b611d208183612718565b8101031261065357611d3190612fa1565b9338611bee565b503d611d16565b88513d8e823e3d90fd5b9196509181813d8111611d75575b611d618183612718565b810103126114355751948791611bdc611b98565b503d611d57565b8a51903d90823e3d90fd5b9050611dce9350849286999799518095819482936358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fb5565b039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611ea757611e49575b5091611ab26001956060611a9e8560008051602061331183398151915297600080516020613331833981519152848d61ffff9a519060028252848201523485820152a1611a71565b9181838195933d8311611ea0575b611e618183612718565b81010312611750576001956060611a9e611ab29360008051602061331183398151915297611e9161ffff98612fa1565b50959750955050509550611e01565b503d611e57565b83513d89823e3d90fd5b5061ffff8a166000526000805160206132518339815191528652611ed887600020546130ad565b611b48565b50611ee78b61305a565b611951565b985093503d80838a3e611eff818a612718565b88019787818a03126106855780518581116106815789611f20918301612991565b98602082015186811161131957611f379201612977565b9338611939565b87513d84823e3d90fd5b509085519063c5aa615360e01b82523390820152fd5b508451633ee5aeb560e01b8152fd5b50913461067e57602036600319011261067e578235906001600160401b03821161067e5750611fa4602093611fa992369101612754565b612b5f565b9051905115158152f35b5050346106c45760203660031901126106c45760209061ffff611fd4612672565b166000526000805160206132d1833981519152825261070b81600020546130ad565b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5090346106855760209182600319360112610681576001600160a01b03918135838116908181036117505761206d6131c1565b6120756130ee565b3b15612508577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8680a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e9384549361210260ff861615613132565b60ff199485166001178655303b1561175057825163011fa75760e71b81528781868183305af180156123fc576124f5575b50825163689f90c360e01b815282818681305afa9081156123fc5788916124c0575b501561218f575b505050507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b82516324fb21db60e01b815282818681305afa9081156123fc57906121e19189916124a3575b5082167f0000000000000000000000000000000000000000000000000000000000000000831614613132565b8251630b4a1e8960e01b815282818681305afa9081156123fc5790612233918991612476575b5082167f0000000000000000000000000000000000000000000000000000000000000000831614613132565b82516384acd1bb60e01b815282818681305afa80156123fc57889061243e575b612283915082167f0000000000000000000000000000000000000000000000000000000000000000831614613132565b825163da25b72560e01b815282818681305afa80156123fc578890612406575b6122d3915082167f0000000000000000000000000000000000000000000000000000000000000000831614613132565b825163121d4a8560e31b815282818681305afa9081156123fc5788916123c2575b5081612324927f000000000000000000000000000000000000000000000000000000000000000016911614613132565b8082518094631d1bfaa160e31b825281305afa9182156123b957508591612382575b50612379915060ff807f000000000000000000000000000000000000000000000000000000000000000016911614613132565b3880808061215c565b905081813d83116123b2575b6123988183612718565b81010312610681576123ac61237991613009565b38612346565b503d61238e565b513d87823e3d90fd5b90508281813d83116123f5575b6123d98183612718565b81010312610670575190808216820361067057906123246122f4565b503d6123cf565b84513d8a823e3d90fd5b508281813d8311612437575b61241c8183612718565b8101031261067057518181168103610670576122d3906122a3565b503d612412565b508281813d831161246f575b6124548183612718565b81010312610670575181811681036106705761228390612253565b503d61244a565b6124969150843d861161249c575b61248e8183612718565b810190612862565b38612207565b503d612484565b6124ba9150843d861161249c5761248e8183612718565b386121b5565b90508281813d83116124ee575b6124d78183612718565b81010312610670576124e890613028565b38612155565b503d6124cd565b61250190979197612683565b9538612133565b815162461bcd60e51b8152808401869052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b828591346106855760203660031901126106855781356001600160a01b03818116939184900361131957806000805160206132f18339815191525416927fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad124992835492831694338614159081612622575b5061260d5750506001600160a01b031916831790557f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b63e2a08e5d60e01b8252339082015260249150fd5b9050331415886125d1565b34611435576000366003190112611435576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6004359061ffff8216820361143557565b6001600160401b03811161269657604052565b634e487b7160e01b600052604160045260246000fd5b602081019081106001600160401b0382111761269657604052565b606081019081106001600160401b0382111761269657604052565b608081019081106001600160401b0382111761269657604052565b604081019081106001600160401b0382111761269657604052565b90601f801991011681019081106001600160401b0382111761269657604052565b6001600160401b03811161269657601f01601f191660200190565b81601f820112156114355780359061276b82612739565b926127796040519485612718565b8284526020838301011161143557816000926020809301838601378301015290565b9190916040818403126114355760408051916001600160401b0391830182811184821017612696576040528294813560ff811681036114355784526020820135928311611435576020926127ef9201612754565b910152565b60243590811515820361143557565b6001600160401b0381116126965760051b60200190565b60005b83811061282d5750506000910152565b818101518382015260200161281d565b906020916128568151809281855285808601910161281a565b601f01601f1916010190565b9081602091031261143557516001600160a01b03811681036114355790565b604051638da5cb5b60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156128ed576000916128d2575090565b6128ea915060203d811161249c5761248e8183612718565b90565b6040513d6000823e3d90fd5b60405190612906826126e2565b6060808360008152600060208201528160408201520152565b6040519061292c826126c7565b606060408360008152600060208201520152565b9092919261294d81612739565b9161295b6040519384612718565b82948284528282011161143557602061297593019061281a565b565b9080601f830112156114355781516128ea92602001612940565b919060808382031261143557604051906129aa826126e2565b819380518352602081015160208401526040810151916001600160401b039283811161143557816129dc918401612977565b60408501526060820151928311611435576060926127ef9201612977565b9190604083820312611435578251906001600160401b03918281116114355781612a25918601612991565b936020810151908382116114355701906060828203126114355760405192612a4c846126c7565b8251845260208301516020850152604083015190811161143557612a709201612977565b604082015290565b6309945ff160e41b81526040602082018190526128ea9291019061283d565b917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690818103612b415750803b156114355761ffff60008094612b27604080519889978896879563275e091560e21b875216600486015260248501526060604485015280516064850152602081015160848501520151606060a484015260c483019061283d565b03925af180156128ed57612b385750565b61297590612683565b60449250604051916339dee99160e11b835260048301526024820152fd5b9060405191612b6d836126ac565b6000835282815115612bd55750600181015160fe8116612bb95760ff16151583525160018103612b9a5750565b604490604051906355c5b3e360e11b8252600482015260016024820152fd5b60405163f7a37b0760e01b815260ff9091166004820152602490fd5b925050565b90612be9602080920151612b5f565b51612f205761ffff8216906000908282526000805160206132d18339815191528152604093612c1a858420546130ad565b80612ef9575b612ee157612c2d9061305a565b15612cf45750825163c23ee3c360e01b81526004810192909252602482018190527f0000000000000000000000000000000000000000000000000000000000000000604483015282826064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa928315612cea578193612cb9575b50505090565b9091809350813d8311612ce3575b612cd18183612718565b8101031261067e575051388080612cb3565b503d612cc7565b51903d90823e3d90fd5b8282939492526000805160206132518339815191528152612d17828420546130ad565b15612e7f57815163209d173960e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820195909552604481018490529381856064817f000000000000000000000000000000000000000000000000000000000000000085165afa948515612e72578495612e43575b509080600492845193848092631a90a21960e01b82527f0000000000000000000000000000000000000000000000000000000000000000165afa928315612e3a57508392612e0c575b50508201809211612df8575090565b634e487b7160e01b81526011600452602490fd5b90809250813d8311612e33575b612e238183612718565b810103126106c457513880612de9565b503d612e19565b513d85823e3d90fd5b9094508181813d8311612e6b575b612e5b8183612718565b8101031261068157519381612da0565b503d612e51565b50505051903d90823e3d90fd5b8151631a90a21960e01b815291935090919080836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa938415612ed657508193612cb95750505090565b51913d9150823e3d90fd5b845163251268db60e21b815260048101859052602490fd5b508383526000805160206132b18339815191528252612f1a858420546130ad565b15612c20565b604051631a90a21960e01b8152915080826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156128ed57600091612f75575b50905090565b82813d8311612f9a575b612f898183612718565b8101031261067e5750518038612f6f565b503d612f7f565b51906001600160401b038216820361143557565b9060ff612fd66040929594956000855260606020860152606085019061283d565b9416910152565b8060a01c612ff1576001600160a01b031690565b6024906040519063033b960d60e41b82526004820152fd5b519060ff8216820361143557565b519063ffffffff8216820361143557565b5190811515820361143557565b906020828203126114355781516001600160401b038111611435576128ea9201612977565b61ffff16806000526000805160206132d18339815191526020526130826040600020546130ad565b908161308c575090565b90506000526000805160206132b18339815191526020526128ea6040600020545b80156130d957600181146130d3576024906040519063b998bad560e01b82526004820152fd5b50600190565b50600090565b156130e957600190565b600090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461312057565b604051633c64f99360e21b8152600490fd5b1561313957565b634e487b7160e01b600052600160045260246000fd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561317e57565b604051631afcd79f60e31b8152600490fd5b6001600160a01b038116156131a857612975906131fa565b604051631e4fbdf760e01b815260006004820152602490fd5b6000805160206132f1833981519152546001600160a01b031633036131e257565b60405163118cdaa760e01b8152336004820152602490fd5b6000805160206132f183398151915280546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a356fed4cbc7742a1e11dcc33209ac33862ef146cfcb6d7f860df12df42105dfedb1c948c66ef0992b4bcc14f2551075db9459fc23bf706abb76034f1c66c1ba2846845e6aacb3f16e5b01c8b072a0ab4c38e919266014a45db863ee64a4580fb3e7e2e79d2e5e46f62be2ac831294e423b664f30320fb9ebaefd78a978cafe07c0f8c16ee6ac6bf7a8d7c37112a9426e00852b215ac4f5c50536beb6c95f1ba47b4af9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930079376a0dc6cbfe6f6f8f89ad24c262a8c6233f8df181d3fe5abb2e2442e8c738c3192e083c87c556db539f071d8a298869f487e951327b5616a6f85ae3da958ea264697066735822122034563781985a1b9124e36fffc44a6c32ed3932670b1c579b553016e6928c9abb64736f6c63430008130033",E6=c=>typeof c[0]=="string"||Array.isArray(c[0])||"_isInterface"in c[0];let N6=class F1 extends U0.ContractFactory{constructor(...e){if(E6(e))super(...e);else{const[a,i]=e;super(ie,F1.linkBytecode(a),i)}}static linkBytecode(e){let a=h1;return a=a.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),a}getDeployTransaction(e,a,i,o,n,u,g){return super.getDeployTransaction(e,a,i,o,n,u,g||{})}deploy(e,a,i,o,n,u,g){return super.deploy(e,a,i,o,n,u,g||{})}connect(e){return super.connect(e)}static bytecode=h1;static abi=ie;static createInterface(){return new L0.Interface(ie)}static connect(e,a){return new L0.Contract(e,ie,a)}};const se=[{type:"constructor",inputs:[{name:"_token",type:"address",internalType:"address"},{name:"_mode",type:"uint8",internalType:"enum IManagerBase.Mode"},{name:"_chainId",type:"uint16",internalType:"uint16"},{name:"_rateLimitDuration",type:"uint64",internalType:"uint64"},{name:"_skipRateLimiting",type:"bool",internalType:"bool"}],stateMutability:"nonpayable"},{type:"function",name:"NTT_MANAGER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"attestationReceived",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"cancelOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"chainId",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"completeInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"completeOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"executeMsg",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"message",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"getCurrentInboundCapacity",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getCurrentOutboundCapacity",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getInboundLimitParams",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"view"},{type:"function",name:"getInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.InboundQueuedTransfer",components:[{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipient",type:"address",internalType:"address"}]}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getMode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getOutboundLimitParams",inputs:[],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"pure"},{type:"function",name:"getOutboundQueuedTransfer",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.OutboundQueuedTransfer",components:[{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"sender",type:"address",internalType:"address"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}]}],stateMutability:"view"},{type:"function",name:"getPeer",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct INttManager.NttManagerPeer",components:[{name:"peerAddress",type:"bytes32",internalType:"bytes32"},{name:"tokenDecimals",type:"uint8",internalType:"uint8"}]}],stateMutability:"view"},{type:"function",name:"getThreshold",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getTransceiverInfo",inputs:[],outputs:[{name:"",type:"tuple[]",internalType:"struct TransceiverRegistry.TransceiverInfo[]",components:[{name:"registered",type:"bool",internalType:"bool"},{name:"enabled",type:"bool",internalType:"bool"},{name:"index",type:"uint8",internalType:"uint8"}]}],stateMutability:"view"},{type:"function",name:"getTransceivers",inputs:[],outputs:[{name:"result",type:"address[]",internalType:"address[]"}],stateMutability:"pure"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"payable"},{type:"function",name:"isMessageApproved",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isMessageExecuted",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"messageAttestations",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"count",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"mode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"enum IManagerBase.Mode"}],stateMutability:"view"},{type:"function",name:"nextMessageSequence",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"pause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"},{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"rateLimitDuration",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"removeTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setInboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"},{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setOutboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"},{name:"decimals",type:"uint8",internalType:"uint8"},{name:"inboundLimit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setThreshold",inputs:[{name:"threshold",type:"uint8",internalType:"uint8"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"token",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"tokenDecimals",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"transceiverAttestedToMessage",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"index",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"shouldQueue",type:"bool",internalType:"bool"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"unpause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"InboundTransferQueued",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"MessageAlreadyExecuted",inputs:[{name:"sourceNttManager",type:"bytes32",indexed:!0,internalType:"bytes32"},{name:"msgHash",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"MessageAttestedTo",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"index",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OutboundTransferCancelled",inputs:[{name:"sequence",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipient",type:"address",indexed:!1,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OutboundTransferQueued",inputs:[{name:"queueSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"OutboundTransferRateLimited",inputs:[{name:"sender",type:"address",indexed:!0,internalType:"address"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"currentCapacity",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"PeerUpdated",inputs:[{name:"chainId_",type:"uint16",indexed:!0,internalType:"uint16"},{name:"oldPeerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"oldPeerDecimals",type:"uint8",indexed:!1,internalType:"uint8"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"peerDecimals",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"ThresholdChanged",inputs:[{name:"oldThreshold",type:"uint8",indexed:!1,internalType:"uint8"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverAdded",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"transceiversNum",type:"uint256",indexed:!1,internalType:"uint256"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverRemoved",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransferRedeemed",inputs:[{name:"digest",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"TransferSent",inputs:[{name:"recipient",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"fee",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"msgSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"BurnAmountDifferentThanBalanceDiff",inputs:[{name:"burnAmount",type:"uint256",internalType:"uint256"},{name:"balanceDiff",type:"uint256",internalType:"uint256"}]},{type:"error",name:"CallerNotTransceiver",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CancellerNotSender",inputs:[{name:"canceller",type:"address",internalType:"address"},{name:"sender",type:"address",internalType:"address"}]},{type:"error",name:"CapacityCannotExceedLimit",inputs:[{name:"newCurrentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"newLimit",type:"uint72",internalType:"TrimmedAmount"}]},{type:"error",name:"DeliveryPaymentTooLow",inputs:[{name:"requiredPayment",type:"uint256",internalType:"uint256"},{name:"providedPayment",type:"uint256",internalType:"uint256"}]},{type:"error",name:"DisabledTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"InboundQueuedTransferNotFound",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InboundQueuedTransferStillQueued",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidMode",inputs:[{name:"mode",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidPeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidPeerChainIdZero",inputs:[]},{type:"error",name:"InvalidPeerDecimals",inputs:[]},{type:"error",name:"InvalidPeerSameChainId",inputs:[]},{type:"error",name:"InvalidPeerZeroAddress",inputs:[]},{type:"error",name:"InvalidRecipient",inputs:[]},{type:"error",name:"InvalidRefundAddress",inputs:[]},{type:"error",name:"InvalidTargetChain",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"thisChain",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidTransceiverZeroAddress",inputs:[]},{type:"error",name:"MessageNotApproved",inputs:[{name:"msgHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NoEnabledTransceivers",inputs:[]},{type:"error",name:"NonRegisteredTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotEnoughCapacity",inputs:[{name:"currentCapacity",type:"uint256",internalType:"uint256"},{name:"amount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"NumberOfDecimalsNotEqual",inputs:[{name:"decimals",type:"uint8",internalType:"uint8"},{name:"decimalsOther",type:"uint8",internalType:"uint8"}]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OutboundQueuedTransferNotFound",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}]},{type:"error",name:"OutboundQueuedTransferStillQueued",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerNotRegistered",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RefundFailed",inputs:[{name:"refundAmount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"RetrievedIncorrectRegisteredTransceivers",inputs:[{name:"retrieved",type:"uint256",internalType:"uint256"},{name:"registered",type:"uint256",internalType:"uint256"}]},{type:"error",name:"StaticcallFailed",inputs:[]},{type:"error",name:"ThresholdTooHigh",inputs:[{name:"threshold",type:"uint256",internalType:"uint256"},{name:"transceivers",type:"uint256",internalType:"uint256"}]},{type:"error",name:"TooManyTransceivers",inputs:[]},{type:"error",name:"TransceiverAlreadyAttestedToMessage",inputs:[{name:"nttManagerMessageHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"TransceiverAlreadyEnabled",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"TransferAmountHasDust",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"dust",type:"uint256",internalType:"uint256"}]},{type:"error",name:"UndefinedRateLimiting",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"expectedOwner",type:"address",internalType:"address"},{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"UnexpectedMsgValue",inputs:[]},{type:"error",name:"ZeroAmount",inputs:[]},{type:"error",name:"ZeroThreshold",inputs:[]}],g1="0x61016034620005cb57601f620065cb38819003918201601f19168301916001600160401b038311848410176200057e5780849260a094604052833981010312620005cb578051906001600160a01b0382168203620005cb576020810151916002831015620005cb5760408201519161ffff83168303620005cb576060810151906001600160401b03821690818303620005cb576080015180159182158203620005cb5715809281620005c2575b508215620005a6575b505062000594576080527f8561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d8954620001147e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e15460ff8360081c1614620005d0565b7ffd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f5460005b60ff8360081c168110620003f157505060005b60ff8260081c1681106200035d5750604060ff6200016d92161115620005d0565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c166200034b576002600160401b03196001600160401b03821601620002ff575b50503060a05260c0526101009182526101209081526101404681523360e05260405191615f7d93846200064e85396080518481816114d401528181611b1401528181611fb1015281816129fc01528181613447015281816139cf0152818161404b015281816155690152818161567c0152818161573c0152818161585b0152615923015260a05184614faf015260c0518481816102900152818161051401528181610561015281816128e80152818161383f01528181613ec90152818161478701528181614bc60152614c76015260e05184611c590152518381816104ab0152818161202a0152818161217001528181612936015281816138c101528181613f460152614b4e01525182818161137c01528181611e500152818161299f01526133d101525181818161044901528181613abb01528181614113015281816146580152614b000152f35b6001600160401b0319166001600160401b039081179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880620001b6565b60405163f92ee8a960e01b8152600490fd5b60018101808211620003db575b60ff8360081c1681106200038a57506200038490620005ee565b6200014c565b620003d590620003cf6200039e84620005fe565b9054620003ab84620005fe565b9054600391821b1c6001600160a01b039081169390911b9190911c161415620005d0565b620005ee565b6200036a565b634e487b7160e01b600052601160045260246000fd5b620003fc81620005fe565b9054600382901b81901c6001600160a01b031660009081527f49bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f602052604090819020905192906001600160401b0360608501908111908511176200057e5760608401604052546200049e60ff821615801592838752602087019360ff808360081c1615928315875260101c16908160408a01529262000561575b5050620005d0565b60018060401b03600160ff6040870151161b87161615159051151592600092835b60ff8a60081c1681106200050f575b5050508262000509959492620004ee620003cf95620004f79414620005d0565b151514620005d0565b60ff60408188169201511610620005d0565b62000139565b6200051a81620005fe565b9054600391821b1c6001600160a01b039081169184901b85901c16146200054c576200054690620005ee565b620004bf565b5060019350849150829050620004ee620004ce565b9091508162000574575b50388062000496565b905015386200056b565b634e487b7160e01b600052604160045260246000fd5b60405163e543ef0560e01b8152600490fd5b15915081620005b9575b503880620000b5565b905038620005b0565b925038620000ac565b600080fd5b15620005d857565b634e487b7160e01b600052600160045260246000fd5b6000198114620003db5760010190565b7e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e18054821015620006375760005260206000200190600090565b634e487b7160e01b600052603260045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c80630271725014612c79578063036de8af14612bee5780630677df5414612bcf5780630900f01014612768578063186ce6121461271357806319017175146126dd5780631f97c9a8146124eb578063203e4a9b146121e857806323d75e31146121b4578063295a52121461215a578063396c16b71461211e5780633b97e856146121035780633f4ba83a146120755780634b4fd03b14612017578063689f90c314611fd557806374aa7bfc14611f915780637c91863414611e025780638129fc1c14611bcd5780638413bcba14611ab15780638456cb5914611a3457806386e11ffa14611a0f57806389c619dd146119af5780638da5cb5b146119795780638e3ba8c9146119425780638fd3ab80146118035780639057412d14611686578063961b94d01461162857806397c35146146113a05780639a8a0592146113615780639d782454146111265780639f86029c14610e105780639fd0506d14610dda578063b150fc5514610c2d578063b187bd2614610bff578063b293f97f14610b69578063b4d591bb14610aa8578063c0b07bde14610a62578063c128d170146109e6578063d788c1471461095b578063da4856a114610928578063e5a986031461087c578063e75235b81461084e578063f2fde38b14610709578063f5cfec18146106e6578063f7514fbc146102bf578063fc0c546a1461027a5763fd96063c1461022257600080fd5b346102775760203660031901126102775760606102406004356154c7565b6040805182516001600160481b031681526020808401516001600160401b031690820152918101516001600160a01b031690820152f35b80fd5b50346102775780600319360112610277576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5034610277576020366003190112610277576004356001600160401b03811681036106e2576102ec615d17565b6002600080516020615de883398151915254146106d0576001600160401b038116600052600080516020615ec883398151915260205260406000206040519061033482612d49565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a083015260405190818560048301549261039b8461376f565b80845293600181169081156106ae575060011461066a575b506103c092500382612dd0565b60c08201526001600160401b03606082015116156106495760a08101516001600160a01b031633810361061c5750606061048c60407ff80e572ae1b63e2449629b6c7d783add85c36473926f216077f17ee002bcfd07936001600160401b038616600052600080516020615ec8833981519152602052610442826000206137c0565b015161046d7f0000000000000000000000000000000000000000000000000000000000000000615a67565b610475614c50565b906001600160401b0360ff82169160081c16615b86565b926001600160401b0360405191168152336020820152836040820152a17f000000000000000000000000000000000000000000000000000000000000000060028110156106065780610556575060405163a9059cbb60e01b602082015233602482015260448101919091526105419061051281606481015b03601f198101835282612dd0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316614452565b6001600080516020615ee88339815191525580f35b600181036105ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156105e5576040516340c10f1960e01b815233600482015260248101929092526000908290604490829084905af180156105d9576105ca575b50610541565b6105d390612d36565b386105c4565b6040513d6000823e3d90fd5b600080fd5b6040516366001a8960e01b815260ff9091166004820152602490fd5b634e487b7160e01b600052602160045260246000fd5b60405163ceb40a8560e01b81523360048201526001600160a01b03919091166024820152604490fd5b0390fd5b604051635feafa3160e11b81526001600160401b0383166004820152602490fd5b60040187525060208620909186915b8183106106925750509060206103c092820101386103b3565b6020919350806001915483858801015201910190918392610679565b9050602092506103c094915060ff191682840152151560051b820101386103b3565b6040516309e3d0f360e11b8152600490fd5b5080fd5b503461027757806003193601126102775760206107016154b0565b604051908152f35b5034610277576020366003190112610277576001600160a01b03600435818116908181036108195761074a9061073d615cde565b610745615cde565b615c6a565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed97891825460ff600080516020615e688339815191525416808203610830575050908391825b845481101561082c578460005281817f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd1015416803b1561082857848091602460405180948193632c7b84dd60e11b83528960048401525af190811561081d578591610805575b505061080090613010565b61078f565b61080e90612d36565b6108195783386107f5565b8380fd5b6040513d87823e3d90fd5b8480fd5b8380f35b604492506040519163d2a13a2960e01b835260048301526024820152fd5b5034610277578060031936011261027757602060ff600080516020615d688339815191525416604051908152f35b50346102775760203660031901126102775760043560ff8116908181036105e5576108a5615cde565b8115610916577f2a855b929b9a53c6fb5b5ed248b27e502b709c088e036a5aa17620c8fc5085a99161091060ff92600080516020615d68833981519152805493851985161790556108f461328f565b6040805160ff9490951684168552921660208401528291820190565b0390a180f35b60405163831761d760e01b8152600490fd5b50346102775761093736612e53565b906002600080516020615de883398151915254146106d05761095892613358565b80f35b50346102775760203660031901126102775761ffff610978612ccc565b610980614d5b565b5016600052600080516020615e888339815191526020526109e26109a7604060002061508b565b6040519182918291909160406001600160401b038160608401956001600160481b038082511686526020820151166020860152015116910152565b0390f35b50346102775760203660031901126102775761ffff90610a04612ccc565b906020604051610a1381612d7f565b828152015216600052600080516020615d4883398151915260205260408060002060ff8251610a4181612d7f565b60208260018554958685520154169101908152835192835251166020820152f35b50346102775780600319360112610277576109e2604051610a8281612d7f565b60058152640312e302e360dc1b6020820152604051918291602083526020830190612d11565b50346102775780600319360112610277576040518091600080516020615e2883398151915290815480845260208094019081938352600080516020615d8883398151915290835b818110610b4c5750505084610b05910385612dd0565b60405193838594850191818652518092526040850193925b828110610b2c57505050500390f35b83516001600160a01b031685528695509381019392810192600101610b1d565b82546001600160a01b031684529286019260019283019201610aef565b5060c036600319011261027757610b7e612cdd565b906084359182151583036106e25760a4356001600160401b03928382116102775750610bae903690600401612e0c565b610bb6615d17565b6002600080516020615de883398151915254146106d057602093610be4926064359060443590600435613ead565b6001600080516020615ee88339815191525560405191168152f35b503461027757806003193601126102775760206002600080516020615de88339815191525414604051908152f35b503461027757806003193601126102775760405180600080516020615e2883398151915280548084526020809401918552600080516020615d8883398151915290855b818110610dbd5750505081610c86910382612dd0565b8051610c9181612ed4565b91610c9f6040519384612dd0565b818352601f19610cae83612ed4565b01855b818110610da1575050845b828110610d1d575050506040519180830190808452825180925280604085019301945b828110610cec5784840385f35b85518051151585528083015115158584015260409081015160ff169085015294810194606090930192600101610cdf565b929492610d99906001600160a01b03610d36828561301f565b5116600052600080516020615ea88339815191528652604060002060405190610d5e82612d64565b5460ff9081811615158352818160081c1615158984015260101c166040820152610d88828961301f565b52610d93818861301f565b50613010565b949294610cbc565b8590610dae979597614d5b565b82828a01015201959395610cb1565b82546001600160a01b031684529285019260019283019201610c70565b5034610277578060031936011261027757600080516020615f08833981519152546040516001600160a01b039091168152602090f35b5034610277576020806003193601126106e2576001600160a01b0390600435828116919082810361082857610e43615cde565b82156111145782600052600080516020615ea883398151915280835260ff918260406000205416156110fb57846000528184528260406000205460081c16156110e25784600052818452604060002061ff001990818154169055600080516020615e68833981519152928354858160081c169283156110ce5761ff0060001980950160081b169116178455600080516020615e088339815191528054918860005287526001600160401b03600192610f1082858a60406000205460101c161b198316169282168310614d3e565b6001600160401b0319161790558897600080516020615e288339815191528054938b5b858110610fc8575b505050505050918091610f836040969594610f767f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f99614d3e565b610f7e614d7a565b614e65565b5460081c16600080516020615d688339815191529081548381168210610fba575b50505416908351928352820152a161095861328f565b60ff19161781553880610fa4565b838b610fd38361325e565b929054600393841b1c1614610ff15750610fec90613010565b610f33565b9590918093959798999a9b9c5081019081116110ba5790611025846110186110449461325e565b905490891b1c169161325e565b90919082549060031b9160018060a01b03809116831b921b1916179055565b825480156110a657946040999794610f83948a9894610f76947f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f9e9c99019261108c8461325e565b81939154921b1b1916905555998496979899839650610f3b565b634e487b7160e01b8c52603160045260248cfd5b634e487b7160e01b8d52601160045260248dfd5b634e487b7160e01b8b52601160045260248bfd5b6040516307d86e9160e21b815260048101869052602490fd5b604051630d583f4760e41b815260048101869052602490fd5b604051632f44bd7760e01b8152600490fd5b50346102775761113536612e53565b9033600052600080516020615ea883398151915260209080825260ff60406000205460081c161561134957600080516020615de88339815191529160028354146106d05761ffff861680600052600080516020615d488339815191528252846040600020540361132b575060405163b3f07bbd60e01b8152918183806111bf898b6004840161332e565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156113205788936112f1575b503360005280825261120360ff60406000205460101c1684613228565b6112d85760606112b793927f35a2101eaac94b493e0dfca061f9a7f087913fde8678e7cde0aca9897edba0e592336000528082528a6001600160401b03610100600160481b03604082600160ff836000205460101c161b1693898152600080516020615da8833981519152875220928354928360081c161760081b1690610100600160481b03191617905533600052815260ff60406000205460101c166040519185835233908301526040820152a16131bb565b6112bf578480f35b546002146106d0576112d092613358565b388080808480f35b604051631089c4a160e11b815260048101849052602490fd5b9092508181813d8311611319575b6113098183612dd0565b810103126105e5575191386111e6565b503d6112ff565b6040513d8a823e3d90fd5b6044908560405191635788c0fd60e11b835260048301526024820152fd5b60405163a0ae911d60e01b8152336004820152602490fd5b5034610277578060031936011261027757602060405161ffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b506020366003190112610277576001600160401b0360043516908160043503610277576113cb615d17565b6002600080516020615de883398151915254146106d05781600052600080516020615ec88339815191526020526040600020916040519261140b84612d49565b805484526001810154602085015261ffff60028201546001600160481b03811660408701526001600160401b038160481c16606087015260881c16608085015260018060a01b0360038201541660a0850152604051838194906004840154936114738561376f565b808552946001811690811561160457506001146115bf575b505061149992500383612dd0565b60c083019182526001600160401b03606084015116156115a7576114ca6001600160401b03606085015116426131ae565b6001600160401b037f0000000000000000000000000000000000000000000000000000000000000000161161157c579161155991602093600052600080516020615ec8833981519152845261152260406000206137c0565b6001600160481b036040830151169161ffff608082015116815190868301519260a0600180821b039101511693519460043561464c565b6001600080516020615ee8833981519152556001600160401b0360405191168152f35b6044906001600160401b036060850151166040519163c06cf05f60e01b835260048301526024820152fd5b60249060405190635feafa3160e11b82526004820152fd5b60049193949250018252602082205b8183106115e857505090602061149992820101388061148b565b60209193508060019154838589010152019101909184926115ce565b9150506020925061149994915060ff191682840152151560051b820101388061148b565b5060603660031901126102775761163d612cdd565b604435611648615d17565b6002600080516020615de883398151915254146106d05760209181611559926040519261167484612d7f565b60018452853681860137600435613822565b5034610277576040366003190112610277576116a0612ccc565b6024356001600160401b0381116117ff576116bf903690600401612e0c565b91604051918290600080516020615e28833981519152828154918287526020809701908652600080516020615d8883398151915292865b888282106117e05750505061170d92500383612dd0565b826117378351966040519788928392635b10743960e11b8452604060048501526044840190612d11565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156117d55783949561177094926117b1575b50613053565b604051926040840160408552835180915285606086019401915b81811061179d5750505082938301520390f35b82518552938601939186019160010161178a565b6117ce9192503d8087833e6117c68183612dd0565b810190612f3e565b903861176a565b6040513d85823e3d90fd5b85546001600160a01b03168452600195860195889550930192016116f6565b8280fd5b503461027757806003193601126102775761181c614fac565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b0380821690600182019181831161192c5760ff8460401c1690811561191f575b5061190d57600160401b911680926001600160481b03191617179081835560ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e5416156118fb577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2926020926118db61328f565b6118e3614d7a565b68ff000000000000000019169055604051908152a180f35b604051632866815360e11b8152600490fd5b60405163f92ee8a960e01b8152600490fd5b9050818316111538611866565b634e487b7160e01b600052601160045260246000fd5b50346102775760403660031901126102775760243560ff811681036105e55761196f602091600435613228565b6040519015158152f35b5034610277578060031936011261027757600080516020615dc8833981519152546040516001600160a01b039091168152602090f35b503461027757602036600319011261027757611a046001600160401b036020926040600080516020615e0883398151915254916004358152600080516020615da88339815191528652205460081c1616615aa8565b60ff60405191168152f35b5034610277578060031936011261027757611a28614d5b565b506109e26109a7615043565b5034610277578060031936011261027757600080516020615dc883398151915254611a67906001600160a01b0316614ff0565b600080516020615de883398151915260028154146106d057600290557f0e2fb031ee032dc02d8011dc50b816eb450cf856abd8261680dac74f72165bd2602060405160018152a180f35b503461027757602036600319011261027757600435611ace615d17565b6002600080516020615de883398151915254146106d057611aee816154c7565b602081016001600160401b03908181511615611bb457611b1182825116426131ae565b827f00000000000000000000000000000000000000000000000000000000000000001611611b92578385527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b8602052604080862086815560010186905583015183518691610541916001600160481b0316906001600160a01b031687614af5565b516040516301cb739d60e71b8152600481019490945216602483015250604490fd5b604051630301bcaf60e61b815260048101859052602490fd5b508060031936011261027757611be1614fac565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c1615906001600160401b03811680159081611dfa575b6001149081611df0575b159081611de7575b5061190d5767ffffffffffffffff198116600117835581611dc8575b50611c57615c29565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381163303611d9f575034611d8d57611c96615c29565b611c9e615c29565b611ca6615c29565b6001600080516020615de883398151915255600080516020615f0883398151915280546001600160a01b03191633179055611cdf615c29565b611ce7615c29565b611cf033615c6a565b611cf8615c29565b611d00615c29565b6001600080516020615ee883398151915255611d37610100600160481b0360ff611d30611d2b614c50565b615b4f565b16176150eb565b611d3f61328f565b611d47614d7a565b611d4f575080f35b68ff00000000000000001981541690557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b60405163bd28e88960e01b8152600490fd5b604051636345072160e11b81526001600160a01b03919091166004820152336024820152604490fd5b68ffffffffffffffffff19166801000000000000000117825538611c4e565b90501538611c32565b303b159150611c2a565b839150611c20565b503461027757608036600319011261027757611e1c612ccc565b60243560443560ff81168091036105e557611e35615cde565b61ffff809316928315611f7f578215611f6d578115611f5b577f0000000000000000000000000000000000000000000000000000000000000000168314611f49577f1456404e7f41f35c3daac941bb50bad417a66275c3040061b4287d787719599d9160809184600052600080516020615d48833981519152918260205260ff604060002081600160405192611eca84612d7f565b805484520154169460208201958652886000526020526001604060002084815501848319825416179055611f2c611f0b611f02614c50565b80606435615be1565b89600052600080516020615e888339815191526020526040600020906152e9565b51935116604051938452602084015260408301526060820152a280f35b60405163101b8f9560e11b8152600490fd5b60405163ade64f0b60e01b8152600490fd5b60405163f839a0cb60e01b8152600490fd5b60405163100b0f2760e11b8152600490fd5b503461027757806003193601126102775760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b5034610277578060031936011261027757602060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb54166040519015158152f35b50346102775780600319360112610277577f00000000000000000000000000000000000000000000000000000000000000009060028210156120615760208260ff60405191168152f35b634e487b7160e01b81526021600452602490fd5b5034610277578060031936011261027757600080516020615dc8833981519152546120a8906001600160a01b0316614ff0565b600080516020615de883398151915260028154036120f157600190557fe11c2112add17fb763d3bd59f63b10429c3e11373da4fb8ef6725107a2fdc4b06020604051838152a180f35b604051637e38d1d360e11b8152600490fd5b50346102775780600319360112610277576020611a04614c50565b50346102775760203660031901126102775760ff60406020926004358152600080516020615da883398151915284522054166040519015158152f35b50346102775780600319360112610277576040517f000000000000000000000000000000000000000000000000000000000000000060028110156121a057602092508152f35b634e487b7160e01b83526021600452602483fd5b503461027757806003193601126102775760206001600160401b03600080516020615e488339815191525416604051908152f35b5034610277576020806003193601126106e2576004356001600160a01b0381169182820361081957612218615cde565b82156111145782600052600080516020615ea88339815191529182825260ff9081604060002054166000146123c15784600052838352604060002061010061ff00198254161790555b600080516020615e2883398151915290815491600160401b8310156123ab57826110259160016122939501905561325e565b600080516020615e6883398151915292835461ff006122b6848360081c16614d2d565b60081b169061ff00191617809455600080516020615e0883398151915280546001600160401b0390818116918860005284875260018660406000205460101c161b1682179182146123925767ffffffffffffffff19161790557ff05962b5774c658e85ed80c91a75af9d66d2af2253dda480f90bce78aff5eda594606094909390929091612342614d7a565b84600052825280600080516020615d68833981519152805482811615612383575b5054169260405194855260081c16908301526040820152a161095861328f565b60ff1916600117815538612363565b604051638d68f84d60e01b815260048101899052602490fd5b634e487b7160e01b600052604160045260246000fd5b600080516020615e688339815191528281541660408110156124d957604051906123ea82612d64565b6001825285820190600182526040830190815288600052878752604060002092511515918662ff000061ff0086549351151560081b16935160101b1693169062ffffff19161717179055805483612442818316614d2d565b169060ff19161790557f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed978805490600160401b8210156123ab57600182018082558210156124c3576000527f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd10180546001600160a01b03191686179055612261565b634e487b7160e01b600052603260045260246000fd5b60405163891684c360e01b8152600490fd5b5034610277576020366003190112610277576004356001600160401b0381168091036106e257606060c060405161252181612d49565b84815284602082015284604082015284838201528460808201528460a08201520152600052600080516020615ec883398151915260205260406000206040519061256a82612d49565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a0830152604051838194906004840154936125d28561376f565b80855294600181169081156126b95750600114612674575b50506125f892500383612dd0565b60c081019182526109e26040519283926020845280516020850152602081015160408501526001600160481b0360408201511660608501526001600160401b03606082015116608085015261ffff60808201511660a085015260a0600180821b039101511660c08401525160e080840152610100830190612d11565b60049193949250018252602082205b81831061269d5750509060206125f89282010138806125ea565b6020919350806001915483858901015201910190918492612683565b915050602092506125f894915060ff191682840152151560051b82010138806125ea565b5034610277576020366003190112610277576126f7615cde565b61095861270e612705614c50565b80600435615be1565b6150eb565b503461027757604036600319011261027757610958612730612cdd565b612738615cde565b61ffff612746612705614c50565b9116600052600080516020615e888339815191526020526040600020906152e9565b5034610277576020806003193601126106e2576001600160a01b036004358181169081810361082857612799615cde565b6127a1614fac565b3b15612b74577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e9182549161282e60ff841615614d3e565b60ff199283166001178455303b156108285760405163011fa75760e71b8152858160048183305af18015612b2957612b61575b5060405163689f90c360e01b81528281600481305afa908115612b29578691612b34575b50156128bd575b50507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b604051637e062a3560e11b81528281600481305afa908115612b29578691612aeb575b5081612910927f000000000000000000000000000000000000000000000000000000000000000016911614614d3e565b6040516314ad290960e11b81528181600481305afa90811561081d578591612ab5575b507f0000000000000000000000000000000000000000000000000000000000000000906002821015612aa1576002811015612aa1576129729114614d3e565b604051634d4502c960e11b81528181600481305afa801561081d578590612a6b575b6129c7915061ffff807f000000000000000000000000000000000000000000000000000000000000000016911614614d3e565b604051631d2a9eff60e21b8152908082600481305afa90811561081d578591612a2b575b50612a2491506001600160401b03807f000000000000000000000000000000000000000000000000000000000000000016911614614d3e565b388061288c565b905081813d8311612a64575b612a418183612dd0565b8101031261081957516001600160401b038116810361081957612a2490386129eb565b503d612a37565b508181813d8311612a9a575b612a818183612dd0565b8101031261082857612a956129c791613349565b612994565b503d612a77565b634e487b7160e01b86526021600452602486fd5b90508181813d8311612ae4575b612acc8183612dd0565b81010312610828575160028110156108285738612933565b503d612ac2565b90508281813d8311612b22575b612b028183612dd0565b81010312612b1e5751908082168203612b1e57906129106128e0565b8580fd5b503d612af8565b6040513d88823e3d90fd5b612b549150833d8511612b5a575b612b4c8183612dd0565b81019061443a565b38612885565b503d612b42565b612b6d90959195612d36565b9338612861565b60405162461bcd60e51b815260048101849052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b503461027757602036600319011261027757602061196f6004356131bb565b5034610277576020366003190112610277576004356001600160a01b03818116918290036117ff57612c3081600080516020615dc88339815191525416614ff0565b600080516020615f0883398151915280546001600160a01b031981168417909155167f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b50346102775760203660031901126102775761070161046d612cc7604060209461ffff612ca4612ccc565b612cac614d5b565b50168152600080516020615e8883398151915286522061508b565b61555d565b6004359061ffff821682036105e557565b6024359061ffff821682036105e557565b60005b838110612d015750506000910152565b8181015183820152602001612cf1565b90602091612d2a81518092818552858086019101612cee565b601f01601f1916010190565b6001600160401b0381116123ab57604052565b60e081019081106001600160401b038211176123ab57604052565b606081019081106001600160401b038211176123ab57604052565b604081019081106001600160401b038211176123ab57604052565b608081019081106001600160401b038211176123ab57604052565b60a081019081106001600160401b038211176123ab57604052565b90601f801991011681019081106001600160401b038211176123ab57604052565b6001600160401b0381116123ab57601f01601f191660200190565b81601f820112156105e557803590612e2382612df1565b92612e316040519485612dd0565b828452602083830101116105e557816000926020809301838601378301015290565b90600319906060828401126105e55760043561ffff811681036105e5579260243592604435916001600160401b03918284116105e55760609084830301126105e55760405192612ea284612d64565b806004013584526024810135602085015260448101359283116105e557612ecc9201600401612e0c565b604082015290565b6001600160401b0381116123ab5760051b60200190565b519060ff821682036105e557565b81601f820112156105e5578051612f0f81612df1565b92612f1d6040519485612dd0565b818452602082840101116105e557612f3b9160208085019101612cee565b90565b9060209081838203126105e55782516001600160401b03938482116105e557019080601f830112156105e5578151612f7581612ed4565b94604090612f8582519788612dd0565b828752858088019360051b860101948486116105e557868101935b868510612fb257505050505050505090565b84518381116105e55782019084601f1983890301126105e557845190612fd782612d7f565b612fe28a8401612eeb565b825285830151918583116105e557613001898c80969581960101612ef9565b83820152815201940193612fa0565b600019811461192c5760010190565b80518210156124c35760209160051b010190565b9060406020612f3b9360ff81511684520151918160208201520190612d11565b90929180519161306283612ed4565b9260409161307283519586612dd0565b818552601f1961308183612ed4565b01602090368288013760009788955b8487106130a257505050505050509190565b90919293949598868561311b868d6130c160018060a01b03918861301f565b511680600052600080516020615ea883398151915282526130ec60ff866000205460101c168961301f565b51908551808095819463b5634c7360e01b835261ffff60049916898401526024998a8401526044830190613033565b03915afa9081156131a357908d91600091613171575b5061313d81928d61301f565b52830180931161315e5750506131539099613010565b959493929190613090565b601190634e487b7160e01b600052526000fd5b91508782813d831161319c575b6131888183612dd0565b810103126102775750518c9061313d613131565b503d61317e565b8a513d6000823e3d90fd5b9190820391821161192c57565b6001600160401b039060ff61321481600080516020615d688339815191525416938493600080516020615e088339815191525490600052600080516020615da883398151915260205260406000205460081c1616615aa8565b1610159081613221575090565b9050151590565b906001600160401b0391600052600080516020615da8833981519152602052600160ff60406000205460081c92161b1616151590565b600080516020615e2883398151915280548210156124c357600052600080516020615d888339815191520190600090565b60ff600080516020615d6883398151915254166040516132ae81612d7f565b60ff600080516020615e6883398151915254818116835260081c168060208301528083116132e957505160ff166132e25750565b1561091657565b82604491604051916313c3d1b160e01b835260048301526024820152fd5b9060606040612f3b9380518452602081015160208501520151918160408201520190612d11565b60409061ffff612f3b94931681528160208201520190613307565b519061ffff821682036105e557565b919081613365918461364f565b91909161364a5760408091015191815192635399ded560e11b84526080848061339a6020948560048401526024830190612d11565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af493841561363f576000946135ca575b5061ffff9283606086015116847f0000000000000000000000000000000000000000000000000000000000000000168082036135af575050613402614c50565b8161342b87519280613426816001600160401b03968760ff82169160081c16615b86565b615be1565b960151908160a01c613598576001600160a01b039182169560007f00000000000000000000000000000000000000000000000000000000000000008316156135915750613476614d5b565b508816600052600080516020615e88833981519152845261349c612cc78460002061508b565b6134a68882615b1a565b81808960081c169160081c16105b6134d957505050506134c96134d79484615850565b6134d283615730565b614af5565b565b7f7f63c9251d82a933210c2b6d0b0f116252c3c116788120e64e8e8215df6f3162975095613575839596949760019394519261351484612d64565b6001600160481b038091168452898401908242168252888501978852896000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b88b52886000209451166001600160481b0319855416178455511682615a3f565b019151166001600160601b0360a01b82541617905551908152a1565b90506134b4565b50602491519063033b960d60e41b82526004820152fd5b6044925191631ee5902560e11b835260048301526024820152fd5b6080949194813d8211613637575b816135e560809383612dd0565b810103126106e2578351916135f983612d9a565b8151906001600160481b0382168203610277575082528481015185830152838101518483015261362b90606001613349565b606082015292386133c2565b3d91506135d8565b83513d6000823e3d90fd5b505050565b60405163b3f07bbd60e01b81529193926020918391829161367491906004840161332e565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105d957600091613705575b506136a6816131bb565b156136ed576136b481613736565b92836136c257509150600090565b7f4069dff8c9df7e38d2867c0910bd96fd61787695e5380281148c04932d02bef2600080a360009190565b60249060405190630451c4fb60e41b82526004820152fd5b906020823d821161372e575b8161371e60209383612dd0565b810103126102775750513861369c565b3d9150613711565b600052600080516020615da88339815191526020526040600020805460ff81166137685760ff19166001179055600090565b5050600190565b90600182811c9216801561379f575b602083101461378957565b634e487b7160e01b600052602260045260246000fd5b91607f169161377e565b8181106137b4575050565b600081556001016137a9565b6004600091828155826001820155826002820155826003820155016137e5815461376f565b806137ef57505050565b82601f821160011461380057505055565b909180825261381e601f60208420940160051c8401600185016137a9565b5555565b9194939290946000958315613e9b578115613e89578215613e77577f00000000000000000000000000000000000000000000000000000000000000006138683082614cd0565b906138ab60018060a01b03821696604051906323b872dd60e01b60208301523360248301523060448301526064820152606481526138a581612db5565b87614452565b6138be826138b93084614cd0565b6131ae565b957f00000000000000000000000000000000000000000000000000000000000000006002811015613e63579060018b9214613ddc575b5050505061ffff8116600052600080516020615d4883398151915260205260ff600160406000200154168015611f5b5761393761392f614c50565b918287615be1565b906001600160401b038260081c1661395460ff8416928383615b86565b808803613db5575061397661397b9161396e611d2b614c50565b938491615b86565b615608565b98600080516020615e4883398151915254966001600160401b0380891614613da15767ffffffffffffffff1988166001600160401b03898116600101811691909117600080516020615e48833981519152557f00000000000000000000000000000000000000000000000000000000000000001615613d9b576139fc614d5b565b50613a08612cc7615043565b613a258c610100600160481b0360ff87169160081b161782615b1a565b6001600160401b03808d610100600160481b0360ff88169160081b161760081c169160081c16105b613d75578180613d6d575b613aa157505082612f3b9899610100600160481b0360ff84613a8582613a919716848660081b1617615670565b169160081b1617615918565b6001600160401b0333951661464c565b61ffff95979896919a506001600160481b03939250613adf7f0000000000000000000000000000000000000000000000000000000000000000615a67565b613ae76154b0565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a260405196613b3488612d49565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615ec883398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b0319825416178155613bcf6001600160401b0360608701511682615a3f565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613d5957613c30835461376f565b601f8111613d1e575b50602090601f8311600114613cb257906001600160401b03959683613ca7575b50508160011b916000199060031b1c19161790555b7f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613ca3346145f5565b1690565b015190503880613c59565b95601f19831684885260208820975b818110613d065750916001600160401b03969791846001959410613ced575b505050811b019055613c6e565b015160001960f88460031b161c19169055388080613ce0565b83830151895560019098019760209384019301613cc1565b613d499084835260208320601f850160051c81019160208610613d4f575b601f0160051c01906137a9565b38613c39565b9091508190613d3c565b634e487b7160e01b81526041600452602490fd5b506000613a58565b604490613d806154b0565b90604051916326fb55dd60e01b835260048301526024820152fd5b81613a4d565b634e487b7160e01b82526011600452602482fd5b87613dc2604492826131ae565b604051916338f831a560e11b835260048301526024820152fd5b803b156106e2578190602460405180948193630852cd8d60e31b83528c60048401525af18015613e5857613e43575b50613e17903090614cd0565b808203613e255788816138f4565b60449250604051916302156a8f60e01b835260048301526024820152fd5b98613e51613e17929a612d36565b9890613e0b565b6040513d8c823e3d90fd5b634e487b7160e01b8b52602160045260248bfd5b60405163717f139360e11b8152600490fd5b604051634e46966960e11b8152600490fd5b604051631f2a200560e01b8152600490fd5b95949392919060008715613e9b578215613e89578315613e77577f0000000000000000000000000000000000000000000000000000000000000000613ef23082614cd0565b90613f3560018060a01b0382169a604051906323b872dd60e01b6020830152336024830152306044830152606482015260648152613f2f81612db5565b8b614452565b613f43826138b93084614cd0565b997f00000000000000000000000000000000000000000000000000000000000000006002811015614426576001146143bc575b50505061ffff8216600052600080516020615d4883398151915260205260ff600160406000200154168015611f5b57613fb8613fb0614c50565b91828b615be1565b916001600160401b038360081c16613fd560ff8516938483615b86565b808c036143af5750613976613ff791613fef611d2b614c50565b948591615b86565b99600080516020615e4883398151915254976001600160401b03808a161461439b5767ffffffffffffffff1989166001600160401b038a8116600101811691909117600080516020615e48833981519152557f0000000000000000000000000000000000000000000000000000000000000000161561439557614078614d5b565b508b6001600160401b038061408e612cc7615043565b9260081b610100600160481b031660ff8816176140ab8185615b1a565b60081c169160081c16105b81158061438e575b614383578161437b575b506140f957505082612f3b9899610100600160481b0360ff613a9194169160081b16176140f481615670565b615918565b61ffff95979896919a506001600160481b039392506141377f0000000000000000000000000000000000000000000000000000000000000000615a67565b61413f6154b0565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a26040519661418c88612d49565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615ec883398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b03198254161781556142276001600160401b0360608701511682615a3f565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613d5957614288835461376f565b601f811161434b575b50602090601f83116001146142f957906001600160401b03959683613ca75750508160011b916000199060031b1c19161790557f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613ca3346145f5565b95601f19831684885260208820975b8181106143335750916001600160401b03969791846001959410613ced57505050811b019055613c6e565b83830151895560019098019760209384019301614308565b6143759084835260208320601f850160051c81019160208610613d4f57601f0160051c01906137a9565b38614291565b9050386140c8565b604483613d806154b0565b50806140be565b826140b6565b634e487b7160e01b83526011600452602483fd5b8b613dc2604492826131ae565b803b156108195783809160248d6040519485938492630852cd8d60e31b845260048401525af1801561441b57614406575b506143f9903090614cd0565b808203613e255780613f76565b926144146143f99294612d36565b92906143ed565b6040513d86823e3d90fd5b634e487b7160e01b85526021600452602485fd5b908160209103126105e5575180151581036105e55790565b6040516144b0916001600160a01b031661446b82612d7f565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af16144aa61452c565b9161455c565b805190816144bd57505050565b82806144cd93830101910161443a565b156144d55750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b3d15614557573d9061453d82612df1565b9161454b6040519384612dd0565b82523d6000602084013e565b606090565b919290156145be5750815115614570575090565b3b156145795790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156145d15750805190602001fd5b60405162461bcd60e51b815260206004820152908190610645906024830190612d11565b600080808084335af161460661452c565b501561460f5750565b60249060405190630b288dc560e21b82526004820152fd5b906020828203126105e55781516001600160401b0381116105e557612f3b9201612ef9565b9594929493919361467c7f0000000000000000000000000000000000000000000000000000000000000000615a67565b6040518081600080516020615e2883398151915260208154938481520190600052600080516020615d888339815191529260005b818110614ad35750506146c592500382612dd0565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed9785491815115614ac1576147186000916040519485928392635b10743960e11b8452604060048501526044840190612d11565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105d957600092614aa4575b50614752818388613053565b95863410614a855761476487346131ae565b80614a76575b506040519061477882612d9a565b6001600160481b0386811683527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166020840190815260408085018d815261ffff8d81166060880190815292516315cfa3cb60e11b81529651909416600487015291516024860152905160448501525116606483015260008260848173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105d957614877926000928d928492614a5a575b506001600160401b036040519361484085612d64565b16835260018060a01b031660208301526040820152604051809381926311692f3760e31b8352602060048401526024830190613307565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105d957600091614a37575b5061ffff8816600052600080516020615d48833981519152602052604060002054938351938515614a1b5760005b8581106149405750505050505050927fe54e51e42099622516fa3b48e9733581c9dbdcb771cafb093f745a0532a35982949261ffff9261491160c096610475614c50565b906040519586526020860152604085015260608401521660808201526001600160401b03841660a0820152a190565b6001600160a01b03614952828461301f565b51169061495f818761301f565b5182600052600080516020615ea883398151915260205261498b60ff60406000205460101c168661301f565b51833b156105e5576149d19361ffff8f936000948f8e906149e38d6040519b8c998a988997634b5b050560e01b895216600488015260a0602488015260a4870190613033565b85810360031901604487015290612d11565b916064840152608483015203925af19182156105d957614a0792614a0c5750613010565b6148cd565b614a1590612d36565b38610d93565b604051630ebc95af60e21b815261ffff8b166004820152602490fd5b614a5491503d806000833e614a4c8183612dd0565b810190614627565b3861489f565b614a6f9192503d8086833e614a4c8183612dd0565b903861482a565b614a7f906145f5565b3861476a565b6040516306a91e3760e51b815260048101889052346024820152604490fd5b614aba9192503d806000833e6117c68183612dd0565b9038614746565b6040516334e7b19560e11b8152600490fd5b84546001600160a01b03168352600194850194869450602090930192016146b0565b9291614b249061046d7f0000000000000000000000000000000000000000000000000000000000000000615a67565b906000937f504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a918580a27f00000000000000000000000000000000000000000000000000000000000000009360028510156120615784614bb9575060405163a9059cbb60e01b60208201526001600160a01b03909116602482015260448101919091529091506134d7906105128160648101610504565b9193600181036105ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156117ff576040516340c10f1960e01b81526001600160a01b03919091166004820152602481019490945291929181908390604490829084905af1908115614c445750614c3b5750565b6134d790612d36565b604051903d90823e3d90fd5b600080604051602081019063313ce56760e01b825260048152614c7281612d7f565b51907f00000000000000000000000000000000000000000000000000000000000000005afa614c9f61452c565b9015614cbe576020818051810103126105e5576020612f3b9101612eeb565b604051631222cd8360e01b8152600490fd5b6040516370a0823160e01b602082019081526001600160a01b039093166024808301919091528152600092839291614d0781612d64565b51915afa614d1361452c565b9015614cbe576020818051810103126105e5576020015190565b60ff1660ff811461192c5760010190565b15614d4557565b634e487b7160e01b600052600160045260246000fd5b60405190614d6882612d64565b60006040838281528260208201520152565b600080516020615e688339815191525460ff8160081c16614dab600080516020615e28833981519152548214614d3e565b60005b818110614e39575060005b818110614dd2575050604060ff6134d792161115614d3e565b6001810180821161192c575b828110614df45750614def90613010565b614db9565b614e3490614e2f614e048461325e565b905490614e108461325e565b92909160018060a01b03809354600395861b1c16931b1c161415614d3e565b613010565b614dde565b80614e2f614e49614e609361325e565b905460039190911b1c6001600160a01b0316614e65565b614dae565b6001600160a01b039081166000818152600080516020615ea88339815191526020526040908190209051929190614e9b84612d64565b5460ff91614ed7838316158015938488526020880197604087808460081c16159384158c5260101c1691019581875292614f92575b5050614d3e565b600080516020615e0883398151915254946001600160401b0360019687868651161b1616151590511515916000968791600080516020615e688339815191525497878960081c16935b848110614f54575b5050505050816134d796614f42869594614f4a9414614d3e565b151514614d3e565b5116911611614d3e565b8282614f5f8361325e565b90549060031b1c1614614f7a57614f7590613010565b614f20565b50919850849250839150614f429050826134d7614f28565b90915081614fa3575b503880614ed0565b90501538614f9b565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614614fde57565b604051633c64f99360e21b8152600490fd5b600080516020615f0883398151915254336001600160a01b039182161415919082615036575b505061501e57565b60405163e2a08e5d60e01b8152336004820152602490fd5b1633141590503880615016565b6040519061505082612d64565b8160406001600160401b03600080516020615f28833981519152546001600160481b0380821685528160481c16602085015260901c16910152565b9060405161509881612d64565b60406001600160401b038294546001600160481b0380821685528160481c16602085015260901c16910152565b90600160481b600160901b0382549160481b1690600160481b600160901b031916179055565b600080516020615f288339815191529081546001600160481b03908181166001600160401b036008918184841c168015806152de575b1561518f575050855471ffffffffffffffffff0000000000000000001916604886901b600160481b600160901b03161786555050505b825479ffffffffffffffff000000000000000000ffffffffffffffffff19169116174260901b67ffffffffffffffff60901b16179055565b8661519b612cc7615043565b9260006151a88383615af8565b1561527457506151c792916151bc91615b1a565b8388861c1690615a8f565b610100600160481b039290841b831660ff8616176151e58184615af8565b15615266578160ff92826151fc6152099487615b1a565b871c169084871c16615a8f565b9116921b16175b61521a8482615af8565b61524457600160481b600160901b039060481b1690600160481b600160901b031916178355615157565b604051631e74e8fb60e31b815290831660048201528383166024820152604490fd5b5050905060ff915016615210565b94939592906152869061529093615b1a565b8389841c16615a8f565b9260ff881694838087610100600160481b038098871b16176152b28185615b1a565b851c1691841c16019283116152ca57501b1617615210565b634e487b7160e01b81526011600452602490fd5b5060ff851615615121565b919080546001600160481b03808216916001600160401b03926008908483831c168015806154a5575b1561537857505050508461532a6134d79596856150c5565b835467ffffffffffffffff60901b19919092161679ffffffffffffffff000000000000000000ffffffffffffffffff1990911617429190911660901b67ffffffffffffffff60901b16179055565b859089615387612cc78a61508b565b9360006153948383615af8565b1561544f5750916153ac6153b79260ff979894615b1a565b838c881c1690615a8f565b610100600160481b039490861b85169116176153d38184615af8565b156154415760ff91816153e96153f69386615b1a565b861c168784871c16615a8f565b9116921b16175b6154078682615af8565b61541f579461541a6134d79596856150c5565b61532a565b604051631e74e8fb60e31b815290821660048201529085166024820152604490fd5b5050905060ff9150166153fd565b94965061546a935061546091615b1a565b868a851c16615a8f565b9160ff891693868086610100600160481b038097861b161761548c8185615b1a565b841c1691831c1601918683116152ca57501b16176153fd565b5060ff841615615312565b6154b8614d5b565b50612f3b61046d612cc7615043565b6154cf614d5b565b506000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b860205260406000206040519061550982612d64565b80546001600160481b038116835260481c6001600160401b03166020830152600101546001600160a01b0316604082015290565b8115615547570490565b634e487b7160e01b600052601260045260246000fd5b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000169182156155f1576155de828260ff936040610100600160481b03960151164203816155c2602085019889519383875160081c160261553d565b9160081c1601915160081c168082106000146155ea5750615608565b9251169160081b161790565b9050615608565b506020015160ff16610100600160481b0317919050565b6001600160401b039081811161561c571690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608490fd5b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000161561572c576156a9614d5b565b50600160481b600160901b036156c0612cc7615043565b610100600160481b0360ff6156fb600080516020615f2883398151915296808854976156ec8188615b1a565b60081c16908560081c16615a8f565b92169160081b161760481b16906001600160401b0360901b4260901b1690600160481b600160d01b03191617179055565b5050565b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000161561572c57615769614d5b565b50615775612cc7615043565b90600160481b600160901b03600080516020615f2883398151915293845493816001600160401b0360901b4260901b16946157b08184615b1a565b60081c16828260081c160182811160001461583c5750610100600160481b0360ff6157da84615608565b92169160081b1617906001600160481b038516906157f88284615b1a565b80856001600160401b0360901b1988161760081c16908360081c161060001461583557505b60481b1691600160481b600160d01b03191617179055565b905061581d565b60ff6157da610100600160481b0392615608565b6001600160401b03807f0000000000000000000000000000000000000000000000000000000000000000161561364a57610100600160481b0360ff61590a61ffff6134d79661589d614d5b565b50169384600052600080516020615e88833981519152806020526158c7612cc7604060002061508b565b60009687526020919091526040909520805467ffffffffffffffff60901b191642831660901b67ffffffffffffffff60901b161781559581906156ec8188615b1a565b92169160081b1617906150c5565b6001600160401b03807f0000000000000000000000000000000000000000000000000000000000000000161561364a5761ffff6134d793615957614d5b565b5016600090808252600080516020615e8883398151915280602052615981612cc76040852061508b565b91835260205260408220805467ffffffffffffffff60901b191642851660901b67ffffffffffffffff60901b161781559383906159be8184615b1a565b60081c16838260081c1601838111600014615a2b5750610100600160481b0360ff6159e885615608565b92169160081b1617918084546001600160481b03811693615a098587615b1a565b5060081c16908360081c1610600014615a235750906150c5565b9050906150c5565b60ff6159e8610100600160481b0392615608565b9067ffffffffffffffff60481b82549160481b169067ffffffffffffffff60481b1916179055565b468103615a715750565b604490604051906377d879fb60e01b82526004820152466024820152fd5b6001600160401b03918216908216039190821161192c57565b60009182915b6001600160401b03908181168015615af05760001901918211615adc571691615ad690614d2d565b91615aae565b634e487b7160e01b85526011600452602485fd5b505050915090565b90615b038183615b1a565b6001600160401b03809160081c169160081c161190565b60ff9182169116818103615b2c575050565b604051635ce6db6160e11b815260ff918216600482015291166024820152604490fd5b60ff811660081015612f3b5750600890565b9060ff8091169116039060ff821161192c57565b60ff16604d811161192c57600a0a90565b919060ff821660ff8216818114615bda571115615bb957615bae612f3b9392615bb392615b61565b615b75565b9061553d565b615bae90615bc692615b61565b9081810291818304149015171561192c5790565b5050505090565b615c1461397660ff92610100600160481b039495615bfe87615b4f565b908581168683161015615c1f5750958691615b86565b92169160081b161790565b9050958691615b86565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c1615615c5857565b604051631afcd79f60e31b8152600490fd5b6001600160a01b03908116908115615cc557600080516020615dc883398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b600080516020615dc8833981519152546001600160a01b03163303615cff57565b60405163118cdaa760e01b8152336004820152602490fd5b600080516020615ee88339815191526002815414615d355760029055565b604051633ee5aeb560e01b8152600490fdfeebcc9f646b0f459ff8f387587d536b0af3484cf442e1577400f322334e7d1ef047028352a8b3feae1a85fba43bc13f990568bb1637dce33d3dbfd791a0808b7f6c3cb3f3ae91330f31ba2bc0ff8855fc834fb66dc27e8e0b1a398617dabaa5a668dfeeddfa5e4e9adceec01a3aba274bdcbab3f6ac9956417a4332f2b08abdda9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930064bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022fd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f00758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e1ad78307a8b51804c575f26039dcb87c58925afb3b7c08732f3b21b942aed7a768561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d89efb21dcaedea63b55c44882f329622e13a8d0f5b947b3a372826208a9003da1549bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f852fa0677fef8612c6c15b518c9fa56761e9ed15cfd5c6e5399e5467985ac7ed9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00bfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12497c25289a27ec8c9be54d4a154cf80490d69bda989cdb8328232e08fea9220420a26469706673582212207ed5e889b9f55b8e46c735a86c62e208aeae9aa95f45c30245d74d8a7fdad80c64736f6c63430008130033",L6=c=>typeof c[0]=="string"||Array.isArray(c[0])||"_isInterface"in c[0];let O6=class q1 extends U0.ContractFactory{constructor(...e){if(L6(e))super(...e);else{const[a,i]=e;super(se,q1.linkBytecode(a),i)}}static linkBytecode(e){let a=g1;return a=a.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),a}getDeployTransaction(e,a,i,o,n,u){return super.getDeployTransaction(e,a,i,o,n,u||{})}deploy(e,a,i,o,n,u){return super.deploy(e,a,i,o,n,u||{})}connect(e){return super.connect(e)}static bytecode=g1;static abi=se;static createInterface(){return new L0.Interface(se)}static connect(e,a){return new L0.Contract(e,se,a)}};const re=[{type:"constructor",inputs:[{name:"nttManager",type:"address",internalType:"address"},{name:"wormholeCoreBridge",type:"address",internalType:"address"},{name:"wormholeRelayerAddr",type:"address",internalType:"address"},{name:"specialRelayerAddr",type:"address",internalType:"address"},{name:"_consistencyLevel",type:"uint8",internalType:"uint8"},{name:"_gasLimit",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"WORMHOLE_TRANSCEIVER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"consistencyLevel",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"encodeWormholeTransceiverInstruction",inputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],outputs:[{name:"",type:"bytes",internalType:"bytes"}],stateMutability:"pure"},{type:"function",name:"gasLimit",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getNttManagerOwner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getNttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"payable"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isVAAConsumed",inputs:[{name:"hash",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"nttManager",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"nttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"parseWormholeTransceiverInstruction",inputs:[{name:"encoded",type:"bytes",internalType:"bytes"}],outputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],stateMutability:"pure"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"receiveMessage",inputs:[{name:"encodedMessage",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"receiveWormholeMessages",inputs:[{name:"payload",type:"bytes",internalType:"bytes"},{name:"additionalMessages",type:"bytes[]",internalType:"bytes[]"},{name:"sourceAddress",type:"bytes32",internalType:"bytes32"},{name:"sourceChain",type:"uint16",internalType:"uint16"},{name:"deliveryHash",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"sendMessage",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]},{name:"nttManagerMessage",type:"bytes",internalType:"bytes"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"setIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEvm",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setWormholePeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"specialRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract ISpecialRelayer"}],stateMutability:"view"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferTransceiverOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"wormhole",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormhole"}],stateMutability:"view"},{type:"function",name:"wormholeRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormholeRelayer"}],stateMutability:"view"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"ReceivedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"ReceivedRelayedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"RelayingInfo",inputs:[{name:"relayingType",type:"uint8",indexed:!1,internalType:"uint8"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"deliveryPayment",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"SendTransceiverMessage",inputs:[{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"message",type:"tuple",indexed:!1,internalType:"struct TransceiverStructs.TransceiverMessage",components:[{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"nttManagerPayload",type:"bytes",internalType:"bytes"},{name:"transceiverPayload",type:"bytes",internalType:"bytes"}]}],anonymous:!1},{type:"event",name:"SetIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isEvm",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetWormholePeer",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"CallerNotNttManager",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CallerNotRelayer",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CannotRenounceTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"}]},{type:"error",name:"CannotTransferTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"},{name:"newOwner",type:"address",internalType:"address"}]},{type:"error",name:"InvalidBoolVal",inputs:[{name:"val",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidBoolValue",inputs:[{name:"value",type:"uint256",internalType:"BooleanFlag"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidRelayingConfig",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidVaa",inputs:[{name:"reason",type:"string",internalType:"string"}]},{type:"error",name:"InvalidWormholeChainIdZero",inputs:[]},{type:"error",name:"InvalidWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidWormholePeerZeroAddress",inputs:[]},{type:"error",name:"LengthMismatch",inputs:[{name:"encodedLength",type:"uint256",internalType:"uint256"},{name:"expectedLength",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerAlreadySet",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"TransferAlreadyCompleted",inputs:[{name:"vaaHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"UnexpectedAdditionalMessages",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"deployer",type:"address",internalType:"address"},{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"UnexpectedRecipientNttManagerAddress",inputs:[{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"expectedRecipientNttManagerAddress",type:"bytes32",internalType:"bytes32"}]}],v1="0x6101c06040818152346200031d5760c082620036ef803803809162000025828562000322565b8339810103126200031d576200003b826200035c565b906020906200004c8285016200035c565b926200005a8286016200035c565b62000068606087016200035c565b9160808701519660ff881688036200031d5760a00151947ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080549060ff82881c166200030c5782906001600160401b03906002600160401b031984831601620002c9575b50505050306080528160a052845190637e062a3560e11b8252808260048160018060a01b038097165afa908115620002be576000916200027f575b50905060c0523360e0528061012096168652806101409216825261016092168252610180924684526101009687526101a0948552519461337d9687620003728839608051876130e8015260a051878181610dbd015281816114fa0152818161187d01528181612002015281816121b10152818161288d0152612a91015260c051878181610e4801528181611c40015281816122030152818161263a0152612d29015260e05187610cc501525186818161076301528181610efa0152818161122101528181611bab01528181611d9e01526123480152518581816101fd01528181610bbe01528181610f270152818161124d01528181611b5301528181611dcb0152818161225301528181612daf01528181612e8f0152612f2d01525184818161079c015281816115e3015281816119f7015281816122a30152612c72015251838181610a1e01528181611be9015281816122f30152612d66015251826102410152518181816106a1015281816119c20152612c470152f35b82813d8311620002b6575b62000296818362000322565b81010312620002b35750620002ab906200035c565b803862000107565b80fd5b503d6200028a565b86513d6000823e3d90fd5b6001600160401b0319909316811790925586519182527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291a138818180620000cc565b865163f92ee8a960e01b8152600490fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200034657604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200031d5756fe6080604081815260048036101561001557600080fd5b600092833560e01c908163036de8af14612558575080630900f010146120315780630b4a1e891461138857806324fb21db14611fed578063320d0d8e14611faa57806348b330d614611f645780634b5b0505146117ec5780634b795b211461174b578063529dca321461154157806358f709ba146114d2578063657b3b2f1461143157806366152efc146113d0578063689f90c31461138d578063694977d7146113885780637ab564031461112d57806380eb3239146110f15780638129fc1c14610c3657806381e8ec7f14610bed57806384acd1bb14610ba95780638da5cb5b14610b735780638fd3ab8014610a4d57806390ea542814610a09578063935dec07146109c757806396dddc63146109125780639fd0506d146108ca578063b187bd2614610889578063b5634c731461083c578063bc7f6d37146107f9578063d8d28418146107cb578063da25b72514610787578063e8dfd50814610749578063f2fde38b14610714578063f48066a8146106c8578063f68016b7146106895763f953cec7146101a457600080fd5b346106855760209081600319360112610681578035906001600160401b038581841161067e576101da6101f9943690850161274b565b86518095819263607ec5ef60e11b835288878401526024830190612834565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156106745786938790889261046f575b501561044c57507f000000000000000000000000000000000000000000000000000000000000000046810361043057506060830161ffff918282511660005260008051602061326883398151915286528660002054608086019081518091036103ff575061014086016102c7815160005260008051602061328883398151915260205260ff6040600020541690565b6103e657927ff6fc529540981400dc64edf649eb5e2e0eb5812a27f8c81bac2c1d317e71a5f0608060e0948b8a8e9996896103286103799d9b516000526000805160206132888339815191526020526040600020600160ff19825416179055565b519360a08989511692519301511692519384528d8401528d8301526060820152a15116940151906103576128f0565b50610360612916565b508651630453806b60e11b815293849283928301612a6f565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156103dc576103b39450859186946103b6575b50815191015191612a8e565b80f35b9093506103d591503d8087833e6103cd818361270f565b8101906129f1565b92386103a7565b84513d87823e3d90fd5b518851632d30ec0360e21b815280870191909152602490fd5b83518951633cd8e72b60e11b815290861661ffff1687820190815260208101929092529081900360400190fd5b0390fd5b826044918751916377d879fb60e01b8352820152466024820152fd5b8551634771719b60e11b815280840186905290819061042c906024830190612834565b945050503d8087853e610482818561270f565b830160609081858203126106705784518381116105f45785016101609283828403126105f85788519384018481108682111761065b5789526104c382613000565b84526104d088830161300e565b888501526104df89830161300e565b898501528082015161ffff8116810361065757818501526080808301518186015261050c60a08401612f98565b60a086015261051d60c08401613000565b60c086015260e0830151868111610653578461053a91850161296e565b60e086015261010061054d81850161300e565b90860152610120908184015187811161064f57840185601f8201121561064f5780518c9461058661057d836127fa565b9651968761270f565b8186528c8087019260071b8401019288841161064b578d01915b8383106105fc57505050505084015261014080910151908301526105c586860161301f565b9487810151908482116105f857019080601f830112156105f45781516105ec928801612937565b909338610238565b8880fd5b8980fd5b84838a031261064b578d8f918287935190610616826126d9565b86518252838701518483015261062d818801613000565b9082015261063c858701613000565b858201528152019201916105a0565b8f80fd5b8c80fd5b8b80fd5b8a80fd5b604187634e487b7160e01b6000525260246000fd5b8780fd5b85513d88823e3d90fd5b80fd5b8380fd5b8280fd5b5050346106c457816003193601126106c457602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5080fd5b5050346106c45760203660031901126106c45760209061ffff6106e9612669565b166000526000805160206132a8833981519152825261070b81600020546130a4565b90519015158152f35b8382346106c45760203660031901126106c457356001600160a01b03811681036106c4576103b3906107446131b8565b613187565b5050346106c457816003193601126106c4576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106c457816003193601126106c4576020906107e8612878565b90516001600160a01b039091168152f35b5050346106c45760203660031901126106c45760209061ffff61081a612669565b16600052600080516020613248833981519152825261070b81600020546130a4565b5034610685578160031936011261068557610855612669565b92602435906001600160401b03821161067e57509261087c61088292602095369101612792565b90612bd1565b9051908152f35b5050346106c457816003193601126106c45760209060027f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b825802254149051908152f35b5050346106c457816003193601126106c4577fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12495490516001600160a01b039091168152602090f35b508290346106c457826003193601126106c45761092d612669565b6109356127eb565b9161093e6131b8565b61ffff82169081156109b957507f4add57d97a7bf5035340ea1212aeeb3d4d3887eb1faf3821a8224c3a6956a10c93946109b39161097b856130d6565b906000526000805160206132a88339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b0390a180f35b8551630f7662c960e21b8152fd5b5050346106c45760203660031901126106c45760209061ffff6109e8612669565b16600052600080516020613268833981519152825280600020549051908152f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b509034610685578260031936011261068557610a676130e5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b038082166001810190828211610b605760ff84871c16908115610b53575b50610b4357169360ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e541615610b35575068ffffffffffffffffff19168317680100000000000000001768ff000000000000000019169055519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a180f35b8351632866815360e11b8152fd5b845163f92ee8a960e01b81528690fd5b9050828216111538610aaf565b634e487b7160e01b885260118752602488fd5b5050346106c457816003193601126106c4576000805160206132e88339815191525490516001600160a01b039091168152602090f35b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106c457816003193601126106c4578051610c3291610c0e826126f4565b60058252640312e302e360dc1b602083015251918291602083526020830190612834565b0390f35b508260031936011261068557610c4a6130e5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009182549160ff83831c1615906001600160401b0393848116801590816110e9575b60011490816110df575b1590816110d6575b506110c75767ffffffffffffffff1981166001178655826110a8575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081163381900361108c5750610cf7613146565b610cff613146565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055610dab610d2e612878565b610d36613146565b610d3e613146565b610d46613146565b60017f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022557fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad124980546001600160a01b03191633179055610da3613146565b610744613146565b8351634b4fd03b60e01b8152602095907f0000000000000000000000000000000000000000000000000000000000000000831687828681845afa918215611082578a9261104b575b508651631dcbf42b60e11b81529188838781855afa928315611041578b9361100a575b5087519360a085019081118582101761065b578852639c23bd3b60e01b845288840191825260ff9081168489019081527f00000000000000000000000000000000000000000000000000000000000000008616606086019081529382166080860190815289516301529f6160e21b815295516001600160e01b031916888701529251602486015251811660448501529151606484015251166084820152878160a48173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156110005791610f21939187938a91610fde575b5086518095819482936358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fac565b039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015610fd457610f9c575b50610f5d578380f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29268ff00000000000000001981541690555160018152a13880808380f35b8381813d8311610fcd575b610fb1818361270f565b81010312610fc957610fc290612f98565b5038610f54565b8580fd5b503d610fa7565b83513d88823e3d90fd5b610ffa91503d808c833e610ff2818361270f565b81019061302c565b38610ee5565b85513d8a823e3d90fd5b9092508881813d831161103a575b611022818361270f565b810103126106575761103390613000565b9138610e16565b503d611018565b88513d8d823e3d90fd5b9091508781813d831161107b575b611063818361270f565b810103126105f85761107490613000565b9038610df3565b503d611059565b87513d8c823e3d90fd5b82604491865191636345072160e11b8352820152336024820152fd5b68ffffffffffffffffff19166801000000000000000117855538610cba565b50825163f92ee8a960e01b8152fd5b90501538610c9e565b303b159150610c96565b849150610c8c565b50913461067e57602036600319011261067e575061070b6020923560005260008051602061328883398151915260205260ff6040600020541690565b508160031936011261068557611141612669565b6024359161114d6131b8565b61ffff80831690811561137857841561136857816000526000805160206132688339815191529160209280845287600020548061133f575081600052835285876000205586519161119d836126be565b630c7e33e160e11b8352838301918252878301878152885163077650fb60e51b815293516001600160e01b031916868501529151166024830152516044820152868160648173__$93083e246e55d56d98f3df2872cd16bfd0$__5af492831561133557611248938392899161131b575b5087516358cd21bf60e11b815294859283927f0000000000000000000000000000000000000000000000000000000000000000918401612fac565b0381347f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af18015610674576112bf575b5050915161ffff909216825260208201527fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d3264669080604081016109b3565b81813d8311611314575b6112d3818361270f565b81010312611310577fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d326466936113096109b392612f98565b5093611282565b8480fd5b503d6112c9565b61132f91503d808b833e610ff2818361270f565b3861120d565b86513d89823e3d90fd5b885163b55eeae960e01b815261ffff881681880190815260208101929092529081906040010390fd5b855163137063ef60e11b81528390fd5b8551630f7662c960e21b81528390fd5b612624565b5050346106c457816003193601126106c45760209060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb541690519015158152f35b50913461067e57602036600319011261067e57508051916113f0836126a3565b35908115159182810361142c57610c32935280519160f81b60208301526001825261141a826126f4565b51918291602083526020830190612834565b600080fd5b508290346106c457826003193601126106c45761144c612669565b6114546127eb565b9161145d6131b8565b61ffff82169081156109b957507f528b18a533e892b5401d1fb63597275df9d2bb45b13e7695c3147cd07b9746c393946109b39161149a856130d6565b906000526000805160206132c88339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b5034610685576020366003190112610685578035916001600160a01b038084168403611310577f000000000000000000000000000000000000000000000000000000000000000016330361152a57836103b3846131f1565b60249250519063c5aa615360e01b82523390820152fd5b5060a0366003190112610685576001600160401b0381358181116113105761156c903690840161274b565b6024928335938385116117475736602386011215611747578482013593611592856127fa565b9461159f8851968761270f565b808652602096838888019260051b8201019236841161065757848201925b8484106117215750505050506044356064359461ffff86169081870361142c57608435937f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361170e57826000526000805160206132688339815191528952838a60002054036116e757848b52600080516020613288833981519152895260ff8a8c2054166116d3575061167c846000526000805160206132888339815191526020526040600020600160ff19825416179055565b516116c357606061037995938a95937ff557dbbb087662f52c815f6c7ee350628a37a51eae9608ff840d996b65f87475938b519283528a8301528a820152a16103576128f0565b875163c504ea2960e01b81528490fd5b8951632d30ec0360e21b8152808701869052fd5b8951633cd8e72b60e11b815261ffff89168188019081526020810186905281906040010390fd5b8951631c26958960e01b81523381880152fd5b833582811161064f578a9161173c839289369188010161274b565b8152019301926115bd565b8680fd5b508290346106c457826003193601126106c457611766612669565b61176e6127eb565b916117776131b8565b61ffff82169081156109b957507f0fe301480713b2c2072ee91b3bcfcbf2c0014f0447c89046f020f0f80727003c93946109b3916117b4856130d6565b906000526000805160206132488339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b509060031960a03682011261068157611803612669565b9060249283356001600160401b0390818111610670576118269036908801612792565b906044358181116105f45761183e903690890161274b565b90608435977f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00976002895414611f5557600289556001600160a01b03937f000000000000000000000000000000000000000000000000000000000000000085163303611f3f57908b6118f881936119078a519b6118ba8d6126a3565b848d528b516304616c8f60e21b81526309945ff160e41b89820152338782015260648035604483015260a0908201529c8d94859460a4860190612834565b91848303016084850152612834565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af4938415611f355782988395611ee3575b5061193f602080980151612b56565b80511580611ed4575b15611b2b575050928a928592838989976119ba61ffff8f16968792836000526000805160206132688339815191528c5261198e6119888660002054612fd4565b9b612fd4565b94519c8d9b8c9a8b9a6312d729bd60e21b8c528b0152169088015260e0604488015260e4870190612834565b9360648601527f0000000000000000000000000000000000000000000000000000000000000000608486015260a48501521660c4830152039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611b2157611ab0575b5061ffff926060611a9584611aa9946000805160206133288339815191528460019c6000805160206133088339815191529b99519060008252848201523485820152a15b815197889716875281818801528451828801528401518387015283015160808087015260c0860190612834565b910151838203603f190160a0850152612834565b0390a15580f35b9391928185813d8311611b1a575b611ac8818361270f565b81010312610670576060611a9561ffff95611aa9946000805160206133288339815191528460019c611b086000805160206133088339815191529c612f98565b509c5050509450949650505092611a24565b503d611abe565b83513d8a823e3d90fd5b919394959250959697989a50511580611ea8575b15611d7e578651631a90a21960e01b8152937f000000000000000000000000000000000000000000000000000000000000000082169087868681855afa958d8715611d7357908993929197611d40575b50869291611bd3918b519889809481936358cd21bf60e11b83527f0000000000000000000000000000000000000000000000000000000000000000908c8401612fac565b03925af1948515611d36578c95611cff575b50817f00000000000000000000000000000000000000000000000000000000000000001690340390348211611ceb5790818d9796959493923b15610670578c96889660849561ffff8d519a8b998a98630b5624e160e11b8a527f0000000000000000000000000000000000000000000000000000000000000000169089015216908601528760448601521660648401525af18015611ce157611cc9575b50600080516020613308833981519152936060611a95856001999560008051602061332883398151915284611aa99761ffff9a51908e8252848201523485820152a1611a68565b611cd59096929661267a565b610fc957938538611c82565b84513d84823e3d90fd5b83601186634e487b7160e01b600052526000fd5b9094508681813d8311611d2f575b611d17818361270f565b8101031261065357611d2890612f98565b9338611be5565b503d611d0d565b88513d8e823e3d90fd5b9196509181813d8111611d6c575b611d58818361270f565b8101031261142c5751948791611bd3611b8f565b503d611d4e565b8a51903d90823e3d90fd5b9050611dc59350849286999799518095819482936358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fac565b039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611e9e57611e40575b5091611aa96001956060611a958560008051602061330883398151915297600080516020613328833981519152848d61ffff9a519060028252848201523485820152a1611a68565b9181838195933d8311611e97575b611e58818361270f565b81010312611747576001956060611a95611aa99360008051602061330883398151915297611e8861ffff98612f98565b50959750955050509550611df8565b503d611e4e565b83513d89823e3d90fd5b5061ffff8a166000526000805160206132488339815191528652611ecf87600020546130a4565b611b3f565b50611ede8b613051565b611948565b985093503d80838a3e611ef6818a61270f565b88019787818a03126106855780518581116106815789611f17918301612988565b98602082015186811161131057611f2e920161296e565b9338611930565b87513d84823e3d90fd5b509085519063c5aa615360e01b82523390820152fd5b508451633ee5aeb560e01b8152fd5b50913461067e57602036600319011261067e578235906001600160401b03821161067e5750611f9b602093611fa09236910161274b565b612b56565b9051905115158152f35b5050346106c45760203660031901126106c45760209061ffff611fcb612669565b166000526000805160206132c8833981519152825261070b81600020546130a4565b5050346106c457816003193601126106c457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5090346106855760209182600319360112610681576001600160a01b0391813583811690818103611747576120646131b8565b61206c6130e5565b3b156124ff577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8680a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e938454936120f960ff861615613129565b60ff199485166001178655303b1561174757825163011fa75760e71b81528781868183305af180156123f3576124ec575b50825163689f90c360e01b815282818681305afa9081156123f35788916124b7575b5015612186575b505050507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b82516324fb21db60e01b815282818681305afa9081156123f357906121d891899161249a575b5082167f0000000000000000000000000000000000000000000000000000000000000000831614613129565b8251630b4a1e8960e01b815282818681305afa9081156123f3579061222a91899161246d575b5082167f0000000000000000000000000000000000000000000000000000000000000000831614613129565b82516384acd1bb60e01b815282818681305afa80156123f3578890612435575b61227a915082167f0000000000000000000000000000000000000000000000000000000000000000831614613129565b825163da25b72560e01b815282818681305afa80156123f35788906123fd575b6122ca915082167f0000000000000000000000000000000000000000000000000000000000000000831614613129565b825163121d4a8560e31b815282818681305afa9081156123f35788916123b9575b508161231b927f000000000000000000000000000000000000000000000000000000000000000016911614613129565b8082518094631d1bfaa160e31b825281305afa9182156123b057508591612379575b50612370915060ff807f000000000000000000000000000000000000000000000000000000000000000016911614613129565b38808080612153565b905081813d83116123a9575b61238f818361270f565b81010312610681576123a361237091613000565b3861233d565b503d612385565b513d87823e3d90fd5b90508281813d83116123ec575b6123d0818361270f565b810103126106705751908082168203610670579061231b6122eb565b503d6123c6565b84513d8a823e3d90fd5b508281813d831161242e575b612413818361270f565b8101031261067057518181168103610670576122ca9061229a565b503d612409565b508281813d8311612466575b61244b818361270f565b81010312610670575181811681036106705761227a9061224a565b503d612441565b61248d9150843d8611612493575b612485818361270f565b810190612859565b386121fe565b503d61247b565b6124b19150843d861161249357612485818361270f565b386121ac565b90508281813d83116124e5575b6124ce818361270f565b81010312610670576124df9061301f565b3861214c565b503d6124c4565b6124f89097919761267a565b953861212a565b815162461bcd60e51b8152808401869052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b828591346106855760203660031901126106855781356001600160a01b03818116939184900361131057806000805160206132e88339815191525416927fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad124992835492831694338614159081612619575b506126045750506001600160a01b031916831790557f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b63e2a08e5d60e01b8252339082015260249150fd5b9050331415886125c8565b3461142c57600036600319011261142c576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6004359061ffff8216820361142c57565b6001600160401b03811161268d57604052565b634e487b7160e01b600052604160045260246000fd5b602081019081106001600160401b0382111761268d57604052565b606081019081106001600160401b0382111761268d57604052565b608081019081106001600160401b0382111761268d57604052565b604081019081106001600160401b0382111761268d57604052565b90601f801991011681019081106001600160401b0382111761268d57604052565b6001600160401b03811161268d57601f01601f191660200190565b81601f8201121561142c5780359061276282612730565b92612770604051948561270f565b8284526020838301011161142c57816000926020809301838601378301015290565b91909160408184031261142c5760408051916001600160401b039183018281118482101761268d576040528294813560ff8116810361142c578452602082013592831161142c576020926127e6920161274b565b910152565b60243590811515820361142c57565b6001600160401b03811161268d5760051b60200190565b60005b8381106128245750506000910152565b8181015183820152602001612814565b9060209161284d81518092818552858086019101612811565b601f01601f1916010190565b9081602091031261142c57516001600160a01b038116810361142c5790565b604051638da5cb5b60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156128e4576000916128c9575090565b6128e1915060203d811161249357612485818361270f565b90565b6040513d6000823e3d90fd5b604051906128fd826126d9565b6060808360008152600060208201528160408201520152565b60405190612923826126be565b606060408360008152600060208201520152565b9092919261294481612730565b91612952604051938461270f565b82948284528282011161142c57602061296c930190612811565b565b9080601f8301121561142c5781516128e192602001612937565b919060808382031261142c57604051906129a1826126d9565b819380518352602081015160208401526040810151916001600160401b039283811161142c57816129d391840161296e565b6040850152606082015192831161142c576060926127e6920161296e565b919060408382031261142c578251906001600160401b039182811161142c5781612a1c918601612988565b9360208101519083821161142c57019060608282031261142c5760405192612a43846126be565b8251845260208301516020850152604083015190811161142c57612a67920161296e565b604082015290565b6309945ff160e41b81526040602082018190526128e192910190612834565b917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690818103612b385750803b1561142c5761ffff60008094612b1e604080519889978896879563275e091560e21b875216600486015260248501526060604485015280516064850152602081015160848501520151606060a484015260c4830190612834565b03925af180156128e457612b2f5750565b61296c9061267a565b60449250604051916339dee99160e11b835260048301526024820152fd5b9060405191612b64836126a3565b6000835282815115612bcc5750600181015160fe8116612bb05760ff16151583525160018103612b915750565b604490604051906355c5b3e360e11b8252600482015260016024820152fd5b60405163f7a37b0760e01b815260ff9091166004820152602490fd5b925050565b90612be0602080920151612b56565b51612f175761ffff8216906000908282526000805160206132c88339815191528152604093612c11858420546130a4565b80612ef0575b612ed857612c2490613051565b15612ceb5750825163c23ee3c360e01b81526004810192909252602482018190527f0000000000000000000000000000000000000000000000000000000000000000604483015282826064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa928315612ce1578193612cb0575b50505090565b9091809350813d8311612cda575b612cc8818361270f565b8101031261067e575051388080612caa565b503d612cbe565b51903d90823e3d90fd5b8282939492526000805160206132488339815191528152612d0e828420546130a4565b15612e7657815163209d173960e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820195909552604481018490529381856064817f000000000000000000000000000000000000000000000000000000000000000085165afa948515612e69578495612e3a575b509080600492845193848092631a90a21960e01b82527f0000000000000000000000000000000000000000000000000000000000000000165afa928315612e3157508392612e03575b50508201809211612def575090565b634e487b7160e01b81526011600452602490fd5b90809250813d8311612e2a575b612e1a818361270f565b810103126106c457513880612de0565b503d612e10565b513d85823e3d90fd5b9094508181813d8311612e62575b612e52818361270f565b8101031261068157519381612d97565b503d612e48565b50505051903d90823e3d90fd5b8151631a90a21960e01b815291935090919080836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa938415612ecd57508193612cb05750505090565b51913d9150823e3d90fd5b845163251268db60e21b815260048101859052602490fd5b508383526000805160206132a88339815191528252612f11858420546130a4565b15612c17565b604051631a90a21960e01b8152915080826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156128e457600091612f6c575b50905090565b82813d8311612f91575b612f80818361270f565b8101031261067e5750518038612f66565b503d612f76565b51906001600160401b038216820361142c57565b9060ff612fcd60409295949560008552606060208601526060850190612834565b9416910152565b8060a01c612fe8576001600160a01b031690565b6024906040519063033b960d60e41b82526004820152fd5b519060ff8216820361142c57565b519063ffffffff8216820361142c57565b5190811515820361142c57565b9060208282031261142c5781516001600160401b03811161142c576128e1920161296e565b61ffff16806000526000805160206132c88339815191526020526130796040600020546130a4565b9081613083575090565b90506000526000805160206132a88339815191526020526128e16040600020545b80156130d057600181146130ca576024906040519063b998bad560e01b82526004820152fd5b50600190565b50600090565b156130e057600190565b600090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461311757565b604051633c64f99360e21b8152600490fd5b1561313057565b634e487b7160e01b600052600160045260246000fd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561317557565b604051631afcd79f60e31b8152600490fd5b6001600160a01b0381161561319f5761296c906131f1565b604051631e4fbdf760e01b815260006004820152602490fd5b6000805160206132e8833981519152546001600160a01b031633036131d957565b60405163118cdaa760e01b8152336004820152602490fd5b6000805160206132e883398151915280546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a356fed4cbc7742a1e11dcc33209ac33862ef146cfcb6d7f860df12df42105dfedb1c948c66ef0992b4bcc14f2551075db9459fc23bf706abb76034f1c66c1ba2846845e6aacb3f16e5b01c8b072a0ab4c38e919266014a45db863ee64a4580fb3e7e2e79d2e5e46f62be2ac831294e423b664f30320fb9ebaefd78a978cafe07c0f8c16ee6ac6bf7a8d7c37112a9426e00852b215ac4f5c50536beb6c95f1ba47b4af9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930079376a0dc6cbfe6f6f8f89ad24c262a8c6233f8df181d3fe5abb2e2442e8c738c3192e083c87c556db539f071d8a298869f487e951327b5616a6f85ae3da958ea264697066735822122059bdad9542fb301c5a401dc5ec7c26dca547abf82e0e0ca3cc87aced2c37698b64736f6c63430008130033",D6=c=>typeof c[0]=="string"||Array.isArray(c[0])||"_isInterface"in c[0];let B6=class $1 extends U0.ContractFactory{constructor(...e){if(D6(e))super(...e);else{const[a,i]=e;super(re,$1.linkBytecode(a),i)}}static linkBytecode(e){let a=v1;return a=a.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),a}getDeployTransaction(e,a,i,o,n,u,g){return super.getDeployTransaction(e,a,i,o,n,u,g||{})}deploy(e,a,i,o,n,u,g){return super.deploy(e,a,i,o,n,u,g||{})}connect(e){return super.connect(e)}static bytecode=v1;static abi=re;static createInterface(){return new L0.Interface(re)}static connect(e,a){return new L0.Contract(e,re,a)}};const oe=[{type:"constructor",inputs:[{name:"_token",type:"address",internalType:"address"},{name:"_mode",type:"uint8",internalType:"enum IManagerBase.Mode"},{name:"_chainId",type:"uint16",internalType:"uint16"},{name:"_rateLimitDuration",type:"uint64",internalType:"uint64"},{name:"_skipRateLimiting",type:"bool",internalType:"bool"}],stateMutability:"nonpayable"},{type:"function",name:"NTT_MANAGER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"attestationReceived",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"cancelOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"chainId",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"completeInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"completeOutboundQueuedTransfer",inputs:[{name:"messageSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"executeMsg",inputs:[{name:"sourceChainId",type:"uint16",internalType:"uint16"},{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"message",type:"tuple",internalType:"struct TransceiverStructs.NttManagerMessage",components:[{name:"id",type:"bytes32",internalType:"bytes32"},{name:"sender",type:"bytes32",internalType:"bytes32"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"getCurrentInboundCapacity",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getCurrentOutboundCapacity",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getInboundLimitParams",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"view"},{type:"function",name:"getInboundQueuedTransfer",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.InboundQueuedTransfer",components:[{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipient",type:"address",internalType:"address"}]}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getMode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getOutboundLimitParams",inputs:[],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.RateLimitParams",components:[{name:"limit",type:"uint72",internalType:"TrimmedAmount"},{name:"currentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"lastTxTimestamp",type:"uint64",internalType:"uint64"}]}],stateMutability:"pure"},{type:"function",name:"getOutboundQueuedTransfer",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}],outputs:[{name:"",type:"tuple",internalType:"struct IRateLimiter.OutboundQueuedTransfer",components:[{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"amount",type:"uint72",internalType:"TrimmedAmount"},{name:"txTimestamp",type:"uint64",internalType:"uint64"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"sender",type:"address",internalType:"address"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}]}],stateMutability:"view"},{type:"function",name:"getPeer",inputs:[{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct INttManager.NttManagerPeer",components:[{name:"peerAddress",type:"bytes32",internalType:"bytes32"},{name:"tokenDecimals",type:"uint8",internalType:"uint8"}]}],stateMutability:"view"},{type:"function",name:"getThreshold",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getTransceiverInfo",inputs:[],outputs:[{name:"",type:"tuple[]",internalType:"struct TransceiverRegistry.TransceiverInfo[]",components:[{name:"registered",type:"bool",internalType:"bool"},{name:"enabled",type:"bool",internalType:"bool"},{name:"index",type:"uint8",internalType:"uint8"}]}],stateMutability:"view"},{type:"function",name:"getTransceivers",inputs:[],outputs:[{name:"result",type:"address[]",internalType:"address[]"}],stateMutability:"pure"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"payable"},{type:"function",name:"isMessageApproved",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isMessageExecuted",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"messageAttestations",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"count",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"mode",inputs:[],outputs:[{name:"",type:"uint8",internalType:"enum IManagerBase.Mode"}],stateMutability:"view"},{type:"function",name:"nextMessageSequence",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"pause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"},{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"rateLimitDuration",inputs:[],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"removeTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setInboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"},{name:"chainId_",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setOutboundLimit",inputs:[{name:"limit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"},{name:"decimals",type:"uint8",internalType:"uint8"},{name:"inboundLimit",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setThreshold",inputs:[{name:"threshold",type:"uint8",internalType:"uint8"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"token",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"tokenDecimals",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"transceiverAttestedToMessage",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"index",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transfer",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"recipient",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"},{name:"shouldQueue",type:"bool",internalType:"bool"},{name:"transceiverInstructions",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"payable"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"unpause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"InboundTransferQueued",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"MessageAlreadyExecuted",inputs:[{name:"sourceNttManager",type:"bytes32",indexed:!0,internalType:"bytes32"},{name:"msgHash",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"MessageAttestedTo",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"index",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OutboundTransferCancelled",inputs:[{name:"sequence",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipient",type:"address",indexed:!1,internalType:"address"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OutboundTransferQueued",inputs:[{name:"queueSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"OutboundTransferRateLimited",inputs:[{name:"sender",type:"address",indexed:!0,internalType:"address"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"currentCapacity",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"PeerUpdated",inputs:[{name:"chainId_",type:"uint16",indexed:!0,internalType:"uint16"},{name:"oldPeerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"oldPeerDecimals",type:"uint8",indexed:!1,internalType:"uint8"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"peerDecimals",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"ThresholdChanged",inputs:[{name:"oldThreshold",type:"uint8",indexed:!1,internalType:"uint8"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverAdded",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"transceiversNum",type:"uint256",indexed:!1,internalType:"uint256"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransceiverRemoved",inputs:[{name:"transceiver",type:"address",indexed:!1,internalType:"address"},{name:"threshold",type:"uint8",indexed:!1,internalType:"uint8"}],anonymous:!1},{type:"event",name:"TransferRedeemed",inputs:[{name:"digest",type:"bytes32",indexed:!0,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"TransferSent",inputs:[{name:"recipient",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"amount",type:"uint256",indexed:!1,internalType:"uint256"},{name:"fee",type:"uint256",indexed:!1,internalType:"uint256"},{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"msgSequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"BurnAmountDifferentThanBalanceDiff",inputs:[{name:"burnAmount",type:"uint256",internalType:"uint256"},{name:"balanceDiff",type:"uint256",internalType:"uint256"}]},{type:"error",name:"CallerNotTransceiver",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CancellerNotSender",inputs:[{name:"canceller",type:"address",internalType:"address"},{name:"sender",type:"address",internalType:"address"}]},{type:"error",name:"CapacityCannotExceedLimit",inputs:[{name:"newCurrentCapacity",type:"uint72",internalType:"TrimmedAmount"},{name:"newLimit",type:"uint72",internalType:"TrimmedAmount"}]},{type:"error",name:"DeliveryPaymentTooLow",inputs:[{name:"requiredPayment",type:"uint256",internalType:"uint256"},{name:"providedPayment",type:"uint256",internalType:"uint256"}]},{type:"error",name:"DisabledTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"InboundQueuedTransferNotFound",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InboundQueuedTransferStillQueued",inputs:[{name:"digest",type:"bytes32",internalType:"bytes32"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidMode",inputs:[{name:"mode",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidPeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidPeerChainIdZero",inputs:[]},{type:"error",name:"InvalidPeerDecimals",inputs:[]},{type:"error",name:"InvalidPeerSameChainId",inputs:[]},{type:"error",name:"InvalidPeerZeroAddress",inputs:[]},{type:"error",name:"InvalidRecipient",inputs:[]},{type:"error",name:"InvalidRefundAddress",inputs:[]},{type:"error",name:"InvalidTargetChain",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"thisChain",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidTransceiverZeroAddress",inputs:[]},{type:"error",name:"MessageNotApproved",inputs:[{name:"msgHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NoEnabledTransceivers",inputs:[]},{type:"error",name:"NonRegisteredTransceiver",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotEnoughCapacity",inputs:[{name:"currentCapacity",type:"uint256",internalType:"uint256"},{name:"amount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"NumberOfDecimalsNotEqual",inputs:[{name:"decimals",type:"uint8",internalType:"uint8"},{name:"decimalsOther",type:"uint8",internalType:"uint8"}]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OutboundQueuedTransferNotFound",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"}]},{type:"error",name:"OutboundQueuedTransferStillQueued",inputs:[{name:"queueSequence",type:"uint64",internalType:"uint64"},{name:"transferTimestamp",type:"uint256",internalType:"uint256"}]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerNotRegistered",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RefundFailed",inputs:[{name:"refundAmount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"RetrievedIncorrectRegisteredTransceivers",inputs:[{name:"retrieved",type:"uint256",internalType:"uint256"},{name:"registered",type:"uint256",internalType:"uint256"}]},{type:"error",name:"StaticcallFailed",inputs:[]},{type:"error",name:"ThresholdTooHigh",inputs:[{name:"threshold",type:"uint256",internalType:"uint256"},{name:"transceivers",type:"uint256",internalType:"uint256"}]},{type:"error",name:"TooManyTransceivers",inputs:[]},{type:"error",name:"TransceiverAlreadyAttestedToMessage",inputs:[{name:"nttManagerMessageHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"TransceiverAlreadyEnabled",inputs:[{name:"transceiver",type:"address",internalType:"address"}]},{type:"error",name:"TransferAmountHasDust",inputs:[{name:"amount",type:"uint256",internalType:"uint256"},{name:"dust",type:"uint256",internalType:"uint256"}]},{type:"error",name:"UndefinedRateLimiting",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"expectedOwner",type:"address",internalType:"address"},{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"UnexpectedMsgValue",inputs:[]},{type:"error",name:"ZeroAmount",inputs:[]},{type:"error",name:"ZeroThreshold",inputs:[]}],T1="0x61016034620005cb57601f620065b138819003918201601f19168301916001600160401b038311848410176200057e5780849260a094604052833981010312620005cb578051906001600160a01b0382168203620005cb576020810151916002831015620005cb5760408201519161ffff83168303620005cb576060810151906001600160401b03821690818303620005cb576080015180159182158203620005cb5715809281620005c2575b508215620005a6575b505062000594576080527f8561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d8954620001147e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e15460ff8360081c1614620005d0565b7ffd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f5460005b60ff8360081c168110620003f157505060005b60ff8260081c1681106200035d5750604060ff6200016d92161115620005d0565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c166200034b576002600160401b03196001600160401b03821601620002ff575b50503060a05260c0526101009182526101209081526101404681523360e05260405191615f6393846200064e85396080518481816114d401528181611b1401528181611fb1015281816129e20152818161342d015281816139b5015281816140310152818161554f0152818161566201528181615722015281816158410152615909015260a05184614f95015260c0518481816102900152818161051401528181610561015281816128ce0152818161382501528181613eaf0152818161476d01528181614bac0152614c5c015260e05184611c590152518381816104ab0152818161202a015281816121560152818161291c015281816138a701528181613f2c0152614b3401525182818161137c01528181611e500152818161298501526133b701525181818161044901528181613aa1015281816140f90152818161463e0152614ae60152f35b6001600160401b0319166001600160401b039081179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880620001b6565b60405163f92ee8a960e01b8152600490fd5b60018101808211620003db575b60ff8360081c1681106200038a57506200038490620005ee565b6200014c565b620003d590620003cf6200039e84620005fe565b9054620003ab84620005fe565b9054600391821b1c6001600160a01b039081169390911b9190911c161415620005d0565b620005ee565b6200036a565b634e487b7160e01b600052601160045260246000fd5b620003fc81620005fe565b9054600382901b81901c6001600160a01b031660009081527f49bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f602052604090819020905192906001600160401b0360608501908111908511176200057e5760608401604052546200049e60ff821615801592838752602087019360ff808360081c1615928315875260101c16908160408a01529262000561575b5050620005d0565b60018060401b03600160ff6040870151161b87161615159051151592600092835b60ff8a60081c1681106200050f575b5050508262000509959492620004ee620003cf95620004f79414620005d0565b151514620005d0565b60ff60408188169201511610620005d0565b62000139565b6200051a81620005fe565b9054600391821b1c6001600160a01b039081169184901b85901c16146200054c576200054690620005ee565b620004bf565b5060019350849150829050620004ee620004ce565b9091508162000574575b50388062000496565b905015386200056b565b634e487b7160e01b600052604160045260246000fd5b60405163e543ef0560e01b8152600490fd5b15915081620005b9575b503880620000b5565b905038620005b0565b925038620000ac565b600080fd5b15620005d857565b634e487b7160e01b600052600160045260246000fd5b6000198114620003db5760010190565b7e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e18054821015620006375760005260206000200190600090565b634e487b7160e01b600052603260045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c80630271725014612c5f578063036de8af14612bd45780630677df5414612bb55780630900f0101461274e578063186ce612146126f957806319017175146126c35780631f97c9a8146124d1578063203e4a9b146121ce57806323d75e311461219a578063295a521214612140578063396c16b7146121045780633b97e856146120e95780633f4ba83a146120755780634b4fd03b14612017578063689f90c314611fd557806374aa7bfc14611f915780637c91863414611e025780638129fc1c14611bcd5780638413bcba14611ab15780638456cb5914611a3457806386e11ffa14611a0f57806389c619dd146119af5780638da5cb5b146119795780638e3ba8c9146119425780638fd3ab80146118035780639057412d14611686578063961b94d01461162857806397c35146146113a05780639a8a0592146113615780639d782454146111265780639f86029c14610e105780639fd0506d14610dda578063b150fc5514610c2d578063b187bd2614610bff578063b293f97f14610b69578063b4d591bb14610aa8578063c0b07bde14610a62578063c128d170146109e6578063d788c1471461095b578063da4856a114610928578063e5a986031461087c578063e75235b81461084e578063f2fde38b14610709578063f5cfec18146106e6578063f7514fbc146102bf578063fc0c546a1461027a5763fd96063c1461022257600080fd5b346102775760203660031901126102775760606102406004356154ad565b6040805182516001600160481b031681526020808401516001600160401b031690820152918101516001600160a01b031690820152f35b80fd5b50346102775780600319360112610277576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5034610277576020366003190112610277576004356001600160401b03811681036106e2576102ec615cfd565b6002600080516020615dce83398151915254146106d0576001600160401b038116600052600080516020615eae83398151915260205260406000206040519061033482612d2f565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a083015260405190818560048301549261039b84613755565b80845293600181169081156106ae575060011461066a575b506103c092500382612db6565b60c08201526001600160401b03606082015116156106495760a08101516001600160a01b031633810361061c5750606061048c60407ff80e572ae1b63e2449629b6c7d783add85c36473926f216077f17ee002bcfd07936001600160401b038616600052600080516020615eae833981519152602052610442826000206137a6565b015161046d7f0000000000000000000000000000000000000000000000000000000000000000615a4d565b610475614c36565b906001600160401b0360ff82169160081c16615b6c565b926001600160401b0360405191168152336020820152836040820152a17f000000000000000000000000000000000000000000000000000000000000000060028110156106065780610556575060405163a9059cbb60e01b602082015233602482015260448101919091526105419061051281606481015b03601f198101835282612db6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316614438565b6001600080516020615ece8339815191525580f35b600181036105ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156105e5576040516340c10f1960e01b815233600482015260248101929092526000908290604490829084905af180156105d9576105ca575b50610541565b6105d390612d1c565b386105c4565b6040513d6000823e3d90fd5b600080fd5b6040516366001a8960e01b815260ff9091166004820152602490fd5b634e487b7160e01b600052602160045260246000fd5b60405163ceb40a8560e01b81523360048201526001600160a01b03919091166024820152604490fd5b0390fd5b604051635feafa3160e11b81526001600160401b0383166004820152602490fd5b60040187525060208620909186915b8183106106925750509060206103c092820101386103b3565b6020919350806001915483858801015201910190918392610679565b9050602092506103c094915060ff191682840152151560051b820101386103b3565b6040516309e3d0f360e11b8152600490fd5b5080fd5b50346102775780600319360112610277576020610701615496565b604051908152f35b5034610277576020366003190112610277576001600160a01b03600435818116908181036108195761074a9061073d615cc4565b610745615cc4565b615c50565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed97891825460ff600080516020615e4e8339815191525416808203610830575050908391825b845481101561082c578460005281817f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd1015416803b1561082857848091602460405180948193632c7b84dd60e11b83528960048401525af190811561081d578591610805575b505061080090612ff6565b61078f565b61080e90612d1c565b6108195783386107f5565b8380fd5b6040513d87823e3d90fd5b8480fd5b8380f35b604492506040519163d2a13a2960e01b835260048301526024820152fd5b5034610277578060031936011261027757602060ff600080516020615d4e8339815191525416604051908152f35b50346102775760203660031901126102775760043560ff8116908181036105e5576108a5615cc4565b8115610916577f2a855b929b9a53c6fb5b5ed248b27e502b709c088e036a5aa17620c8fc5085a99161091060ff92600080516020615d4e833981519152805493851985161790556108f4613275565b6040805160ff9490951684168552921660208401528291820190565b0390a180f35b60405163831761d760e01b8152600490fd5b50346102775761093736612e39565b906002600080516020615dce83398151915254146106d0576109589261333e565b80f35b50346102775760203660031901126102775761ffff610978612cb2565b610980614d41565b5016600052600080516020615e6e8339815191526020526109e26109a76040600020615071565b6040519182918291909160406001600160401b038160608401956001600160481b038082511686526020820151166020860152015116910152565b0390f35b50346102775760203660031901126102775761ffff90610a04612cb2565b906020604051610a1381612d65565b828152015216600052600080516020615d2e83398151915260205260408060002060ff8251610a4181612d65565b60208260018554958685520154169101908152835192835251166020820152f35b50346102775780600319360112610277576109e2604051610a8281612d65565b60058152640312e312e360dc1b6020820152604051918291602083526020830190612cf7565b50346102775780600319360112610277576040518091600080516020615e0e83398151915290815480845260208094019081938352600080516020615d6e83398151915290835b818110610b4c5750505084610b05910385612db6565b60405193838594850191818652518092526040850193925b828110610b2c57505050500390f35b83516001600160a01b031685528695509381019392810192600101610b1d565b82546001600160a01b031684529286019260019283019201610aef565b5060c036600319011261027757610b7e612cc3565b906084359182151583036106e25760a4356001600160401b03928382116102775750610bae903690600401612df2565b610bb6615cfd565b6002600080516020615dce83398151915254146106d057602093610be4926064359060443590600435613e93565b6001600080516020615ece8339815191525560405191168152f35b503461027757806003193601126102775760206002600080516020615dce8339815191525414604051908152f35b503461027757806003193601126102775760405180600080516020615e0e83398151915280548084526020809401918552600080516020615d6e83398151915290855b818110610dbd5750505081610c86910382612db6565b8051610c9181612eba565b91610c9f6040519384612db6565b818352601f19610cae83612eba565b01855b818110610da1575050845b828110610d1d575050506040519180830190808452825180925280604085019301945b828110610cec5784840385f35b85518051151585528083015115158584015260409081015160ff169085015294810194606090930192600101610cdf565b929492610d99906001600160a01b03610d368285613005565b5116600052600080516020615e8e8339815191528652604060002060405190610d5e82612d4a565b5460ff9081811615158352818160081c1615158984015260101c166040820152610d888289613005565b52610d938188613005565b50612ff6565b949294610cbc565b8590610dae979597614d41565b82828a01015201959395610cb1565b82546001600160a01b031684529285019260019283019201610c70565b5034610277578060031936011261027757600080516020615eee833981519152546040516001600160a01b039091168152602090f35b5034610277576020806003193601126106e2576001600160a01b0390600435828116919082810361082857610e43615cc4565b82156111145782600052600080516020615e8e83398151915280835260ff918260406000205416156110fb57846000528184528260406000205460081c16156110e25784600052818452604060002061ff001990818154169055600080516020615e4e833981519152928354858160081c169283156110ce5761ff0060001980950160081b169116178455600080516020615dee8339815191528054918860005287526001600160401b03600192610f1082858a60406000205460101c161b198316169282168310614d24565b6001600160401b0319161790558897600080516020615e0e8339815191528054938b5b858110610fc8575b505050505050918091610f836040969594610f767f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f99614d24565b610f7e614d60565b614e4b565b5460081c16600080516020615d4e8339815191529081548381168210610fba575b50505416908351928352820152a1610958613275565b60ff19161781553880610fa4565b838b610fd383613244565b929054600393841b1c1614610ff15750610fec90612ff6565b610f33565b9590918093959798999a9b9c5081019081116110ba57906110258461101861104494613244565b905490891b1c1691613244565b90919082549060031b9160018060a01b03809116831b921b1916179055565b825480156110a657946040999794610f83948a9894610f76947f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f9e9c99019261108c84613244565b81939154921b1b1916905555998496979899839650610f3b565b634e487b7160e01b8c52603160045260248cfd5b634e487b7160e01b8d52601160045260248dfd5b634e487b7160e01b8b52601160045260248bfd5b6040516307d86e9160e21b815260048101869052602490fd5b604051630d583f4760e41b815260048101869052602490fd5b604051632f44bd7760e01b8152600490fd5b50346102775761113536612e39565b9033600052600080516020615e8e83398151915260209080825260ff60406000205460081c161561134957600080516020615dce8339815191529160028354146106d05761ffff861680600052600080516020615d2e8339815191528252846040600020540361132b575060405163b3f07bbd60e01b8152918183806111bf898b60048401613314565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156113205788936112f1575b503360005280825261120360ff60406000205460101c168461320e565b6112d85760606112b793927f35a2101eaac94b493e0dfca061f9a7f087913fde8678e7cde0aca9897edba0e592336000528082528a6001600160401b03610100600160481b03604082600160ff836000205460101c161b1693898152600080516020615d8e833981519152875220928354928360081c161760081b1690610100600160481b03191617905533600052815260ff60406000205460101c166040519185835233908301526040820152a16131a1565b6112bf578480f35b546002146106d0576112d09261333e565b388080808480f35b604051631089c4a160e11b815260048101849052602490fd5b9092508181813d8311611319575b6113098183612db6565b810103126105e5575191386111e6565b503d6112ff565b6040513d8a823e3d90fd5b6044908560405191635788c0fd60e11b835260048301526024820152fd5b60405163a0ae911d60e01b8152336004820152602490fd5b5034610277578060031936011261027757602060405161ffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b506020366003190112610277576001600160401b0360043516908160043503610277576113cb615cfd565b6002600080516020615dce83398151915254146106d05781600052600080516020615eae8339815191526020526040600020916040519261140b84612d2f565b805484526001810154602085015261ffff60028201546001600160481b03811660408701526001600160401b038160481c16606087015260881c16608085015260018060a01b0360038201541660a08501526040518381949060048401549361147385613755565b808552946001811690811561160457506001146115bf575b505061149992500383612db6565b60c083019182526001600160401b03606084015116156115a7576114ca6001600160401b0360608501511642613194565b6001600160401b037f0000000000000000000000000000000000000000000000000000000000000000161161157c579161155991602093600052600080516020615eae833981519152845261152260406000206137a6565b6001600160481b036040830151169161ffff608082015116815190868301519260a0600180821b0391015116935194600435614632565b6001600080516020615ece833981519152556001600160401b0360405191168152f35b6044906001600160401b036060850151166040519163c06cf05f60e01b835260048301526024820152fd5b60249060405190635feafa3160e11b82526004820152fd5b60049193949250018252602082205b8183106115e857505090602061149992820101388061148b565b60209193508060019154838589010152019101909184926115ce565b9150506020925061149994915060ff191682840152151560051b820101388061148b565b5060603660031901126102775761163d612cc3565b604435611648615cfd565b6002600080516020615dce83398151915254146106d05760209181611559926040519261167484612d65565b60018452853681860137600435613808565b5034610277576040366003190112610277576116a0612cb2565b6024356001600160401b0381116117ff576116bf903690600401612df2565b91604051918290600080516020615e0e833981519152828154918287526020809701908652600080516020615d6e83398151915292865b888282106117e05750505061170d92500383612db6565b826117378351966040519788928392635b10743960e11b8452604060048501526044840190612cf7565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156117d55783949561177094926117b1575b50613039565b604051926040840160408552835180915285606086019401915b81811061179d5750505082938301520390f35b82518552938601939186019160010161178a565b6117ce9192503d8087833e6117c68183612db6565b810190612f24565b903861176a565b6040513d85823e3d90fd5b85546001600160a01b03168452600195860195889550930192016116f6565b8280fd5b503461027757806003193601126102775761181c614f92565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b0380821690600182019181831161192c5760ff8460401c1690811561191f575b5061190d57600160401b911680926001600160481b03191617179081835560ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e5416156118fb577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2926020926118db613275565b6118e3614d60565b68ff000000000000000019169055604051908152a180f35b604051632866815360e11b8152600490fd5b60405163f92ee8a960e01b8152600490fd5b9050818316111538611866565b634e487b7160e01b600052601160045260246000fd5b50346102775760403660031901126102775760243560ff811681036105e55761196f60209160043561320e565b6040519015158152f35b5034610277578060031936011261027757600080516020615dae833981519152546040516001600160a01b039091168152602090f35b503461027757602036600319011261027757611a046001600160401b036020926040600080516020615dee83398151915254916004358152600080516020615d8e8339815191528652205460081c1616615a8e565b60ff60405191168152f35b5034610277578060031936011261027757611a28614d41565b506109e26109a7615029565b5034610277578060031936011261027757600080516020615dae83398151915254611a67906001600160a01b0316614fd6565b600080516020615dce83398151915260028154146106d057600290557f0e2fb031ee032dc02d8011dc50b816eb450cf856abd8261680dac74f72165bd2602060405160018152a180f35b503461027757602036600319011261027757600435611ace615cfd565b6002600080516020615dce83398151915254146106d057611aee816154ad565b602081016001600160401b03908181511615611bb457611b118282511642613194565b827f00000000000000000000000000000000000000000000000000000000000000001611611b92578385527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b8602052604080862086815560010186905583015183518691610541916001600160481b0316906001600160a01b031687614adb565b516040516301cb739d60e71b8152600481019490945216602483015250604490fd5b604051630301bcaf60e61b815260048101859052602490fd5b508060031936011261027757611be1614f92565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c1615906001600160401b03811680159081611dfa575b6001149081611df0575b159081611de7575b5061190d5767ffffffffffffffff198116600117835581611dc8575b50611c57615c0f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381163303611d9f575034611d8d57611c96615c0f565b611c9e615c0f565b611ca6615c0f565b6001600080516020615dce83398151915255600080516020615eee83398151915280546001600160a01b03191633179055611cdf615c0f565b611ce7615c0f565b611cf033615c50565b611cf8615c0f565b611d00615c0f565b6001600080516020615ece83398151915255611d37610100600160481b0360ff611d30611d2b614c36565b615b35565b16176150d1565b611d3f613275565b611d47614d60565b611d4f575080f35b68ff00000000000000001981541690557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b60405163bd28e88960e01b8152600490fd5b604051636345072160e11b81526001600160a01b03919091166004820152336024820152604490fd5b68ffffffffffffffffff19166801000000000000000117825538611c4e565b90501538611c32565b303b159150611c2a565b839150611c20565b503461027757608036600319011261027757611e1c612cb2565b60243560443560ff81168091036105e557611e35615cc4565b61ffff809316928315611f7f578215611f6d578115611f5b577f0000000000000000000000000000000000000000000000000000000000000000168314611f49577f1456404e7f41f35c3daac941bb50bad417a66275c3040061b4287d787719599d9160809184600052600080516020615d2e833981519152918260205260ff604060002081600160405192611eca84612d65565b805484520154169460208201958652886000526020526001604060002084815501848319825416179055611f2c611f0b611f02614c36565b80606435615bc7565b89600052600080516020615e6e8339815191526020526040600020906152cf565b51935116604051938452602084015260408301526060820152a280f35b60405163101b8f9560e11b8152600490fd5b60405163ade64f0b60e01b8152600490fd5b60405163f839a0cb60e01b8152600490fd5b60405163100b0f2760e11b8152600490fd5b503461027757806003193601126102775760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b5034610277578060031936011261027757602060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb54166040519015158152f35b50346102775780600319360112610277577f00000000000000000000000000000000000000000000000000000000000000009060028210156120615760208260ff60405191168152f35b634e487b7160e01b81526021600452602490fd5b503461027757806003193601126102775761208e615cc4565b600080516020615dce83398151915260028154036120d757600190557fe11c2112add17fb763d3bd59f63b10429c3e11373da4fb8ef6725107a2fdc4b06020604051838152a180f35b604051637e38d1d360e11b8152600490fd5b50346102775780600319360112610277576020611a04614c36565b50346102775760203660031901126102775760ff60406020926004358152600080516020615d8e83398151915284522054166040519015158152f35b50346102775780600319360112610277576040517f0000000000000000000000000000000000000000000000000000000000000000600281101561218657602092508152f35b634e487b7160e01b83526021600452602483fd5b503461027757806003193601126102775760206001600160401b03600080516020615e2e8339815191525416604051908152f35b5034610277576020806003193601126106e2576004356001600160a01b03811691828203610819576121fe615cc4565b82156111145782600052600080516020615e8e8339815191529182825260ff9081604060002054166000146123a75784600052838352604060002061010061ff00198254161790555b600080516020615e0e83398151915290815491600160401b831015612391578261102591600161227995019055613244565b600080516020615e4e83398151915292835461ff0061229c848360081c16614d13565b60081b169061ff00191617809455600080516020615dee83398151915280546001600160401b0390818116918860005284875260018660406000205460101c161b1682179182146123785767ffffffffffffffff19161790557ff05962b5774c658e85ed80c91a75af9d66d2af2253dda480f90bce78aff5eda594606094909390929091612328614d60565b84600052825280600080516020615d4e833981519152805482811615612369575b5054169260405194855260081c16908301526040820152a1610958613275565b60ff1916600117815538612349565b604051638d68f84d60e01b815260048101899052602490fd5b634e487b7160e01b600052604160045260246000fd5b600080516020615e4e8339815191528281541660408110156124bf57604051906123d082612d4a565b6001825285820190600182526040830190815288600052878752604060002092511515918662ff000061ff0086549351151560081b16935160101b1693169062ffffff19161717179055805483612428818316614d13565b169060ff19161790557f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed978805490600160401b82101561239157600182018082558210156124a9576000527f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd10180546001600160a01b03191686179055612247565b634e487b7160e01b600052603260045260246000fd5b60405163891684c360e01b8152600490fd5b5034610277576020366003190112610277576004356001600160401b0381168091036106e257606060c060405161250781612d2f565b84815284602082015284604082015284838201528460808201528460a08201520152600052600080516020615eae83398151915260205260406000206040519061255082612d2f565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a0830152604051838194906004840154936125b885613755565b808552946001811690811561269f575060011461265a575b50506125de92500383612db6565b60c081019182526109e26040519283926020845280516020850152602081015160408501526001600160481b0360408201511660608501526001600160401b03606082015116608085015261ffff60808201511660a085015260a0600180821b039101511660c08401525160e080840152610100830190612cf7565b60049193949250018252602082205b8183106126835750509060206125de9282010138806125d0565b6020919350806001915483858901015201910190918492612669565b915050602092506125de94915060ff191682840152151560051b82010138806125d0565b5034610277576020366003190112610277576126dd615cc4565b6109586126f46126eb614c36565b80600435615bc7565b6150d1565b503461027757604036600319011261027757610958612716612cc3565b61271e615cc4565b61ffff61272c6126eb614c36565b9116600052600080516020615e6e8339815191526020526040600020906152cf565b5034610277576020806003193601126106e2576001600160a01b03600435818116908181036108285761277f615cc4565b612787614f92565b3b15612b5a577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e9182549161281460ff841615614d24565b60ff199283166001178455303b156108285760405163011fa75760e71b8152858160048183305af18015612b0f57612b47575b5060405163689f90c360e01b81528281600481305afa908115612b0f578691612b1a575b50156128a3575b50507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b604051637e062a3560e11b81528281600481305afa908115612b0f578691612ad1575b50816128f6927f000000000000000000000000000000000000000000000000000000000000000016911614614d24565b6040516314ad290960e11b81528181600481305afa90811561081d578591612a9b575b507f0000000000000000000000000000000000000000000000000000000000000000906002821015612a87576002811015612a87576129589114614d24565b604051634d4502c960e11b81528181600481305afa801561081d578590612a51575b6129ad915061ffff807f000000000000000000000000000000000000000000000000000000000000000016911614614d24565b604051631d2a9eff60e21b8152908082600481305afa90811561081d578591612a11575b50612a0a91506001600160401b03807f000000000000000000000000000000000000000000000000000000000000000016911614614d24565b3880612872565b905081813d8311612a4a575b612a278183612db6565b8101031261081957516001600160401b038116810361081957612a0a90386129d1565b503d612a1d565b508181813d8311612a80575b612a678183612db6565b8101031261082857612a7b6129ad9161332f565b61297a565b503d612a5d565b634e487b7160e01b86526021600452602486fd5b90508181813d8311612aca575b612ab28183612db6565b81010312610828575160028110156108285738612919565b503d612aa8565b90508281813d8311612b08575b612ae88183612db6565b81010312612b045751908082168203612b0457906128f66128c6565b8580fd5b503d612ade565b6040513d88823e3d90fd5b612b3a9150833d8511612b40575b612b328183612db6565b810190614420565b3861286b565b503d612b28565b612b5390959195612d1c565b9338612847565b60405162461bcd60e51b815260048101849052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b503461027757602036600319011261027757602061196f6004356131a1565b5034610277576020366003190112610277576004356001600160a01b03818116918290036117ff57612c1681600080516020615dae8339815191525416614fd6565b600080516020615eee83398151915280546001600160a01b031981168417909155167f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b50346102775760203660031901126102775761070161046d612cad604060209461ffff612c8a612cb2565b612c92614d41565b50168152600080516020615e6e833981519152865220615071565b615543565b6004359061ffff821682036105e557565b6024359061ffff821682036105e557565b60005b838110612ce75750506000910152565b8181015183820152602001612cd7565b90602091612d1081518092818552858086019101612cd4565b601f01601f1916010190565b6001600160401b03811161239157604052565b60e081019081106001600160401b0382111761239157604052565b606081019081106001600160401b0382111761239157604052565b604081019081106001600160401b0382111761239157604052565b608081019081106001600160401b0382111761239157604052565b60a081019081106001600160401b0382111761239157604052565b90601f801991011681019081106001600160401b0382111761239157604052565b6001600160401b03811161239157601f01601f191660200190565b81601f820112156105e557803590612e0982612dd7565b92612e176040519485612db6565b828452602083830101116105e557816000926020809301838601378301015290565b90600319906060828401126105e55760043561ffff811681036105e5579260243592604435916001600160401b03918284116105e55760609084830301126105e55760405192612e8884612d4a565b806004013584526024810135602085015260448101359283116105e557612eb29201600401612df2565b604082015290565b6001600160401b0381116123915760051b60200190565b519060ff821682036105e557565b81601f820112156105e5578051612ef581612dd7565b92612f036040519485612db6565b818452602082840101116105e557612f219160208085019101612cd4565b90565b9060209081838203126105e55782516001600160401b03938482116105e557019080601f830112156105e5578151612f5b81612eba565b94604090612f6b82519788612db6565b828752858088019360051b860101948486116105e557868101935b868510612f9857505050505050505090565b84518381116105e55782019084601f1983890301126105e557845190612fbd82612d65565b612fc88a8401612ed1565b825285830151918583116105e557612fe7898c80969581960101612edf565b83820152815201940193612f86565b600019811461192c5760010190565b80518210156124a95760209160051b010190565b9060406020612f219360ff81511684520151918160208201520190612cf7565b90929180519161304883612eba565b9260409161305883519586612db6565b818552601f1961306783612eba565b01602090368288013760009788955b84871061308857505050505050509190565b909192939495988685613101868d6130a760018060a01b039188613005565b511680600052600080516020615e8e83398151915282526130d260ff866000205460101c1689613005565b51908551808095819463b5634c7360e01b835261ffff60049916898401526024998a8401526044830190613019565b03915afa90811561318957908d91600091613157575b5061312381928d613005565b5283018093116131445750506131399099612ff6565b959493929190613076565b601190634e487b7160e01b600052526000fd5b91508782813d8311613182575b61316e8183612db6565b810103126102775750518c90613123613117565b503d613164565b8a513d6000823e3d90fd5b9190820391821161192c57565b6001600160401b039060ff6131fa81600080516020615d4e8339815191525416938493600080516020615dee8339815191525490600052600080516020615d8e83398151915260205260406000205460081c1616615a8e565b1610159081613207575090565b9050151590565b906001600160401b0391600052600080516020615d8e833981519152602052600160ff60406000205460081c92161b1616151590565b600080516020615e0e83398151915280548210156124a957600052600080516020615d6e8339815191520190600090565b60ff600080516020615d4e833981519152541660405161329481612d65565b60ff600080516020615e4e83398151915254818116835260081c168060208301528083116132cf57505160ff166132c85750565b1561091657565b82604491604051916313c3d1b160e01b835260048301526024820152fd5b9060606040612f219380518452602081015160208501520151918160408201520190612cf7565b60409061ffff612f21949316815281602082015201906132ed565b519061ffff821682036105e557565b91908161334b9184613635565b9190916136305760408091015191815192635399ded560e11b8452608084806133806020948560048401526024830190612cf7565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af4938415613625576000946135b0575b5061ffff9283606086015116847f0000000000000000000000000000000000000000000000000000000000000000168082036135955750506133e8614c36565b816134118751928061340c816001600160401b03968760ff82169160081c16615b6c565b615bc7565b960151908160a01c61357e576001600160a01b039182169560007f0000000000000000000000000000000000000000000000000000000000000000831615613577575061345c614d41565b508816600052600080516020615e6e8339815191528452613482612cad84600020615071565b61348c8882615b00565b81808960081c169160081c16105b6134bf57505050506134af6134bd9484615836565b6134b883615716565b614adb565b565b7f7f63c9251d82a933210c2b6d0b0f116252c3c116788120e64e8e8215df6f316297509561355b83959694976001939451926134fa84612d4a565b6001600160481b038091168452898401908242168252888501978852896000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b88b52886000209451166001600160481b0319855416178455511682615a25565b019151166001600160601b0360a01b82541617905551908152a1565b905061349a565b50602491519063033b960d60e41b82526004820152fd5b6044925191631ee5902560e11b835260048301526024820152fd5b6080949194813d821161361d575b816135cb60809383612db6565b810103126106e2578351916135df83612d80565b8151906001600160481b038216820361027757508252848101518583015283810151848301526136119060600161332f565b606082015292386133a8565b3d91506135be565b83513d6000823e3d90fd5b505050565b60405163b3f07bbd60e01b81529193926020918391829161365a919060048401613314565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105d9576000916136eb575b5061368c816131a1565b156136d35761369a8161371c565b92836136a857509150600090565b7f4069dff8c9df7e38d2867c0910bd96fd61787695e5380281148c04932d02bef2600080a360009190565b60249060405190630451c4fb60e41b82526004820152fd5b906020823d8211613714575b8161370460209383612db6565b8101031261027757505138613682565b3d91506136f7565b600052600080516020615d8e8339815191526020526040600020805460ff811661374e5760ff19166001179055600090565b5050600190565b90600182811c92168015613785575b602083101461376f57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613764565b81811061379a575050565b6000815560010161378f565b6004600091828155826001820155826002820155826003820155016137cb8154613755565b806137d557505050565b82601f82116001146137e657505055565b9091808252613804601f60208420940160051c84016001850161378f565b5555565b9194939290946000958315613e81578115613e6f578215613e5d577f000000000000000000000000000000000000000000000000000000000000000061384e3082614cb6565b9061389160018060a01b03821696604051906323b872dd60e01b602083015233602483015230604483015260648201526064815261388b81612d9b565b87614438565b6138a48261389f3084614cb6565b613194565b957f00000000000000000000000000000000000000000000000000000000000000006002811015613e49579060018b9214613dc2575b5050505061ffff8116600052600080516020615d2e83398151915260205260ff600160406000200154168015611f5b5761391d613915614c36565b918287615bc7565b906001600160401b038260081c1661393a60ff8416928383615b6c565b808803613d9b575061395c61396191613954611d2b614c36565b938491615b6c565b6155ee565b98600080516020615e2e83398151915254966001600160401b0380891614613d875767ffffffffffffffff1988166001600160401b03898116600101811691909117600080516020615e2e833981519152557f00000000000000000000000000000000000000000000000000000000000000001615613d81576139e2614d41565b506139ee612cad615029565b613a0b8c610100600160481b0360ff87169160081b161782615b00565b6001600160401b03808d610100600160481b0360ff88169160081b161760081c169160081c16105b613d5b578180613d53575b613a8757505082612f219899610100600160481b0360ff84613a6b82613a779716848660081b1617615656565b169160081b16176158fe565b6001600160401b03339516614632565b61ffff95979896919a506001600160481b03939250613ac57f0000000000000000000000000000000000000000000000000000000000000000615a4d565b613acd615496565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a260405196613b1a88612d2f565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615eae83398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b0319825416178155613bb56001600160401b0360608701511682615a25565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613d3f57613c168354613755565b601f8111613d04575b50602090601f8311600114613c9857906001600160401b03959683613c8d575b50508160011b916000199060031b1c19161790555b7f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613c89346145db565b1690565b015190503880613c3f565b95601f19831684885260208820975b818110613cec5750916001600160401b03969791846001959410613cd3575b505050811b019055613c54565b015160001960f88460031b161c19169055388080613cc6565b83830151895560019098019760209384019301613ca7565b613d2f9084835260208320601f850160051c81019160208610613d35575b601f0160051c019061378f565b38613c1f565b9091508190613d22565b634e487b7160e01b81526041600452602490fd5b506000613a3e565b604490613d66615496565b90604051916326fb55dd60e01b835260048301526024820152fd5b81613a33565b634e487b7160e01b82526011600452602482fd5b87613da860449282613194565b604051916338f831a560e11b835260048301526024820152fd5b803b156106e2578190602460405180948193630852cd8d60e31b83528c60048401525af18015613e3e57613e29575b50613dfd903090614cb6565b808203613e0b5788816138da565b60449250604051916302156a8f60e01b835260048301526024820152fd5b98613e37613dfd929a612d1c565b9890613df1565b6040513d8c823e3d90fd5b634e487b7160e01b8b52602160045260248bfd5b60405163717f139360e11b8152600490fd5b604051634e46966960e11b8152600490fd5b604051631f2a200560e01b8152600490fd5b95949392919060008715613e81578215613e6f578315613e5d577f0000000000000000000000000000000000000000000000000000000000000000613ed83082614cb6565b90613f1b60018060a01b0382169a604051906323b872dd60e01b6020830152336024830152306044830152606482015260648152613f1581612d9b565b8b614438565b613f298261389f3084614cb6565b997f0000000000000000000000000000000000000000000000000000000000000000600281101561440c576001146143a2575b50505061ffff8216600052600080516020615d2e83398151915260205260ff600160406000200154168015611f5b57613f9e613f96614c36565b91828b615bc7565b916001600160401b038360081c16613fbb60ff8516938483615b6c565b808c03614395575061395c613fdd91613fd5611d2b614c36565b948591615b6c565b99600080516020615e2e83398151915254976001600160401b03808a16146143815767ffffffffffffffff1989166001600160401b038a8116600101811691909117600080516020615e2e833981519152557f0000000000000000000000000000000000000000000000000000000000000000161561437b5761405e614d41565b508b6001600160401b0380614074612cad615029565b9260081b610100600160481b031660ff8816176140918185615b00565b60081c169160081c16105b811580614374575b6143695781614361575b506140df57505082612f219899610100600160481b0360ff613a7794169160081b16176140da81615656565b6158fe565b61ffff95979896919a506001600160481b0393925061411d7f0000000000000000000000000000000000000000000000000000000000000000615a4d565b614125615496565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a26040519661417288612d2f565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615eae83398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b031982541617815561420d6001600160401b0360608701511682615a25565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613d3f5761426e8354613755565b601f8111614331575b50602090601f83116001146142df57906001600160401b03959683613c8d5750508160011b916000199060031b1c19161790557f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613c89346145db565b95601f19831684885260208820975b8181106143195750916001600160401b03969791846001959410613cd357505050811b019055613c54565b838301518955600190980197602093840193016142ee565b61435b9084835260208320601f850160051c81019160208610613d3557601f0160051c019061378f565b38614277565b9050386140ae565b604483613d66615496565b50806140a4565b8261409c565b634e487b7160e01b83526011600452602483fd5b8b613da860449282613194565b803b156108195783809160248d6040519485938492630852cd8d60e31b845260048401525af18015614401576143ec575b506143df903090614cb6565b808203613e0b5780613f5c565b926143fa6143df9294612d1c565b92906143d3565b6040513d86823e3d90fd5b634e487b7160e01b85526021600452602485fd5b908160209103126105e5575180151581036105e55790565b604051614496916001600160a01b031661445182612d65565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af1614490614512565b91614542565b805190816144a357505050565b82806144b3938301019101614420565b156144bb5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b3d1561453d573d9061452382612dd7565b916145316040519384612db6565b82523d6000602084013e565b606090565b919290156145a45750815115614556575090565b3b1561455f5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156145b75750805190602001fd5b60405162461bcd60e51b815260206004820152908190610645906024830190612cf7565b600080808084335af16145ec614512565b50156145f55750565b60249060405190630b288dc560e21b82526004820152fd5b906020828203126105e55781516001600160401b0381116105e557612f219201612edf565b959492949391936146627f0000000000000000000000000000000000000000000000000000000000000000615a4d565b6040518081600080516020615e0e83398151915260208154938481520190600052600080516020615d6e8339815191529260005b818110614ab95750506146ab92500382612db6565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed9785491815115614aa7576146fe6000916040519485928392635b10743960e11b8452604060048501526044840190612cf7565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105d957600092614a8a575b50614738818388613039565b95863410614a6b5761474a8734613194565b80614a5c575b506040519061475e82612d80565b6001600160481b0386811683527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166020840190815260408085018d815261ffff8d81166060880190815292516315cfa3cb60e11b81529651909416600487015291516024860152905160448501525116606483015260008260848173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105d95761485d926000928d928492614a40575b506001600160401b036040519361482685612d4a565b16835260018060a01b031660208301526040820152604051809381926311692f3760e31b83526020600484015260248301906132ed565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105d957600091614a1d575b5061ffff8816600052600080516020615d2e833981519152602052604060002054938351938515614a015760005b8581106149265750505050505050927fe54e51e42099622516fa3b48e9733581c9dbdcb771cafb093f745a0532a35982949261ffff926148f760c096610475614c36565b906040519586526020860152604085015260608401521660808201526001600160401b03841660a0820152a190565b6001600160a01b036149388284613005565b5116906149458187613005565b5182600052600080516020615e8e83398151915260205261497160ff60406000205460101c1686613005565b51833b156105e5576149b79361ffff8f936000948f8e906149c98d6040519b8c998a988997634b5b050560e01b895216600488015260a0602488015260a4870190613019565b85810360031901604487015290612cf7565b916064840152608483015203925af19182156105d9576149ed926149f25750612ff6565b6148b3565b6149fb90612d1c565b38610d93565b604051630ebc95af60e21b815261ffff8b166004820152602490fd5b614a3a91503d806000833e614a328183612db6565b81019061460d565b38614885565b614a559192503d8086833e614a328183612db6565b9038614810565b614a65906145db565b38614750565b6040516306a91e3760e51b815260048101889052346024820152604490fd5b614aa09192503d806000833e6117c68183612db6565b903861472c565b6040516334e7b19560e11b8152600490fd5b84546001600160a01b0316835260019485019486945060209093019201614696565b9291614b0a9061046d7f0000000000000000000000000000000000000000000000000000000000000000615a4d565b906000937f504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a918580a27f00000000000000000000000000000000000000000000000000000000000000009360028510156120615784614b9f575060405163a9059cbb60e01b60208201526001600160a01b03909116602482015260448101919091529091506134bd906105128160648101610504565b9193600181036105ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156117ff576040516340c10f1960e01b81526001600160a01b03919091166004820152602481019490945291929181908390604490829084905af1908115614c2a5750614c215750565b6134bd90612d1c565b604051903d90823e3d90fd5b600080604051602081019063313ce56760e01b825260048152614c5881612d65565b51907f00000000000000000000000000000000000000000000000000000000000000005afa614c85614512565b9015614ca4576020818051810103126105e5576020612f219101612ed1565b604051631222cd8360e01b8152600490fd5b6040516370a0823160e01b602082019081526001600160a01b039093166024808301919091528152600092839291614ced81612d4a565b51915afa614cf9614512565b9015614ca4576020818051810103126105e5576020015190565b60ff1660ff811461192c5760010190565b15614d2b57565b634e487b7160e01b600052600160045260246000fd5b60405190614d4e82612d4a565b60006040838281528260208201520152565b600080516020615e4e8339815191525460ff8160081c16614d91600080516020615e0e833981519152548214614d24565b60005b818110614e1f575060005b818110614db8575050604060ff6134bd92161115614d24565b6001810180821161192c575b828110614dda5750614dd590612ff6565b614d9f565b614e1a90614e15614dea84613244565b905490614df684613244565b92909160018060a01b03809354600395861b1c16931b1c161415614d24565b612ff6565b614dc4565b80614e15614e2f614e4693613244565b905460039190911b1c6001600160a01b0316614e4b565b614d94565b6001600160a01b039081166000818152600080516020615e8e8339815191526020526040908190209051929190614e8184612d4a565b5460ff91614ebd838316158015938488526020880197604087808460081c16159384158c5260101c1691019581875292614f78575b5050614d24565b600080516020615dee83398151915254946001600160401b0360019687868651161b1616151590511515916000968791600080516020615e4e8339815191525497878960081c16935b848110614f3a575b5050505050816134bd96614f28869594614f309414614d24565b151514614d24565b5116911611614d24565b8282614f4583613244565b90549060031b1c1614614f6057614f5b90612ff6565b614f06565b50919850849250839150614f289050826134bd614f0e565b90915081614f89575b503880614eb6565b90501538614f81565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614614fc457565b604051633c64f99360e21b8152600490fd5b600080516020615eee83398151915254336001600160a01b03918216141591908261501c575b505061500457565b60405163e2a08e5d60e01b8152336004820152602490fd5b1633141590503880614ffc565b6040519061503682612d4a565b8160406001600160401b03600080516020615f0e833981519152546001600160481b0380821685528160481c16602085015260901c16910152565b9060405161507e81612d4a565b60406001600160401b038294546001600160481b0380821685528160481c16602085015260901c16910152565b90600160481b600160901b0382549160481b1690600160481b600160901b031916179055565b600080516020615f0e8339815191529081546001600160481b03908181166001600160401b036008918184841c168015806152c4575b15615175575050855471ffffffffffffffffff0000000000000000001916604886901b600160481b600160901b03161786555050505b825479ffffffffffffffff000000000000000000ffffffffffffffffff19169116174260901b67ffffffffffffffff60901b16179055565b86615181612cad615029565b92600061518e8383615ade565b1561525a57506151ad92916151a291615b00565b8388861c1690615a75565b610100600160481b039290841b831660ff8616176151cb8184615ade565b1561524c578160ff92826151e26151ef9487615b00565b871c169084871c16615a75565b9116921b16175b6152008482615ade565b61522a57600160481b600160901b039060481b1690600160481b600160901b03191617835561513d565b604051631e74e8fb60e31b815290831660048201528383166024820152604490fd5b5050905060ff9150166151f6565b949395929061526c9061527693615b00565b8389841c16615a75565b9260ff881694838087610100600160481b038098871b16176152988185615b00565b851c1691841c16019283116152b057501b16176151f6565b634e487b7160e01b81526011600452602490fd5b5060ff851615615107565b919080546001600160481b03808216916001600160401b03926008908483831c1680158061548b575b1561535e5750505050846153106134bd9596856150ab565b835467ffffffffffffffff60901b19919092161679ffffffffffffffff000000000000000000ffffffffffffffffff1990911617429190911660901b67ffffffffffffffff60901b16179055565b85908961536d612cad8a615071565b93600061537a8383615ade565b1561543557509161539261539d9260ff979894615b00565b838c881c1690615a75565b610100600160481b039490861b85169116176153b98184615ade565b156154275760ff91816153cf6153dc9386615b00565b861c168784871c16615a75565b9116921b16175b6153ed8682615ade565b61540557946154006134bd9596856150ab565b615310565b604051631e74e8fb60e31b815290821660048201529085166024820152604490fd5b5050905060ff9150166153e3565b949650615450935061544691615b00565b868a851c16615a75565b9160ff891693868086610100600160481b038097861b16176154728185615b00565b841c1691831c1601918683116152b057501b16176153e3565b5060ff8416156152f8565b61549e614d41565b50612f2161046d612cad615029565b6154b5614d41565b506000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b86020526040600020604051906154ef82612d4a565b80546001600160481b038116835260481c6001600160401b03166020830152600101546001600160a01b0316604082015290565b811561552d570490565b634e487b7160e01b600052601260045260246000fd5b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000169182156155d7576155c4828260ff936040610100600160481b03960151164203816155a8602085019889519383875160081c1602615523565b9160081c1601915160081c168082106000146155d057506155ee565b9251169160081b161790565b90506155ee565b506020015160ff16610100600160481b0317919050565b6001600160401b0390818111615602571690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608490fd5b6001600160401b0390817f000000000000000000000000000000000000000000000000000000000000000016156157125761568f614d41565b50600160481b600160901b036156a6612cad615029565b610100600160481b0360ff6156e1600080516020615f0e83398151915296808854976156d28188615b00565b60081c16908560081c16615a75565b92169160081b161760481b16906001600160401b0360901b4260901b1690600160481b600160d01b03191617179055565b5050565b6001600160401b0390817f000000000000000000000000000000000000000000000000000000000000000016156157125761574f614d41565b5061575b612cad615029565b90600160481b600160901b03600080516020615f0e83398151915293845493816001600160401b0360901b4260901b16946157968184615b00565b60081c16828260081c16018281116000146158225750610100600160481b0360ff6157c0846155ee565b92169160081b1617906001600160481b038516906157de8284615b00565b80856001600160401b0360901b1988161760081c16908360081c161060001461581b57505b60481b1691600160481b600160d01b03191617179055565b9050615803565b60ff6157c0610100600160481b03926155ee565b6001600160401b03807f0000000000000000000000000000000000000000000000000000000000000000161561363057610100600160481b0360ff6158f061ffff6134bd96615883614d41565b50169384600052600080516020615e6e833981519152806020526158ad612cad6040600020615071565b60009687526020919091526040909520805467ffffffffffffffff60901b191642831660901b67ffffffffffffffff60901b161781559581906156d28188615b00565b92169160081b1617906150ab565b6001600160401b03807f000000000000000000000000000000000000000000000000000000000000000016156136305761ffff6134bd9361593d614d41565b5016600090808252600080516020615e6e83398151915280602052615967612cad60408520615071565b91835260205260408220805467ffffffffffffffff60901b191642851660901b67ffffffffffffffff60901b161781559383906159a48184615b00565b60081c16838260081c1601838111600014615a115750610100600160481b0360ff6159ce856155ee565b92169160081b1617918084546001600160481b038116936159ef8587615b00565b5060081c16908360081c1610600014615a095750906150ab565b9050906150ab565b60ff6159ce610100600160481b03926155ee565b9067ffffffffffffffff60481b82549160481b169067ffffffffffffffff60481b1916179055565b468103615a575750565b604490604051906377d879fb60e01b82526004820152466024820152fd5b6001600160401b03918216908216039190821161192c57565b60009182915b6001600160401b03908181168015615ad65760001901918211615ac2571691615abc90614d13565b91615a94565b634e487b7160e01b85526011600452602485fd5b505050915090565b90615ae98183615b00565b6001600160401b03809160081c169160081c161190565b60ff9182169116818103615b12575050565b604051635ce6db6160e11b815260ff918216600482015291166024820152604490fd5b60ff811660081015612f215750600890565b9060ff8091169116039060ff821161192c57565b60ff16604d811161192c57600a0a90565b919060ff821660ff8216818114615bc0571115615b9f57615b94612f219392615b9992615b47565b615b5b565b90615523565b615b9490615bac92615b47565b9081810291818304149015171561192c5790565b5050505090565b615bfa61395c60ff92610100600160481b039495615be487615b35565b908581168683161015615c055750958691615b6c565b92169160081b161790565b9050958691615b6c565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c1615615c3e57565b604051631afcd79f60e31b8152600490fd5b6001600160a01b03908116908115615cab57600080516020615dae83398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b600080516020615dae833981519152546001600160a01b03163303615ce557565b60405163118cdaa760e01b8152336004820152602490fd5b600080516020615ece8339815191526002815414615d1b5760029055565b604051633ee5aeb560e01b8152600490fdfeebcc9f646b0f459ff8f387587d536b0af3484cf442e1577400f322334e7d1ef047028352a8b3feae1a85fba43bc13f990568bb1637dce33d3dbfd791a0808b7f6c3cb3f3ae91330f31ba2bc0ff8855fc834fb66dc27e8e0b1a398617dabaa5a668dfeeddfa5e4e9adceec01a3aba274bdcbab3f6ac9956417a4332f2b08abdda9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930064bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022fd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f00758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e1ad78307a8b51804c575f26039dcb87c58925afb3b7c08732f3b21b942aed7a768561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d89efb21dcaedea63b55c44882f329622e13a8d0f5b947b3a372826208a9003da1549bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f852fa0677fef8612c6c15b518c9fa56761e9ed15cfd5c6e5399e5467985ac7ed9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00bfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12497c25289a27ec8c9be54d4a154cf80490d69bda989cdb8328232e08fea9220420a2646970667358221220f05bfca11e4f4e6b5c38d73a662c13522a3f5f5988d02259aab20e583604ccb064736f6c63430008130033",U6=c=>typeof c[0]=="string"||Array.isArray(c[0])||"_isInterface"in c[0];class We extends U0.ContractFactory{constructor(...e){if(U6(e))super(...e);else{const[a,i]=e;super(oe,We.linkBytecode(a),i)}}static linkBytecode(e){let a=T1;return a=a.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),a}getDeployTransaction(e,a,i,o,n,u){return super.getDeployTransaction(e,a,i,o,n,u||{})}deploy(e,a,i,o,n,u){return super.deploy(e,a,i,o,n,u||{})}connect(e){return super.connect(e)}static bytecode=T1;static abi=oe;static createInterface(){return new L0.Interface(oe)}static connect(e,a){return new L0.Contract(e,oe,a)}}const fe=[{type:"constructor",inputs:[{name:"nttManager",type:"address",internalType:"address"},{name:"wormholeCoreBridge",type:"address",internalType:"address"},{name:"wormholeRelayerAddr",type:"address",internalType:"address"},{name:"specialRelayerAddr",type:"address",internalType:"address"},{name:"_consistencyLevel",type:"uint8",internalType:"uint8"},{name:"_gasLimit",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"WORMHOLE_TRANSCEIVER_VERSION",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"consistencyLevel",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"encodeWormholeTransceiverInstruction",inputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],outputs:[{name:"",type:"bytes",internalType:"bytes"}],stateMutability:"pure"},{type:"function",name:"gasLimit",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getMigratesImmutables",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"getNttManagerOwner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getNttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"getTransceiverType",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"pure"},{type:"function",name:"getWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"initialize",inputs:[],outputs:[],stateMutability:"payable"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isVAAConsumed",inputs:[{name:"hash",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"migrate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"nttManager",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"nttManagerToken",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"parseWormholeTransceiverInstruction",inputs:[{name:"encoded",type:"bytes",internalType:"bytes"}],outputs:[{name:"instruction",type:"tuple",internalType:"struct IWormholeTransceiver.WormholeTransceiverInstruction",components:[{name:"shouldSkipRelayerSend",type:"bool",internalType:"bool"}]}],stateMutability:"pure"},{type:"function",name:"pauser",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"quoteDeliveryPrice",inputs:[{name:"targetChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"receiveMessage",inputs:[{name:"encodedMessage",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"receiveWormholeMessages",inputs:[{name:"payload",type:"bytes",internalType:"bytes"},{name:"additionalMessages",type:"bytes[]",internalType:"bytes[]"},{name:"sourceAddress",type:"bytes32",internalType:"bytes32"},{name:"sourceChain",type:"uint16",internalType:"uint16"},{name:"deliveryHash",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"sendMessage",inputs:[{name:"recipientChain",type:"uint16",internalType:"uint16"},{name:"instruction",type:"tuple",internalType:"struct TransceiverStructs.TransceiverInstruction",components:[{name:"index",type:"uint8",internalType:"uint8"},{name:"payload",type:"bytes",internalType:"bytes"}]},{name:"nttManagerMessage",type:"bytes",internalType:"bytes"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"refundAddress",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"setIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEvm",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"isEnabled",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setWormholePeer",inputs:[{name:"peerChainId",type:"uint16",internalType:"uint16"},{name:"peerContract",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"payable"},{type:"function",name:"specialRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract ISpecialRelayer"}],stateMutability:"view"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferPauserCapability",inputs:[{name:"newPauser",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferTransceiverOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"upgrade",inputs:[{name:"newImplementation",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"wormhole",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormhole"}],stateMutability:"view"},{type:"function",name:"wormholeRelayer",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IWormholeRelayer"}],stateMutability:"view"},{type:"event",name:"AdminChanged",inputs:[{name:"previousAdmin",type:"address",indexed:!1,internalType:"address"},{name:"newAdmin",type:"address",indexed:!1,internalType:"address"}],anonymous:!1},{type:"event",name:"BeaconUpgraded",inputs:[{name:"beacon",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"NotPaused",inputs:[{name:"notPaused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:!0,internalType:"address"},{name:"newOwner",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"PauserTransferred",inputs:[{name:"oldPauser",type:"address",indexed:!0,internalType:"address"},{name:"newPauser",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"event",name:"ReceivedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"sequence",type:"uint64",indexed:!1,internalType:"uint64"}],anonymous:!1},{type:"event",name:"ReceivedRelayedMessage",inputs:[{name:"digest",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"emitterChainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"emitterAddress",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"RelayingInfo",inputs:[{name:"relayingType",type:"uint8",indexed:!1,internalType:"uint8"},{name:"refundAddress",type:"bytes32",indexed:!1,internalType:"bytes32"},{name:"deliveryPayment",type:"uint256",indexed:!1,internalType:"uint256"}],anonymous:!1},{type:"event",name:"SendTransceiverMessage",inputs:[{name:"recipientChain",type:"uint16",indexed:!1,internalType:"uint16"},{name:"message",type:"tuple",indexed:!1,internalType:"struct TransceiverStructs.TransceiverMessage",components:[{name:"sourceNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"nttManagerPayload",type:"bytes",internalType:"bytes"},{name:"transceiverPayload",type:"bytes",internalType:"bytes"}]}],anonymous:!1},{type:"event",name:"SetIsSpecialRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeEvmChain",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isEvm",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetIsWormholeRelayingEnabled",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"isRelayingEnabled",type:"bool",indexed:!1,internalType:"bool"}],anonymous:!1},{type:"event",name:"SetWormholePeer",inputs:[{name:"chainId",type:"uint16",indexed:!1,internalType:"uint16"},{name:"peerContract",type:"bytes32",indexed:!1,internalType:"bytes32"}],anonymous:!1},{type:"event",name:"Upgraded",inputs:[{name:"implementation",type:"address",indexed:!0,internalType:"address"}],anonymous:!1},{type:"error",name:"CallerNotNttManager",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CallerNotRelayer",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"CannotRenounceTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"}]},{type:"error",name:"CannotTransferTransceiverOwnership",inputs:[{name:"currentOwner",type:"address",internalType:"address"},{name:"newOwner",type:"address",internalType:"address"}]},{type:"error",name:"InvalidBoolVal",inputs:[{name:"val",type:"uint8",internalType:"uint8"}]},{type:"error",name:"InvalidBoolValue",inputs:[{name:"value",type:"uint256",internalType:"BooleanFlag"}]},{type:"error",name:"InvalidFork",inputs:[{name:"evmChainId",type:"uint256",internalType:"uint256"},{name:"blockChainId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidPauser",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"InvalidRelayingConfig",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"}]},{type:"error",name:"InvalidVaa",inputs:[{name:"reason",type:"string",internalType:"string"}]},{type:"error",name:"InvalidWormholeChainIdZero",inputs:[]},{type:"error",name:"InvalidWormholePeer",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"InvalidWormholePeerZeroAddress",inputs:[]},{type:"error",name:"LengthMismatch",inputs:[{name:"encodedLength",type:"uint256",internalType:"uint256"},{name:"expectedLength",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotAnEvmAddress",inputs:[{name:"",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotMigrating",inputs:[]},{type:"error",name:"OnlyDelegateCall",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]},{type:"error",name:"PeerAlreadySet",inputs:[{name:"chainId",type:"uint16",internalType:"uint16"},{name:"peerAddress",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"ReentrancyGuardReentrantCall",inputs:[]},{type:"error",name:"RequireContractIsNotPaused",inputs:[]},{type:"error",name:"RequireContractIsPaused",inputs:[]},{type:"error",name:"TransferAlreadyCompleted",inputs:[{name:"vaaHash",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"UnexpectedAdditionalMessages",inputs:[]},{type:"error",name:"UnexpectedDeployer",inputs:[{name:"deployer",type:"address",internalType:"address"},{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"UnexpectedRecipientNttManagerAddress",inputs:[{name:"recipientNttManagerAddress",type:"bytes32",internalType:"bytes32"},{name:"expectedRecipientNttManagerAddress",type:"bytes32",internalType:"bytes32"}]}],w1="0x6101c06040818152346200031d5760c08262003742803803809162000025828562000322565b8339810103126200031d576200003b826200035c565b906020906200004c8285016200035c565b926200005a8286016200035c565b62000068606087016200035c565b9160808701519660ff881688036200031d5760a00151947ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080549060ff82881c166200030c5782906001600160401b03906002600160401b031984831601620002c9575b50505050306080528160a052845190637e062a3560e11b8252808260048160018060a01b038097165afa908115620002be576000916200027f575b50905060c0523360e0528061012096168652806101409216825261016092168252610180924684526101009687526101a094855251946133d096876200037288396080518761313b015260a051878181610e100152818161154d015281816118d00152818161205501528181612204015281816128e00152612ae4015260c051878181610e9b01528181611c93015281816122560152818161268d0152612d7c015260e05187610d1801525186818161076e01528181610f4d0152818161127401528181611bfe01528181611df1015261239b01525185818161020801528181610c1501528181610f7a015281816112a001528181611ba601528181611e1e015281816122a601528181612e0201528181612ee20152612f800152518481816107a70152818161163601528181611a4a015281816122f60152612cc5015251838181610a7501528181611c3c015281816123460152612db90152518261024c0152518181816106ac01528181611a150152612c9a0152f35b82813d8311620002b6575b62000296818362000322565b81010312620002b35750620002ab906200035c565b803862000107565b80fd5b503d6200028a565b86513d6000823e3d90fd5b6001600160401b0319909316811790925586519182527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291a138818180620000cc565b865163f92ee8a960e01b8152600490fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200034657604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200031d5756fe6080604081815260048036101561001557600080fd5b600092833560e01c908163036de8af146125ab575080630900f010146120845780630b4a1e89146113db57806324fb21db14612040578063320d0d8e14611ffd57806348b330d614611fb75780634b5b05051461183f5780634b795b211461179e578063529dca321461159457806358f709ba14611525578063657b3b2f1461148457806366152efc14611423578063689f90c3146113e0578063694977d7146113db5780637ab564031461118057806380eb3239146111445780638129fc1c14610c8957806381e8ec7f14610c4457806384acd1bb14610c005780638da5cb5b14610bca5780638fd3ab8014610aa457806390ea542814610a60578063935dec0714610a1e57806396dddc63146109695780639fd0506d14610921578063a0926b2a146108d5578063b187bd2614610894578063b5634c7314610847578063bc7f6d3714610804578063d8d28418146107d6578063da25b72514610792578063e8dfd50814610754578063f2fde38b1461071f578063f48066a8146106d3578063f68016b7146106945763f953cec7146101af57600080fd5b34610690576020908160031936011261068c578035906001600160401b0385818411610689576101e5610204943690850161279e565b86518095819263607ec5ef60e11b835288878401526024830190612887565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561067f5786938790889261047a575b501561045757507f000000000000000000000000000000000000000000000000000000000000000046810361043b57506060830161ffff91828251166000526000805160206132bb833981519152865286600020546080860190815180910361040a575061014086016102d281516000526000805160206132db83398151915260205260ff6040600020541690565b6103f157927ff6fc529540981400dc64edf649eb5e2e0eb5812a27f8c81bac2c1d317e71a5f0608060e0948b8a8e9996896103336103849d9b516000526000805160206132db8339815191526020526040600020600160ff19825416179055565b519360a08989511692519301511692519384528d8401528d8301526060820152a1511694015190610362612943565b5061036b612969565b508651630453806b60e11b815293849283928301612ac2565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156103e7576103be9450859186946103c1575b50815191015191612ae1565b80f35b9093506103e091503d8087833e6103d88183612762565b810190612a44565b92386103b2565b84513d87823e3d90fd5b518851632d30ec0360e21b815280870191909152602490fd5b83518951633cd8e72b60e11b815290861661ffff1687820190815260208101929092529081900360400190fd5b0390fd5b826044918751916377d879fb60e01b8352820152466024820152fd5b8551634771719b60e11b8152808401869052908190610437906024830190612887565b945050503d8087853e61048d8185612762565b8301606090818582031261067b5784518381116105ff578501610160928382840312610603578851938401848110868211176106665789526104ce82613053565b84526104db888301613061565b888501526104ea898301613061565b898501528082015161ffff8116810361066257818501526080808301518186015261051760a08401612feb565b60a086015261052860c08401613053565b60c086015260e083015186811161065e57846105459185016129c1565b60e0860152610100610558818501613061565b90860152610120908184015187811161065a57840185601f8201121561065a5780518c946105916105888361284d565b96519687612762565b8186528c8087019260071b84010192888411610656578d01915b83831061060757505050505084015261014080910151908301526105d0868601613072565b94878101519084821161060357019080601f830112156105ff5781516105f792880161298a565b909338610243565b8880fd5b8980fd5b84838a0312610656578d8f9182879351906106218261272c565b865182528387015184830152610638818801613053565b90820152610647858701613053565b858201528152019201916105ab565b8f80fd5b8c80fd5b8b80fd5b8a80fd5b604187634e487b7160e01b6000525260246000fd5b8780fd5b85513d88823e3d90fd5b80fd5b8380fd5b8280fd5b5050346106cf57816003193601126106cf57602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5080fd5b5050346106cf5760203660031901126106cf5760209061ffff6106f46126bc565b166000526000805160206132fb833981519152825261071681600020546130f7565b90519015158152f35b8382346106cf5760203660031901126106cf57356001600160a01b03811681036106cf576103be9061074f61320b565b6131da565b5050346106cf57816003193601126106cf576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5050346106cf57816003193601126106cf57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106cf57816003193601126106cf576020906107f36128cb565b90516001600160a01b039091168152f35b5050346106cf5760203660031901126106cf5760209061ffff6108256126bc565b1660005260008051602061329b833981519152825261071681600020546130f7565b50346106905781600319360112610690576108606126bc565b92602435906001600160401b03821161068957509261088761088d926020953691016127e5565b90612c24565b9051908152f35b5050346106cf57816003193601126106cf5760209060027f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b825802254149051908152f35b5050346106cf57816003193601126106cf57805161091d916108f682612747565b6008825267776f726d686f6c6560c01b602083015251918291602083526020830190612887565b0390f35b5050346106cf57816003193601126106cf577fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12495490516001600160a01b039091168152602090f35b508290346106cf57826003193601126106cf576109846126bc565b61098c61283e565b9161099561320b565b61ffff8216908115610a1057507f4add57d97a7bf5035340ea1212aeeb3d4d3887eb1faf3821a8224c3a6956a10c9394610a0a916109d285613129565b906000526000805160206132fb8339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b0390a180f35b8551630f7662c960e21b8152fd5b5050346106cf5760203660031901126106cf5760209061ffff610a3f6126bc565b166000526000805160206132bb833981519152825280600020549051908152f35b5050346106cf57816003193601126106cf57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b509034610690578260031936011261069057610abe613138565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b038082166001810190828211610bb75760ff84871c16908115610baa575b50610b9a57169360ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e541615610b8c575068ffffffffffffffffff19168317680100000000000000001768ff000000000000000019169055519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a180f35b8351632866815360e11b8152fd5b845163f92ee8a960e01b81528690fd5b9050828216111538610b06565b634e487b7160e01b885260118752602488fd5b5050346106cf57816003193601126106cf5760008051602061333b8339815191525490516001600160a01b039091168152602090f35b5050346106cf57816003193601126106cf57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346106cf57816003193601126106cf57805161091d91610c6582612747565b60058252640312e312e360dc1b602083015251918291602083526020830190612887565b508260031936011261069057610c9d613138565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009182549160ff83831c1615906001600160401b03938481168015908161113c575b6001149081611132575b159081611129575b5061111a5767ffffffffffffffff1981166001178655826110fb575b506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116338190036110df5750610d4a613199565b610d52613199565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055610dfe610d816128cb565b610d89613199565b610d91613199565b610d99613199565b60017f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022557fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad124980546001600160a01b03191633179055610df6613199565b61074f613199565b8351634b4fd03b60e01b8152602095907f0000000000000000000000000000000000000000000000000000000000000000831687828681845afa9182156110d5578a9261109e575b508651631dcbf42b60e11b81529188838781855afa928315611094578b9361105d575b5087519360a0850190811185821017610666578852639c23bd3b60e01b845288840191825260ff9081168489019081527f00000000000000000000000000000000000000000000000000000000000000008616606086019081529382166080860190815289516301529f6160e21b815295516001600160e01b031916888701529251602486015251811660448501529151606484015251166084820152878160a48173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156110535791610f74939187938a91611031575b5086518095819482936358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fff565b039134907f0000000000000000000000000000000000000000000000000000000000000000165af1801561102757610fef575b50610fb0578380f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29268ff00000000000000001981541690555160018152a13880808380f35b8381813d8311611020575b6110048183612762565b8101031261101c5761101590612feb565b5038610fa7565b8580fd5b503d610ffa565b83513d88823e3d90fd5b61104d91503d808c833e6110458183612762565b81019061307f565b38610f38565b85513d8a823e3d90fd5b9092508881813d831161108d575b6110758183612762565b810103126106625761108690613053565b9138610e69565b503d61106b565b88513d8d823e3d90fd5b9091508781813d83116110ce575b6110b68183612762565b81010312610603576110c790613053565b9038610e46565b503d6110ac565b87513d8c823e3d90fd5b82604491865191636345072160e11b8352820152336024820152fd5b68ffffffffffffffffff19166801000000000000000117855538610d0d565b50825163f92ee8a960e01b8152fd5b90501538610cf1565b303b159150610ce9565b849150610cdf565b5091346106895760203660031901126106895750610716602092356000526000805160206132db83398151915260205260ff6040600020541690565b5081600319360112610690576111946126bc565b602435916111a061320b565b61ffff8083169081156113cb5784156113bb57816000526000805160206132bb8339815191529160209280845287600020548061139257508160005283528587600020558651916111f083612711565b630c7e33e160e11b8352838301918252878301878152885163077650fb60e51b815293516001600160e01b031916868501529151166024830152516044820152868160648173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156113885761129b938392899161136e575b5087516358cd21bf60e11b815294859283927f0000000000000000000000000000000000000000000000000000000000000000918401612fff565b0381347f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561067f57611312575b5050915161ffff909216825260208201527fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d326466908060408101610a0a565b81813d8311611367575b6113268183612762565b81010312611363577fa559263ee060c7a2560843b3a064ff0376c9753ae3e2449b595a3b615d3264669361135c610a0a92612feb565b50936112d5565b8480fd5b503d61131c565b61138291503d808b833e6110458183612762565b38611260565b86513d89823e3d90fd5b885163b55eeae960e01b815261ffff881681880190815260208101929092529081906040010390fd5b855163137063ef60e11b81528390fd5b8551630f7662c960e21b81528390fd5b612677565b5050346106cf57816003193601126106cf5760209060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb541690519015158152f35b5091346106895760203660031901126106895750805191611443836126f6565b35908115159182810361147f5761091d935280519160f81b60208301526001825261146d82612747565b51918291602083526020830190612887565b600080fd5b508290346106cf57826003193601126106cf5761149f6126bc565b6114a761283e565b916114b061320b565b61ffff8216908115610a1057507f528b18a533e892b5401d1fb63597275df9d2bb45b13e7695c3147cd07b9746c39394610a0a916114ed85613129565b9060005260008051602061331b8339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b5034610690576020366003190112610690578035916001600160a01b038084168403611363577f000000000000000000000000000000000000000000000000000000000000000016330361157d57836103be84613244565b60249250519063c5aa615360e01b82523390820152fd5b5060a0366003190112610690576001600160401b038135818111611363576115bf903690840161279e565b60249283359383851161179a573660238601121561179a5784820135936115e58561284d565b946115f288519687612762565b808652602096838888019260051b8201019236841161066257848201925b8484106117745750505050506044356064359461ffff86169081870361147f57608435937f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361176157826000526000805160206132bb8339815191528952838a600020540361173a57848b526000805160206132db833981519152895260ff8a8c20541661172657506116cf846000526000805160206132db8339815191526020526040600020600160ff19825416179055565b5161171657606061038495938a95937ff557dbbb087662f52c815f6c7ee350628a37a51eae9608ff840d996b65f87475938b519283528a8301528a820152a1610362612943565b875163c504ea2960e01b81528490fd5b8951632d30ec0360e21b8152808701869052fd5b8951633cd8e72b60e11b815261ffff89168188019081526020810186905281906040010390fd5b8951631c26958960e01b81523381880152fd5b833582811161065a578a9161178f839289369188010161279e565b815201930192611610565b8680fd5b508290346106cf57826003193601126106cf576117b96126bc565b6117c161283e565b916117ca61320b565b61ffff8216908115610a1057507f0fe301480713b2c2072ee91b3bcfcbf2c0014f0447c89046f020f0f80727003c9394610a0a9161180785613129565b9060005260008051602061329b8339815191526020528160002055519283928390929160209061ffff60408401951683521515910152565b509060031960a03682011261068c576118566126bc565b9060249283356001600160401b039081811161067b5761187990369088016127e5565b906044358181116105ff57611891903690890161279e565b90608435977f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00976002895414611fa857600289556001600160a01b03937f000000000000000000000000000000000000000000000000000000000000000085163303611f9257908b61194b819361195a8a519b61190d8d6126f6565b848d528b516304616c8f60e21b81526309945ff160e41b89820152338782015260648035604483015260a0908201529c8d94859460a4860190612887565b91848303016084850152612887565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af4938415611f885782988395611f36575b50611992602080980151612ba9565b80511580611f27575b15611b7e575050928a92859283898997611a0d61ffff8f16968792836000526000805160206132bb8339815191528c526119e16119db8660002054613027565b9b613027565b94519c8d9b8c9a8b9a6312d729bd60e21b8c528b0152169088015260e0604488015260e4870190612887565b9360648601527f0000000000000000000000000000000000000000000000000000000000000000608486015260a48501521660c4830152039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611b7457611b03575b5061ffff926060611ae884611afc9460008051602061337b8339815191528460019c60008051602061335b8339815191529b99519060008252848201523485820152a15b815197889716875281818801528451828801528401518387015283015160808087015260c0860190612887565b910151838203603f190160a0850152612887565b0390a15580f35b9391928185813d8311611b6d575b611b1b8183612762565b8101031261067b576060611ae861ffff95611afc9460008051602061337b8339815191528460019c611b5b60008051602061335b8339815191529c612feb565b509c5050509450949650505092611a77565b503d611b11565b83513d8a823e3d90fd5b919394959250959697989a50511580611efb575b15611dd1578651631a90a21960e01b8152937f000000000000000000000000000000000000000000000000000000000000000082169087868681855afa958d8715611dc657908993929197611d93575b50869291611c26918b519889809481936358cd21bf60e11b83527f0000000000000000000000000000000000000000000000000000000000000000908c8401612fff565b03925af1948515611d89578c95611d52575b50817f00000000000000000000000000000000000000000000000000000000000000001690340390348211611d3e5790818d9796959493923b1561067b578c96889660849561ffff8d519a8b998a98630b5624e160e11b8a527f0000000000000000000000000000000000000000000000000000000000000000169089015216908601528760448601521660648401525af18015611d3457611d1c575b5060008051602061335b833981519152936060611ae8856001999560008051602061337b83398151915284611afc9761ffff9a51908e8252848201523485820152a1611abb565b611d28909692966126cd565b61101c57938538611cd5565b84513d84823e3d90fd5b83601186634e487b7160e01b600052526000fd5b9094508681813d8311611d82575b611d6a8183612762565b8101031261065e57611d7b90612feb565b9338611c38565b503d611d60565b88513d8e823e3d90fd5b9196509181813d8111611dbf575b611dab8183612762565b8101031261147f5751948791611c26611be2565b503d611da1565b8a51903d90823e3d90fd5b9050611e189350849286999799518095819482936358cd21bf60e11b84527f0000000000000000000000000000000000000000000000000000000000000000918401612fff565b039134907f0000000000000000000000000000000000000000000000000000000000000000165af18015611ef157611e93575b5091611afc6001956060611ae88560008051602061335b8339815191529760008051602061337b833981519152848d61ffff9a519060028252848201523485820152a1611abb565b9181838195933d8311611eea575b611eab8183612762565b8101031261179a576001956060611ae8611afc9360008051602061335b83398151915297611edb61ffff98612feb565b50959750955050509550611e4b565b503d611ea1565b83513d89823e3d90fd5b5061ffff8a1660005260008051602061329b8339815191528652611f2287600020546130f7565b611b92565b50611f318b6130a4565b61199b565b985093503d80838a3e611f49818a612762565b88019787818a031261069057805185811161068c5789611f6a9183016129db565b98602082015186811161136357611f8192016129c1565b9338611983565b87513d84823e3d90fd5b509085519063c5aa615360e01b82523390820152fd5b508451633ee5aeb560e01b8152fd5b509134610689576020366003190112610689578235906001600160401b0382116106895750611fee602093611ff39236910161279e565b612ba9565b9051905115158152f35b5050346106cf5760203660031901126106cf5760209061ffff61201e6126bc565b1660005260008051602061331b833981519152825261071681600020546130f7565b5050346106cf57816003193601126106cf57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b509034610690576020918260031936011261068c576001600160a01b039181358381169081810361179a576120b761320b565b6120bf613138565b3b15612552577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8680a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e9384549361214c60ff86161561317c565b60ff199485166001178655303b1561179a57825163011fa75760e71b81528781868183305af180156124465761253f575b50825163689f90c360e01b815282818681305afa90811561244657889161250a575b50156121d9575b505050507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b82516324fb21db60e01b815282818681305afa908115612446579061222b9189916124ed575b5082167f000000000000000000000000000000000000000000000000000000000000000083161461317c565b8251630b4a1e8960e01b815282818681305afa908115612446579061227d9189916124c0575b5082167f000000000000000000000000000000000000000000000000000000000000000083161461317c565b82516384acd1bb60e01b815282818681305afa8015612446578890612488575b6122cd915082167f000000000000000000000000000000000000000000000000000000000000000083161461317c565b825163da25b72560e01b815282818681305afa8015612446578890612450575b61231d915082167f000000000000000000000000000000000000000000000000000000000000000083161461317c565b825163121d4a8560e31b815282818681305afa90811561244657889161240c575b508161236e927f00000000000000000000000000000000000000000000000000000000000000001691161461317c565b8082518094631d1bfaa160e31b825281305afa918215612403575085916123cc575b506123c3915060ff807f00000000000000000000000000000000000000000000000000000000000000001691161461317c565b388080806121a6565b905081813d83116123fc575b6123e28183612762565b8101031261068c576123f66123c391613053565b38612390565b503d6123d8565b513d87823e3d90fd5b90508281813d831161243f575b6124238183612762565b8101031261067b575190808216820361067b579061236e61233e565b503d612419565b84513d8a823e3d90fd5b508281813d8311612481575b6124668183612762565b8101031261067b5751818116810361067b5761231d906122ed565b503d61245c565b508281813d83116124b9575b61249e8183612762565b8101031261067b5751818116810361067b576122cd9061229d565b503d612494565b6124e09150843d86116124e6575b6124d88183612762565b8101906128ac565b38612251565b503d6124ce565b6125049150843d86116124e6576124d88183612762565b386121ff565b90508281813d8311612538575b6125218183612762565b8101031261067b5761253290613072565b3861219f565b503d612517565b61254b909791976126cd565b953861217d565b815162461bcd60e51b8152808401869052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b828591346106905760203660031901126106905781356001600160a01b038181169391849003611363578060008051602061333b8339815191525416927fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12499283549283169433861415908161266c575b506126575750506001600160a01b031916831790557f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b63e2a08e5d60e01b8252339082015260249150fd5b90503314158861261b565b3461147f57600036600319011261147f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6004359061ffff8216820361147f57565b6001600160401b0381116126e057604052565b634e487b7160e01b600052604160045260246000fd5b602081019081106001600160401b038211176126e057604052565b606081019081106001600160401b038211176126e057604052565b608081019081106001600160401b038211176126e057604052565b604081019081106001600160401b038211176126e057604052565b90601f801991011681019081106001600160401b038211176126e057604052565b6001600160401b0381116126e057601f01601f191660200190565b81601f8201121561147f578035906127b582612783565b926127c36040519485612762565b8284526020838301011161147f57816000926020809301838601378301015290565b91909160408184031261147f5760408051916001600160401b03918301828111848210176126e0576040528294813560ff8116810361147f578452602082013592831161147f57602092612839920161279e565b910152565b60243590811515820361147f57565b6001600160401b0381116126e05760051b60200190565b60005b8381106128775750506000910152565b8181015183820152602001612867565b906020916128a081518092818552858086019101612864565b601f01601f1916010190565b9081602091031261147f57516001600160a01b038116810361147f5790565b604051638da5cb5b60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156129375760009161291c575090565b612934915060203d81116124e6576124d88183612762565b90565b6040513d6000823e3d90fd5b604051906129508261272c565b6060808360008152600060208201528160408201520152565b6040519061297682612711565b606060408360008152600060208201520152565b9092919261299781612783565b916129a56040519384612762565b82948284528282011161147f5760206129bf930190612864565b565b9080601f8301121561147f5781516129349260200161298a565b919060808382031261147f57604051906129f48261272c565b819380518352602081015160208401526040810151916001600160401b039283811161147f5781612a269184016129c1565b6040850152606082015192831161147f5760609261283992016129c1565b919060408382031261147f578251906001600160401b039182811161147f5781612a6f9186016129db565b9360208101519083821161147f57019060608282031261147f5760405192612a9684612711565b8251845260208301516020850152604083015190811161147f57612aba92016129c1565b604082015290565b6309945ff160e41b815260406020820181905261293492910190612887565b917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690818103612b8b5750803b1561147f5761ffff60008094612b71604080519889978896879563275e091560e21b875216600486015260248501526060604485015280516064850152602081015160848501520151606060a484015260c4830190612887565b03925af1801561293757612b825750565b6129bf906126cd565b60449250604051916339dee99160e11b835260048301526024820152fd5b9060405191612bb7836126f6565b6000835282815115612c1f5750600181015160fe8116612c035760ff16151583525160018103612be45750565b604490604051906355c5b3e360e11b8252600482015260016024820152fd5b60405163f7a37b0760e01b815260ff9091166004820152602490fd5b925050565b90612c33602080920151612ba9565b51612f6a5761ffff82169060009082825260008051602061331b8339815191528152604093612c64858420546130f7565b80612f43575b612f2b57612c77906130a4565b15612d3e5750825163c23ee3c360e01b81526004810192909252602482018190527f0000000000000000000000000000000000000000000000000000000000000000604483015282826064817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa928315612d34578193612d03575b50505090565b9091809350813d8311612d2d575b612d1b8183612762565b81010312610689575051388080612cfd565b503d612d11565b51903d90823e3d90fd5b82829394925260008051602061329b8339815191528152612d61828420546130f7565b15612ec957815163209d173960e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820195909552604481018490529381856064817f000000000000000000000000000000000000000000000000000000000000000085165afa948515612ebc578495612e8d575b509080600492845193848092631a90a21960e01b82527f0000000000000000000000000000000000000000000000000000000000000000165afa928315612e8457508392612e56575b50508201809211612e42575090565b634e487b7160e01b81526011600452602490fd5b90809250813d8311612e7d575b612e6d8183612762565b810103126106cf57513880612e33565b503d612e63565b513d85823e3d90fd5b9094508181813d8311612eb5575b612ea58183612762565b8101031261068c57519381612dea565b503d612e9b565b50505051903d90823e3d90fd5b8151631a90a21960e01b815291935090919080836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa938415612f2057508193612d035750505090565b51913d9150823e3d90fd5b845163251268db60e21b815260048101859052602490fd5b508383526000805160206132fb8339815191528252612f64858420546130f7565b15612c6a565b604051631a90a21960e01b8152915080826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561293757600091612fbf575b50905090565b82813d8311612fe4575b612fd38183612762565b810103126106895750518038612fb9565b503d612fc9565b51906001600160401b038216820361147f57565b9060ff61302060409295949560008552606060208601526060850190612887565b9416910152565b8060a01c61303b576001600160a01b031690565b6024906040519063033b960d60e41b82526004820152fd5b519060ff8216820361147f57565b519063ffffffff8216820361147f57565b5190811515820361147f57565b9060208282031261147f5781516001600160401b03811161147f5761293492016129c1565b61ffff168060005260008051602061331b8339815191526020526130cc6040600020546130f7565b90816130d6575090565b90506000526000805160206132fb8339815191526020526129346040600020545b8015613123576001811461311d576024906040519063b998bad560e01b82526004820152fd5b50600190565b50600090565b1561313357600190565b600090565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461316a57565b604051633c64f99360e21b8152600490fd5b1561318357565b634e487b7160e01b600052600160045260246000fd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c16156131c857565b604051631afcd79f60e31b8152600490fd5b6001600160a01b038116156131f2576129bf90613244565b604051631e4fbdf760e01b815260006004820152602490fd5b60008051602061333b833981519152546001600160a01b0316330361322c57565b60405163118cdaa760e01b8152336004820152602490fd5b60008051602061333b83398151915280546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a356fed4cbc7742a1e11dcc33209ac33862ef146cfcb6d7f860df12df42105dfedb1c948c66ef0992b4bcc14f2551075db9459fc23bf706abb76034f1c66c1ba2846845e6aacb3f16e5b01c8b072a0ab4c38e919266014a45db863ee64a4580fb3e7e2e79d2e5e46f62be2ac831294e423b664f30320fb9ebaefd78a978cafe07c0f8c16ee6ac6bf7a8d7c37112a9426e00852b215ac4f5c50536beb6c95f1ba47b4af9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930079376a0dc6cbfe6f6f8f89ad24c262a8c6233f8df181d3fe5abb2e2442e8c738c3192e083c87c556db539f071d8a298869f487e951327b5616a6f85ae3da958ea26469706673582212207bc4f63809fac595a807d3db7f0b018f2f37e2fc46722017fb19171aab94e8f964736f6c63430008130033",F6=c=>typeof c[0]=="string"||Array.isArray(c[0])||"_isInterface"in c[0];class ze extends U0.ContractFactory{constructor(...e){if(F6(e))super(...e);else{const[a,i]=e;super(fe,ze.linkBytecode(a),i)}}static linkBytecode(e){let a=w1;return a=a.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__","g"),e["src/libraries/TransceiverStructs.sol:TransceiverStructs"].replace(/^0x/,"").toLowerCase()),a}getDeployTransaction(e,a,i,o,n,u,g){return super.getDeployTransaction(e,a,i,o,n,u,g||{})}deploy(e,a,i,o,n,u,g){return super.deploy(e,a,i,o,n,u,g||{})}connect(e){return super.connect(e)}static bytecode=w1;static abi=fe;static createInterface(){return new L0.Interface(fe)}static connect(e,a){return new L0.Contract(e,fe,a)}}const q6={NttManager:{connect:_6.connect},NttTransceiver:{connect:N6.connect}},$6={NttManager:{connect:O6.connect},NttTransceiver:{connect:B6.connect}},W6={NttManager:{connect:We.connect},NttTransceiver:{connect:ze.connect}},z6=[["1.1.0",W6],["1.0.0",$6],["0.1.0",q6]];function K6(c){for(const[e,a]of z6)if(D0.abiVersionMatches(c,e))return a;throw new Error(`Unknown ABI version: ${c}`)}class j6{manager;address;transceiver;constructor(e,a,i){this.manager=e,this.address=a,this.transceiver=i.NttTransceiver.connect(a,e.provider)}async getTransceiverType(){return"wormhole"}async getAddress(){return{chain:this.manager.chain,address:f.toUniversal(this.manager.chain,this.address)}}encodeFlags(e){return new Uint8Array([e.skipRelay?1:0])}async*setPeer(e){const i=await new L0.Contract(this.manager.contracts.coreBridge,["function messageFee() public view returns (uint256)"],this.manager.provider).getFunction("messageFee").staticCall(),o=await this.transceiver.setWormholePeer.populateTransaction(f.toChainId(e.chain),f.universalAddress(e));yield this.manager.createUnsignedTx({...o,value:i},"WormholeTransceiver.registerPeer")}async getPauser(){const e=await this.transceiver.pauser();return new f.EvmAddress(e)}async*setPauser(e){const a=f.canonicalAddress({chain:this.manager.chain,address:e}),i=await this.transceiver.transferPauserCapability.populateTransaction(a);yield this.manager.createUnsignedTx(i,"WormholeTransceiver.setPauser")}async getPeer(e){const a=await this.transceiver.getWormholePeer(f.toChainId(e)),i=f.hex.decode(a),o=new Uint8Array(32);return f.bytes.equals(o,i)?null:{chain:e,address:f.toUniversal(e,i)}}async isEvmChain(e){return await this.transceiver.isWormholeEvmChain(f.toChainId(e))}async*setIsEvmChain(e,a){const i=await this.transceiver.setIsWormholeEvmChain.populateTransaction(f.toChainId(e),a);yield this.manager.createUnsignedTx(i,"WormholeTransceiver.setIsEvmChain")}async*receive(e){const a=await this.transceiver.receiveMessage.populateTransaction(f.serialize$1(e));yield this.manager.createUnsignedTx(a,"WormholeTransceiver.receiveMessage")}async isWormholeRelayingEnabled(e){return await this.transceiver.isWormholeRelayingEnabled(f.toChainId(e))}async*setIsWormholeRelayingEnabled(e,a){const i=await this.transceiver.setIsWormholeRelayingEnabled.populateTransaction(f.toChainId(e),a);yield this.manager.createUnsignedTx(i,"WormholeTransceiver.setWormholeRelayingEnabled")}async isSpecialRelayingEnabled(e){return await this.transceiver.isSpecialRelayingEnabled(f.toChainId(e))}async*setIsSpecialRelayingEnabled(e,a){const i=await this.transceiver.setIsSpecialRelayingEnabled.populateTransaction(f.toChainId(e),a);yield this.manager.createUnsignedTx(i,"WormholeTransceiver.setSpecialRelayingEnabled")}}class ue{network;chain;provider;contracts;version;tokenAddress;chainId;manager;xcvrs;managerAddress;constructor(e,a,i,o,n="1.0.0"){if(this.network=e,this.chain=a,this.provider=i,this.contracts=o,this.version=n,!o.ntt)throw new Error("No Ntt Contracts provided");this.chainId=f.networkChainToNativeChainId.get(e,a),this.tokenAddress=o.ntt.token,this.managerAddress=o.ntt.manager;const u=K6(this.version);this.manager=u.NttManager.connect(o.ntt.manager,this.provider),this.xcvrs=[],"wormhole"in o.ntt.transceiver&&o.ntt.transceiver.wormhole&&["wormhole",...Object.keys(o.ntt.transceiver).filter(T=>{})].map(T=>{if(T!=="wormhole")throw new Error(`Unsupported transceiver type: ${T}`);this.xcvrs.push(new j6(this,o.ntt.transceiver[T],u))})}async getTransceiver(e){return this.xcvrs[e]||null}async getMode(){return await this.manager.getMode()===0n?"locking":"burning"}async isPaused(){return await this.manager.isPaused()}async*pause(){const e=await this.manager.pause.populateTransaction();yield this.createUnsignedTx(e,"Ntt.pause")}async*unpause(){const e=await this.manager.unpause.populateTransaction();yield this.createUnsignedTx(e,"Ntt.unpause")}async getOwner(){return new f.EvmAddress(await this.manager.owner())}async getPauser(){return new f.EvmAddress(await this.manager.pauser())}async*setOwner(e){const a=new f.EvmAddress(e).toString(),i=await this.manager.transferOwnership.populateTransaction(a);yield this.createUnsignedTx(i,"Ntt.setOwner")}async*setPauser(e){const a=new f.EvmAddress(e).toString(),i=await this.manager.transferPauserCapability.populateTransaction(a);yield this.createUnsignedTx(i,"Ntt.setPauser")}async getThreshold(){return Number(await this.manager.getThreshold())}async*setThreshold(e,a){const i=await this.manager.setThreshold.populateTransaction(e);yield this.createUnsignedTx(i,"Ntt.setThreshold")}async isRelayingAvailable(e){return(await Promise.all(this.xcvrs.map(async i=>{const[o,n]=await Promise.all([i.isWormholeRelayingEnabled(e),i.isSpecialRelayingEnabled(e)]);return o||n}))).filter(i=>i).length>0}async getIsExecuted(e){const a=e.payloadName==="WormholeTransfer"?e.payload:e.payload.payload;return await this.manager.isMessageExecuted(D0.messageDigest(e.emitterChain,a.nttManagerPayload))?!await this.getIsTransferInboundQueued(e):!1}async getIsTransferInboundQueued(e){const a=e.payloadName==="WormholeTransfer"?e.payload:e.payload.payload;return await this.getInboundQueuedTransfer(e.emitterChain,a.nttManagerPayload)!==null}getIsApproved(e){const a=e.payloadName==="WormholeTransfer"?e.payload:e.payload.payload;return this.manager.isMessageApproved(D0.messageDigest(e.emitterChain,a.nttManagerPayload))}async getTokenDecimals(){return await U0.EvmPlatform.getDecimals(this.network,this.chain,this.provider,this.tokenAddress)}async getPeer(e){const a=await this.manager.getPeer(f.toChainId(e)),i=f.hex.decode(a.peerAddress),o=new Uint8Array(32);return f.bytes.equals(o,i)?null:{address:{chain:e,address:f.toUniversal(e,i)},tokenDecimals:Number(a.tokenDecimals),inboundLimit:await this.getInboundLimit(e)}}static async fromRpc(e,a){const[i,o]=await U0.EvmPlatform.chainFromRpc(e),n=a[o];if(n.network!==i)throw new Error(`Network mismatch: ${n.network} != ${i}`);const u=await ue.getVersion(e,n.contracts);return new ue(i,o,e,n.contracts,u)}encodeOptions(e){const a=[];return a.push({index:0,payload:this.xcvrs[0].encodeFlags({skipRelay:!e.automatic})}),a}static async getVersion(e,a){const i=new L0.Contract(a.ntt.manager,["function NTT_MANAGER_VERSION() public view returns (string)"],e);try{const o=await i.getFunction("NTT_MANAGER_VERSION").staticCall();if(!o)throw new Error("NTT_MANAGER_VERSION not found");return o}catch(o){throw console.error(`Failed to get NTT_MANAGER_VERSION from contract ${a.ntt?.manager} on ${(await e.getNetwork()).name}`),o}}async getCustodyAddress(){return this.managerAddress}async quoteDeliveryPrice(e,a){const[,i]=await this.manager.quoteDeliveryPrice(f.toChainId(e),D0.encodeTransceiverInstructions(this.encodeOptions(a)));return i}async*setPeer(e,a,i){const o=await this.manager.setPeer.populateTransaction(f.toChainId(e.chain),f.universalAddress(e),a,i);yield this.createUnsignedTx(o,"Ntt.setPeer")}async*setWormholeTransceiverPeer(e){yield*this.setTransceiverPeer(0,e)}async*setTransceiverPeer(e,a){if(e>=this.xcvrs.length)throw new Error("Transceiver not found");yield*this.xcvrs[e].setPeer(a)}async*transfer(e,a,i,o){const n=new f.EvmAddress(e).toString(),u=await this.quoteDeliveryPrice(i.chain,o);o.wrapNative&&(yield this.wrapNative(e,a));const g=await this.approve(e,a);g&&(yield g);const T=f.universalAddress(i),w=await this.manager.getFunction("transfer(uint256,uint16,bytes32,bytes32,bool,bytes)").populateTransaction(a,f.toChainId(i.chain),T,T,o.queue,D0.encodeTransceiverInstructions(this.encodeOptions(o)),{value:u});yield this.createUnsignedTx(f.addFrom(w,n),"Ntt.transfer")}async wrapNative(e,a){const i=new f.EvmAddress(e).toString(),n=await new L0.Contract(this.tokenAddress,["function deposit() public payable"]).getFunction("deposit").populateTransaction({value:a});return this.createUnsignedTx(f.addFrom(n,i),"Ntt.Deposit")}async approve(e,a){const i=new f.EvmAddress(e).toString(),o=U0.EvmPlatform.getTokenImplementation(this.provider,this.tokenAddress);if(await o.allowance(i,this.managerAddress)<a){const u=await o.approve.populateTransaction(this.managerAddress,a);return this.createUnsignedTx(f.addFrom(u,i),"Ntt.Approve")}}async*redeem(e){if(e.length!==this.xcvrs.length)throw new Error("Not enough attestations for the registered Transceivers");for(const a in this.xcvrs){const i=this.xcvrs[a],o=e[a];if(o?.payloadName!=="WormholeTransfer")throw new Error("Invalid attestation type for redeem");yield*i.receive(o)}}async getCurrentOutboundCapacity(){return await this.manager.getCurrentOutboundCapacity()}async getOutboundLimit(){const e=(await this.manager.getOutboundLimitParams()).limit,a=M1(e),i=await this.getTokenDecimals();return S1(a,i)}async*setOutboundLimit(e){const a=await this.manager.setOutboundLimit.populateTransaction(e);yield this.createUnsignedTx(a,"Ntt.setOutboundLimit")}async getCurrentInboundCapacity(e){return await this.manager.getCurrentInboundCapacity(f.toChainId(e))}async getInboundLimit(e){const a=(await this.manager.getInboundLimitParams(f.toChainId(e))).limit,i=M1(a),o=await this.getTokenDecimals();return S1(i,o)}async*setInboundLimit(e,a){const i=await this.manager.setInboundLimit.populateTransaction(a,f.toChainId(e));yield this.createUnsignedTx(i,"Ntt.setInboundLimit")}async getRateLimitDuration(){return await this.manager.rateLimitDuration()}async getInboundQueuedTransfer(e,a){const i=await this.manager.getInboundQueuedTransfer(D0.messageDigest(e,a));if(i.txTimestamp>0n){const{recipient:o,amount:n,txTimestamp:u}=i,g=await this.getRateLimitDuration();return{recipient:new f.EvmAddress(o),amount:n,rateLimitExpiryTimestamp:Number(u+g)}}return null}async*completeInboundQueuedTransfer(e,a,i){const o=await this.manager.completeInboundQueuedTransfer.populateTransaction(D0.messageDigest(e,a));yield this.createUnsignedTx(o,"Ntt.completeInboundQueuedTransfer")}async verifyAddresses(){const e={manager:this.managerAddress,token:this.tokenAddress,transceiver:{...this.xcvrs.length>0&&{wormhole:this.xcvrs[0].address}}},a={manager:this.managerAddress,token:await this.manager.token(),transceiver:{wormhole:(await this.manager.getTransceivers())[0]}},i=(o,n)=>{for(const u in o)typeof o[u]=="object"?(i(o[u],n[u]),Object.keys(o[u]).length===0&&delete o[u]):o[u]===n[u]&&delete o[u]};return i(a,e),Object.keys(a).length>0?a:null}createUnsignedTx(e,a,i=!1){return new H1.EvmUnsignedTransaction(f.addChainId(e,this.chainId),this.network,this.chain,a,i)}}function M1(c){const e=Number(c&0xffn);return{amount:c>>8n,decimals:e}}function S1(c,e){const{amount:a,decimals:i}=c;return V6(a,i,e)}function V6(c,e,a){return e==a?c:e>a?c/10n**BigInt(e-a):c*10n**BigInt(a-e)}const Q6={Mainnet:{Arbitrum:"0x0Af42A597b0C201D4dcf450DcD0c06d55ddC1C77",Avalanche:"0x4e9Af03fbf1aa2b79A2D4babD3e22e09f18Bb8EE",Base:"0x83216747fC21b86173D800E2960c0D5395de0F30",Berachain:"0x0a2AF374Cc9CCCbB0Acc4E34B20b9d02a0f08c30",Bsc:"0x39B57Dd9908F8be02CfeE283b67eA1303Bc29fe1",Celo:"0x3d69869fcB9e1CD1F4020b637fb8256030BAc8fC",Ethereum:"0xD2D9c936165a85F27a5a7e07aFb974D022B89463",HyperEVM:"0x431017B1718b86898C7590fFcCC380DEf0456393",Linea:"0xEAa5AddB5b8939Eb73F7faF46e193EefECaF13E9",Mezo:"0x484b5593BbB90383f94FB299470F09427cf6cfE2",Moonbeam:"0x1365593C8bae71a55e48E105a2Bb76d5928c7DE3",Optimism:"0x85C0129bE5226C9F0Cf4e419D2fefc1c3FCa25cF",Plume:"0x6Eb53371f646788De6B4D0225a4Ed1d9267188AD",Polygon:"0x6762157b73941e36cEd0AEf54614DdE545d0F990",Scroll:"0x055625d48968f99409244E8c3e03FbE73B235a62",Sonic:"0xaCa00703bb87F31D6F9fCcc963548b48FA46DfeB",Unichain:"0x607723D6353Dae3ef62B7B277Cfabd0F4bc6CB4C",Worldchain:"0x66b1644400D51e104272337226De3EF1A820eC79",XRPLEVM:"0x6bBd1ff3bB303F88835A714EE3241bF45DE26d29",Seievm:"0x3F2D6441C7a59Dfe80f8e14142F9E28F6D440445"},Testnet:{ArbitrumSepolia:"0xd048170F1ECB8D47E499D3459aC379DA023E2C1B",Avalanche:"0x4e9Af03fbf1aa2b79A2D4babD3e22e09f18Bb8EE",BaseSepolia:"0x5845E08d890E21687F7Ebf7CbAbD360cD91c6245",OptimismSepolia:"0xaDB1C56D363FF5A75260c3bd27dd7C1fC8421EF5",Sepolia:"0x54DD7080aE169DD923fE56d0C4f814a0a17B8f41",Seievm:"0x3F2D6441C7a59Dfe80f8e14142F9E28F6D440445",Converge:"0x3d8c26b67BDf630FBB44F09266aFA735F1129197",Plume:"0x6Eb53371f646788De6B4D0225a4Ed1d9267188AD",Monad:"0x93FE94Ad887a1B04DBFf1f736bfcD1698D4cfF66",Celo:"0x3d69869fcB9e1CD1F4020b637fb8256030BAc8fC",XRPLEVM:"0xcDD9d7C759b29680f7a516d0058de8293b2AC7b1",Mezo:"0x484b5593BbB90383f94FB299470F09427cf6cfE2"}},G6={Mainnet:{Arbitrum:800000n},Testnet:{ArbitrumSepolia:800000n}};class Ke{network;chain;provider;contracts;chainId;executorAddress;constructor(e,a,i,o){this.network=e,this.chain=a,this.provider=i,this.contracts=o,this.chainId=f.networkChainToNativeChainId.get(e,a);const n=Q6[this.network]?.[this.chain];if(!n)throw new Error(`Executor address not found for chain ${this.chain}`);this.executorAddress=n}static async fromRpc(e,a){const[i,o]=await U0.EvmPlatform.chainFromRpc(e),n=a[o];if(n.network!==i)throw new Error(`Network mismatch: ${n.network} != ${i}`);return new Ke(i,o,e,n.contracts)}async*transfer(e,a,i,o,n,u=!1){const g=new f.EvmAddress(e).toString(),T={queue:!1,automatic:!1},w=await n.quoteDeliveryPrice(a.chain,T);u&&(yield n.wrapNative(e,i));const S=U0.EvmPlatform.getTokenImplementation(this.provider,n.tokenAddress);if(await S.allowance(g,this.executorAddress)<i){const G=await S.approve.populateTransaction(this.executorAddress,i);yield n.createUnsignedTx(G,"Ntt.Approve")}const A=["function transfer(address nttManager, uint256 amount, uint16 recipientChain, bytes32 recipientAddress, bytes32 refundAddress, bytes encodedInstructions, (uint256 value, address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint16 dbps, address payee) feeArgs) external payable returns (uint64 msgId)"],I=new L0.Interface(A),C=n.managerAddress,N=f.toChainId(a.chain),R=a.address.toUniversalAddress().toUint8Array(),E=e.toUniversalAddress().toUint8Array(),D=D0.encodeTransceiverInstructions(n.encodeOptions({queue:!1,automatic:!1})),O={value:o.estimatedCost,refundAddress:g,signedQuote:o.signedQuote,instructions:o.relayInstructions},U={dbps:o.referrerFeeDbps,payee:o.referrer.address.toString()},V=I.encodeFunctionData("transfer",[C,i,N,R,E,D,O,U]),z={to:this.executorAddress,data:V,value:o.estimatedCost+w};yield n.createUnsignedTx(z,"NttWithExecutor.transfer")}async estimateMsgValueAndGasLimit(e){return{msgValue:0n,gasLimit:G6[this.network]?.[this.chain]??500000n}}}f.registerProtocol(f._platform,"Ntt",ue);f.registerProtocol(f._platform,"NttWithExecutor",Ke);var be={exports:{}},H6=be.exports,A1;function Z6(){return A1||(A1=1,(function(c){(function(e,a){function i(b,t){if(!b)throw new Error(t||"Assertion failed")}function o(b,t){b.super_=t;var s=function(){};s.prototype=t.prototype,b.prototype=new s,b.prototype.constructor=b}function n(b,t,s){if(n.isBN(b))return b;this.negative=0,this.words=null,this.length=0,this.red=null,b!==null&&((t==="le"||t==="be")&&(s=t,t=10),this._init(b||0,t||10,s||"be"))}typeof e=="object"?e.exports=n:a.BN=n,n.BN=n,n.wordSize=26;var u;try{typeof window<"u"&&typeof window.Buffer<"u"?u=window.Buffer:u=f.requireDist().Buffer}catch{}n.isBN=function(t){return t instanceof n?!0:t!==null&&typeof t=="object"&&t.constructor.wordSize===n.wordSize&&Array.isArray(t.words)},n.max=function(t,s){return t.cmp(s)>0?t:s},n.min=function(t,s){return t.cmp(s)<0?t:s},n.prototype._init=function(t,s,d){if(typeof t=="number")return this._initNumber(t,s,d);if(typeof t=="object")return this._initArray(t,s,d);s==="hex"&&(s=16),i(s===(s|0)&&s>=2&&s<=36),t=t.toString().replace(/\s+/g,"");var l=0;t[0]==="-"&&(l++,this.negative=1),l<t.length&&(s===16?this._parseHex(t,l,d):(this._parseBase(t,s,l),d==="le"&&this._initArray(this.toArray(),s,d)))},n.prototype._initNumber=function(t,s,d){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[t&67108863],this.length=1):t<4503599627370496?(this.words=[t&67108863,t/67108864&67108863],this.length=2):(i(t<9007199254740992),this.words=[t&67108863,t/67108864&67108863,1],this.length=3),d==="le"&&this._initArray(this.toArray(),s,d)},n.prototype._initArray=function(t,s,d){if(i(typeof t.length=="number"),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var l=0;l<this.length;l++)this.words[l]=0;var y,h,v=0;if(d==="be")for(l=t.length-1,y=0;l>=0;l-=3)h=t[l]|t[l-1]<<8|t[l-2]<<16,this.words[y]|=h<<v&67108863,this.words[y+1]=h>>>26-v&67108863,v+=24,v>=26&&(v-=26,y++);else if(d==="le")for(l=0,y=0;l<t.length;l+=3)h=t[l]|t[l+1]<<8|t[l+2]<<16,this.words[y]|=h<<v&67108863,this.words[y+1]=h>>>26-v&67108863,v+=24,v>=26&&(v-=26,y++);return this._strip()};function g(b,t){var s=b.charCodeAt(t);if(s>=48&&s<=57)return s-48;if(s>=65&&s<=70)return s-55;if(s>=97&&s<=102)return s-87;i(!1,"Invalid character in "+b)}function T(b,t,s){var d=g(b,s);return s-1>=t&&(d|=g(b,s-1)<<4),d}n.prototype._parseHex=function(t,s,d){this.length=Math.ceil((t.length-s)/6),this.words=new Array(this.length);for(var l=0;l<this.length;l++)this.words[l]=0;var y=0,h=0,v;if(d==="be")for(l=t.length-1;l>=s;l-=2)v=T(t,s,l)<<y,this.words[h]|=v&67108863,y>=18?(y-=18,h+=1,this.words[h]|=v>>>26):y+=8;else{var m=t.length-s;for(l=m%2===0?s+1:s;l<t.length;l+=2)v=T(t,s,l)<<y,this.words[h]|=v&67108863,y>=18?(y-=18,h+=1,this.words[h]|=v>>>26):y+=8}this._strip()};function w(b,t,s,d){for(var l=0,y=0,h=Math.min(b.length,s),v=t;v<h;v++){var m=b.charCodeAt(v)-48;l*=d,m>=49?y=m-49+10:m>=17?y=m-17+10:y=m,i(m>=0&&y<d,"Invalid character"),l+=y}return l}n.prototype._parseBase=function(t,s,d){this.words=[0],this.length=1;for(var l=0,y=1;y<=67108863;y*=s)l++;l--,y=y/s|0;for(var h=t.length-d,v=h%l,m=Math.min(h,h-v)+d,r=0,p=d;p<m;p+=l)r=w(t,p,p+l,s),this.imuln(y),this.words[0]+r<67108864?this.words[0]+=r:this._iaddn(r);if(v!==0){var x=1;for(r=w(t,p,t.length,s),p=0;p<v;p++)x*=s;this.imuln(x),this.words[0]+r<67108864?this.words[0]+=r:this._iaddn(r)}this._strip()},n.prototype.copy=function(t){t.words=new Array(this.length);for(var s=0;s<this.length;s++)t.words[s]=this.words[s];t.length=this.length,t.negative=this.negative,t.red=this.red};function S(b,t){b.words=t.words,b.length=t.length,b.negative=t.negative,b.red=t.red}if(n.prototype._move=function(t){S(t,this)},n.prototype.clone=function(){var t=new n(null);return this.copy(t),t},n.prototype._expand=function(t){for(;this.length<t;)this.words[this.length++]=0;return this},n.prototype._strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{n.prototype[Symbol.for("nodejs.util.inspect.custom")]=M}catch{n.prototype.inspect=M}else n.prototype.inspect=M;function M(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var A=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],I=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],C=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(t,s){t=t||10,s=s|0||1;var d;if(t===16||t==="hex"){d="";for(var l=0,y=0,h=0;h<this.length;h++){var v=this.words[h],m=((v<<l|y)&16777215).toString(16);y=v>>>24-l&16777215,l+=2,l>=26&&(l-=26,h--),y!==0||h!==this.length-1?d=A[6-m.length]+m+d:d=m+d}for(y!==0&&(d=y.toString(16)+d);d.length%s!==0;)d="0"+d;return this.negative!==0&&(d="-"+d),d}if(t===(t|0)&&t>=2&&t<=36){var r=I[t],p=C[t];d="";var x=this.clone();for(x.negative=0;!x.isZero();){var k=x.modrn(p).toString(t);x=x.idivn(p),x.isZero()?d=k+d:d=A[r-k.length]+k+d}for(this.isZero()&&(d="0"+d);d.length%s!==0;)d="0"+d;return this.negative!==0&&(d="-"+d),d}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var t=this.words[0];return this.length===2?t+=this.words[1]*67108864:this.length===3&&this.words[2]===1?t+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-t:t},n.prototype.toJSON=function(){return this.toString(16,2)},u&&(n.prototype.toBuffer=function(t,s){return this.toArrayLike(u,t,s)}),n.prototype.toArray=function(t,s){return this.toArrayLike(Array,t,s)};var N=function(t,s){return t.allocUnsafe?t.allocUnsafe(s):new t(s)};n.prototype.toArrayLike=function(t,s,d){this._strip();var l=this.byteLength(),y=d||Math.max(1,l);i(l<=y,"byte array longer than desired length"),i(y>0,"Requested array length <= 0");var h=N(t,y),v=s==="le"?"LE":"BE";return this["_toArrayLike"+v](h,l),h},n.prototype._toArrayLikeLE=function(t,s){for(var d=0,l=0,y=0,h=0;y<this.length;y++){var v=this.words[y]<<h|l;t[d++]=v&255,d<t.length&&(t[d++]=v>>8&255),d<t.length&&(t[d++]=v>>16&255),h===6?(d<t.length&&(t[d++]=v>>24&255),l=0,h=0):(l=v>>>24,h+=2)}if(d<t.length)for(t[d++]=l;d<t.length;)t[d++]=0},n.prototype._toArrayLikeBE=function(t,s){for(var d=t.length-1,l=0,y=0,h=0;y<this.length;y++){var v=this.words[y]<<h|l;t[d--]=v&255,d>=0&&(t[d--]=v>>8&255),d>=0&&(t[d--]=v>>16&255),h===6?(d>=0&&(t[d--]=v>>24&255),l=0,h=0):(l=v>>>24,h+=2)}if(d>=0)for(t[d--]=l;d>=0;)t[d--]=0},Math.clz32?n.prototype._countBits=function(t){return 32-Math.clz32(t)}:n.prototype._countBits=function(t){var s=t,d=0;return s>=4096&&(d+=13,s>>>=13),s>=64&&(d+=7,s>>>=7),s>=8&&(d+=4,s>>>=4),s>=2&&(d+=2,s>>>=2),d+s},n.prototype._zeroBits=function(t){if(t===0)return 26;var s=t,d=0;return(s&8191)===0&&(d+=13,s>>>=13),(s&127)===0&&(d+=7,s>>>=7),(s&15)===0&&(d+=4,s>>>=4),(s&3)===0&&(d+=2,s>>>=2),(s&1)===0&&d++,d},n.prototype.bitLength=function(){var t=this.words[this.length-1],s=this._countBits(t);return(this.length-1)*26+s};function R(b){for(var t=new Array(b.bitLength()),s=0;s<t.length;s++){var d=s/26|0,l=s%26;t[s]=b.words[d]>>>l&1}return t}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,s=0;s<this.length;s++){var d=this._zeroBits(this.words[s]);if(t+=d,d!==26)break}return t},n.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},n.prototype.toTwos=function(t){return this.negative!==0?this.abs().inotn(t).iaddn(1):this.clone()},n.prototype.fromTwos=function(t){return this.testn(t-1)?this.notn(t).iaddn(1).ineg():this.clone()},n.prototype.isNeg=function(){return this.negative!==0},n.prototype.neg=function(){return this.clone().ineg()},n.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},n.prototype.iuor=function(t){for(;this.length<t.length;)this.words[this.length++]=0;for(var s=0;s<t.length;s++)this.words[s]=this.words[s]|t.words[s];return this._strip()},n.prototype.ior=function(t){return i((this.negative|t.negative)===0),this.iuor(t)},n.prototype.or=function(t){return this.length>t.length?this.clone().ior(t):t.clone().ior(this)},n.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},n.prototype.iuand=function(t){var s;this.length>t.length?s=t:s=this;for(var d=0;d<s.length;d++)this.words[d]=this.words[d]&t.words[d];return this.length=s.length,this._strip()},n.prototype.iand=function(t){return i((this.negative|t.negative)===0),this.iuand(t)},n.prototype.and=function(t){return this.length>t.length?this.clone().iand(t):t.clone().iand(this)},n.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},n.prototype.iuxor=function(t){var s,d;this.length>t.length?(s=this,d=t):(s=t,d=this);for(var l=0;l<d.length;l++)this.words[l]=s.words[l]^d.words[l];if(this!==s)for(;l<s.length;l++)this.words[l]=s.words[l];return this.length=s.length,this._strip()},n.prototype.ixor=function(t){return i((this.negative|t.negative)===0),this.iuxor(t)},n.prototype.xor=function(t){return this.length>t.length?this.clone().ixor(t):t.clone().ixor(this)},n.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},n.prototype.inotn=function(t){i(typeof t=="number"&&t>=0);var s=Math.ceil(t/26)|0,d=t%26;this._expand(s),d>0&&s--;for(var l=0;l<s;l++)this.words[l]=~this.words[l]&67108863;return d>0&&(this.words[l]=~this.words[l]&67108863>>26-d),this._strip()},n.prototype.notn=function(t){return this.clone().inotn(t)},n.prototype.setn=function(t,s){i(typeof t=="number"&&t>=0);var d=t/26|0,l=t%26;return this._expand(d+1),s?this.words[d]=this.words[d]|1<<l:this.words[d]=this.words[d]&~(1<<l),this._strip()},n.prototype.iadd=function(t){var s;if(this.negative!==0&&t.negative===0)return this.negative=0,s=this.isub(t),this.negative^=1,this._normSign();if(this.negative===0&&t.negative!==0)return t.negative=0,s=this.isub(t),t.negative=1,s._normSign();var d,l;this.length>t.length?(d=this,l=t):(d=t,l=this);for(var y=0,h=0;h<l.length;h++)s=(d.words[h]|0)+(l.words[h]|0)+y,this.words[h]=s&67108863,y=s>>>26;for(;y!==0&&h<d.length;h++)s=(d.words[h]|0)+y,this.words[h]=s&67108863,y=s>>>26;if(this.length=d.length,y!==0)this.words[this.length]=y,this.length++;else if(d!==this)for(;h<d.length;h++)this.words[h]=d.words[h];return this},n.prototype.add=function(t){var s;return t.negative!==0&&this.negative===0?(t.negative=0,s=this.sub(t),t.negative^=1,s):t.negative===0&&this.negative!==0?(this.negative=0,s=t.sub(this),this.negative=1,s):this.length>t.length?this.clone().iadd(t):t.clone().iadd(this)},n.prototype.isub=function(t){if(t.negative!==0){t.negative=0;var s=this.iadd(t);return t.negative=1,s._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var d=this.cmp(t);if(d===0)return this.negative=0,this.length=1,this.words[0]=0,this;var l,y;d>0?(l=this,y=t):(l=t,y=this);for(var h=0,v=0;v<y.length;v++)s=(l.words[v]|0)-(y.words[v]|0)+h,h=s>>26,this.words[v]=s&67108863;for(;h!==0&&v<l.length;v++)s=(l.words[v]|0)+h,h=s>>26,this.words[v]=s&67108863;if(h===0&&v<l.length&&l!==this)for(;v<l.length;v++)this.words[v]=l.words[v];return this.length=Math.max(this.length,v),l!==this&&(this.negative=1),this._strip()},n.prototype.sub=function(t){return this.clone().isub(t)};function E(b,t,s){s.negative=t.negative^b.negative;var d=b.length+t.length|0;s.length=d,d=d-1|0;var l=b.words[0]|0,y=t.words[0]|0,h=l*y,v=h&67108863,m=h/67108864|0;s.words[0]=v;for(var r=1;r<d;r++){for(var p=m>>>26,x=m&67108863,k=Math.min(r,t.length-1),P=Math.max(0,r-b.length+1);P<=k;P++){var F=r-P|0;l=b.words[F]|0,y=t.words[P]|0,h=l*y+x,p+=h/67108864|0,x=h&67108863}s.words[r]=x|0,m=p|0}return m!==0?s.words[r]=m|0:s.length--,s._strip()}var D=function(t,s,d){var l=t.words,y=s.words,h=d.words,v=0,m,r,p,x=l[0]|0,k=x&8191,P=x>>>13,F=l[1]|0,q=F&8191,W=F>>>13,$0=l[2]|0,Z=$0&8191,Y=$0>>>13,Qe=l[3]|0,J=Qe&8191,X=Qe>>>13,Ge=l[4]|0,e0=Ge&8191,t0=Ge>>>13,He=l[5]|0,a0=He&8191,n0=He>>>13,Ze=l[6]|0,i0=Ze&8191,s0=Ze>>>13,Ye=l[7]|0,r0=Ye&8191,o0=Ye>>>13,Je=l[8]|0,f0=Je&8191,d0=Je>>>13,Xe=l[9]|0,c0=Xe&8191,b0=Xe>>>13,e1=y[0]|0,u0=e1&8191,l0=e1>>>13,t1=y[1]|0,m0=t1&8191,p0=t1>>>13,a1=y[2]|0,y0=a1&8191,h0=a1>>>13,n1=y[3]|0,g0=n1&8191,v0=n1>>>13,i1=y[4]|0,T0=i1&8191,w0=i1>>>13,s1=y[5]|0,M0=s1&8191,S0=s1>>>13,r1=y[6]|0,A0=r1&8191,I0=r1>>>13,o1=y[7]|0,x0=o1&8191,k0=o1>>>13,f1=y[8]|0,P0=f1&8191,C0=f1>>>13,d1=y[9]|0,R0=d1&8191,_0=d1>>>13;d.negative=t.negative^s.negative,d.length=19,m=Math.imul(k,u0),r=Math.imul(k,l0),r=r+Math.imul(P,u0)|0,p=Math.imul(P,l0);var he=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(he>>>26)|0,he&=67108863,m=Math.imul(q,u0),r=Math.imul(q,l0),r=r+Math.imul(W,u0)|0,p=Math.imul(W,l0),m=m+Math.imul(k,m0)|0,r=r+Math.imul(k,p0)|0,r=r+Math.imul(P,m0)|0,p=p+Math.imul(P,p0)|0;var ge=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(ge>>>26)|0,ge&=67108863,m=Math.imul(Z,u0),r=Math.imul(Z,l0),r=r+Math.imul(Y,u0)|0,p=Math.imul(Y,l0),m=m+Math.imul(q,m0)|0,r=r+Math.imul(q,p0)|0,r=r+Math.imul(W,m0)|0,p=p+Math.imul(W,p0)|0,m=m+Math.imul(k,y0)|0,r=r+Math.imul(k,h0)|0,r=r+Math.imul(P,y0)|0,p=p+Math.imul(P,h0)|0;var ve=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(ve>>>26)|0,ve&=67108863,m=Math.imul(J,u0),r=Math.imul(J,l0),r=r+Math.imul(X,u0)|0,p=Math.imul(X,l0),m=m+Math.imul(Z,m0)|0,r=r+Math.imul(Z,p0)|0,r=r+Math.imul(Y,m0)|0,p=p+Math.imul(Y,p0)|0,m=m+Math.imul(q,y0)|0,r=r+Math.imul(q,h0)|0,r=r+Math.imul(W,y0)|0,p=p+Math.imul(W,h0)|0,m=m+Math.imul(k,g0)|0,r=r+Math.imul(k,v0)|0,r=r+Math.imul(P,g0)|0,p=p+Math.imul(P,v0)|0;var Te=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(Te>>>26)|0,Te&=67108863,m=Math.imul(e0,u0),r=Math.imul(e0,l0),r=r+Math.imul(t0,u0)|0,p=Math.imul(t0,l0),m=m+Math.imul(J,m0)|0,r=r+Math.imul(J,p0)|0,r=r+Math.imul(X,m0)|0,p=p+Math.imul(X,p0)|0,m=m+Math.imul(Z,y0)|0,r=r+Math.imul(Z,h0)|0,r=r+Math.imul(Y,y0)|0,p=p+Math.imul(Y,h0)|0,m=m+Math.imul(q,g0)|0,r=r+Math.imul(q,v0)|0,r=r+Math.imul(W,g0)|0,p=p+Math.imul(W,v0)|0,m=m+Math.imul(k,T0)|0,r=r+Math.imul(k,w0)|0,r=r+Math.imul(P,T0)|0,p=p+Math.imul(P,w0)|0;var we=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(we>>>26)|0,we&=67108863,m=Math.imul(a0,u0),r=Math.imul(a0,l0),r=r+Math.imul(n0,u0)|0,p=Math.imul(n0,l0),m=m+Math.imul(e0,m0)|0,r=r+Math.imul(e0,p0)|0,r=r+Math.imul(t0,m0)|0,p=p+Math.imul(t0,p0)|0,m=m+Math.imul(J,y0)|0,r=r+Math.imul(J,h0)|0,r=r+Math.imul(X,y0)|0,p=p+Math.imul(X,h0)|0,m=m+Math.imul(Z,g0)|0,r=r+Math.imul(Z,v0)|0,r=r+Math.imul(Y,g0)|0,p=p+Math.imul(Y,v0)|0,m=m+Math.imul(q,T0)|0,r=r+Math.imul(q,w0)|0,r=r+Math.imul(W,T0)|0,p=p+Math.imul(W,w0)|0,m=m+Math.imul(k,M0)|0,r=r+Math.imul(k,S0)|0,r=r+Math.imul(P,M0)|0,p=p+Math.imul(P,S0)|0;var Me=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(Me>>>26)|0,Me&=67108863,m=Math.imul(i0,u0),r=Math.imul(i0,l0),r=r+Math.imul(s0,u0)|0,p=Math.imul(s0,l0),m=m+Math.imul(a0,m0)|0,r=r+Math.imul(a0,p0)|0,r=r+Math.imul(n0,m0)|0,p=p+Math.imul(n0,p0)|0,m=m+Math.imul(e0,y0)|0,r=r+Math.imul(e0,h0)|0,r=r+Math.imul(t0,y0)|0,p=p+Math.imul(t0,h0)|0,m=m+Math.imul(J,g0)|0,r=r+Math.imul(J,v0)|0,r=r+Math.imul(X,g0)|0,p=p+Math.imul(X,v0)|0,m=m+Math.imul(Z,T0)|0,r=r+Math.imul(Z,w0)|0,r=r+Math.imul(Y,T0)|0,p=p+Math.imul(Y,w0)|0,m=m+Math.imul(q,M0)|0,r=r+Math.imul(q,S0)|0,r=r+Math.imul(W,M0)|0,p=p+Math.imul(W,S0)|0,m=m+Math.imul(k,A0)|0,r=r+Math.imul(k,I0)|0,r=r+Math.imul(P,A0)|0,p=p+Math.imul(P,I0)|0;var Se=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(Se>>>26)|0,Se&=67108863,m=Math.imul(r0,u0),r=Math.imul(r0,l0),r=r+Math.imul(o0,u0)|0,p=Math.imul(o0,l0),m=m+Math.imul(i0,m0)|0,r=r+Math.imul(i0,p0)|0,r=r+Math.imul(s0,m0)|0,p=p+Math.imul(s0,p0)|0,m=m+Math.imul(a0,y0)|0,r=r+Math.imul(a0,h0)|0,r=r+Math.imul(n0,y0)|0,p=p+Math.imul(n0,h0)|0,m=m+Math.imul(e0,g0)|0,r=r+Math.imul(e0,v0)|0,r=r+Math.imul(t0,g0)|0,p=p+Math.imul(t0,v0)|0,m=m+Math.imul(J,T0)|0,r=r+Math.imul(J,w0)|0,r=r+Math.imul(X,T0)|0,p=p+Math.imul(X,w0)|0,m=m+Math.imul(Z,M0)|0,r=r+Math.imul(Z,S0)|0,r=r+Math.imul(Y,M0)|0,p=p+Math.imul(Y,S0)|0,m=m+Math.imul(q,A0)|0,r=r+Math.imul(q,I0)|0,r=r+Math.imul(W,A0)|0,p=p+Math.imul(W,I0)|0,m=m+Math.imul(k,x0)|0,r=r+Math.imul(k,k0)|0,r=r+Math.imul(P,x0)|0,p=p+Math.imul(P,k0)|0;var Ae=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,m=Math.imul(f0,u0),r=Math.imul(f0,l0),r=r+Math.imul(d0,u0)|0,p=Math.imul(d0,l0),m=m+Math.imul(r0,m0)|0,r=r+Math.imul(r0,p0)|0,r=r+Math.imul(o0,m0)|0,p=p+Math.imul(o0,p0)|0,m=m+Math.imul(i0,y0)|0,r=r+Math.imul(i0,h0)|0,r=r+Math.imul(s0,y0)|0,p=p+Math.imul(s0,h0)|0,m=m+Math.imul(a0,g0)|0,r=r+Math.imul(a0,v0)|0,r=r+Math.imul(n0,g0)|0,p=p+Math.imul(n0,v0)|0,m=m+Math.imul(e0,T0)|0,r=r+Math.imul(e0,w0)|0,r=r+Math.imul(t0,T0)|0,p=p+Math.imul(t0,w0)|0,m=m+Math.imul(J,M0)|0,r=r+Math.imul(J,S0)|0,r=r+Math.imul(X,M0)|0,p=p+Math.imul(X,S0)|0,m=m+Math.imul(Z,A0)|0,r=r+Math.imul(Z,I0)|0,r=r+Math.imul(Y,A0)|0,p=p+Math.imul(Y,I0)|0,m=m+Math.imul(q,x0)|0,r=r+Math.imul(q,k0)|0,r=r+Math.imul(W,x0)|0,p=p+Math.imul(W,k0)|0,m=m+Math.imul(k,P0)|0,r=r+Math.imul(k,C0)|0,r=r+Math.imul(P,P0)|0,p=p+Math.imul(P,C0)|0;var Ie=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,m=Math.imul(c0,u0),r=Math.imul(c0,l0),r=r+Math.imul(b0,u0)|0,p=Math.imul(b0,l0),m=m+Math.imul(f0,m0)|0,r=r+Math.imul(f0,p0)|0,r=r+Math.imul(d0,m0)|0,p=p+Math.imul(d0,p0)|0,m=m+Math.imul(r0,y0)|0,r=r+Math.imul(r0,h0)|0,r=r+Math.imul(o0,y0)|0,p=p+Math.imul(o0,h0)|0,m=m+Math.imul(i0,g0)|0,r=r+Math.imul(i0,v0)|0,r=r+Math.imul(s0,g0)|0,p=p+Math.imul(s0,v0)|0,m=m+Math.imul(a0,T0)|0,r=r+Math.imul(a0,w0)|0,r=r+Math.imul(n0,T0)|0,p=p+Math.imul(n0,w0)|0,m=m+Math.imul(e0,M0)|0,r=r+Math.imul(e0,S0)|0,r=r+Math.imul(t0,M0)|0,p=p+Math.imul(t0,S0)|0,m=m+Math.imul(J,A0)|0,r=r+Math.imul(J,I0)|0,r=r+Math.imul(X,A0)|0,p=p+Math.imul(X,I0)|0,m=m+Math.imul(Z,x0)|0,r=r+Math.imul(Z,k0)|0,r=r+Math.imul(Y,x0)|0,p=p+Math.imul(Y,k0)|0,m=m+Math.imul(q,P0)|0,r=r+Math.imul(q,C0)|0,r=r+Math.imul(W,P0)|0,p=p+Math.imul(W,C0)|0,m=m+Math.imul(k,R0)|0,r=r+Math.imul(k,_0)|0,r=r+Math.imul(P,R0)|0,p=p+Math.imul(P,_0)|0;var xe=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(xe>>>26)|0,xe&=67108863,m=Math.imul(c0,m0),r=Math.imul(c0,p0),r=r+Math.imul(b0,m0)|0,p=Math.imul(b0,p0),m=m+Math.imul(f0,y0)|0,r=r+Math.imul(f0,h0)|0,r=r+Math.imul(d0,y0)|0,p=p+Math.imul(d0,h0)|0,m=m+Math.imul(r0,g0)|0,r=r+Math.imul(r0,v0)|0,r=r+Math.imul(o0,g0)|0,p=p+Math.imul(o0,v0)|0,m=m+Math.imul(i0,T0)|0,r=r+Math.imul(i0,w0)|0,r=r+Math.imul(s0,T0)|0,p=p+Math.imul(s0,w0)|0,m=m+Math.imul(a0,M0)|0,r=r+Math.imul(a0,S0)|0,r=r+Math.imul(n0,M0)|0,p=p+Math.imul(n0,S0)|0,m=m+Math.imul(e0,A0)|0,r=r+Math.imul(e0,I0)|0,r=r+Math.imul(t0,A0)|0,p=p+Math.imul(t0,I0)|0,m=m+Math.imul(J,x0)|0,r=r+Math.imul(J,k0)|0,r=r+Math.imul(X,x0)|0,p=p+Math.imul(X,k0)|0,m=m+Math.imul(Z,P0)|0,r=r+Math.imul(Z,C0)|0,r=r+Math.imul(Y,P0)|0,p=p+Math.imul(Y,C0)|0,m=m+Math.imul(q,R0)|0,r=r+Math.imul(q,_0)|0,r=r+Math.imul(W,R0)|0,p=p+Math.imul(W,_0)|0;var ke=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(ke>>>26)|0,ke&=67108863,m=Math.imul(c0,y0),r=Math.imul(c0,h0),r=r+Math.imul(b0,y0)|0,p=Math.imul(b0,h0),m=m+Math.imul(f0,g0)|0,r=r+Math.imul(f0,v0)|0,r=r+Math.imul(d0,g0)|0,p=p+Math.imul(d0,v0)|0,m=m+Math.imul(r0,T0)|0,r=r+Math.imul(r0,w0)|0,r=r+Math.imul(o0,T0)|0,p=p+Math.imul(o0,w0)|0,m=m+Math.imul(i0,M0)|0,r=r+Math.imul(i0,S0)|0,r=r+Math.imul(s0,M0)|0,p=p+Math.imul(s0,S0)|0,m=m+Math.imul(a0,A0)|0,r=r+Math.imul(a0,I0)|0,r=r+Math.imul(n0,A0)|0,p=p+Math.imul(n0,I0)|0,m=m+Math.imul(e0,x0)|0,r=r+Math.imul(e0,k0)|0,r=r+Math.imul(t0,x0)|0,p=p+Math.imul(t0,k0)|0,m=m+Math.imul(J,P0)|0,r=r+Math.imul(J,C0)|0,r=r+Math.imul(X,P0)|0,p=p+Math.imul(X,C0)|0,m=m+Math.imul(Z,R0)|0,r=r+Math.imul(Z,_0)|0,r=r+Math.imul(Y,R0)|0,p=p+Math.imul(Y,_0)|0;var Pe=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(Pe>>>26)|0,Pe&=67108863,m=Math.imul(c0,g0),r=Math.imul(c0,v0),r=r+Math.imul(b0,g0)|0,p=Math.imul(b0,v0),m=m+Math.imul(f0,T0)|0,r=r+Math.imul(f0,w0)|0,r=r+Math.imul(d0,T0)|0,p=p+Math.imul(d0,w0)|0,m=m+Math.imul(r0,M0)|0,r=r+Math.imul(r0,S0)|0,r=r+Math.imul(o0,M0)|0,p=p+Math.imul(o0,S0)|0,m=m+Math.imul(i0,A0)|0,r=r+Math.imul(i0,I0)|0,r=r+Math.imul(s0,A0)|0,p=p+Math.imul(s0,I0)|0,m=m+Math.imul(a0,x0)|0,r=r+Math.imul(a0,k0)|0,r=r+Math.imul(n0,x0)|0,p=p+Math.imul(n0,k0)|0,m=m+Math.imul(e0,P0)|0,r=r+Math.imul(e0,C0)|0,r=r+Math.imul(t0,P0)|0,p=p+Math.imul(t0,C0)|0,m=m+Math.imul(J,R0)|0,r=r+Math.imul(J,_0)|0,r=r+Math.imul(X,R0)|0,p=p+Math.imul(X,_0)|0;var Ce=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,m=Math.imul(c0,T0),r=Math.imul(c0,w0),r=r+Math.imul(b0,T0)|0,p=Math.imul(b0,w0),m=m+Math.imul(f0,M0)|0,r=r+Math.imul(f0,S0)|0,r=r+Math.imul(d0,M0)|0,p=p+Math.imul(d0,S0)|0,m=m+Math.imul(r0,A0)|0,r=r+Math.imul(r0,I0)|0,r=r+Math.imul(o0,A0)|0,p=p+Math.imul(o0,I0)|0,m=m+Math.imul(i0,x0)|0,r=r+Math.imul(i0,k0)|0,r=r+Math.imul(s0,x0)|0,p=p+Math.imul(s0,k0)|0,m=m+Math.imul(a0,P0)|0,r=r+Math.imul(a0,C0)|0,r=r+Math.imul(n0,P0)|0,p=p+Math.imul(n0,C0)|0,m=m+Math.imul(e0,R0)|0,r=r+Math.imul(e0,_0)|0,r=r+Math.imul(t0,R0)|0,p=p+Math.imul(t0,_0)|0;var Re=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(Re>>>26)|0,Re&=67108863,m=Math.imul(c0,M0),r=Math.imul(c0,S0),r=r+Math.imul(b0,M0)|0,p=Math.imul(b0,S0),m=m+Math.imul(f0,A0)|0,r=r+Math.imul(f0,I0)|0,r=r+Math.imul(d0,A0)|0,p=p+Math.imul(d0,I0)|0,m=m+Math.imul(r0,x0)|0,r=r+Math.imul(r0,k0)|0,r=r+Math.imul(o0,x0)|0,p=p+Math.imul(o0,k0)|0,m=m+Math.imul(i0,P0)|0,r=r+Math.imul(i0,C0)|0,r=r+Math.imul(s0,P0)|0,p=p+Math.imul(s0,C0)|0,m=m+Math.imul(a0,R0)|0,r=r+Math.imul(a0,_0)|0,r=r+Math.imul(n0,R0)|0,p=p+Math.imul(n0,_0)|0;var _e=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(_e>>>26)|0,_e&=67108863,m=Math.imul(c0,A0),r=Math.imul(c0,I0),r=r+Math.imul(b0,A0)|0,p=Math.imul(b0,I0),m=m+Math.imul(f0,x0)|0,r=r+Math.imul(f0,k0)|0,r=r+Math.imul(d0,x0)|0,p=p+Math.imul(d0,k0)|0,m=m+Math.imul(r0,P0)|0,r=r+Math.imul(r0,C0)|0,r=r+Math.imul(o0,P0)|0,p=p+Math.imul(o0,C0)|0,m=m+Math.imul(i0,R0)|0,r=r+Math.imul(i0,_0)|0,r=r+Math.imul(s0,R0)|0,p=p+Math.imul(s0,_0)|0;var Ee=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,m=Math.imul(c0,x0),r=Math.imul(c0,k0),r=r+Math.imul(b0,x0)|0,p=Math.imul(b0,k0),m=m+Math.imul(f0,P0)|0,r=r+Math.imul(f0,C0)|0,r=r+Math.imul(d0,P0)|0,p=p+Math.imul(d0,C0)|0,m=m+Math.imul(r0,R0)|0,r=r+Math.imul(r0,_0)|0,r=r+Math.imul(o0,R0)|0,p=p+Math.imul(o0,_0)|0;var Ne=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,m=Math.imul(c0,P0),r=Math.imul(c0,C0),r=r+Math.imul(b0,P0)|0,p=Math.imul(b0,C0),m=m+Math.imul(f0,R0)|0,r=r+Math.imul(f0,_0)|0,r=r+Math.imul(d0,R0)|0,p=p+Math.imul(d0,_0)|0;var Le=(v+m|0)+((r&8191)<<13)|0;v=(p+(r>>>13)|0)+(Le>>>26)|0,Le&=67108863,m=Math.imul(c0,R0),r=Math.imul(c0,_0),r=r+Math.imul(b0,R0)|0,p=Math.imul(b0,_0);var Oe=(v+m|0)+((r&8191)<<13)|0;return v=(p+(r>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,h[0]=he,h[1]=ge,h[2]=ve,h[3]=Te,h[4]=we,h[5]=Me,h[6]=Se,h[7]=Ae,h[8]=Ie,h[9]=xe,h[10]=ke,h[11]=Pe,h[12]=Ce,h[13]=Re,h[14]=_e,h[15]=Ee,h[16]=Ne,h[17]=Le,h[18]=Oe,v!==0&&(h[19]=v,d.length++),d};Math.imul||(D=E);function O(b,t,s){s.negative=t.negative^b.negative,s.length=b.length+t.length;for(var d=0,l=0,y=0;y<s.length-1;y++){var h=l;l=0;for(var v=d&67108863,m=Math.min(y,t.length-1),r=Math.max(0,y-b.length+1);r<=m;r++){var p=y-r,x=b.words[p]|0,k=t.words[r]|0,P=x*k,F=P&67108863;h=h+(P/67108864|0)|0,F=F+v|0,v=F&67108863,h=h+(F>>>26)|0,l+=h>>>26,h&=67108863}s.words[y]=v,d=h,h=l}return d!==0?s.words[y]=d:s.length--,s._strip()}function U(b,t,s){return O(b,t,s)}n.prototype.mulTo=function(t,s){var d,l=this.length+t.length;return this.length===10&&t.length===10?d=D(this,t,s):l<63?d=E(this,t,s):l<1024?d=O(this,t,s):d=U(this,t,s),d},n.prototype.mul=function(t){var s=new n(null);return s.words=new Array(this.length+t.length),this.mulTo(t,s)},n.prototype.mulf=function(t){var s=new n(null);return s.words=new Array(this.length+t.length),U(this,t,s)},n.prototype.imul=function(t){return this.clone().mulTo(t,this)},n.prototype.imuln=function(t){var s=t<0;s&&(t=-t),i(typeof t=="number"),i(t<67108864);for(var d=0,l=0;l<this.length;l++){var y=(this.words[l]|0)*t,h=(y&67108863)+(d&67108863);d>>=26,d+=y/67108864|0,d+=h>>>26,this.words[l]=h&67108863}return d!==0&&(this.words[l]=d,this.length++),s?this.ineg():this},n.prototype.muln=function(t){return this.clone().imuln(t)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(t){var s=R(t);if(s.length===0)return new n(1);for(var d=this,l=0;l<s.length&&s[l]===0;l++,d=d.sqr());if(++l<s.length)for(var y=d.sqr();l<s.length;l++,y=y.sqr())s[l]!==0&&(d=d.mul(y));return d},n.prototype.iushln=function(t){i(typeof t=="number"&&t>=0);var s=t%26,d=(t-s)/26,l=67108863>>>26-s<<26-s,y;if(s!==0){var h=0;for(y=0;y<this.length;y++){var v=this.words[y]&l,m=(this.words[y]|0)-v<<s;this.words[y]=m|h,h=v>>>26-s}h&&(this.words[y]=h,this.length++)}if(d!==0){for(y=this.length-1;y>=0;y--)this.words[y+d]=this.words[y];for(y=0;y<d;y++)this.words[y]=0;this.length+=d}return this._strip()},n.prototype.ishln=function(t){return i(this.negative===0),this.iushln(t)},n.prototype.iushrn=function(t,s,d){i(typeof t=="number"&&t>=0);var l;s?l=(s-s%26)/26:l=0;var y=t%26,h=Math.min((t-y)/26,this.length),v=67108863^67108863>>>y<<y,m=d;if(l-=h,l=Math.max(0,l),m){for(var r=0;r<h;r++)m.words[r]=this.words[r];m.length=h}if(h!==0)if(this.length>h)for(this.length-=h,r=0;r<this.length;r++)this.words[r]=this.words[r+h];else this.words[0]=0,this.length=1;var p=0;for(r=this.length-1;r>=0&&(p!==0||r>=l);r--){var x=this.words[r]|0;this.words[r]=p<<26-y|x>>>y,p=x&v}return m&&p!==0&&(m.words[m.length++]=p),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},n.prototype.ishrn=function(t,s,d){return i(this.negative===0),this.iushrn(t,s,d)},n.prototype.shln=function(t){return this.clone().ishln(t)},n.prototype.ushln=function(t){return this.clone().iushln(t)},n.prototype.shrn=function(t){return this.clone().ishrn(t)},n.prototype.ushrn=function(t){return this.clone().iushrn(t)},n.prototype.testn=function(t){i(typeof t=="number"&&t>=0);var s=t%26,d=(t-s)/26,l=1<<s;if(this.length<=d)return!1;var y=this.words[d];return!!(y&l)},n.prototype.imaskn=function(t){i(typeof t=="number"&&t>=0);var s=t%26,d=(t-s)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=d)return this;if(s!==0&&d++,this.length=Math.min(d,this.length),s!==0){var l=67108863^67108863>>>s<<s;this.words[this.length-1]&=l}return this._strip()},n.prototype.maskn=function(t){return this.clone().imaskn(t)},n.prototype.iaddn=function(t){return i(typeof t=="number"),i(t<67108864),t<0?this.isubn(-t):this.negative!==0?this.length===1&&(this.words[0]|0)<=t?(this.words[0]=t-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(t),this.negative=1,this):this._iaddn(t)},n.prototype._iaddn=function(t){this.words[0]+=t;for(var s=0;s<this.length&&this.words[s]>=67108864;s++)this.words[s]-=67108864,s===this.length-1?this.words[s+1]=1:this.words[s+1]++;return this.length=Math.max(this.length,s+1),this},n.prototype.isubn=function(t){if(i(typeof t=="number"),i(t<67108864),t<0)return this.iaddn(-t);if(this.negative!==0)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var s=0;s<this.length&&this.words[s]<0;s++)this.words[s]+=67108864,this.words[s+1]-=1;return this._strip()},n.prototype.addn=function(t){return this.clone().iaddn(t)},n.prototype.subn=function(t){return this.clone().isubn(t)},n.prototype.iabs=function(){return this.negative=0,this},n.prototype.abs=function(){return this.clone().iabs()},n.prototype._ishlnsubmul=function(t,s,d){var l=t.length+d,y;this._expand(l);var h,v=0;for(y=0;y<t.length;y++){h=(this.words[y+d]|0)+v;var m=(t.words[y]|0)*s;h-=m&67108863,v=(h>>26)-(m/67108864|0),this.words[y+d]=h&67108863}for(;y<this.length-d;y++)h=(this.words[y+d]|0)+v,v=h>>26,this.words[y+d]=h&67108863;if(v===0)return this._strip();for(i(v===-1),v=0,y=0;y<this.length;y++)h=-(this.words[y]|0)+v,v=h>>26,this.words[y]=h&67108863;return this.negative=1,this._strip()},n.prototype._wordDiv=function(t,s){var d=this.length-t.length,l=this.clone(),y=t,h=y.words[y.length-1]|0,v=this._countBits(h);d=26-v,d!==0&&(y=y.ushln(d),l.iushln(d),h=y.words[y.length-1]|0);var m=l.length-y.length,r;if(s!=="mod"){r=new n(null),r.length=m+1,r.words=new Array(r.length);for(var p=0;p<r.length;p++)r.words[p]=0}var x=l.clone()._ishlnsubmul(y,1,m);x.negative===0&&(l=x,r&&(r.words[m]=1));for(var k=m-1;k>=0;k--){var P=(l.words[y.length+k]|0)*67108864+(l.words[y.length+k-1]|0);for(P=Math.min(P/h|0,67108863),l._ishlnsubmul(y,P,k);l.negative!==0;)P--,l.negative=0,l._ishlnsubmul(y,1,k),l.isZero()||(l.negative^=1);r&&(r.words[k]=P)}return r&&r._strip(),l._strip(),s!=="div"&&d!==0&&l.iushrn(d),{div:r||null,mod:l}},n.prototype.divmod=function(t,s,d){if(i(!t.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var l,y,h;return this.negative!==0&&t.negative===0?(h=this.neg().divmod(t,s),s!=="mod"&&(l=h.div.neg()),s!=="div"&&(y=h.mod.neg(),d&&y.negative!==0&&y.iadd(t)),{div:l,mod:y}):this.negative===0&&t.negative!==0?(h=this.divmod(t.neg(),s),s!=="mod"&&(l=h.div.neg()),{div:l,mod:h.mod}):(this.negative&t.negative)!==0?(h=this.neg().divmod(t.neg(),s),s!=="div"&&(y=h.mod.neg(),d&&y.negative!==0&&y.isub(t)),{div:h.div,mod:y}):t.length>this.length||this.cmp(t)<0?{div:new n(0),mod:this}:t.length===1?s==="div"?{div:this.divn(t.words[0]),mod:null}:s==="mod"?{div:null,mod:new n(this.modrn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new n(this.modrn(t.words[0]))}:this._wordDiv(t,s)},n.prototype.div=function(t){return this.divmod(t,"div",!1).div},n.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},n.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},n.prototype.divRound=function(t){var s=this.divmod(t);if(s.mod.isZero())return s.div;var d=s.div.negative!==0?s.mod.isub(t):s.mod,l=t.ushrn(1),y=t.andln(1),h=d.cmp(l);return h<0||y===1&&h===0?s.div:s.div.negative!==0?s.div.isubn(1):s.div.iaddn(1)},n.prototype.modrn=function(t){var s=t<0;s&&(t=-t),i(t<=67108863);for(var d=(1<<26)%t,l=0,y=this.length-1;y>=0;y--)l=(d*l+(this.words[y]|0))%t;return s?-l:l},n.prototype.modn=function(t){return this.modrn(t)},n.prototype.idivn=function(t){var s=t<0;s&&(t=-t),i(t<=67108863);for(var d=0,l=this.length-1;l>=0;l--){var y=(this.words[l]|0)+d*67108864;this.words[l]=y/t|0,d=y%t}return this._strip(),s?this.ineg():this},n.prototype.divn=function(t){return this.clone().idivn(t)},n.prototype.egcd=function(t){i(t.negative===0),i(!t.isZero());var s=this,d=t.clone();s.negative!==0?s=s.umod(t):s=s.clone();for(var l=new n(1),y=new n(0),h=new n(0),v=new n(1),m=0;s.isEven()&&d.isEven();)s.iushrn(1),d.iushrn(1),++m;for(var r=d.clone(),p=s.clone();!s.isZero();){for(var x=0,k=1;(s.words[0]&k)===0&&x<26;++x,k<<=1);if(x>0)for(s.iushrn(x);x-- >0;)(l.isOdd()||y.isOdd())&&(l.iadd(r),y.isub(p)),l.iushrn(1),y.iushrn(1);for(var P=0,F=1;(d.words[0]&F)===0&&P<26;++P,F<<=1);if(P>0)for(d.iushrn(P);P-- >0;)(h.isOdd()||v.isOdd())&&(h.iadd(r),v.isub(p)),h.iushrn(1),v.iushrn(1);s.cmp(d)>=0?(s.isub(d),l.isub(h),y.isub(v)):(d.isub(s),h.isub(l),v.isub(y))}return{a:h,b:v,gcd:d.iushln(m)}},n.prototype._invmp=function(t){i(t.negative===0),i(!t.isZero());var s=this,d=t.clone();s.negative!==0?s=s.umod(t):s=s.clone();for(var l=new n(1),y=new n(0),h=d.clone();s.cmpn(1)>0&&d.cmpn(1)>0;){for(var v=0,m=1;(s.words[0]&m)===0&&v<26;++v,m<<=1);if(v>0)for(s.iushrn(v);v-- >0;)l.isOdd()&&l.iadd(h),l.iushrn(1);for(var r=0,p=1;(d.words[0]&p)===0&&r<26;++r,p<<=1);if(r>0)for(d.iushrn(r);r-- >0;)y.isOdd()&&y.iadd(h),y.iushrn(1);s.cmp(d)>=0?(s.isub(d),l.isub(y)):(d.isub(s),y.isub(l))}var x;return s.cmpn(1)===0?x=l:x=y,x.cmpn(0)<0&&x.iadd(t),x},n.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var s=this.clone(),d=t.clone();s.negative=0,d.negative=0;for(var l=0;s.isEven()&&d.isEven();l++)s.iushrn(1),d.iushrn(1);do{for(;s.isEven();)s.iushrn(1);for(;d.isEven();)d.iushrn(1);var y=s.cmp(d);if(y<0){var h=s;s=d,d=h}else if(y===0||d.cmpn(1)===0)break;s.isub(d)}while(!0);return d.iushln(l)},n.prototype.invm=function(t){return this.egcd(t).a.umod(t)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(t){return this.words[0]&t},n.prototype.bincn=function(t){i(typeof t=="number");var s=t%26,d=(t-s)/26,l=1<<s;if(this.length<=d)return this._expand(d+1),this.words[d]|=l,this;for(var y=l,h=d;y!==0&&h<this.length;h++){var v=this.words[h]|0;v+=y,y=v>>>26,v&=67108863,this.words[h]=v}return y!==0&&(this.words[h]=y,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(t){var s=t<0;if(this.negative!==0&&!s)return-1;if(this.negative===0&&s)return 1;this._strip();var d;if(this.length>1)d=1;else{s&&(t=-t),i(t<=67108863,"Number is too big");var l=this.words[0]|0;d=l===t?0:l<t?-1:1}return this.negative!==0?-d|0:d},n.prototype.cmp=function(t){if(this.negative!==0&&t.negative===0)return-1;if(this.negative===0&&t.negative!==0)return 1;var s=this.ucmp(t);return this.negative!==0?-s|0:s},n.prototype.ucmp=function(t){if(this.length>t.length)return 1;if(this.length<t.length)return-1;for(var s=0,d=this.length-1;d>=0;d--){var l=this.words[d]|0,y=t.words[d]|0;if(l!==y){l<y?s=-1:l>y&&(s=1);break}}return s},n.prototype.gtn=function(t){return this.cmpn(t)===1},n.prototype.gt=function(t){return this.cmp(t)===1},n.prototype.gten=function(t){return this.cmpn(t)>=0},n.prototype.gte=function(t){return this.cmp(t)>=0},n.prototype.ltn=function(t){return this.cmpn(t)===-1},n.prototype.lt=function(t){return this.cmp(t)===-1},n.prototype.lten=function(t){return this.cmpn(t)<=0},n.prototype.lte=function(t){return this.cmp(t)<=0},n.prototype.eqn=function(t){return this.cmpn(t)===0},n.prototype.eq=function(t){return this.cmp(t)===0},n.red=function(t){return new L(t)},n.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),t.convertTo(this)._forceRed(t)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(t){return this.red=t,this},n.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},n.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},n.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},n.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},n.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},n.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},n.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},n.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var V={k256:null,p224:null,p192:null,p25519:null};function z(b,t){this.name=b,this.p=new n(t,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}z.prototype._tmp=function(){var t=new n(null);return t.words=new Array(Math.ceil(this.n/13)),t},z.prototype.ireduce=function(t){var s=t,d;do this.split(s,this.tmp),s=this.imulK(s),s=s.iadd(this.tmp),d=s.bitLength();while(d>this.n);var l=d<this.n?-1:s.ucmp(this.p);return l===0?(s.words[0]=0,s.length=1):l>0?s.isub(this.p):s.strip!==void 0?s.strip():s._strip(),s},z.prototype.split=function(t,s){t.iushrn(this.n,0,s)},z.prototype.imulK=function(t){return t.imul(this.k)};function G(){z.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}o(G,z),G.prototype.split=function(t,s){for(var d=4194303,l=Math.min(t.length,9),y=0;y<l;y++)s.words[y]=t.words[y];if(s.length=l,t.length<=9){t.words[0]=0,t.length=1;return}var h=t.words[9];for(s.words[s.length++]=h&d,y=10;y<t.length;y++){var v=t.words[y]|0;t.words[y-10]=(v&d)<<4|h>>>22,h=v}h>>>=22,t.words[y-10]=h,h===0&&t.length>10?t.length-=10:t.length-=9},G.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var s=0,d=0;d<t.length;d++){var l=t.words[d]|0;s+=l*977,t.words[d]=s&67108863,s=l*64+(s/67108864|0)}return t.words[t.length-1]===0&&(t.length--,t.words[t.length-1]===0&&t.length--),t};function O0(){z.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}o(O0,z);function N0(){z.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}o(N0,z);function H(){z.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}o(H,z),H.prototype.imulK=function(t){for(var s=0,d=0;d<t.length;d++){var l=(t.words[d]|0)*19+s,y=l&67108863;l>>>=26,t.words[d]=y,s=l}return s!==0&&(t.words[t.length++]=s),t},n._prime=function(t){if(V[t])return V[t];var s;if(t==="k256")s=new G;else if(t==="p224")s=new O0;else if(t==="p192")s=new N0;else if(t==="p25519")s=new H;else throw new Error("Unknown prime "+t);return V[t]=s,s};function L(b){if(typeof b=="string"){var t=n._prime(b);this.m=t.p,this.prime=t}else i(b.gtn(1),"modulus must be greater than 1"),this.m=b,this.prime=null}L.prototype._verify1=function(t){i(t.negative===0,"red works only with positives"),i(t.red,"red works only with red numbers")},L.prototype._verify2=function(t,s){i((t.negative|s.negative)===0,"red works only with positives"),i(t.red&&t.red===s.red,"red works only with red numbers")},L.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):(S(t,t.umod(this.m)._forceRed(this)),t)},L.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},L.prototype.add=function(t,s){this._verify2(t,s);var d=t.add(s);return d.cmp(this.m)>=0&&d.isub(this.m),d._forceRed(this)},L.prototype.iadd=function(t,s){this._verify2(t,s);var d=t.iadd(s);return d.cmp(this.m)>=0&&d.isub(this.m),d},L.prototype.sub=function(t,s){this._verify2(t,s);var d=t.sub(s);return d.cmpn(0)<0&&d.iadd(this.m),d._forceRed(this)},L.prototype.isub=function(t,s){this._verify2(t,s);var d=t.isub(s);return d.cmpn(0)<0&&d.iadd(this.m),d},L.prototype.shl=function(t,s){return this._verify1(t),this.imod(t.ushln(s))},L.prototype.imul=function(t,s){return this._verify2(t,s),this.imod(t.imul(s))},L.prototype.mul=function(t,s){return this._verify2(t,s),this.imod(t.mul(s))},L.prototype.isqr=function(t){return this.imul(t,t.clone())},L.prototype.sqr=function(t){return this.mul(t,t)},L.prototype.sqrt=function(t){if(t.isZero())return t.clone();var s=this.m.andln(3);if(i(s%2===1),s===3){var d=this.m.add(new n(1)).iushrn(2);return this.pow(t,d)}for(var l=this.m.subn(1),y=0;!l.isZero()&&l.andln(1)===0;)y++,l.iushrn(1);i(!l.isZero());var h=new n(1).toRed(this),v=h.redNeg(),m=this.m.subn(1).iushrn(1),r=this.m.bitLength();for(r=new n(2*r*r).toRed(this);this.pow(r,m).cmp(v)!==0;)r.redIAdd(v);for(var p=this.pow(r,l),x=this.pow(t,l.addn(1).iushrn(1)),k=this.pow(t,l),P=y;k.cmp(h)!==0;){for(var F=k,q=0;F.cmp(h)!==0;q++)F=F.redSqr();i(q<P);var W=this.pow(p,new n(1).iushln(P-q-1));x=x.redMul(W),p=W.redSqr(),k=k.redMul(p),P=q}return x},L.prototype.invm=function(t){var s=t._invmp(this.m);return s.negative!==0?(s.negative=0,this.imod(s).redNeg()):this.imod(s)},L.prototype.pow=function(t,s){if(s.isZero())return new n(1).toRed(this);if(s.cmpn(1)===0)return t.clone();var d=4,l=new Array(1<<d);l[0]=new n(1).toRed(this),l[1]=t;for(var y=2;y<l.length;y++)l[y]=this.mul(l[y-1],t);var h=l[0],v=0,m=0,r=s.bitLength()%26;for(r===0&&(r=26),y=s.length-1;y>=0;y--){for(var p=s.words[y],x=r-1;x>=0;x--){var k=p>>x&1;if(h!==l[0]&&(h=this.sqr(h)),k===0&&v===0){m=0;continue}v<<=1,v|=k,m++,!(m!==d&&(y!==0||x!==0))&&(h=this.mul(h,l[v]),m=0,v=0)}r=26}return h},L.prototype.convertTo=function(t){var s=t.umod(this.m);return s===t?s.clone():s},L.prototype.convertFrom=function(t){var s=t.clone();return s.red=null,s},n.mont=function(t){return new K(t)};function K(b){L.call(this,b),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}o(K,L),K.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},K.prototype.convertFrom=function(t){var s=this.imod(t.mul(this.rinv));return s.red=null,s},K.prototype.imul=function(t,s){if(t.isZero()||s.isZero())return t.words[0]=0,t.length=1,t;var d=t.imul(s),l=d.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),y=d.isub(l).iushrn(this.shift),h=y;return y.cmp(this.m)>=0?h=y.isub(this.m):y.cmpn(0)<0&&(h=y.iadd(this.m)),h._forceRed(this)},K.prototype.mul=function(t,s){if(t.isZero()||s.isZero())return new n(0)._forceRed(this);var d=t.mul(s),l=d.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),y=d.isub(l).iushrn(this.shift),h=y;return y.cmp(this.m)>=0?h=y.isub(this.m):y.cmpn(0)<0&&(h=y.iadd(this.m)),h._forceRed(this)},K.prototype.invm=function(t){var s=this.imod(t._invmp(this.m).mul(this.r2));return s._forceRed(this)}})(c,H6)})(be)),be.exports}var Y6=Z6();const F0=f.getDefaultExportFromCjs(Y6),I1={version:"1.0.0",name:"example_native_token_transfers",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"deployer",isMut:!1,isSigner:!0},{name:"programData",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"rateLimit",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["The custody account that holds tokens in locking mode.","NOTE: the account is unconditionally initialized, but not used in","burning mode.","function if the token account has already been created."]},{name:"tokenProgram",isMut:!1,isSigner:!1,docs:["associated token account for the given mint."]},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"version",accounts:[],args:[],returns:"string"},{name:"transferBurn",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"transferLock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"redeem",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!1,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"inboxItem",isMut:!0,isSigner:!1,docs:["NOTE: This account is content-addressed (PDA seeded by the message hash).","This is because in a multi-transceiver configuration, the different",'transceivers "vote" on messages (by delivering them). By making the inbox',"items content-addressed, we can ensure that disagreeing votes don't","interfere with each other.","On the first call to [`redeem()`], [`InboxItem`] will be allocated and initialized with","default values.",'On subsequent calls, we want to modify the `InboxItem` by "voting" on it. Therefore the',"program should not fail which would occur when using the `init` constraint.","The [`InboxItem::init`] field is used to guard against malicious or accidental modification","InboxItem fields that should remain constant."]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RedeemArgs"}}]},{name:"releaseInboundMint",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"releaseInboundUnlock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}]},{name:"custody",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"transferOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"newOwner",isMut:!1,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"claimOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"newOwner",isMut:!1,isSigner:!0},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setPaused",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"pause",type:"bool"}]},{name:"setPeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!0,isSigner:!1},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetPeerArgs"}}]},{name:"registerTransceiver",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"transceiver",isMut:!1,isSigner:!1},{name:"registeredTransceiver",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setOutboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetOutboundLimitArgs"}}]},{name:"setInboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetInboundLimitArgs"}}]},{name:"setWormholePeer",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"peer",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetTransceiverPeerArgs"}}]},{name:"receiveWormholeMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"releaseWormholeOutbound",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseOutboundArgs"}}]},{name:"broadcastWormholeId",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[]},{name:"broadcastWormholePeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"BroadcastPeerArgs"}}]}],accounts:[{name:"config",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"owner",docs:["Owner of the program."],type:"publicKey"},{name:"pendingOwner",docs:["Pending next owner (before claiming ownership)."],type:{option:"publicKey"}},{name:"mint",docs:["Mint address of the token managed by this program."],type:"publicKey"},{name:"tokenProgram",docs:["Address of the token program (token or token22). This could always be queried","from the [`mint`] account's owner, but storing it here avoids an indirection","on the client side."],type:"publicKey"},{name:"mode",docs:["The mode that this program is running in. This is used to determine","whether the program is burning tokens or locking tokens."],type:{defined:"Mode"}},{name:"chainId",docs:["The chain id of the chain that this program is running on. We don't","hardcode this so that the program is deployable on any potential SVM","forks."],type:{defined:"ChainId"}},{name:"nextTransceiverId",docs:["The next transceiver id to use when registering an transceiver."],type:"u8"},{name:"threshold",docs:["The number of transceivers that must attest to a transfer before it is","accepted."],type:"u8"},{name:"enabledTransceivers",docs:["Bitmap of enabled transceivers.","The maximum number of transceivers is equal to [`Bitmap::BITS`]."],type:{defined:"Bitmap"}},{name:"paused",docs:["Pause the program. This is useful for upgrades and other maintenance."],type:"bool"},{name:"custody",docs:["The custody account that holds tokens in locking mode."],type:"publicKey"}]}},{name:"nttManagerPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}},{name:"tokenDecimals",type:"u8"}]}},{name:"inboxItem",type:{kind:"struct",fields:[{name:"init",type:"bool"},{name:"bump",type:"u8"},{name:"amount",type:"u64"},{name:"recipientAddress",type:"publicKey"},{name:"votes",type:{defined:"Bitmap"}},{name:"releaseStatus",type:{defined:"ReleaseStatus"}}]}},{name:"inboxRateLimit",docs:["Inbound rate limit per chain.","SECURITY: must check the PDA (since there are multiple PDAs, namely one for each chain.)"],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"outboxItem",type:{kind:"struct",fields:[{name:"amount",type:{defined:"TrimmedAmount"}},{name:"sender",type:"publicKey"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientNttManager",type:{array:["u8",32]}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"releaseTimestamp",type:"i64"},{name:"released",type:{defined:"Bitmap"}}]}},{name:"outboxRateLimit",type:{kind:"struct",fields:[{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"registeredTransceiver",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"id",type:"u8"},{name:"transceiverAddress",type:"publicKey"}]}},{name:"transceiverPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}},{name:"bridgeData",type:{kind:"struct",fields:[{name:"guardianSetIndex",docs:["The current guardian set index, used to decide which signature sets to accept."],type:"u32"},{name:"lastLamports",docs:["Lamports in the collection account"],type:"u64"},{name:"config",docs:["Bridge configuration, which is set once upon initialization."],type:{defined:"BridgeConfig"}}]}}],types:[{name:"Bitmap",type:{kind:"struct",fields:[{name:"map",type:"u128"}]}},{name:"SetInboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"},{name:"chainId",type:{defined:"ChainId"}}]}},{name:"SetOutboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"}]}},{name:"SetPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}},{name:"limit",type:"u64"},{name:"tokenDecimals",docs:["The token decimals on the peer chain."],type:"u8"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"},{name:"limit",type:"u64"},{name:"mode",type:{defined:"Mode"}}]}},{name:"RedeemArgs",type:{kind:"struct",fields:[]}},{name:"ReleaseInboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"TransferArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"shouldQueue",type:"bool"}]}},{name:"ReleaseStatus",docs:["The status of an InboxItem. This determines whether the tokens are minted/unlocked to the recipient. As","such, this must be used as a state machine that moves forward in a linear manner. A state",'should never "move backward" to a previous state (e.g. should never move from `Released` to',"`ReleaseAfter`)."],type:{kind:"enum",variants:[{name:"NotApproved"},{name:"ReleaseAfter",fields:["i64"]},{name:"Released"}]}},{name:"RateLimitState",type:{kind:"struct",fields:[{name:"limit",docs:["The maximum capacity of the rate limiter."],type:"u64"},{name:"capacityAtLastTx",docs:["The capacity of the rate limiter at `last_tx_timestamp`.","The actual current capacity is calculated in `capacity_at`, by","accounting for the time that has passed since `last_tx_timestamp` and","the refill rate."],type:"u64"},{name:"lastTxTimestamp",docs:["The timestamp of the last transaction that counted towards the current","capacity. Transactions that exceeded the capacity do not count, they are","just delayed."],type:"i64"}]}},{name:"SetTransceiverPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}}]}},{name:"BroadcastPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"ReleaseOutboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"ChainId",type:{kind:"struct",fields:[{name:"id",type:"u16"}]}},{name:"Mode",type:{kind:"enum",variants:[{name:"Locking"},{name:"Burning"}]}},{name:"TrimmedAmount",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]}},{name:"BridgeConfig",type:{kind:"struct",fields:[{name:"guardianSetExpirationTime",docs:["Period for how long a guardian set is valid after it has been replaced by a new one. This","guarantees that VAAs issued by that set can still be submitted for a certain period. In","this period we still trust the old guardian set."],type:"u32"},{name:"fee",docs:["Amount of lamports that needs to be paid to the protocol to post a message"],type:"u64"}]}}],errors:[{code:6e3,name:"CantReleaseYet",msg:"CantReleaseYet"},{code:6001,name:"InvalidPendingOwner",msg:"InvalidPendingOwner"},{code:6002,name:"InvalidChainId",msg:"InvalidChainId"},{code:6003,name:"InvalidRecipientAddress",msg:"InvalidRecipientAddress"},{code:6004,name:"InvalidTransceiverPeer",msg:"InvalidTransceiverPeer"},{code:6005,name:"InvalidNttManagerPeer",msg:"InvalidNttManagerPeer"},{code:6006,name:"InvalidRecipientNttManager",msg:"InvalidRecipientNttManager"},{code:6007,name:"TransferAlreadyRedeemed",msg:"TransferAlreadyRedeemed"},{code:6008,name:"TransferCannotBeRedeemed",msg:"TransferCannotBeRedeemed"},{code:6009,name:"TransferNotApproved",msg:"TransferNotApproved"},{code:6010,name:"MessageAlreadySent",msg:"MessageAlreadySent"},{code:6011,name:"InvalidMode",msg:"InvalidMode"},{code:6012,name:"InvalidMintAuthority",msg:"InvalidMintAuthority"},{code:6013,name:"TransferExceedsRateLimit",msg:"TransferExceedsRateLimit"},{code:6014,name:"Paused",msg:"Paused"},{code:6015,name:"DisabledTransceiver",msg:"DisabledTransceiver"},{code:6016,name:"InvalidDeployer",msg:"InvalidDeployer"},{code:6017,name:"BadAmountAfterTransfer",msg:"BadAmountAfterTransfer"},{code:6018,name:"BadAmountAfterBurn",msg:"BadAmountAfterBurn"},{code:6019,name:"ZeroThreshold",msg:"ZeroThreshold"},{code:6020,name:"OverflowExponent",msg:"OverflowExponent"},{code:6021,name:"OverflowScaledAmount",msg:"OverflowScaledAmount"},{code:6022,name:"BitmapIndexOutOfBounds",msg:"BitmapIndexOutOfBounds"}]},J6={version:"2.0.0",name:"ntt_quoter",instructions:[{name:"requestRelay",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!1,isSigner:!1,docs:["and checking the release constraint into a single function"]},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RequestRelayArgs"}}]},{name:"closeRelay",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"feeRecipient",isMut:!0,isSigner:!1},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"initialize",accounts:[{name:"owner",isMut:!0,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1,docs:["We use the program data to make sure this owner is the upgrade authority (the true owner,","who deployed this program)."]},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAssistant",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"assistant",isMut:!1,isSigner:!1,isOptional:!0}],args:[]},{name:"setFeeRecipient",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1}],args:[]},{name:"registerChain",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainArgs"}}]},{name:"registerNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterNttArgs"}}]},{name:"deregisterNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"DeregisterNttArgs"}}]},{name:"updateSolPrice",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateSolPriceArgs"}}]},{name:"updateChainPrices",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainPricesArgs"}}]},{name:"updateChainParams",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainParamsArgs"}}]}],accounts:[{name:"instance",type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"assistant",type:"publicKey"},{name:"feeRecipient",type:"publicKey"},{name:"solPrice",type:"u64"}]}},{name:"registeredChain",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"},{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"registeredNtt",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"relayRequest",type:{kind:"struct",fields:[{name:"requestedGasDropoff",type:"u64"}]}}],types:[{name:"RegisterChainArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"RegisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"DeregisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"}]}},{name:"RequestRelayArgs",type:{kind:"struct",fields:[{name:"gasDropoff",type:"u64"},{name:"maxFee",type:"u64"}]}},{name:"UpdateSolPriceArgs",type:{kind:"struct",fields:[{name:"solPrice",type:"u64"}]}},{name:"UpdateChainPricesArgs",type:{kind:"struct",fields:[{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"UpdateChainParamsArgs",type:{kind:"struct",fields:[{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"}]}}],errors:[{code:6001,name:"ExceedsUserMaxFee",msg:"Relay fees exceeds specified max"},{code:6002,name:"ExceedsMaxGasDropoff",msg:"Requested gas dropoff exceeds max allowed for chain"},{code:6003,name:"InvalidFeeRecipient",msg:"The specified fee recipient does not match the address in the instance accound"},{code:6004,name:"RelayingToChainDisabled",msg:"Relaying to the specified chain is disabled"},{code:6005,name:"OutboxItemNotReleased",msg:"Relaying to the specified chain is disabled"},{code:6006,name:"ScalingOverflow",msg:"Scaled value exceeds u64::MAX"},{code:6007,name:"DivByZero",msg:"Cannot divide by zero"},{code:6257,name:"FeeRecipientCannotBeDefault",msg:"The fee recipient cannot be the default address (0x0)"},{code:6258,name:"NotAuthorized",msg:"Must be owner or assistant"},{code:6259,name:"PriceCannotBeZero",msg:"The price cannot be zero"}]},X6={version:"1.0.0",name:"wormhole_governance",instructions:[{name:"governance",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"governance",isMut:!0,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"replay",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"replayProtection",type:{kind:"struct",fields:[{name:"bump",type:"u8"}]}}],errors:[{code:6e3,name:"InvalidGovernanceChain",msg:"InvalidGovernanceChain"},{code:6001,name:"InvalidGovernanceEmitter",msg:"InvalidGovernanceEmitter"}]};var Fe;(function(c){c.idl={ntt:I1,transceiver:I1,quoter:J6,governance:X6}})(Fe||(Fe={}));const x1={version:"2.0.0",name:"example_native_token_transfers",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"deployer",isMut:!1,isSigner:!0},{name:"programData",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"rateLimit",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["In any case, this function is used to set the Config and initialize the program so we","assume the caller of this function will have total control over the program.","",'TODO: Using `UncheckedAccount` here leads to "Access violation in stack frame ...".',"Could refactor code to use `Box<_>` to reduce stack size."]},{name:"custody",isMut:!0,isSigner:!1,docs:["The custody account that holds tokens in locking mode and temporarily","holds tokens in burning mode.","function if the token account has already been created."]},{name:"tokenProgram",isMut:!1,isSigner:!1,docs:["associated token account for the given mint."]},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"initializeLut",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"authority",isMut:!1,isSigner:!1},{name:"lutAddress",isMut:!0,isSigner:!1},{name:"lut",isMut:!0,isSigner:!1},{name:"lutProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"entries",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"custody",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"outboxRateLimit",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}]}],args:[{name:"recentSlot",type:"u64"}]},{name:"version",accounts:[],args:[],returns:"string"},{name:"transferBurn",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["Tokens are always transferred to the custody account first regardless of","the mode.","For an explanation, see the note in [`transfer_burn`]."]},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1,docs:["See [`crate::SESSION_AUTHORITY_SEED`] for an explanation of the flow."]},{name:"tokenAuthority",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"transferLock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["Tokens are always transferred to the custody account first regardless of","the mode.","For an explanation, see the note in [`transfer_burn`]."]},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1,docs:["See [`crate::SESSION_AUTHORITY_SEED`] for an explanation of the flow."]}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"redeem",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!1,isSigner:!1,docs:["`Account<T>` and `owner` constraints are mutually-exclusive"]},{name:"transceiver",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"inboxItem",isMut:!0,isSigner:!1,docs:["NOTE: This account is content-addressed (PDA seeded by the message hash).","This is because in a multi-transceiver configuration, the different",'transceivers "vote" on messages (by delivering them). By making the inbox',"items content-addressed, we can ensure that disagreeing votes don't","interfere with each other.","On the first call to [`redeem()`], [`InboxItem`] will be allocated and initialized with","default values.",'On subsequent calls, we want to modify the `InboxItem` by "voting" on it. Therefore the',"program should not fail which would occur when using the `init` constraint.","The [`InboxItem::init`] field is used to guard against malicious or accidental modification","InboxItem fields that should remain constant."]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RedeemArgs"}}]},{name:"releaseInboundMint",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["CHECK The seeds constraint ensures that this is the correct address"]},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"releaseInboundUnlock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["CHECK The seeds constraint ensures that this is the correct address"]},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"transferOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"newOwner",isMut:!1,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"claimOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"newOwner",isMut:!1,isSigner:!0},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setPaused",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"pause",type:"bool"}]},{name:"setPeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!0,isSigner:!1},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetPeerArgs"}}]},{name:"registerTransceiver",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"transceiver",isMut:!1,isSigner:!1,docs:["used here that wraps the Transceiver account type."]},{name:"registeredTransceiver",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setOutboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetOutboundLimitArgs"}}]},{name:"setInboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetInboundLimitArgs"}}]},{name:"setWormholePeer",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"peer",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetTransceiverPeerArgs"}}]},{name:"receiveWormholeMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"releaseWormholeOutbound",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseOutboundArgs"}}]},{name:"broadcastWormholeId",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[]},{name:"broadcastWormholePeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"BroadcastPeerArgs"}}]}],accounts:[{name:"config",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"owner",docs:["Owner of the program."],type:"publicKey"},{name:"pendingOwner",docs:["Pending next owner (before claiming ownership)."],type:{option:"publicKey"}},{name:"mint",docs:["Mint address of the token managed by this program."],type:"publicKey"},{name:"tokenProgram",docs:["Address of the token program (token or token22). This could always be queried","from the [`mint`] account's owner, but storing it here avoids an indirection","on the client side."],type:"publicKey"},{name:"mode",docs:["The mode that this program is running in. This is used to determine","whether the program is burning tokens or locking tokens."],type:{defined:"Mode"}},{name:"chainId",docs:["The chain id of the chain that this program is running on. We don't","hardcode this so that the program is deployable on any potential SVM","forks."],type:{defined:"ChainId"}},{name:"nextTransceiverId",docs:["The next transceiver id to use when registering an transceiver."],type:"u8"},{name:"threshold",docs:["The number of transceivers that must attest to a transfer before it is","accepted."],type:"u8"},{name:"enabledTransceivers",docs:["Bitmap of enabled transceivers.","The maximum number of transceivers is equal to [`Bitmap::BITS`]."],type:{defined:"Bitmap"}},{name:"paused",docs:["Pause the program. This is useful for upgrades and other maintenance."],type:"bool"},{name:"custody",docs:["The custody account that holds tokens in locking mode."],type:"publicKey"}]}},{name:"LUT",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:"publicKey"}]}},{name:"nttManagerPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}},{name:"tokenDecimals",type:"u8"}]}},{name:"inboxItem",type:{kind:"struct",fields:[{name:"init",type:"bool"},{name:"bump",type:"u8"},{name:"amount",type:"u64"},{name:"recipientAddress",type:"publicKey"},{name:"votes",type:{defined:"Bitmap"}},{name:"releaseStatus",type:{defined:"ReleaseStatus"}}]}},{name:"inboxRateLimit",docs:["Inbound rate limit per chain.","SECURITY: must check the PDA (since there are multiple PDAs, namely one for each chain.)"],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"outboxItem",type:{kind:"struct",fields:[{name:"amount",type:{defined:"TrimmedAmount"}},{name:"sender",type:"publicKey"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientNttManager",type:{array:["u8",32]}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"releaseTimestamp",type:"i64"},{name:"released",type:{defined:"Bitmap"}}]}},{name:"outboxRateLimit",type:{kind:"struct",fields:[{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"registeredTransceiver",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"id",type:"u8"},{name:"transceiverAddress",type:"publicKey"}]}},{name:"transceiverPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}},{name:"bridgeData",type:{kind:"struct",fields:[{name:"guardianSetIndex",docs:["The current guardian set index, used to decide which signature sets to accept."],type:"u32"},{name:"lastLamports",docs:["Lamports in the collection account"],type:"u64"},{name:"config",docs:["Bridge configuration, which is set once upon initialization."],type:{defined:"BridgeConfig"}}]}}],types:[{name:"Bitmap",type:{kind:"struct",fields:[{name:"map",type:"u128"}]}},{name:"SetInboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"},{name:"chainId",type:{defined:"ChainId"}}]}},{name:"SetOutboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"}]}},{name:"SetPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}},{name:"limit",type:"u64"},{name:"tokenDecimals",docs:["The token decimals on the peer chain."],type:"u8"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"},{name:"limit",type:"u64"},{name:"mode",type:{defined:"Mode"}}]}},{name:"RedeemArgs",type:{kind:"struct",fields:[]}},{name:"ReleaseInboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"TransferArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"shouldQueue",type:"bool"}]}},{name:"ReleaseStatus",docs:["The status of an InboxItem. This determines whether the tokens are minted/unlocked to the recipient. As","such, this must be used as a state machine that moves forward in a linear manner. A state",'should never "move backward" to a previous state (e.g. should never move from `Released` to',"`ReleaseAfter`)."],type:{kind:"enum",variants:[{name:"NotApproved"},{name:"ReleaseAfter",fields:["i64"]},{name:"Released"}]}},{name:"RateLimitState",type:{kind:"struct",fields:[{name:"limit",docs:["The maximum capacity of the rate limiter."],type:"u64"},{name:"capacityAtLastTx",docs:["The capacity of the rate limiter at `last_tx_timestamp`.","The actual current capacity is calculated in `capacity_at`, by","accounting for the time that has passed since `last_tx_timestamp` and","the refill rate."],type:"u64"},{name:"lastTxTimestamp",docs:["The timestamp of the last transaction that counted towards the current","capacity. Transactions that exceeded the capacity do not count, they are","just delayed."],type:"i64"}]}},{name:"SetTransceiverPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}}]}},{name:"BroadcastPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"ReleaseOutboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"ChainId",type:{kind:"struct",fields:[{name:"id",type:"u16"}]}},{name:"Mode",type:{kind:"enum",variants:[{name:"Locking"},{name:"Burning"}]}},{name:"TrimmedAmount",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]}},{name:"BridgeConfig",type:{kind:"struct",fields:[{name:"guardianSetExpirationTime",docs:["Period for how long a guardian set is valid after it has been replaced by a new one. This","guarantees that VAAs issued by that set can still be submitted for a certain period. In","this period we still trust the old guardian set."],type:"u32"},{name:"fee",docs:["Amount of lamports that needs to be paid to the protocol to post a message"],type:"u64"}]}}],errors:[{code:6e3,name:"CantReleaseYet",msg:"CantReleaseYet"},{code:6001,name:"InvalidPendingOwner",msg:"InvalidPendingOwner"},{code:6002,name:"InvalidChainId",msg:"InvalidChainId"},{code:6003,name:"InvalidRecipientAddress",msg:"InvalidRecipientAddress"},{code:6004,name:"InvalidTransceiverPeer",msg:"InvalidTransceiverPeer"},{code:6005,name:"InvalidNttManagerPeer",msg:"InvalidNttManagerPeer"},{code:6006,name:"InvalidRecipientNttManager",msg:"InvalidRecipientNttManager"},{code:6007,name:"TransferAlreadyRedeemed",msg:"TransferAlreadyRedeemed"},{code:6008,name:"TransferCannotBeRedeemed",msg:"TransferCannotBeRedeemed"},{code:6009,name:"TransferNotApproved",msg:"TransferNotApproved"},{code:6010,name:"MessageAlreadySent",msg:"MessageAlreadySent"},{code:6011,name:"InvalidMode",msg:"InvalidMode"},{code:6012,name:"InvalidMintAuthority",msg:"InvalidMintAuthority"},{code:6013,name:"TransferExceedsRateLimit",msg:"TransferExceedsRateLimit"},{code:6014,name:"Paused",msg:"Paused"},{code:6015,name:"DisabledTransceiver",msg:"DisabledTransceiver"},{code:6016,name:"InvalidDeployer",msg:"InvalidDeployer"},{code:6017,name:"BadAmountAfterTransfer",msg:"BadAmountAfterTransfer"},{code:6018,name:"BadAmountAfterBurn",msg:"BadAmountAfterBurn"},{code:6019,name:"ZeroThreshold",msg:"ZeroThreshold"},{code:6020,name:"OverflowExponent",msg:"OverflowExponent"},{code:6021,name:"OverflowScaledAmount",msg:"OverflowScaledAmount"},{code:6022,name:"BitmapIndexOutOfBounds",msg:"BitmapIndexOutOfBounds"},{code:6023,name:"NoRegisteredTransceivers",msg:"NoRegisteredTransceivers"}]},et={version:"2.0.0",name:"ntt_quoter",instructions:[{name:"requestRelay",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!1,isSigner:!1,docs:["and checking the release constraint into a single function"]},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RequestRelayArgs"}}]},{name:"closeRelay",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"feeRecipient",isMut:!0,isSigner:!1},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"initialize",accounts:[{name:"owner",isMut:!0,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1,docs:["We use the program data to make sure this owner is the upgrade authority (the true owner,","who deployed this program)."]},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAssistant",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"assistant",isMut:!1,isSigner:!1,isOptional:!0}],args:[]},{name:"setFeeRecipient",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1}],args:[]},{name:"registerChain",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainArgs"}}]},{name:"registerNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterNttArgs"}}]},{name:"deregisterNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"DeregisterNttArgs"}}]},{name:"updateSolPrice",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateSolPriceArgs"}}]},{name:"updateChainPrices",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainPricesArgs"}}]},{name:"updateChainParams",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainParamsArgs"}}]}],accounts:[{name:"instance",type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"assistant",type:"publicKey"},{name:"feeRecipient",type:"publicKey"},{name:"solPrice",type:"u64"}]}},{name:"registeredChain",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"},{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"registeredNtt",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"relayRequest",type:{kind:"struct",fields:[{name:"requestedGasDropoff",type:"u64"}]}}],types:[{name:"RegisterChainArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"RegisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"DeregisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"}]}},{name:"RequestRelayArgs",type:{kind:"struct",fields:[{name:"gasDropoff",type:"u64"},{name:"maxFee",type:"u64"}]}},{name:"UpdateSolPriceArgs",type:{kind:"struct",fields:[{name:"solPrice",type:"u64"}]}},{name:"UpdateChainPricesArgs",type:{kind:"struct",fields:[{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"UpdateChainParamsArgs",type:{kind:"struct",fields:[{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"}]}}],errors:[{code:6001,name:"ExceedsUserMaxFee",msg:"Relay fees exceeds specified max"},{code:6002,name:"ExceedsMaxGasDropoff",msg:"Requested gas dropoff exceeds max allowed for chain"},{code:6003,name:"InvalidFeeRecipient",msg:"The specified fee recipient does not match the address in the instance accound"},{code:6004,name:"RelayingToChainDisabled",msg:"Relaying to the specified chain is disabled"},{code:6005,name:"OutboxItemNotReleased",msg:"Relaying to the specified chain is disabled"},{code:6006,name:"ScalingOverflow",msg:"Scaled value exceeds u64::MAX"},{code:6007,name:"DivByZero",msg:"Cannot divide by zero"},{code:6257,name:"FeeRecipientCannotBeDefault",msg:"The fee recipient cannot be the default address (0x0)"},{code:6258,name:"NotAuthorized",msg:"Must be owner or assistant"},{code:6259,name:"PriceCannotBeZero",msg:"The price cannot be zero"}]},tt={version:"2.0.0",name:"wormhole_governance",instructions:[{name:"governance",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"governance",isMut:!0,isSigner:!1,docs:["governed program. This account is validated by Wormhole, not this program."]},{name:"vaa",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"replay",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"replayProtection",type:{kind:"struct",fields:[{name:"bump",type:"u8"}]}}],errors:[{code:6e3,name:"InvalidGovernanceChain",msg:"InvalidGovernanceChain"},{code:6001,name:"InvalidGovernanceEmitter",msg:"InvalidGovernanceEmitter"},{code:6002,name:"InvalidGovernanceProgram",msg:"InvalidGovernanceProgram"}]};var qe;(function(c){c.idl={ntt:x1,transceiver:x1,quoter:et,governance:tt}})(qe||(qe={}));const at={version:"3.0.0",name:"example_native_token_transfers",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"deployer",isMut:!1,isSigner:!0},{name:"programData",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"rateLimit",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1,docs:["In any case, this function is used to set the Config and initialize the program so we","assume the caller of this function will have total control over the program.","",'TODO: Using `UncheckedAccount` here leads to "Access violation in stack frame ...".',"Could refactor code to use `Box<_>` to reduce stack size."]},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"custody",isMut:!0,isSigner:!1,docs:["The custody account that holds tokens in locking mode and temporarily","holds tokens in burning mode.","function if the token account has already been created."]},{name:"tokenProgram",isMut:!1,isSigner:!1,docs:["associated token account for the given mint."]},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"initializeLut",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"authority",isMut:!1,isSigner:!1},{name:"lutAddress",isMut:!0,isSigner:!1},{name:"lut",isMut:!0,isSigner:!1},{name:"lutProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"entries",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"custody",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"outboxRateLimit",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}]}],args:[{name:"recentSlot",type:"u64"}]},{name:"version",accounts:[],args:[],returns:"string"},{name:"transferBurn",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["Tokens are always transferred to the custody account first regardless of","the mode.","For an explanation, see the note in [`transfer_burn`]."]},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1,docs:["See [`crate::SESSION_AUTHORITY_SEED`] for an explanation of the flow."]},{name:"tokenAuthority",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"transferLock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"mint",isMut:!0,isSigner:!1},{name:"from",isMut:!0,isSigner:!1,docs:["account can spend these tokens."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!0,isSigner:!0},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1,docs:["Tokens are always transferred to the custody account first regardless of","the mode.","For an explanation, see the note in [`transfer_burn`]."]},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"sessionAuthority",isMut:!1,isSigner:!1,docs:["See [`crate::SESSION_AUTHORITY_SEED`] for an explanation of the flow."]}],args:[{name:"args",type:{defined:"TransferArgs"}}]},{name:"redeem",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!1,isSigner:!1,docs:["`Account<T>` and `owner` constraints are mutually-exclusive"]},{name:"transceiver",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"inboxItem",isMut:!0,isSigner:!1,docs:["NOTE: This account is content-addressed (PDA seeded by the message hash).","This is because in a multi-transceiver configuration, the different",'transceivers "vote" on messages (by delivering them). By making the inbox',"items content-addressed, we can ensure that disagreeing votes don't","interfere with each other.","On the first call to [`redeem()`], [`InboxItem`] will be allocated and initialized with","default values.",'On subsequent calls, we want to modify the `InboxItem` by "voting" on it. Therefore the',"program should not fail which would occur when using the `init` constraint.","The [`InboxItem::init`] field is used to guard against malicious or accidental modification","InboxItem fields that should remain constant."]},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"outboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RedeemArgs"}}]},{name:"releaseInboundMint",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}]},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"releaseInboundUnlock",accounts:[{name:"common",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"inboxItem",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseInboundArgs"}}]},{name:"transferOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"newOwner",isMut:!1,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"transferOwnershipOneStepUnchecked",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"newOwner",isMut:!1,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"claimOwnership",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"upgradeLock",isMut:!1,isSigner:!1},{name:"newOwner",isMut:!1,isSigner:!0},{name:"programData",isMut:!0,isSigner:!1},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[]},{name:"acceptTokenAuthority",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}]},{name:"currentAuthority",isMut:!1,isSigner:!0}],args:[]},{name:"acceptTokenAuthorityFromMultisig",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}]},{name:"currentMultisigAuthority",isMut:!1,isSigner:!1}],args:[]},{name:"setTokenAuthorityOneStepUnchecked",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"newAuthority",isMut:!1,isSigner:!1}]},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setTokenAuthority",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"newAuthority",isMut:!1,isSigner:!1}]},{name:"rentPayer",isMut:!0,isSigner:!0},{name:"pendingTokenAuthority",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"revertTokenAuthority",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"rentPayer",isMut:!0,isSigner:!1},{name:"pendingTokenAuthority",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"owner",isMut:!1,isSigner:!0}],args:[]},{name:"claimTokenAuthority",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"rentPayer",isMut:!0,isSigner:!1},{name:"pendingTokenAuthority",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"newAuthority",isMut:!1,isSigner:!0}],args:[]},{name:"claimTokenAuthorityToMultisig",accounts:[{name:"common",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!1},{name:"multisigTokenAuthority",isMut:!1,isSigner:!1,isOptional:!0},{name:"rentPayer",isMut:!0,isSigner:!1},{name:"pendingTokenAuthority",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}]},{name:"newMultisigAuthority",isMut:!1,isSigner:!1}],args:[]},{name:"setPaused",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"pause",type:"bool"}]},{name:"setPeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!0,isSigner:!1},{name:"inboxRateLimit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetPeerArgs"}}]},{name:"registerTransceiver",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"transceiver",isMut:!1,isSigner:!1,docs:["used here that wraps the Transceiver account type."]},{name:"registeredTransceiver",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"deregisterTransceiver",accounts:[{name:"config",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"registeredTransceiver",isMut:!1,isSigner:!1}],args:[]},{name:"setOutboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetOutboundLimitArgs"}}]},{name:"setInboundLimit",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"rateLimit",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"SetInboundLimitArgs"}}]},{name:"markOutboxItemAsReleased",accounts:[{name:"signer",isMut:!1,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1}],args:[],returns:"bool"},{name:"setThreshold",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"threshold",type:"u8"}]},{name:"setWormholePeer",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"peer",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetTransceiverPeerArgs"}}]},{name:"receiveWormholeMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"releaseWormholeOutbound",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"ReleaseOutboundArgs"}}]},{name:"broadcastWormholeId",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1,docs:["enforced by the [`CpiContext`] call in [`post_message`].","The seeds constraint ensures that this is the correct address"]},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[]},{name:"broadcastWormholePeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"BroadcastPeerArgs"}}]}],accounts:[{name:"config",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"owner",docs:["Owner of the program."],type:"publicKey"},{name:"pendingOwner",docs:["Pending next owner (before claiming ownership)."],type:{option:"publicKey"}},{name:"mint",docs:["Mint address of the token managed by this program."],type:"publicKey"},{name:"tokenProgram",docs:["Address of the token program (token or token22). This could always be queried","from the [`mint`] account's owner, but storing it here avoids an indirection","on the client side."],type:"publicKey"},{name:"mode",docs:["The mode that this program is running in. This is used to determine","whether the program is burning tokens or locking tokens."],type:{defined:"Mode"}},{name:"chainId",docs:["The chain id of the chain that this program is running on. We don't","hardcode this so that the program is deployable on any potential SVM","forks."],type:{defined:"ChainId"}},{name:"nextTransceiverId",docs:["The next transceiver id to use when registering an transceiver."],type:"u8"},{name:"threshold",docs:["The number of transceivers that must attest to a transfer before it is","accepted."],type:"u8"},{name:"enabledTransceivers",docs:["Bitmap of enabled transceivers.","The maximum number of transceivers is equal to [`Bitmap::BITS`]."],type:{defined:"Bitmap"}},{name:"paused",docs:["Pause the program. This is useful for upgrades and other maintenance."],type:"bool"},{name:"custody",docs:["The custody account that holds tokens in locking mode."],type:"publicKey"}]}},{name:"LUT",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:"publicKey"}]}},{name:"nttManagerPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}},{name:"tokenDecimals",type:"u8"}]}},{name:"pendingTokenAuthority",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"pendingAuthority",type:"publicKey"},{name:"rentPayer",type:"publicKey"}]}},{name:"inboxItem",type:{kind:"struct",fields:[{name:"init",type:"bool"},{name:"bump",type:"u8"},{name:"amount",type:"u64"},{name:"recipientAddress",type:"publicKey"},{name:"votes",type:{defined:"Bitmap"}},{name:"releaseStatus",type:{defined:"ReleaseStatus"}}]}},{name:"inboxRateLimit",docs:["Inbound rate limit per chain.","SECURITY: must check the PDA (since there are multiple PDAs, namely one for each chain.)"],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"outboxItem",type:{kind:"struct",fields:[{name:"amount",type:{defined:"TrimmedAmount"}},{name:"sender",type:"publicKey"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientNttManager",type:{array:["u8",32]}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"releaseTimestamp",type:"i64"},{name:"released",type:{defined:"Bitmap"}}]}},{name:"outboxRateLimit",type:{kind:"struct",fields:[{name:"rateLimit",type:{defined:"RateLimitState"}}]}},{name:"registeredTransceiver",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"id",type:"u8"},{name:"transceiverAddress",type:"publicKey"}]}},{name:"transceiverPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}},{name:"bridgeData",type:{kind:"struct",fields:[{name:"guardianSetIndex",docs:["The current guardian set index, used to decide which signature sets to accept."],type:"u32"},{name:"lastLamports",docs:["Lamports in the collection account"],type:"u64"},{name:"config",docs:["Bridge configuration, which is set once upon initialization."],type:{defined:"BridgeConfig"}}]}}],types:[{name:"Bitmap",type:{kind:"struct",fields:[{name:"map",type:"u128"}]}},{name:"SetInboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"},{name:"chainId",type:{defined:"ChainId"}}]}},{name:"SetOutboundLimitArgs",type:{kind:"struct",fields:[{name:"limit",type:"u64"}]}},{name:"SetPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}},{name:"limit",type:"u64"},{name:"tokenDecimals",docs:["The token decimals on the peer chain."],type:"u8"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"},{name:"limit",type:"u64"},{name:"mode",type:{defined:"Mode"}}]}},{name:"RedeemArgs",type:{kind:"struct",fields:[]}},{name:"ReleaseInboundArgs",type:{kind:"struct",fields:[{name:"revertWhenNotReady",type:"bool"}]}},{name:"TransferArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"shouldQueue",type:"bool"}]}},{name:"ReleaseStatus",docs:["The status of an InboxItem. This determines whether the tokens are minted/unlocked to the recipient. As","such, this must be used as a state machine that moves forward in a linear manner. A state",'should never "move backward" to a previous state (e.g. should never move from `Released` to',"`ReleaseAfter`)."],type:{kind:"enum",variants:[{name:"NotApproved"},{name:"ReleaseAfter",fields:["i64"]},{name:"Released"}]}},{name:"RateLimitState",type:{kind:"struct",fields:[{name:"limit",docs:["The maximum capacity of the rate limiter."],type:"u64"},{name:"capacityAtLastTx",docs:["The capacity of the rate limiter at `last_tx_timestamp`.","The actual current capacity is calculated in `capacity_at`, by","accounting for the time that has passed since `last_tx_timestamp` and","the refill rate."],type:"u64"},{name:"lastTxTimestamp",docs:["The timestamp of the last transaction that counted towards the current","capacity. Transactions that exceeded the capacity do not count, they are","just delayed."],type:"i64"}]}},{name:"SetTransceiverPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}}]}},{name:"BroadcastPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"ReleaseOutboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"ChainId",type:{kind:"struct",fields:[{name:"id",type:"u16"}]}},{name:"Mode",type:{kind:"enum",variants:[{name:"Locking"},{name:"Burning"}]}},{name:"TrimmedAmount",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]}},{name:"BridgeConfig",type:{kind:"struct",fields:[{name:"guardianSetExpirationTime",docs:["Period for how long a guardian set is valid after it has been replaced by a new one. This","guarantees that VAAs issued by that set can still be submitted for a certain period. In","this period we still trust the old guardian set."],type:"u32"},{name:"fee",docs:["Amount of lamports that needs to be paid to the protocol to post a message"],type:"u64"}]}}],errors:[{code:6e3,name:"CantReleaseYet",msg:"CantReleaseYet"},{code:6001,name:"InvalidPendingOwner",msg:"InvalidPendingOwner"},{code:6002,name:"InvalidChainId",msg:"InvalidChainId"},{code:6003,name:"InvalidRecipientAddress",msg:"InvalidRecipientAddress"},{code:6004,name:"InvalidTransceiverPeer",msg:"InvalidTransceiverPeer"},{code:6005,name:"InvalidNttManagerPeer",msg:"InvalidNttManagerPeer"},{code:6006,name:"InvalidRecipientNttManager",msg:"InvalidRecipientNttManager"},{code:6007,name:"TransferAlreadyRedeemed",msg:"TransferAlreadyRedeemed"},{code:6008,name:"TransferCannotBeRedeemed",msg:"TransferCannotBeRedeemed"},{code:6009,name:"TransferNotApproved",msg:"TransferNotApproved"},{code:6010,name:"MessageAlreadySent",msg:"MessageAlreadySent"},{code:6011,name:"InvalidMode",msg:"InvalidMode"},{code:6012,name:"InvalidMintAuthority",msg:"InvalidMintAuthority"},{code:6013,name:"TransferExceedsRateLimit",msg:"TransferExceedsRateLimit"},{code:6014,name:"Paused",msg:"Paused"},{code:6015,name:"DisabledTransceiver",msg:"DisabledTransceiver"},{code:6016,name:"InvalidDeployer",msg:"InvalidDeployer"},{code:6017,name:"BadAmountAfterTransfer",msg:"BadAmountAfterTransfer"},{code:6018,name:"BadAmountAfterBurn",msg:"BadAmountAfterBurn"},{code:6019,name:"ZeroThreshold",msg:"ZeroThreshold"},{code:6020,name:"OverflowExponent",msg:"OverflowExponent"},{code:6021,name:"OverflowScaledAmount",msg:"OverflowScaledAmount"},{code:6022,name:"BitmapIndexOutOfBounds",msg:"BitmapIndexOutOfBounds"},{code:6023,name:"NoRegisteredTransceivers",msg:"NoRegisteredTransceivers"},{code:6024,name:"NotPaused",msg:"NotPaused"},{code:6025,name:"InvalidPendingTokenAuthority",msg:"InvalidPendingTokenAuthority"},{code:6026,name:"IncorrectRentPayer",msg:"IncorrectRentPayer"},{code:6027,name:"InvalidMultisig",msg:"InvalidMultisig"},{code:6028,name:"ThresholdTooHigh",msg:"ThresholdTooHigh"},{code:6029,name:"InvalidTransceiverProgram",msg:"InvalidTransceiverProgram"}]},nt={version:"3.0.0",name:"ntt_transceiver",instructions:[{name:"transceiverType",accounts:[],args:[],returns:"string"},{name:"setWormholePeer",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"peer",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SetTransceiverPeerArgs"}}]},{name:"receiveWormholeMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"peer",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"transceiverMessage",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"releaseWormholeOutbound",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",accounts:[{name:"config",isMut:!1,isSigner:!1}]},{name:"outboxItem",isMut:!0,isSigner:!1},{name:"transceiver",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]},{name:"manager",isMut:!1,isSigner:!1},{name:"outboxItemSigner",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"ReleaseOutboundArgs"}}]},{name:"broadcastWormholeId",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1,docs:["enforced by the [`CpiContext`] call in [`post_message`].","The seeds constraint ensures that this is the correct address"]},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[]},{name:"broadcastWormholePeer",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"peer",isMut:!1,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"emitter",isMut:!1,isSigner:!1},{name:"wormhole",accounts:[{name:"bridge",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"sequence",isMut:!0,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}]}],args:[{name:"args",type:{defined:"BroadcastPeerArgs"}}]}],accounts:[{name:"config",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"owner",docs:["Owner of the program."],type:"publicKey"},{name:"pendingOwner",docs:["Pending next owner (before claiming ownership)."],type:{option:"publicKey"}},{name:"mint",docs:["Mint address of the token managed by this program."],type:"publicKey"},{name:"tokenProgram",docs:["Address of the token program (token or token22). This could always be queried","from the [`mint`] account's owner, but storing it here avoids an indirection","on the client side."],type:"publicKey"},{name:"mode",docs:["The mode that this program is running in. This is used to determine","whether the program is burning tokens or locking tokens."],type:{defined:"Mode"}},{name:"chainId",docs:["The chain id of the chain that this program is running on. We don't","hardcode this so that the program is deployable on any potential SVM","forks."],type:{defined:"ChainId"}},{name:"nextTransceiverId",docs:["The next transceiver id to use when registering an transceiver."],type:"u8"},{name:"threshold",docs:["The number of transceivers that must attest to a transfer before it is","accepted."],type:"u8"},{name:"enabledTransceivers",docs:["Bitmap of enabled transceivers.","The maximum number of transceivers is equal to [`Bitmap::BITS`]."],type:{defined:"Bitmap"}},{name:"paused",docs:["Pause the program. This is useful for upgrades and other maintenance."],type:"bool"},{name:"custody",docs:["The custody account that holds tokens in locking mode."],type:"publicKey"}]}},{name:"outboxItem",type:{kind:"struct",fields:[{name:"amount",type:{defined:"TrimmedAmount"}},{name:"sender",type:"publicKey"},{name:"recipientChain",type:{defined:"ChainId"}},{name:"recipientNttManager",type:{array:["u8",32]}},{name:"recipientAddress",type:{array:["u8",32]}},{name:"releaseTimestamp",type:"i64"},{name:"released",type:{defined:"Bitmap"}}]}},{name:"registeredTransceiver",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"id",type:"u8"},{name:"transceiverAddress",type:"publicKey"}]}},{name:"transceiverPeer",docs:["A peer on another chain. Stored in a PDA seeded by the chain id."],type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}},{name:"bridgeData",type:{kind:"struct",fields:[{name:"guardianSetIndex",docs:["The current guardian set index, used to decide which signature sets to accept."],type:"u32"},{name:"lastLamports",docs:["Lamports in the collection account"],type:"u64"},{name:"config",docs:["Bridge configuration, which is set once upon initialization."],type:{defined:"BridgeConfig"}}]}}],types:[{name:"Bitmap",type:{kind:"struct",fields:[{name:"map",type:"u128"}]}},{name:"ChainId",type:{kind:"struct",fields:[{name:"id",type:"u16"}]}},{name:"Mode",type:{kind:"enum",variants:[{name:"Locking"},{name:"Burning"}]}},{name:"TrimmedAmount",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]}},{name:"SetTransceiverPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:{defined:"ChainId"}},{name:"address",type:{array:["u8",32]}}]}},{name:"BroadcastPeerArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"ReleaseOutboundArgs",type:{kind:"struct",fields:[{name:"revertOnDelay",type:"bool"}]}},{name:"BridgeConfig",type:{kind:"struct",fields:[{name:"guardianSetExpirationTime",docs:["Period for how long a guardian set is valid after it has been replaced by a new one. This","guarantees that VAAs issued by that set can still be submitted for a certain period. In","this period we still trust the old guardian set."],type:"u32"},{name:"fee",docs:["Amount of lamports that needs to be paid to the protocol to post a message"],type:"u64"}]}}]},it={version:"3.0.0",name:"ntt_quoter",instructions:[{name:"requestRelay",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!1,isSigner:!1,docs:["and checking the release constraint into a single function"]},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RequestRelayArgs"}}]},{name:"closeRelay",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"feeRecipient",isMut:!0,isSigner:!1},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"initialize",accounts:[{name:"owner",isMut:!0,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1,docs:["We use the program data to make sure this owner is the upgrade authority (the true owner,","who deployed this program)."]},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAssistant",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"assistant",isMut:!1,isSigner:!1,isOptional:!0}],args:[]},{name:"setFeeRecipient",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1}],args:[]},{name:"registerChain",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainArgs"}}]},{name:"registerNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterNttArgs"}}]},{name:"deregisterNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"DeregisterNttArgs"}}]},{name:"updateSolPrice",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateSolPriceArgs"}}]},{name:"updateChainPrices",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainPricesArgs"}}]},{name:"updateChainParams",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainParamsArgs"}}]}],accounts:[{name:"instance",type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"assistant",type:"publicKey"},{name:"feeRecipient",type:"publicKey"},{name:"solPrice",type:"u64"}]}},{name:"registeredChain",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"},{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"registeredNtt",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"relayRequest",type:{kind:"struct",fields:[{name:"requestedGasDropoff",type:"u64"}]}}],types:[{name:"RegisterChainArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"RegisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"DeregisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"}]}},{name:"RequestRelayArgs",type:{kind:"struct",fields:[{name:"gasDropoff",type:"u64"},{name:"maxFee",type:"u64"}]}},{name:"UpdateSolPriceArgs",type:{kind:"struct",fields:[{name:"solPrice",type:"u64"}]}},{name:"UpdateChainPricesArgs",type:{kind:"struct",fields:[{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"UpdateChainParamsArgs",type:{kind:"struct",fields:[{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"}]}}],errors:[{code:6001,name:"ExceedsUserMaxFee",msg:"Relay fees exceeds specified max"},{code:6002,name:"ExceedsMaxGasDropoff",msg:"Requested gas dropoff exceeds max allowed for chain"},{code:6003,name:"InvalidFeeRecipient",msg:"The specified fee recipient does not match the address in the instance accound"},{code:6004,name:"RelayingToChainDisabled",msg:"Relaying to the specified chain is disabled"},{code:6005,name:"OutboxItemNotReleased",msg:"Relaying to the specified chain is disabled"},{code:6006,name:"ScalingOverflow",msg:"Scaled value exceeds u64::MAX"},{code:6007,name:"DivByZero",msg:"Cannot divide by zero"},{code:6257,name:"FeeRecipientCannotBeDefault",msg:"The fee recipient cannot be the default address (0x0)"},{code:6258,name:"NotAuthorized",msg:"Must be owner or assistant"},{code:6259,name:"PriceCannotBeZero",msg:"The price cannot be zero"}]},st={version:"3.0.0",name:"wormhole_governance",instructions:[{name:"governance",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"governance",isMut:!0,isSigner:!1,docs:["governed program. This account is validated by Wormhole, not this program."]},{name:"vaa",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1},{name:"replay",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"replayProtection",type:{kind:"struct",fields:[{name:"bump",type:"u8"}]}}],errors:[{code:6e3,name:"InvalidGovernanceChain",msg:"InvalidGovernanceChain"},{code:6001,name:"InvalidGovernanceEmitter",msg:"InvalidGovernanceEmitter"},{code:6002,name:"InvalidGovernanceProgram",msg:"InvalidGovernanceProgram"}]};var $e;(function(c){c.idl={ntt:at,transceiver:nt,quoter:it,governance:st}})($e||($e={}));const W1=[["3.0.0",$e],["2.0.0",qe],["1.0.0",Fe]];function z1(c){for(const[e,a]of W1)if(D0.abiVersionMatches(c,e))return a;throw new Error(`Unknown IDL version: ${c}`)}function K1(c,e,a){const{idl:{ntt:i}}=z1(a);return new z0.Program(i,e,{connection:c})}function k1(c,e,a){const{idl:{transceiver:i}}=z1(a);return new z0.Program(i,e,{connection:c})}const Y0=new f.PublicKey("BPFLoaderUpgradeab1e11111111111111111111111");function J0(c){return f.PublicKey.findProgramAddressSync([new f.PublicKey(c).toBytes()],Y0)[0]}function G0(c){const e=c.split(".");if(e.length<3)throw new Error("Invalid version string");const a=e[2],i=a.split(/[^0-9]/)[0],o=a.slice(i.length);return[Number(e[0]),Number(e[1]),Number(i),o]}const rt={to:c=>new f.PublicKey(c),from:c=>c.toBytes()},ot=[{name:"slot",binary:"uint",endianness:"little",size:8},{name:"upgradeAuthority",binary:"switch",idSize:1,idTag:"isSome",layouts:[[[0,!1],[]],[[1,!0],[{name:"value",binary:"bytes",size:32,custom:rt}]]]}],ft=[{name:"length",binary:"uint",endianness:"little",size:4},{name:"version",binary:"bytes"}],E0={MAX:new F0((2n**64n-1n).toString()),to:(c,e)=>{const a=new F0(Math.round(c*e));if(a.isNeg())throw new Error("Value negative");if(a.bitLength()>64)throw new Error("Value too large");return a},from:(c,e)=>c.toNumber()/e};function j(c,e){const a=i=>typeof i=="string"?f.bytes.encode(i):i;return f.PublicKey.findProgramAddressSync(Array.isArray(c)?c.map(a):[a(c)],new f.PublicKey(e))[0]}const q0=c=>f.bignum.toBytes(f.toChainId(c),2),dt=c=>({relayRequestAccount:n=>j(["relay_request",n.toBytes()],c),instanceAccount:()=>j("instance",c),registeredChainAccount:n=>j(["registered_chain",q0(n)],c),registeredNttAccount:n=>j(["registered_ntt",n.toBytes()],c)});new f.PublicKey(f.Buffer.from("owner".padEnd(32,"\0")));new f.PublicKey(f.Buffer.from("payer".padEnd(32,"\0")));var Q;(function(c){function e(b,t,s){return{amount:new F0(b.toString()),recipientChain:{id:f.toChainId(t.chain)},recipientAddress:Array.from(t.address.toUniversalAddress().toUint8Array()),shouldQueue:s}}c.transferArgs=e,c.pdas=b=>({configAccount:()=>j("config",b),outboxRateLimitAccount:()=>j("outbox_rate_limit",b),inboxRateLimitAccount:P=>j(["inbox_rate_limit",q0(P)],b),inboxItemAccount:(P,F)=>j(["inbox_item",D0.messageDigest(P,F)],b),upgradeLock:()=>j("upgrade_lock",b),sessionAuthority:(P,F)=>j(["session_authority",P.toBytes(),f.keccak_256(f.bytes.concat(f.bytes.zpad(new Uint8Array(F.amount.toArray()),8),q0(F.recipientChain.id),new Uint8Array(F.recipientAddress),new Uint8Array([F.shouldQueue?1:0])))],b),tokenAuthority:()=>j("token_authority",b),pendingTokenAuthority:()=>j("pending_token_authority",b),peerAccount:P=>j(["peer",q0(P)],b),registeredTransceiver:P=>j(["registered_transceiver",P.toBytes()],b),lutAccount:()=>j("lut",b),lutAuthority:()=>j("lut_authority",b)}),c.transceiverPdas=b=>({emitterAccount:()=>j("emitter",b),outboxItemSigner:()=>j(["outbox_item_signer"],b),transceiverPeerAccount:h=>j(["transceiver_peer",q0(h)],b),transceiverMessageAccount:(h,v)=>j(["transceiver_message",q0(h),v],b),wormholeMessageAccount:h=>j(["message",h.toBytes()],b)});async function a(b,t,s){if(!s){const k=b.rpcEndpoint===f.rpcAddress("Devnet","Solana")?"6sbzC1eH4FTujJXWj51eQe25cYvr4xfXbJ1vAj7j2k5J":b.rpcEndpoint.startsWith("http://localhost")?"98evdAiWr7ey9MAQzoQQMwFQkTsSR6KkWQuFqKrgwNwb":"Hk3SdYTJFpawrvRz4qRztuEt2SqoCG7BGj2yJfDJSFbJ";s=new f.PublicKey(k)}const d=K1(b,t.toString(),"1.0.0"),l=await d.methods.version().accountsStrict({}).instruction(),{blockhash:y}=await d.provider.connection.getLatestBlockhash("finalized"),h=new f.TransactionMessage({payerKey:s,recentBlockhash:y,instructions:[l]}).compileToV0Message(),v=new f.VersionedTransaction(h),m=await d.provider.connection.simulateTransaction(v,{sigVerify:!1});if(!m.value.returnData||m.value.err)throw new Error("Could not fetch IDL version: "+JSON.stringify(z0.translateError(m.value.err,z0.parseIdlErrors(d.idl))));const r=f.b64.decode(m.value.returnData?.data[0]),p=f.deserialize$1(ft,r),x=f.bytes.decode(p.version);for(const[k]of W1)if(D0.abiVersionMatches(x,k))return k;throw new Error(`Unknown IDL version: ${x}`)}c.getVersion=a;async function i(b,t,s){const[d,,,]=G0(b.idl.version),l=t.mode==="burning"?{burning:{}}:{locking:{}},y=f.toChainId(t.chain);s=s??c.pdas(b.programId);const h=new F0(t.outboundLimit.toString());return b.methods.initialize({chainId:y,limit:h,mode:l}).accounts({payer:t.payer,deployer:t.owner,programData:J0(b.programId),config:s.configAccount(),mint:t.mint,rateLimit:s.outboxRateLimitAccount(),tokenProgram:t.tokenProgram,tokenAuthority:s.tokenAuthority(),...d>=3&&{multisigTokenAuthority:t.multisigTokenAuthority??null},custody:await c.custodyAccountAddress(s,t.mint,t.tokenProgram),bpfLoaderUpgradeableProgram:Y0,associatedTokenProgram:B.ASSOCIATED_TOKEN_PROGRAM_ID,systemProgram:f.SystemProgram.programId}).instruction()}c.createInitializeInstruction=i;async function o(b,t,s,d,l){const[y,,,]=G0(b.idl.version);if(y<2)return;l=l??c.pdas(b.programId);const h=await b.provider.connection.getSlot()-1,[v,m]=f.AddressLookupTableProgram.createLookupTable({authority:l.lutAuthority(),payer:d.payer,recentSlot:h}),r=Q0.getWormholeDerivedAccounts(s,d.wormholeId.toString()),p={config:l.configAccount(),custody:t.custody,tokenProgram:t.tokenProgram,mint:t.mint,tokenAuthority:l.tokenAuthority(),outboxRateLimit:l.outboxRateLimitAccount(),wormhole:{bridge:r.wormholeBridge,feeCollector:r.wormholeFeeCollector,sequence:r.wormholeSequence,program:d.wormholeId,systemProgram:f.SystemProgram.programId,clock:f.SYSVAR_CLOCK_PUBKEY,rent:f.SYSVAR_RENT_PUBKEY}},x=F=>{const q=new Array;for(const W in F){const $0=F[W];$0 instanceof f.PublicKey?q.push($0):typeof $0=="object"&&q.push(...x($0))}return q},k=x(p).map(F=>F.toBase58()),P=await L(b,l);if(P!==null){const F=P.state.addresses?.map(W=>W.toBase58())??[];if(k.filter(W=>!F.includes(W)).length===0)return null}return b.methods.initializeLut(new F0(h)).accountsStrict({payer:d.payer,owner:d.owner,authority:l.lutAuthority(),lutAddress:m,lut:l.lutAccount(),lutProgram:f.AddressLookupTableProgram.programId,systemProgram:f.SystemProgram.programId,entries:p}).instruction()}c.initializeOrUpdateLUT=o;async function n(b,t,s,d){d=d??c.pdas(b.programId);const l=await K(d,t),y=f.toChain(s.transferArgs.recipientChain.id),h=await b.methods.transferBurn(s.transferArgs).accountsStrict({common:{payer:s.payer,config:{config:d.configAccount()},mint:t.mint,from:s.from,tokenProgram:t.tokenProgram,outboxItem:s.outboxItem,outboxRateLimit:d.outboxRateLimitAccount(),systemProgram:f.SystemProgram.programId,custody:l},peer:d.peerAccount(y),inboxRateLimit:d.inboxRateLimitAccount(y),sessionAuthority:d.sessionAuthority(s.fromAuthority,s.transferArgs),tokenAuthority:d.tokenAuthority()}).instruction(),v=await B.getMint(b.provider.connection,t.mint,void 0,t.tokenProgram),m=ae(v);if(m){const r=s.from,p=t.mint,x=await K(d,t),k=d.sessionAuthority(s.fromAuthority,s.transferArgs);await de(b.provider.connection,h,m.programId,r,p,x,k,0)}return h}c.createTransferBurnInstruction=n;async function u(b,t,s,d){if(t.paused)throw new Error("Contract is paused");d=d??c.pdas(b.programId);const l=f.toChain(s.transferArgs.recipientChain.id),y=await K(d,t),h=await b.methods.transferLock(s.transferArgs).accountsStrict({common:{payer:s.payer,config:{config:d.configAccount()},mint:t.mint,from:s.from,tokenProgram:t.tokenProgram,outboxItem:s.outboxItem,outboxRateLimit:d.outboxRateLimitAccount(),custody:y,systemProgram:f.SystemProgram.programId},peer:d.peerAccount(l),inboxRateLimit:d.inboxRateLimitAccount(l),sessionAuthority:d.sessionAuthority(s.fromAuthority,s.transferArgs),custody:y}).instruction(),v=await B.getMint(b.provider.connection,t.mint,void 0,t.tokenProgram),m=ae(v);if(m){const r=s.from,p=await K(d,t),x=d.sessionAuthority(s.fromAuthority,s.transferArgs);await de(b.provider.connection,h,m.programId,r,t.mint,p,x,0)}return h}c.createTransferLockInstruction=u;async function g(b,t,s,d){const[l,,,]=G0(b.idl.version);d=d??c.pdas(b.programId);const y=await B.getMint(b.provider.connection,t.mint,void 0,t.tokenProgram);let h=null;y.mintAuthority?.equals(d.tokenAuthority())||(h=y.mintAuthority);const v=s.recipient??(await H(b,s.chain,s.nttMessage)).recipientAddress,m=await b.methods.releaseInboundMint({revertOnDelay:s.revertWhenNotReady,revertWhenNotReady:s.revertWhenNotReady}).accounts({common:{payer:s.payer,config:{config:d.configAccount()},inboxItem:d.inboxItemAccount(s.chain,s.nttMessage),recipient:B.getAssociatedTokenAddressSync(t.mint,v,!0,t.tokenProgram),mint:t.mint,tokenAuthority:d.tokenAuthority(),tokenProgram:t.tokenProgram,custody:await K(d,t)},...l>=3&&{multisigTokenAuthority:h}}).instruction(),r=ae(y);if(r){const p=await K(d,t),x=t.mint,k=B.getAssociatedTokenAddressSync(x,v,!0,t.tokenProgram),P=d.tokenAuthority();await de(b.provider.connection,m,r.programId,p,x,k,P,0)}return m}c.createReleaseInboundMintInstruction=g;async function T(b,t,s,d){const l=s.recipient??(await c.getInboxItem(b,s.chain,s.nttMessage)).recipientAddress;d=d??c.pdas(b.programId);const y=await K(d,t),h=await b.methods.releaseInboundUnlock({revertOnDelay:s.revertWhenNotReady,revertWhenNotReady:s.revertWhenNotReady}).accountsStrict({common:{payer:s.payer,config:{config:d.configAccount()},inboxItem:d.inboxItemAccount(s.chain,s.nttMessage),recipient:B.getAssociatedTokenAddressSync(t.mint,l,!0,t.tokenProgram),mint:t.mint,tokenAuthority:d.tokenAuthority(),tokenProgram:t.tokenProgram,custody:y},custody:y}).instruction(),v=await B.getMint(b.provider.connection,t.mint,void 0,t.tokenProgram),m=ae(v);if(m){const r=await K(d,t),p=t.mint,x=B.getAssociatedTokenAddressSync(p,l,!0,t.tokenProgram),k=d.tokenAuthority();await de(b.provider.connection,h,m.programId,r,p,x,k,0)}return h}c.createReleaseInboundUnlockInstruction=T;async function w(b,t,s){return s=s??c.pdas(b.programId),b.methods.transferOwnershipOneStepUnchecked().accountsStrict({config:s.configAccount(),owner:t.owner,newOwner:t.newOwner,upgradeLock:s.upgradeLock(),programData:J0(b.programId),bpfLoaderUpgradeableProgram:Y0}).instruction()}c.createTransferOwnershipOneStepUncheckedInstruction=w;async function S(b,t,s){return s=s??c.pdas(b.programId),b.methods.transferOwnership().accountsStrict({config:s.configAccount(),owner:t.owner,newOwner:t.newOwner,upgradeLock:s.upgradeLock(),programData:J0(b.programId),bpfLoaderUpgradeableProgram:Y0}).instruction()}c.createTransferOwnershipInstruction=S;async function M(b,t,s){return s=s??c.pdas(b.programId),b.methods.claimOwnership().accountsStrict({config:s.configAccount(),newOwner:t.newOwner,upgradeLock:s.upgradeLock(),programData:J0(b.programId),bpfLoaderUpgradeableProgram:Y0}).instruction()}c.createClaimOwnershipInstruction=M;async function A(b,t,s,d){return d=d??c.pdas(b.programId),b.methods.acceptTokenAuthority().accountsStrict({common:{config:d.configAccount(),mint:t.mint,tokenProgram:t.tokenProgram,tokenAuthority:d.tokenAuthority(),multisigTokenAuthority:s.multisigTokenAuthority??null},currentAuthority:s.currentAuthority}).instruction()}c.createAcceptTokenAuthorityInstruction=A;async function I(b,t,s,d){return d=d??c.pdas(b.programId),b.methods.acceptTokenAuthorityFromMultisig().accountsStrict({common:{config:d.configAccount(),mint:t.mint,tokenProgram:t.tokenProgram,tokenAuthority:d.tokenAuthority(),multisigTokenAuthority:s.multisigTokenAuthority??null},currentMultisigAuthority:s.currentMultisigAuthority}).remainingAccounts(s.additionalSigners.map(l=>({pubkey:l,isSigner:!0,isWritable:!1}))).instruction()}c.createAcceptTokenAuthorityFromMultisigInstruction=I;async function C(b,t,s,d){return d=d??c.pdas(b.programId),b.methods.setTokenAuthorityOneStepUnchecked().accountsStrict({common:{config:d.configAccount(),tokenAuthority:d.tokenAuthority(),mint:t.mint,owner:s.owner,newAuthority:s.newAuthority,multisigTokenAuthority:s.multisigTokenAuthority??null},tokenProgram:t.tokenProgram}).instruction()}c.createSetTokenAuthorityOneStepUncheckedInstruction=C;async function N(b,t,s,d){return d=d??c.pdas(b.programId),b.methods.setTokenAuthority().accountsStrict({common:{config:d.configAccount(),tokenAuthority:d.tokenAuthority(),mint:t.mint,owner:s.owner,newAuthority:s.newAuthority,multisigTokenAuthority:s.multisigTokenAuthority??null},rentPayer:s.rentPayer,pendingTokenAuthority:d.pendingTokenAuthority(),systemProgram:f.SystemProgram.programId}).instruction()}c.createSetTokenAuthorityInstruction=N;async function R(b,t,s,d){return d=d??c.pdas(b.programId),b.methods.revertTokenAuthority().accountsStrict({common:{config:d.configAccount(),mint:t.mint,tokenAuthority:d.tokenAuthority(),tokenProgram:t.tokenProgram,systemProgram:f.SystemProgram.programId,rentPayer:s.rentPayer,pendingTokenAuthority:d.pendingTokenAuthority(),multisigTokenAuthority:s.multisigTokenAuthority??null},owner:s.owner}).instruction()}c.createRevertTokenAuthorityInstruction=R;async function E(b,t,s,d){return d=d??c.pdas(b.programId),b.methods.claimTokenAuthority().accountsStrict({common:{config:d.configAccount(),mint:t.mint,tokenAuthority:d.tokenAuthority(),tokenProgram:t.tokenProgram,systemProgram:f.SystemProgram.programId,rentPayer:s.rentPayer,pendingTokenAuthority:d.pendingTokenAuthority(),multisigTokenAuthority:s.multisigTokenAuthority??null},newAuthority:s.newAuthority}).instruction()}c.createClaimTokenAuthorityInstruction=E;async function D(b,t,s,d){return d=d??c.pdas(b.programId),b.methods.claimTokenAuthorityToMultisig().accountsStrict({common:{config:d.configAccount(),mint:t.mint,tokenAuthority:d.tokenAuthority(),tokenProgram:t.tokenProgram,systemProgram:f.SystemProgram.programId,rentPayer:s.rentPayer,pendingTokenAuthority:d.pendingTokenAuthority(),multisigTokenAuthority:s.multisigTokenAuthority??null},newMultisigAuthority:s.newMultisigAuthority}).remainingAccounts(s.additionalSigners.map(l=>({pubkey:l,isSigner:!0,isWritable:!1}))).instruction()}c.createClaimTokenAuthorityToMultisigInstruction=D;async function O(b,t,s){return s=s??c.pdas(b.programId),b.methods.setPeer({chainId:{id:f.toChainId(t.chain)},address:Array.from(t.address),limit:t.limit,tokenDecimals:t.tokenDecimals}).accounts({payer:t.payer,owner:t.owner,config:s.configAccount(),peer:s.peerAccount(t.chain),inboxRateLimit:s.inboxRateLimitAccount(t.chain)}).instruction()}c.createSetPeerInstruction=O;async function U(b,t,s){return s=s??c.pdas(b.programId),b.methods.setPaused(t.paused).accountsStrict({owner:t.owner,config:s.configAccount()}).instruction()}c.createSetPausedInstruction=U;async function V(b,t,s){return s=s??c.pdas(b.programId),b.methods.setThreshold(t.threshold).accountsStrict({owner:t.owner,config:s.configAccount()}).instruction()}c.createSetThresholdInstruction=V;async function z(b,t,s){return s=s??c.pdas(b.programId),b.methods.setOutboundLimit({limit:t.limit}).accounts({owner:t.owner,config:s.configAccount(),rateLimit:s.outboxRateLimitAccount()}).instruction()}c.createSetOutboundLimitInstruction=z;async function G(b,t,s){return s=s??c.pdas(b.programId),b.methods.setInboundLimit({chainId:{id:f.toChainId(t.chain)},limit:t.limit}).accounts({owner:t.owner,config:s.configAccount(),rateLimit:s.inboxRateLimitAccount(t.chain)}).instruction()}c.createSetInboundLimitInstruction=G;async function O0(b,t,s,d,l,y){l=l??c.pdas(b.programId),y=y??c.transceiverPdas(s);const h=d.vaa,v=h.payload.nttManagerPayload,m=h.emitterChain;return b.methods.redeem({}).accounts({payer:d.payer,config:l.configAccount(),peer:l.peerAccount(m),transceiverMessage:y.transceiverMessageAccount(m,v.id),transceiver:l.registeredTransceiver(s),mint:t.mint,inboxItem:l.inboxItemAccount(m,v),inboxRateLimit:l.inboxRateLimitAccount(m),outboxRateLimit:l.outboxRateLimitAccount()}).instruction()}c.createRedeemInstruction=O0;async function N0(b,t){return b.account.config.fetch(t.configAccount())}c.getConfig=N0;async function H(b,t,s){return b.account.inboxItem.fetch(c.pdas(b.programId).inboxItemAccount(t,s))}c.getInboxItem=H;async function L(b,t){const[s,,,]=G0(b.idl.version);if(s<2)return null;t=t??c.pdas(b.programId);const d=await b.account.lut.fetchNullable(t.lutAccount());if(!d)return null;const l=await b.provider.connection.getAddressLookupTable(d.address);if(l.value===null)throw new Error("Could not fetch LUT");return l.value}c.getAddressLookupTable=L;async function K(b,t,s=B.TOKEN_PROGRAM_ID){return t instanceof f.PublicKey?B.getAssociatedTokenAddress(t,b.tokenAuthority(),!0,s):B.getAssociatedTokenAddress(t.mint,b.tokenAuthority(),!0,t.tokenProgram)}c.custodyAccountAddress=K})(Q||(Q={}));async function de(c,e,a,i,o,n,u,g,T){const w=b6(o,a),S=await c.getAccountInfo(w,T);if(S==null)return e;const M=m6(S);if(![i,o,n,u].every(I=>e.keys.some(C=>C.pubkey.equals(I))))throw new Error("Missing required account in instruction");const A=y6(a,i,o,n,u,w,BigInt(g));for(const I of M)A.keys.push(ct(await p6(c,I,A.keys,A.data,A.programId),A.keys));e.keys.push(...A.keys.slice(5)),e.keys.push({pubkey:a,isSigner:!1,isWritable:!1}),e.keys.push({pubkey:w,isSigner:!1,isWritable:!1})}function ct(c,e){const a=e.filter(i=>i.pubkey.equals(c.pubkey)).reduce((i,o)=>i?{isSigner:i.isSigner||o.isSigner,isWritable:i.isWritable||o.isWritable}:{isSigner:o.isSigner,isWritable:o.isWritable},void 0);if(a){const{isSigner:i,isWritable:o}=a;!i&&i!==c.isSigner&&(c.isSigner=!1),!o&&o!==c.isWritable&&(c.isWritable=!1)}return c}const bt="2.0.0",ut="ntt_quoter",lt=[{name:"requestRelay",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!1,isSigner:!1},{name:"outboxItem",isMut:!1,isSigner:!1,docs:["and checking the release constraint into a single function"]},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RequestRelayArgs"}}]},{name:"closeRelay",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"feeRecipient",isMut:!0,isSigner:!1},{name:"relayRequest",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"initialize",accounts:[{name:"owner",isMut:!0,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1,docs:["We use the program data to make sure this owner is the upgrade authority (the true owner,","who deployed this program)."]},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAssistant",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"assistant",isMut:!1,isSigner:!1,isOptional:!0}],args:[]},{name:"setFeeRecipient",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1},{name:"feeRecipient",isMut:!1,isSigner:!1}],args:[]},{name:"registerChain",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainArgs"}}]},{name:"registerNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterNttArgs"}}]},{name:"deregisterNtt",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredNtt",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"DeregisterNttArgs"}}]},{name:"updateSolPrice",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateSolPriceArgs"}}]},{name:"updateChainPrices",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainPricesArgs"}}]},{name:"updateChainParams",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"instance",isMut:!1,isSigner:!1},{name:"registeredChain",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainParamsArgs"}}]}],mt=[{name:"Instance",type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"assistant",type:"publicKey"},{name:"feeRecipient",type:"publicKey"},{name:"solPrice",type:"u64"}]}},{name:"RegisteredChain",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"},{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"RegisteredNtt",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"RelayRequest",type:{kind:"struct",fields:[{name:"requestedGasDropoff",type:"u64"}]}}],pt=[{name:"RegisterChainArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u16"}]}},{name:"RegisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"},{name:"wormholeTransceiverIndex",type:"u8"},{name:"gasCost",type:"u32"}]}},{name:"DeregisterNttArgs",type:{kind:"struct",fields:[{name:"nttProgramId",type:"publicKey"}]}},{name:"RequestRelayArgs",type:{kind:"struct",fields:[{name:"gasDropoff",type:"u64"},{name:"maxFee",type:"u64"}]}},{name:"UpdateSolPriceArgs",type:{kind:"struct",fields:[{name:"solPrice",type:"u64"}]}},{name:"UpdateChainPricesArgs",type:{kind:"struct",fields:[{name:"nativePrice",type:"u64"},{name:"gasPrice",type:"u64"}]}},{name:"UpdateChainParamsArgs",type:{kind:"struct",fields:[{name:"maxGasDropoff",type:"u64"},{name:"basePrice",type:"u64"}]}}],yt=[{code:6001,name:"ExceedsUserMaxFee",msg:"Relay fees exceeds specified max"},{code:6002,name:"ExceedsMaxGasDropoff",msg:"Requested gas dropoff exceeds max allowed for chain"},{code:6003,name:"InvalidFeeRecipient",msg:"The specified fee recipient does not match the address in the instance accound"},{code:6004,name:"RelayingToChainDisabled",msg:"Relaying to the specified chain is disabled"},{code:6005,name:"OutboxItemNotReleased",msg:"Relaying to the specified chain is disabled"},{code:6006,name:"ScalingOverflow",msg:"Scaled value exceeds u64::MAX"},{code:6007,name:"DivByZero",msg:"Cannot divide by zero"},{code:6257,name:"FeeRecipientCannotBeDefault",msg:"The fee recipient cannot be the default address (0x0)"},{code:6258,name:"NotAuthorized",msg:"Must be owner or assistant"},{code:6259,name:"PriceCannotBeZero",msg:"The price cannot be zero"}],ht={version:bt,name:ut,instructions:lt,accounts:mt,types:pt,errors:yt},j0=1e6,V0=1e9,P1=1e9,gt="instance",vt="registered_chain",Tt="registered_ntt",wt="relay_request";class Mt{instance;program;nttProgramId;pdas;constructor(e,a,i){this.program=new z0.Program(ht,new f.PublicKey(a),{connection:e}),this.nttProgramId=new f.PublicKey(i),this.pdas=dt(this.program.programId),this.instance=j([gt],this.program.programId)}async isRelayEnabled(e){try{const{paused:a}=await this.getRegisteredChain(e);return!a}catch(a){if(a.message?.includes("Account does not exist"))return!1;throw a}}async calcRelayCostInSol(e,a,i){const[o,n,u,g]=await Promise.all([this.getRegisteredChain(a),this.getRegisteredNtt(e),this.getInstance(),this.program.provider.connection.getMinimumBalanceForRentExemption(this.program.account.relayRequest.size)]);if(i>o.maxGasDropoffEth)throw new Error("Requested gas dropoff exceeds allowed maximum");const T=o.nativePriceUsd*(i+o.gasPriceGwei*n.gasCost/V0);return g/f.LAMPORTS_PER_SOL+(o.basePriceUsd+T)/u.solPriceUsd}async quoteDeliveryPrice(e,a){if(f.chainToPlatform(e)!=="Evm")throw new Error("Only EVM chains are supported");const i=f.whole(f.fromBaseUnits(a??0n,18)),[o,n,u,g]=await Promise.all([this.getRegisteredChain(e),this.getInstance(),this.getRegisteredNtt(this.nttProgramId),this.program.provider.connection.getMinimumBalanceForRentExemption(this.program.account.relayRequest.size)]);if(o.nativePriceUsd===0)throw new Error("Native price is 0");if(n.solPriceUsd===0)throw new Error("SOL price is 0");if(i>o.maxGasDropoffEth)throw new Error("Requested gas dropoff exceeds allowed maximum");const T=o.nativePriceUsd*(i+o.gasPriceGwei*u.gasCost/V0),w=g/f.LAMPORTS_PER_SOL+(o.basePriceUsd+T)/n.solPriceUsd;return BigInt(E0.to(w*1.05,f.LAMPORTS_PER_SOL).toString())}async createRequestRelayInstruction(e,a,i,o,n){return this.program.methods.requestRelay({maxFee:E0.to(o,f.LAMPORTS_PER_SOL),gasDropoff:E0.to(n,V0)}).accountsStrict({payer:e,instance:this.instance,registeredChain:this.registeredChainPda(i),outboxItem:a,relayRequest:this.relayRequestPda(a),systemProgram:f.SystemProgram.programId,registeredNtt:this.pdas.registeredNttAccount(this.nttProgramId)}).instruction()}async getInstance(){const e=await this.program.account.instance.fetch(this.instance);return{owner:e.owner,assistant:e.assistant,feeRecipient:e.feeRecipient,solPriceUsd:E0.from(e.solPrice,j0)}}async getRegisteredChain(e){const a=await this.program.account.registeredChain.fetch(this.registeredChainPda(e));return{paused:a.basePrice.eq(E0.MAX),maxGasDropoffEth:E0.from(a.maxGasDropoff,V0),basePriceUsd:E0.from(a.basePrice,j0),nativePriceUsd:E0.from(a.nativePrice,j0),gasPriceGwei:E0.from(a.gasPrice,P1)}}async getRegisteredNtt(e){const a=await this.program.account.registeredNtt.fetch(this.registeredNttPda(e));return{gasCost:a.gasCost,wormholeTransceiverIndex:a.wormholeTransceiverIndex}}async wasRelayRequested(e){const a=await this.program.account.relayRequest.fetchNullable(this.relayRequestPda(e));return a?E0.from(a.requestedGasDropoff,V0):null}async createInitalizeInstruction(e){if(!this.program.account.instance.fetchNullable(this.instance))throw new Error("Already initialized");const a=J0(this.program.programId),i=await this.program.provider.connection.getAccountInfo(a);if(!i)throw new Error("Could not find program data account");const o=f.deserialize$1(ot,i.data);if(!o.upgradeAuthority.isSome)throw new Error("Could not determine program owner from program data.");return this.program.methods.initialize().accounts({owner:o.upgradeAuthority.value,instance:this.instance,feeRecipient:e,programData:a,systemProgram:f.SystemProgram.programId}).instruction()}async createSetAssistantInstruction(e){const{owner:a,assistant:i}=await this.getInstance();if(i.equals(e))throw new Error("Is already assistant");return this.program.methods.setAssistant().accounts({owner:a,instance:this.instance,assistant:e}).instruction()}async createSetFeeRecipientInstruction(e){if(e.equals(f.PublicKey.default))throw new Error("Fee recipient cannot be default public key");const{owner:a,feeRecipient:i}=await this.getInstance();if(i.equals(e))throw new Error("Is already feeRecipient");return this.program.methods.setFeeRecipient().accounts({owner:a,instance:this.instance,feeRecipient:e}).instruction()}async createRegisterChainInstruction(e,a){const i=f.toChainId(a);return this.program.methods.registerChain({chainId:i}).accounts({authority:e,instance:this.instance,registeredChain:this.registeredChainPda(a),systemProgram:f.SystemProgram.programId}).instruction()}async createRegisterNttInstruction(e,a,i,o){return this.program.methods.registerNtt({nttProgramId:a,gasCost:i,wormholeTransceiverIndex:o}).accounts({authority:e,instance:this.instance,registeredNtt:this.registeredNttPda(a),systemProgram:f.SystemProgram.programId}).instruction()}async createDeregisterNttInstruction(e,a){return this.program.methods.deregisterNtt({nttProgramId:a}).accounts({authority:e,instance:this.instance,registeredNtt:this.registeredNttPda(a),systemProgram:f.SystemProgram.programId}).instruction()}async createUpdateSolPriceInstruction(e,a){return this.program.methods.updateSolPrice({solPrice:E0.to(a,j0)}).accounts({authority:e,instance:this.instance}).instruction()}async createUpdateChainParamsInstruction(e,a,i,o){return this.program.methods.updateChainParams({maxGasDropoff:E0.to(i,V0),basePrice:E0.to(o,j0)}).accounts({authority:e,instance:this.instance,registeredChain:this.registeredChainPda(a)}).instruction()}async createPauseRelayForChainInstruction(e,a){return this.program.methods.updateChainParams({maxGasDropoff:E0.to(0,1),basePrice:E0.MAX}).accounts({authority:e,instance:this.instance,registeredChain:this.registeredChainPda(a)}).instruction()}async createUpdateChainPricesInstruction(e,a,i,o){return this.program.methods.updateChainPrices({nativePrice:E0.to(i,j0),gasPrice:E0.to(o,P1)}).accounts({authority:e,instance:this.instance,registeredChain:this.registeredChainPda(a)}).instruction()}async createCloseRelayInstruction(e,a){return this.program.methods.closeRelay().accounts({authority:e,instance:this.instance,relayRequest:this.relayRequestPda(a)}).instruction()}registeredChainPda(e){return j([vt,q0(e)],this.program.programId)}registeredNttPda(e){return j([Tt,e.toBytes()],this.program.programId)}relayRequestPda(e){return j([wt,e.toBytes()],this.program.programId)}}class C1{manager;program;version;programId;pdas;constructor(e,a,i="3.0.0"){this.manager=e,this.program=a,this.version=i,this.programId=a.programId,this.pdas=Q.transceiverPdas(a.programId)}async getPauser(){return null}async*setPauser(e,a){throw new Error("Method not implemented.")}async*receive(e,a){if(e.payloadName!=="WormholeTransfer")throw new Error("Invalid attestation payload");const i=new f.SolanaAddress(a).unwrap(),o=await this.createReceiveIx(e,i),n=new f.Transaction;n.feePayer=i,n.add(o),yield this.manager.createUnsignedTx({transaction:n},"Ntt.Redeem")}async createReceiveIx(e,a){const i=e.payload.nttManagerPayload,o=e.emitterChain;return this.program.methods.receiveWormholeMessage().accounts({payer:a,config:{config:this.manager.pdas.configAccount()},peer:this.pdas.transceiverPeerAccount(o),vaa:Q0.derivePostedVaaKey(this.manager.core.address,f.Buffer.from(e.hash)),transceiverMessage:this.pdas.transceiverMessageAccount(o,i.id)}).instruction()}async getTransceiverType(e){const[a,,,]=G0(this.version);if(a<3)return"wormhole";const i=new f.SolanaAddress(e).unwrap(),o=await this.program.methods.transceiverType().accountsStrict({}).instruction(),n=await this.program.provider.connection.getLatestBlockhash(),u=new f.TransactionMessage({payerKey:i,recentBlockhash:n.blockhash,instructions:[o]}).compileToV0Message(),g=new f.VersionedTransaction(u),T=await this.program.provider.connection.simulateTransaction(g,{sigVerify:!1});if(T.value.returnData?.data[0]){const w=f.Buffer.from(T.value.returnData?.data[0],"base64"),S=w.readUInt32LE(0);return w.subarray(4,S+4).toString()}else throw new Error("no transceiver type found")}async getAddress(){return{chain:this.manager.chain,address:f.toUniversal(this.manager.chain,this.pdas.emitterAccount().toBase58())}}async*setPeer(e,a){const i=new f.SolanaAddress(a).unwrap(),o=await this.program.methods.setWormholePeer({chainId:{id:f.toChainId(e.chain)},address:Array.from(e.address.toUniversalAddress().toUint8Array())}).accounts({payer:i,owner:i,config:this.manager.pdas.configAccount(),peer:this.pdas.transceiverPeerAccount(e.chain)}).instruction(),n=f.Keypair.generate(),u=await this.createBroadcastWormholePeerIx(e.chain,i,n.publicKey),g=new f.Transaction;g.feePayer=i,g.add(o,u),yield this.manager.createUnsignedTx({transaction:g,signers:[n]},"Ntt.SetWormholeTransceiverPeer")}async getPeer(e){const a=await this.manager.program.account.transceiverPeer.fetchNullable(this.pdas.transceiverPeerAccount(e));return a?{chain:e,address:f.toUniversal(e,new Uint8Array(a.address))}:null}async createBroadcastWormholeIdIx(e,a,i){const o=Q0.getWormholeDerivedAccounts(this.program.programId,this.manager.core.address);return this.program.methods.broadcastWormholeId().accountsStrict({payer:e,config:this.manager.pdas.configAccount(),mint:a.mint,wormholeMessage:i,emitter:o.wormholeEmitter,wormhole:{bridge:o.wormholeBridge,feeCollector:o.wormholeFeeCollector,sequence:o.wormholeSequence,program:this.manager.core.address,systemProgram:f.SystemProgram.programId,clock:f.SYSVAR_CLOCK_PUBKEY,rent:f.SYSVAR_RENT_PUBKEY}}).instruction()}async createBroadcastWormholePeerIx(e,a,i){const o=Q0.getWormholeDerivedAccounts(this.program.programId,this.manager.core.address);return this.program.methods.broadcastWormholePeer({chainId:f.toChainId(e)}).accounts({payer:a,config:this.manager.pdas.configAccount(),peer:this.pdas.transceiverPeerAccount(e),wormholeMessage:i,emitter:o.wormholeEmitter,wormhole:{bridge:o.wormholeBridge,feeCollector:o.wormholeFeeCollector,sequence:o.wormholeSequence,program:this.manager.core.address}}).instruction()}async createReleaseWormholeOutboundIx(e,a,i){const[o,,,]=G0(this.version),n=Q0.getWormholeDerivedAccounts(this.program.programId,this.manager.core.address);return this.program.methods.releaseWormholeOutbound({revertOnDelay:i}).accounts({payer:e,config:{config:this.manager.pdas.configAccount()},outboxItem:a,wormholeMessage:this.pdas.wormholeMessageAccount(a),emitter:n.wormholeEmitter,transceiver:this.manager.pdas.registeredTransceiver(this.program.programId),wormhole:{bridge:n.wormholeBridge,feeCollector:n.wormholeFeeCollector,sequence:n.wormholeSequence,program:this.manager.core.address},...o>=3&&{manager:this.manager.program.programId,outboxItemSigner:this.pdas.outboxItemSigner()}}).instruction()}}class le{network;chain;connection;contracts;version;core;pdas;program;config;quoter;addressLookupTable;transceivers;managerAddress;tokenAddress;constructor(e,a,i,o,n="3.0.0"){if(this.network=e,this.chain=a,this.connection=i,this.contracts=o,this.version=n,!o.ntt)throw new Error("Ntt contracts not found");this.program=K1(i,o.ntt.manager,n),this.transceivers=[],"wormhole"in o.ntt.transceiver&&o.ntt.transceiver.wormhole&&["wormhole",...Object.keys(o.ntt.transceiver).filter(g=>{})].map(g=>{if(g!=="wormhole")throw new Error(`Unsupported transceiver type: ${g}`);const T=new f.PublicKey(o.ntt.transceiver[g]);if(f.PublicKey.isOnCurve(T))this.transceivers.push(k1(i,o.ntt.transceiver[g],n));else{const w=new C1(this,k1(i,o.ntt.manager,n),n);if(!w.pdas.emitterAccount().equals(T))throw new Error(`Invalid emitterAccount provided. Expected: ${w.pdas.emitterAccount().toBase58()}; Actual: ${T.toBase58()}`);this.transceivers.push(w.program)}}),this.managerAddress=o.ntt.manager,this.tokenAddress=o.ntt.token,this.contracts.ntt?.quoter&&(this.quoter=new Mt(i,this.contracts.ntt.quoter,this.contracts.ntt.manager)),this.core=new Q0.SolanaWormholeCore(e,a,i,o),this.pdas=Q.pdas(this.program.programId)}async getTransceiver(e){const a=this.transceivers[e]??null;return a&&e===0?new C1(this,a,this.version):null}async getWormholeTransceiver(){return this.getTransceiver(0)}async getMode(){return(await this.getConfig()).mode.locking!=null?"locking":"burning"}async isPaused(){return(await this.getConfig()).paused}async*pause(e){const a=new f.SolanaAddress(e).unwrap(),i=await Q.createSetPausedInstruction(this.program,{owner:a,paused:!0}),o=new f.Transaction;o.feePayer=a,o.add(i),yield this.createUnsignedTx({transaction:o},"Ntt.Pause")}async*unpause(e){const a=new f.SolanaAddress(e).unwrap(),i=await Q.createSetPausedInstruction(this.program,{owner:a,paused:!1}),o=new f.Transaction;o.feePayer=a,o.add(i),yield this.createUnsignedTx({transaction:o},"Ntt.Unpause")}async getThreshold(){return(await this.getConfig()).threshold}async*setThreshold(e,a){const i=new f.SolanaAddress(a).unwrap(),o=await this.createSetThresholdInstruction(i,e),n=new f.Transaction;n.feePayer=i,n.add(o),yield this.createUnsignedTx({transaction:n},"Ntt.SetThreshold")}async createSetThresholdInstruction(e,a){return await this.program.methods.setThreshold(a).accountsStrict({owner:e,config:this.pdas.configAccount()}).instruction()}async getOwner(){const e=await this.getConfig();return new f.SolanaAddress(e.owner)}async getPauser(){return null}async*setOwner(e,a){const i=new f.SolanaAddress(a).unwrap(),o=await Q.createTransferOwnershipInstruction(this.program,{owner:new f.SolanaAddress(await this.getOwner()).unwrap(),newOwner:new f.SolanaAddress(e).unwrap()}),n=new f.Transaction;n.feePayer=i,n.add(o),yield this.createUnsignedTx({transaction:n},"Ntt.SetOwner")}async*setPauser(e,a){throw new Error("Pauser role not supported on Solana.")}async isRelayingAvailable(e){return this.quoter?await this.quoter.isRelayEnabled(e):!1}async quoteDeliveryPrice(e,a){if(!this.quoter)throw new Error("Quoter not available");if(!this.quoter.isRelayEnabled(e))throw new Error("Relay not enabled");return await this.quoter.quoteDeliveryPrice(e,0n)}static async fromRpc(e,a){const[i,o]=await ce.SolanaPlatform.chainFromRpc(e),n=a[o];if(n.network!==i)throw new Error(`Network mismatch: ${n.network} != ${i}`);if(!("ntt"in n.contracts))throw new Error("Ntt contracts not found");const u=n.contracts.ntt,g=await le.getVersion(e,n.contracts);return new le(i,o,e,{...n.contracts,ntt:u},g)}async getConfig(){return this.config=this.config??await Q.getConfig(this.program,this.pdas),this.config}async getTokenDecimals(){const e=await this.getConfig();return await ce.SolanaPlatform.getDecimals(this.network,this.chain,this.connection,e.mint)}async getPeer(e){const a=await this.program.account.nttManagerPeer.fetchNullable(this.pdas.peerAccount(e));return a?{address:{chain:e,address:f.toUniversal(e,new Uint8Array(a.address))},tokenDecimals:a.tokenDecimals,inboundLimit:await this.getInboundLimit(e)}:null}async getCustodyAddress(){return(await this.getConfig()).custody.toBase58()}static async getVersion(e,a,i){try{return await Q.getVersion(e,new f.PublicKey(a.ntt.manager),i?new f.SolanaAddress(i).unwrap():void 0)}catch{return"3.0.0"}}async*initialize(e,a){const i=await this.connection.getAccountInfo(a.mint);if(i===null)throw new Error("Couldn't determine token program. Mint account is null.");const o=new f.SolanaAddress(e).unwrap(),n=await Q.createInitializeInstruction(this.program,{...a,payer:o,owner:o,chain:this.chain,tokenProgram:i.owner,multisigTokenAuthority:a.multisigTokenAuthority},this.pdas),u=new f.Transaction;u.feePayer=o,u.add(n),yield this.createUnsignedTx({transaction:u,signers:[]},"Ntt.Initialize"),yield*this.initializeOrUpdateLUT({payer:o,owner:o})}async*initializeOrUpdateLUT(e){const a=await this.getConfig(),i=await this.getWormholeTransceiver();if(!i)throw new Error("wormhole transceiver not found");const o=i.programId,n=await Q.initializeOrUpdateLUT(this.program,a,o,{payer:e.payer,owner:e.owner,wormholeId:new f.PublicKey(this.core.address)});if(!n)return;const u=new f.Transaction().add(n);u.feePayer=e.payer,yield this.createUnsignedTx({transaction:u},"Ntt.InitializeLUT")}async*registerWormholeTransceiver(e){const a=new f.SolanaAddress(e.payer).unwrap(),i=new f.SolanaAddress(e.owner).unwrap(),o=await this.getConfig();if(o.paused)throw new Error("Contract is paused");const n=await this.createRegisterTransceiverIx(0,a,i),u=await this.getWormholeTransceiver(),g=f.Keypair.generate(),T=await u.createBroadcastWormholeIdIx(a,o,g.publicKey),w=new f.Transaction;w.feePayer=a,w.add(n,T),yield this.createUnsignedTx({transaction:w,signers:[g]},"Ntt.RegisterTransceiver")}async createRegisterTransceiverIx(e,a,i){const o=await this.getTransceiver(e);if(!o)throw new Error("Transceiver not found");const n=o.programId;return this.program.methods.registerTransceiver().accountsStrict({payer:a,owner:i,config:this.pdas.configAccount(),transceiver:n,registeredTransceiver:this.pdas.registeredTransceiver(n),systemProgram:f.SystemProgram.programId}).instruction()}async createDeregisterTransceiverIx(e,a){const i=await this.getTransceiver(e);if(!i)throw new Error("Transceiver not found");const o=i.programId;return this.program.methods.deregisterTransceiver().accountsStrict({owner:a,config:this.pdas.configAccount(),registeredTransceiver:this.pdas.registeredTransceiver(o)}).instruction()}async*setWormholeTransceiverPeer(e,a){yield*this.setTransceiverPeer(0,e,a)}async*setTransceiverPeer(e,a,i){const o=await this.getTransceiver(e);if(!o)throw new Error("Transceiver not found");yield*o.setPeer(a,i)}async*setPeer(e,a,i,o){const n=new f.SolanaAddress(o).unwrap(),u=await Q.createSetPeerInstruction(this.program,{payer:n,owner:n,chain:e.chain,address:e.address.toUniversalAddress().toUint8Array(),limit:new F0(i.toString()),tokenDecimals:a}),g=new f.Transaction;g.feePayer=n,g.add(u),yield this.createUnsignedTx({transaction:g},"Ntt.SetPeer")}async*transfer(e,a,i,o,n){const u=await this.getConfig();if(u.paused)throw new Error("Contract is paused");n=n??f.Keypair.generate();const g=new f.SolanaAddress(e).unwrap(),T=g,w=await this.getTokenAccount(T);if(o.wrapNative){if(this.tokenAddress!==B.NATIVE_MINT.toBase58())throw new Error("Configured token must be native mint for wrapping");const O=B.getAssociatedTokenAddressSync(B.NATIVE_MINT,g),V=[...await this.connection.getAccountInfo(O)?[]:[K0.createAssociatedTokenAccountInstruction(g,O,g,B.NATIVE_MINT)],f.SystemProgram.transfer({fromPubkey:g,toPubkey:O,lamports:a}),v6(O)],{blockhash:z}=await this.connection.getLatestBlockhash(),G=new f.TransactionMessage({payerKey:g,instructions:V,recentBlockhash:z}).compileToV0Message(),O0=new f.VersionedTransaction(G);yield this.createUnsignedTx({transaction:O0},"Ntt.WrapNative")}const S=Q.transferArgs(a,i,o.queue),M={transferArgs:S,payer:g,from:w,fromAuthority:T,outboxItem:n.publicKey},A=Z1(w,this.pdas.sessionAuthority(T,S),T,a,[],u.tokenProgram),I=[],C=u.mode.locking!=null?Q.createTransferLockInstruction(this.program,u,M,this.pdas):Q.createTransferBurnInstruction(this.program,u,M,this.pdas);I.push(C);for(let O=0;O<this.transceivers.length;++O)if(O===0){const U=await this.getWormholeTransceiver();if(!U)throw new Error("wormhole transceiver not found");const V=U.createReleaseWormholeOutboundIx(g,n.publicKey,!o.queue);I.push(V)}const N=new f.Transaction;if(N.feePayer=g,N.add(A,...await Promise.all(I)),o.automatic){if(!this.quoter)throw new Error("No quoter available, cannot initiate an automatic transfer.");const O=await this.quoteDeliveryPrice(i.chain,o),U=await this.quoter.createRequestRelayInstruction(g,n.publicKey,i.chain,Number(O)/f.LAMPORTS_PER_SOL,0);N.add(U)}const R=[];try{R.push(await this.getAddressLookupTable())}catch{}const E=new f.TransactionMessage({payerKey:g,instructions:N.instructions,recentBlockhash:(await this.connection.getLatestBlockhash()).blockhash}).compileToV0Message(R),D=new f.VersionedTransaction(E);yield this.createUnsignedTx({transaction:D,signers:[n]},"Ntt.Transfer")}async getTokenAccount(e){const a=await this.getConfig();return await B.getAssociatedTokenAddress(a.mint,e,!0,a.tokenProgram)}async*createAta(e){const a=await this.getConfig(),i=new f.SolanaAddress(e).unwrap(),o=await this.getTokenAccount(i);if(await this.connection.getAccountInfo(o)===null){const u=new f.Transaction().add(K0.createAssociatedTokenAccountInstruction(i,o,i,a.mint,a.tokenProgram));u.feePayer=i,yield this.createUnsignedTx({transaction:u},"Redeem.CreateATA")}}async*redeem(e,a){const i=await this.getConfig();if(i.paused)throw new Error("Contract is paused");if(e.length!==this.transceivers.length)throw new Error("Not enough attestations provided");for(const{attestation:o,ix:n}of e.map((u,g)=>({attestation:u,ix:g})))if(n===0){const u=o;if(u.payloadName!=="WormholeTransfer")throw new Error("Invalid attestation payload");const g=await this.getWormholeTransceiver();if(!g)throw new Error("wormhole transceiver not found");yield*this.createAta(a),yield*this.core.postVaa(a,u);const T=new f.SolanaAddress(a).unwrap(),w=g.createReceiveIx(u,T),S=Q.createRedeemInstruction(this.program,i,g.program.programId,{payer:T,vaa:u}),M=u.payload.nttManagerPayload,A=u.emitterChain,I={payer:T,config:i,nttMessage:M,recipient:new f.PublicKey(M.payload.recipientAddress.toUint8Array()),chain:A,revertWhenNotReady:!1};let C=i.mode.locking!=null?Q.createReleaseInboundUnlockInstruction(this.program,i,{...I}):Q.createReleaseInboundMintInstruction(this.program,i,{...I});const N=new f.Transaction;N.feePayer=T,N.add(...await Promise.all([w,S,C]));const R=[];try{R.push(await this.getAddressLookupTable())}catch{}const E=new f.TransactionMessage({payerKey:T,instructions:N.instructions,recentBlockhash:(await this.connection.getLatestBlockhash()).blockhash}).compileToV0Message(R),D=new f.VersionedTransaction(E);yield this.createUnsignedTx({transaction:D},"Ntt.Redeem")}}async getCurrentOutboundCapacity(){const e=await this.program.account.outboxRateLimit.fetch(this.pdas.outboxRateLimitAccount());return BigInt(e.rateLimit.capacityAtLastTx.toString())}async getOutboundLimit(){const e=await this.program.account.outboxRateLimit.fetch(this.pdas.outboxRateLimitAccount());return BigInt(e.rateLimit.limit.toString())}async*setOutboundLimit(e,a){const i=new f.SolanaAddress(a).unwrap(),o=await Q.createSetOutboundLimitInstruction(this.program,{owner:i,limit:new F0(e.toString())}),n=new f.Transaction;n.feePayer=i,n.add(o),yield this.createUnsignedTx({transaction:n},"Ntt.SetOutboundLimit")}async getCurrentInboundCapacity(e){const a=await this.program.account.inboxRateLimit.fetch(this.pdas.inboxRateLimitAccount(e));return BigInt(a.rateLimit.capacityAtLastTx.toString())}async getRateLimitDuration(){return BigInt(1440*60)}async getInboundLimit(e){const a=await this.program.account.inboxRateLimit.fetch(this.pdas.inboxRateLimitAccount(e));return BigInt(a.rateLimit.limit.toString())}async*setInboundLimit(e,a,i){const o=new f.SolanaAddress(i).unwrap(),n=await Q.createSetInboundLimitInstruction(this.program,{owner:o,chain:e,limit:new F0(a.toString())}),u=new f.Transaction;u.feePayer=o,u.add(n),yield this.createUnsignedTx({transaction:u},"Ntt.SetInboundLimit")}async getIsExecuted(e){if(e.payloadName!=="WormholeTransfer")return!1;const a=e.payload.nttManagerPayload;let i;try{i=await this.program.account.inboxItem.fetch(this.pdas.inboxItemAccount(e.emitterChain,a))}catch(o){if(o.message?.includes("Account does not exist"))return!1;throw o}return!!i.releaseStatus.released}async getIsTransferInboundQueued(e){if(e.payloadName!=="WormholeTransfer")return!1;const a=e.payload.nttManagerPayload;let i;try{i=await this.program.account.inboxItem.fetch(this.pdas.inboxItemAccount(e.emitterChain,a))}catch(o){if(o.message?.includes("Account does not exist"))return!1;throw o}return!!i.releaseStatus.releaseAfter}async getIsApproved(e){if(e.payloadName!=="WormholeTransfer")throw new Error(`Invalid payload: ${e.payloadName}`);const a=e.payload.nttManagerPayload;try{return(await this.program.account.inboxItem.fetch(this.pdas.inboxItemAccount(e.emitterChain,a))).init}catch(i){if(i.message?.includes("Account does not exist"))return!1;throw i}}async*completeInboundQueuedTransfer(e,a,i){const o=await this.getConfig();if(o.paused)throw new Error("Contract is paused");const n=new f.SolanaAddress(i).unwrap(),u=new f.Transaction;u.feePayer=n;const g={payer:n,config:o,nttMessage:a,recipient:new f.PublicKey(a.payload.recipientAddress.toUint8Array()),chain:e,revertWhenNotReady:!1};u.add(await(o.mode.locking!=null?Q.createReleaseInboundUnlockInstruction(this.program,o,g):Q.createReleaseInboundMintInstruction(this.program,o,g))),yield this.createUnsignedTx({transaction:u},"Ntt.CompleteInboundTransfer")}async getInboundQueuedTransfer(e,a){let i;try{i=await this.program.account.inboxItem.fetch(this.pdas.inboxItemAccount(e,a))}catch(o){if(o.message?.includes("Account does not exist"))return null;throw o}if(i.releaseStatus.releaseAfter){const{recipientAddress:o,amount:n,releaseStatus:u}=i,g=u.releaseAfter[0].toNumber();return{recipient:new f.SolanaAddress(o),amount:BigInt(n.toString()),rateLimitExpiryTimestamp:g}}return null}async verifyAddresses(){const e=await this.getWormholeTransceiver(),a={manager:this.managerAddress,token:this.tokenAddress,transceiver:{...e&&{wormhole:e.pdas.emitterAccount().toBase58()}}},i={manager:this.program.programId.toBase58(),token:(await this.getConfig()).mint.toBase58(),transceiver:{wormhole:Q.transceiverPdas(this.program.programId).emitterAccount().toBase58()}},o=(n,u)=>{for(const g in n)typeof n[g]=="object"?(o(n[g],u[g]),Object.keys(n[g]).length===0&&delete n[g]):n[g]===u[g]&&delete n[g]};return o(i,a),Object.keys(i).length>0?i:null}async getAddressLookupTable(e=!0){if(!e||!this.addressLookupTable){const a=await Q.getAddressLookupTable(this.program,this.pdas);a&&(this.addressLookupTable=a)}if(!this.addressLookupTable)throw new Error("Address lookup table not found. Did you forget to call initializeLUT?");return this.addressLookupTable}createUnsignedTx(e,a,i=!1){return new ce.SolanaUnsignedTransaction(e,this.network,this.chain,a,i)}}const St={version:"0.1.0",name:"example_ntt_svm_lut",instructions:[{name:"initializeLut",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"nttProgramId",isMut:!1,isSigner:!1},{name:"nttConfig",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!1},{name:"lutAddress",isMut:!0,isSigner:!1},{name:"lut",isMut:!0,isSigner:!1},{name:"lutProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"recentSlot",type:"u64"}]}],accounts:[{name:"LUT",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:"publicKey"}]}}]},At={version:"0.1.0",name:"example_ntt_with_executor",instructions:[{name:"relayNttMesage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"payee",isMut:!0,isSigner:!1},{name:"nttProgramId",isMut:!1,isSigner:!1},{name:"nttPeer",isMut:!1,isSigner:!1},{name:"nttMessage",isMut:!1,isSigner:!1},{name:"executorProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"relayNttMessageArgs"}}]}],types:[{name:"relayNttMessageArgs",type:{kind:"struct",fields:[{name:"recipientChain",type:"u16"},{name:"execAmount",type:"u64"},{name:"signedQuoteBytes",type:"bytes"},{name:"relayInstructions",type:"bytes"}]}}]};class H0{network;chain;connection;contracts;nttWithExecutorProgramId;nttLutProgramId;executorProgramId;constructor(e,a,i,o){this.network=e,this.chain=a,this.connection=i,this.contracts=o,this.nttWithExecutorProgramId=new f.PublicKey("nex1gkSWtRBheEJuQZMqHhbMG5A45qPU76KqnCZNVHR"),this.nttLutProgramId=new f.PublicKey("1uteB5DZdNfns9B12rgGf5msKh1d7FbbkvciWmhsZiC"),this.executorProgramId=new f.PublicKey("execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV")}static async fromRpc(e,a){const[i,o]=await ce.SolanaPlatform.chainFromRpc(e),n=a[o];if(n.network!==i)throw new Error(`Network mismatch: ${n.network} != ${i}`);return new H0(i,o,e,n.contracts)}async*transfer(e,a,i,o,n,u=!1){const g=new f.SolanaAddress(e).unwrap(),T={queue:!1,automatic:!1,wrapNative:u},w=f.Keypair.generate(),S=n.transfer(e,o.remainingAmount,a,T,w);for await(const M of S)if(M.description==="Ntt.Transfer"){const A=[];try{A.push(await n.getAddressLookupTable())}catch(E){console.debug(E)}const I=f.TransactionMessage.decompile(M.transaction.transaction.message,{addressLookupTableAccounts:A});if(o.referrerFee>0n){const E=new f.PublicKey(o.referrer.address.toString()),{mint:D,tokenProgram:O}=await n.getConfig(),U=B.getAssociatedTokenAddressSync(D,E,!0,O),V=B.getAssociatedTokenAddressSync(D,g,!0,O);await this.connection.getAccountInfo(U)||I.instructions.push(K0.createAssociatedTokenAccountIdempotentInstruction(g,U,E,D,O)),I.instructions.push(K0.createTransferInstruction(V,U,g,o.referrerFee,void 0,O))}const C=new z0.Program(At,this.nttWithExecutorProgramId,{connection:this.connection}),N=new f.PublicKey(this.contracts.ntt.manager),R=f.PublicKey.findProgramAddressSync([f.Buffer.from("peer"),q0(a.chain)],N)[0];if(I.instructions.push(await C.methods.relayNttMesage({execAmount:new F0(o.estimatedCost.toString()),recipientChain:f.toChainId(a.chain),signedQuoteBytes:f.Buffer.from(o.signedQuote),relayInstructions:f.Buffer.from(o.relayInstructions)}).accounts({payer:g,payee:new f.PublicKey(o.payeeAddress),nttProgramId:N,nttPeer:R,nttMessage:w.publicKey,executorProgram:this.executorProgramId}).instruction()),A.length===0){console.debug("no manager lookup table found, checking helper program");const E=new z0.Program(St,this.nttLutProgramId,{connection:this.connection}),D=f.PublicKey.findProgramAddressSync([f.Buffer.from("lut"),N.toBuffer()],E.programId)[0];let O=await E.account.lut.fetchNullable(D);if(!O){console.debug("no helper program lookup table found, initializing...");const[V]=await f.PublicKey.findProgramAddressSync([f.Buffer.from("config")],N),[z]=await f.PublicKey.findProgramAddressSync([f.Buffer.from("lut_authority")],E.programId),G=await this.connection.getSlot("finalized")-10,[O0]=await f.PublicKey.findProgramAddressSync([z.toBuffer(),new F0(G).toArrayLike(f.Buffer,"le",8)],f.AddressLookupTableProgram.programId),[N0]=await f.PublicKey.findProgramAddressSync([f.Buffer.from("lut"),N.toBuffer()],E.programId),H=await E.methods.initializeLut(new F0(G)).accounts({nttProgramId:N,nttConfig:V,authority:z,lutAddress:O0,lut:N0,lutProgram:f.AddressLookupTableProgram.programId,systemProgram:f.SystemProgram.programId,payer:g}).instruction(),L=new f.TransactionMessage({payerKey:g,recentBlockhash:(await this.connection.getLatestBlockhash("finalized")).blockhash,instructions:[H]}).compileToV0Message();yield n.createUnsignedTx({transaction:new f.VersionedTransaction(L)},"NttSvmLut.InitializeLut"),console.debug(`initialized lookup table: ${M}`);let K=0;for(;!O&&K<10;)await new Promise(b=>setTimeout(b,2e3)),O=await E.account.lut.fetchNullable(D),K++}const U=await this.connection.getAddressLookupTable(O.address);if(!U.value)throw new Error("unable to fetch lookup table");A.push(U.value)}M.transaction.transaction.message=I.compileToV0Message(A),yield M}else yield M}static associatedTokenAccountMinRent=void 0;async estimateMsgValueAndGasLimit(e){let a=0n;if(a+=2n*5000n+7n*5000n+1400000n,a+=2n*5000n+7n*5000n,a+=5000n+3200000n,a+=5000n+5000000n,a+=5000n,e){const i=new f.PublicKey(e.address.toString()),o=new f.SolanaAddress(this.contracts.ntt.token).unwrap(),n=await this.connection.getAccountInfo(o);if(n===null)throw new Error("Couldn't determine token program. Mint account is null.");const u=B.getAssociatedTokenAddressSync(o,i,!0,n.owner);await this.connection.getAccountInfo(u)===null&&(H0.associatedTokenAccountMinRent||(H0.associatedTokenAccountMinRent=BigInt(await this.connection.getMinimumBalanceForRentExemption(165))),a+=H0.associatedTokenAccountMinRent)}return{msgValue:a,gasLimit:250000n}}}const It=console.info;console.info=function(c){c!=="secp256k1 unavailable, reverting to browser version"&&It(c)};const xt=console.warn;console.warn=function(c){c!=="bigint: Failed to load bindings, pure JS will be used (try npm run rebuild?)"&&xt(c)};f.registerProtocol(f._platform$1,"Ntt",le);f.registerProtocol(f._platform$1,"NttWithExecutor",H0);const X0={Mainnet:{coreBridgeStateId:"0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c",executorId:"0xdb0fe8bb1e2b5be628adbea0636063325073e1070ee11e4281457dfd7f158235",executorRequestsId:"0xa55f6f81649b071b5967dc56227bbee289e4c411ab610caeec7abce499e262b8"},Testnet:{coreBridgeStateId:"0x31358d198147da50db32eda2562951d53973a0c0ad5ed738e9b17d88b213d790",executorId:"0x4000cfe2955d8355b3d3cf186f854fea9f787a457257056926fde1ec977670eb",executorRequestsId:"0x8e5ec98738885325294060fd067fde47e10313bedc531d0500b24a752be41788"}},De=BigInt(1440*60*1e3),kt=["native","0x2::sui::SUI"],Pt=_.bcs.struct("Bitmap",{bitmap:_.bcs.u128()}),Ct=_.bcs.enum("ReleaseStatus",{NotApproved:null,ReleaseAfter:_.bcs.u64(),Released:null}),Rt=_.bcs.struct("TrimmedAmount",{amount:_.bcs.u64(),decimals:_.bcs.u8()}),_t=_.bcs.struct("Bytes32",{data:_.bcs.vector(_.bcs.u8())}),R1=_.bcs.struct("ExternalAddress",{value:_t}),Et=_.bcs.struct("NativeTokenTransfer",{amount:Rt,source_token:R1,to:R1,to_chain:_.bcs.u16(),payload:_.bcs.option(_.bcs.vector(_.bcs.u8()))});function Nt(c){return _.bcs.struct(`InboxItem<${c.name}>`,{votes:Pt,release_status:Ct,data:c})}const Lt=Nt(Et);function j1(c){return kt.includes(c)}function Ot(c){return c.data?.content?.dataType==="moveObject"?c.data.content.fields:null}async function Dt(c,e){if(!f.isValidSuiAddress(e))throw new Error(`Invalid object ID: ${e}`);const a=await c.getObject({id:e,options:{showContent:!0}});return Ot(a)}async function W0(c,e,a){const i=await c.getObject({id:e,options:{showContent:!0}});if(!i.data?.content||i.data.content.dataType!=="moveObject")throw new Error(a||`Failed to fetch object ${e}`);return i.data.content}async function ee(c,e){let a,i;do{const u=await c.getDynamicFields({parentId:e,cursor:i});a=u.data.find(g=>g.name.type.endsWith("CurrentPackage")),i=u.hasNextPage?u.nextCursor:null}while(i&&!a);if(!a)throw new Error("CurrentPackage not found");const n=(await Dt(c,a.objectId))?.value?.fields?.package;if(!n)throw new Error("Unable to get current package");return n}async function _1(c,e){const a=await c.getObject({id:e,options:{showContent:!0}});if(!a.data?.content||a.data.content.dataType!=="moveObject")throw new Error("Failed to fetch state object");const o=a.data.content.type.split("::")[0];if(!o||!o.startsWith("0x"))throw new Error("Could not extract package ID from state object type");const n=a.data.content.fields;return{packageId:o,fields:n}}async function Bt(c,e){const a=await c.getDynamicFields({parentId:e});for(const i of a.data)if(i.name?.type?.includes("transceiver_registry::Key"))try{const o=await c.getObject({id:i.objectId,options:{showContent:!0}});if(o.data?.content&&o.data.content.dataType==="moveObject"){const n=o.data.content.fields.value.fields;if(n.id===0)return[n.state_object_id]}}catch(o){console.warn(`Failed to read transceiver info: ${o}`)}throw new Error("Unable to find transceivers")}async function Ut(c,e){const a=await W0(c,e,"Failed to fetch state object"),o=a.type.split("::")[0];if(!o||!o.startsWith("0x"))throw new Error("Could not extract package ID from state object type");if(a.fields.upgrade_cap_id){const n=await W0(c,a.fields.upgrade_cap_id,"Failed to fetch upgrade cap object");return{object:a,original:o,current:n.fields.cap.fields.package}}return{object:a,original:o,current:o}}function Ft(c){let e=0;for(;c;)c&=c-1,e+=1;return e}function E1(c){const e=c.match("<(.+)>")?.[1]?.split("::")[0];if(!e)throw new Error(`Unable to extract NTT common package ID from inbox type: ${c}`);return e}function N1(c,e,a,i,o,n){const[u]=c.moveCall({target:`${e}::native_token_transfer::parse`,arguments:[c.pure.vector("u8",i)]}),[g]=c.moveCall({target:`${a}::bytes32::from_bytes`,arguments:[c.pure.vector("u8",o)]}),[T]=c.moveCall({target:`${a}::external_address::from_address`,arguments:[c.pure.address("0x"+f.Buffer.from(n).toString("hex"))]}),[w]=c.moveCall({target:`${e}::ntt_manager_message::new`,typeArguments:[`${e}::native_token_transfer::NativeTokenTransfer`],arguments:[g,T,u]});return w}function qt(c,e){if(!c.results||c.results.length===0)throw new Error("No results returned from devInspectTransactionBlock");const i=c.results[c.results.length-1]?.returnValues?.[0];if(!Array.isArray(i))throw new Error("Invalid result format from devInspectTransactionBlock");const[o,n]=i;if(n!=="vector<u8>"||!Array.isArray(o))throw new Error(`Expected vector<u8> but got ${n}`);const u=new Uint8Array(o),g=_.bcs.vector(_.bcs.u8()).parse(u),T=Lt.parse(Uint8Array.from(g));return{inboxItemFields:{votes:{fields:{bitmap:T.votes.bitmap.toString()}},release_status:T.release_status,data:T.data},threshold:e}}class me{contracts;coreBridgeStateId;static async extractTokenTypeFromSuiState(e,a){const i=await e.getObject({id:a,options:{showType:!0}});if(!i.data?.type)throw new Error("Failed to fetch state object type");const o=i.data.type,n=o.indexOf("<"),u=o.lastIndexOf(">");if(n===-1||u===-1)throw new Error(`No generic type parameter found in state object type: ${o}`);return o.substring(n+1,u)}async getNttState(){try{return(await W0(this.provider,this.contracts.ntt.manager,"Failed to fetch NTT state object")).fields}catch(e){throw new Error(`Failed to fetch NTT state object: ${e instanceof Error?e.message:String(e)}`)}}network;chain;provider;adminCapId;packageId;constructor(e,a,i,o){if(this.contracts=o,!o.ntt)throw new Error("NTT contracts not found");if(!o.coreBridge)throw new Error("Core Bridge contract not found");this.network=e,this.chain=a,this.provider=i,this.coreBridgeStateId=X0[e].coreBridgeStateId}static async fromRpc(e,a){const[i,o]=await _.SuiPlatform.chainFromRpc(e),n=a[o];if(n.network!==i)throw new Error(`Network mismatch: ${n.network} != ${i}`);if(!("ntt"in n.contracts))throw new Error("Ntt contracts not found");const u=n.contracts.ntt;return new me(i,o,e,{...n.contracts,ntt:u})}async getMode(){const a=(await this.getNttState()).mode;if(a.variant==="Locking")return"locking";if(a.variant==="Burning")return"burning";throw new Error("Invalid mode in NTT state")}async isPaused(){return(await this.getNttState()).paused}async getAdminCapId(){if(this.adminCapId)return this.adminCapId;const e=await this.getNttState();if(!e.admin_cap_id)throw new Error("AdminCap ID not found in NTT state");return this.adminCapId=e.admin_cap_id,this.adminCapId}async getPackageId(){if(this.packageId)return this.packageId;const e=await this.getPackageIdFromObject(this.contracts.ntt.manager);return this.packageId=e,this.packageId}async getPackageIdFromObject(e){return(await Ut(this.provider,e)).current}async getOwner(){const e=await this.getAdminCapId();try{const a=await this.provider.getObject({id:e,options:{showOwner:!0}});if(!a.data?.owner)throw new Error("Could not fetch AdminCap owner information");let i;if(typeof a.data.owner=="object"&&"AddressOwner"in a.data.owner)i=a.data.owner.AddressOwner;else if(typeof a.data.owner=="string")i=a.data.owner;else throw new Error(`AdminCap has unexpected owner type: ${JSON.stringify(a.data.owner)}`);return i}catch(a){throw new Error(`Failed to get AdminCap owner: ${a}`)}}async getPauser(){return this.getOwner()}async getThreshold(){const e=await this.getNttState();return parseInt(e.threshold,10)}async*setThreshold(e,a){const i=await this.getAdminCapId(),o=await this.getPackageId(),n=new _.Transaction;n.moveCall({target:`${o}::state::set_threshold`,typeArguments:[this.contracts.ntt.token],arguments:[n.object(i),n.object(this.contracts.ntt.manager),n.pure.u8(e)]}),yield new B0.SuiUnsignedTransaction(n,this.network,this.chain,"Set Threshold")}async getTokenDecimals(){const e=await this.provider.getCoinMetadata({coinType:this.contracts.ntt.token});if(!e?.decimals)throw new Error(`CoinMetadata not found for ${this.contracts.ntt.token}`);return e.decimals}async getCustodyAddress(){return this.contracts.ntt.manager}async*pause(){const e=await this.getAdminCapId(),a=await this.getPackageId(),i=new _.Transaction;i.moveCall({target:`${a}::state::pause`,typeArguments:[this.contracts.ntt.token],arguments:[i.object(e),i.object(this.contracts.ntt.manager)]}),yield new B0.SuiUnsignedTransaction(i,this.network,this.chain,"Pause Contract")}async*unpause(){const e=await this.getAdminCapId(),a=await this.getPackageId(),i=new _.Transaction;i.moveCall({target:`${a}::state::unpause`,typeArguments:[this.contracts.ntt.token],arguments:[i.object(e),i.object(this.contracts.ntt.manager)]}),yield new B0.SuiUnsignedTransaction(i,this.network,this.chain,"Unpause Contract")}async*setOwner(e,a){const i=new _.Transaction,o=await this.getAdminCapId(),n=await this.getUpgradeCapId();i.transferObjects([i.object(o),i.object(n)],e.toString()),yield new B0.SuiUnsignedTransaction(i,this.network,this.chain,"Transfer Ownership")}async*setPauser(e,a){throw new Error("setPauser not supported: owner and pauser are the same in Sui NTT. Use setOwner instead.")}async*setPeer(e,a,i,o){const n=await this.getAdminCapId(),u=await this.getPackageId(),g=new _.Transaction,T=f.chainToChainId(e.chain),w=e.address.toUint8Array();try{const M=await this.getPackageIdFromObject(this.contracts.coreBridge),A=g.moveCall({target:`${M}::bytes32::from_bytes`,arguments:[g.pure.vector("u8",w)]}),I=g.moveCall({target:`${M}::external_address::new`,arguments:[A]});g.moveCall({target:`${u}::state::set_peer`,typeArguments:[this.contracts.ntt.token],arguments:[g.object(n),g.object(this.contracts.ntt.manager),g.pure.u16(T),I,g.pure.u8(a),g.pure.u64(i.toString()),g.object(_.SUI_CLOCK_OBJECT_ID)]})}catch(M){throw new Error(`Failed to create setPeer transaction: ${M instanceof Error?M.message:String(M)}`)}yield new B0.SuiUnsignedTransaction(g,this.network,this.chain,"Set Peer")}async getPeer(e){const a=await this.provider.getObject({id:this.contracts.ntt.manager,options:{showContent:!0}});if(!a.data?.content||a.data.content.dataType!=="moveObject")throw new Error("Failed to fetch NTT state object");const o=a.data.content.fields.peers,n=f.chainToChainId(e);try{const u=await this.provider.getDynamicFieldObject({parentId:o.fields.id.id,name:{type:"u16",value:n}});if(!u.data?.content||u.data.content.dataType!=="moveObject")return null;const g=u.data.content.fields.value.fields,w=g.address.fields.value.fields.data,S=new Uint8Array(w),M={chain:e,address:f.toUniversal(e,S)},A=parseInt(g.token_decimals,10),I=g.inbound_rate_limit.fields,C=BigInt(I.limit);return{address:M,tokenDecimals:A,inboundLimit:C}}catch(u){return console.error(u),null}}async*setTransceiverPeer(e,a,i){if(e!==0)throw new Error("Only transceiver index 0 (wormhole) is currently supported");const o=this.contracts.ntt.transceiver?.wormhole;if(!o)throw new Error("Wormhole transceiver not found in contracts");const n=await this.getPackageIdFromObject(o),T=(await W0(this.provider,o,"Failed to fetch transceiver state object")).fields.admin_cap_id,w=new _.Transaction,S=f.chainToChainId(a.chain),M=a.address.toUint8Array(),A=Array.from(M);try{const C=await this.getPackageIdFromObject(this.contracts.coreBridge),N=w.moveCall({target:`${C}::bytes32::from_bytes`,arguments:[w.pure.vector("u8",A)]}),R=w.moveCall({target:`${C}::external_address::new`,arguments:[N]}),E=await this.getPackageId(),D=w.moveCall({target:`${n}::wormhole_transceiver::set_peer`,typeArguments:[`${E}::auth::ManagerAuth`],arguments:[w.object(T),w.object(o),w.pure.u16(S),R]}),O=this.contracts.coreBridge,[U]=w.splitCoins(w.gas,[0]);w.moveCall({target:`${C}::publish_message::publish_message`,arguments:[w.object(O),U,D,w.object(_.SUI_CLOCK_OBJECT_ID)]})}catch(C){throw new Error(`Failed to create setTransceiverPeer transaction: ${C instanceof Error?C.message:String(C)}`)}yield new B0.SuiUnsignedTransaction(w,this.network,this.chain,"Set Transceiver Peer")}async*transfer(e,a,i,o){const n=await this.getPackageId(),u=new _.Transaction,g=f.chainToChainId(i.chain);let T;try{if(typeof i.address.toUint8Array=="function")T=i.address.toUint8Array();else if(typeof i.address.toUniversalAddress=="function"){const L=i.address.toUniversalAddress();if(!L)throw new Error("toUniversalAddress() returned null or undefined");T=L.toUint8Array()}else throw new Error(`destination.address does not have expected methods. Type: ${typeof i.address}`)}catch(L){throw new Error(`Failed to convert destination address to bytes: ${L instanceof Error?L.message:String(L)}`)}let w;try{const L=await this.provider.getCoinMetadata({coinType:this.contracts.ntt.token});if(!L?.id)throw new Error(`CoinMetadata not found for ${this.contracts.ntt.token}`);w=L.id}catch(L){throw new Error(`Failed to get CoinMetadata for ${this.contracts.ntt.token}: ${L instanceof Error?L.message:String(L)}`)}const S=this.contracts.ntt.token,M=j1(S),I=new f.SuiAddress(M?_.SuiPlatform.nativeTokenId(this.network,this.chain).address:S).getCoinType(),[C]=await(async()=>{if(M)return u.splitCoins(u.gas,[a]);{const L=await _.SuiPlatform.getCoins(this.provider,e,I);if(L.length===0)throw new Error(`No coins found for token type ${I}`);const[K,...b]=L;if(!K)throw new Error(`No primary coin found for token type ${I}`);const t=u.object(K.coinObjectId);return b.length>0&&u.mergeCoins(t,b.map(s=>u.object(s.coinObjectId))),u.splitCoins(t,[a])}})(),[N]=u.moveCall({target:`${n}::upgrades::new_version_gated`,arguments:[]}),[R,E]=u.moveCall({target:`${n}::ntt::prepare_transfer`,typeArguments:[I],arguments:[u.object(this.contracts.ntt.manager),C,u.object(w),u.pure.u16(g),u.pure.vector("u8",T),u.pure.option("vector<u8>",null),u.pure.bool(o.queue||!1)]}),[D]=u.moveCall({target:`${n}::state::get_next_sequence`,typeArguments:[I],arguments:[u.object(this.contracts.ntt.manager)]}),O=await ee(this.provider,this.coreBridgeStateId);u.moveCall({target:`${n}::ntt::transfer_tx_sender`,typeArguments:[I],arguments:[u.object(this.contracts.ntt.manager),N,u.object(w),R,u.object(_.SUI_CLOCK_OBJECT_ID)]});const U=this.contracts.ntt.transceiver?.wormhole;if(!U)throw new Error("Wormhole transceiver not found in contracts");const V=await this.getPackageIdFromObject(U),[z]=u.moveCall({target:`${n}::state::create_transceiver_message`,typeArguments:[`${V}::wormhole_transceiver::TransceiverAuth`,I],arguments:[u.object(this.contracts.ntt.manager),D,u.object(_.SUI_CLOCK_OBJECT_ID)]}),[G]=u.moveCall({target:`${V}::wormhole_transceiver::release_outbound`,typeArguments:[`${n}::auth::ManagerAuth`],arguments:[u.object(U),z]}),[O0]=u.splitCoins(u.gas,[u.pure.u64(0n)]);u.moveCall({target:`${O}::publish_message::publish_message`,arguments:[u.object(this.coreBridgeStateId),O0,G,u.object(_.SUI_CLOCK_OBJECT_ID)]});const[N0]=u.moveCall({target:"0x2::coin::from_balance",typeArguments:[I],arguments:[E]});M?u.mergeCoins(u.gas,[N0]):u.transferObjects([N0],e.toString()),yield new B0.SuiUnsignedTransaction(u,this.network,this.chain,"NTT Transfer")}async*redeem(e,a){if(await this.isPaused())throw new Error("Contract is paused");if(e.length===0)throw new Error("No attestations provided");const o=await this.getPackageId(),n=await this.provider.getCoinMetadata({coinType:this.contracts.ntt.token});if(!n?.id)throw new Error(`CoinMetadata not found for ${this.contracts.ntt.token}`);const u=new _.Transaction;for(const T of e)await this.addRedeemCall(u,T,o,n.id);await this.addReleaseCall(u,e,o,n.id),yield new B0.SuiUnsignedTransaction(u,this.network,this.chain,"Redeem NTT Transfer")}async quoteDeliveryPrice(e,a){throw new Error("Not implemented")}async isRelayingAvailable(e){return!1}async getCurrentOutboundCapacity(){const i=(await W0(this.provider,this.contracts.ntt.manager,"Failed to fetch NTT state object")).fields.outbox.fields.rate_limit.fields,o=Date.now(),n=BigInt(i.limit),u=BigInt(i.capacity_at_last_tx),g=BigInt(i.last_tx_timestamp),T=BigInt(o)-g,w=De,S=T*n/w,M=u+S;return M>n?n:M}async getOutboundLimit(){const i=(await W0(this.provider,this.contracts.ntt.manager,"Failed to fetch NTT state object")).fields.outbox.fields.rate_limit.fields;return BigInt(i.limit)}async*setOutboundLimit(e,a){const i=await this.getAdminCapId();if(!i)throw new Error("AdminCap ID not found");const o=await this.getPackageId();if(!o)throw new Error("Package ID not found");const n=new _.Transaction;n.moveCall({target:`${o}::state::set_outbound_rate_limit`,typeArguments:[this.contracts.ntt.token],arguments:[n.object(i),n.object(this.contracts.ntt.manager),n.pure.u64(e.toString()),n.object(_.SUI_CLOCK_OBJECT_ID)]}),yield new B0.SuiUnsignedTransaction(n,this.network,this.chain,"Set Outbound Limit")}async getCurrentInboundCapacity(e){const a=await this.provider.getObject({id:this.contracts.ntt.manager,options:{showContent:!0}});if(!a.data?.content||a.data.content.dataType!=="moveObject")throw new Error("Failed to fetch NTT state object");const o=a.data.content.fields.peers,n=f.chainToChainId(e);try{const u=await this.provider.getDynamicFieldObject({parentId:o.fields.id.id,name:{type:"u16",value:n}});if(!u.data?.content||u.data.content.dataType!=="moveObject")throw new Error(`No peer found for chain ${e}`);const T=u.data.content.fields.value.fields.inbound_rate_limit.fields,w=Date.now(),S=BigInt(T.limit),M=BigInt(T.capacity_at_last_tx),A=BigInt(T.last_tx_timestamp),I=BigInt(w)-A,C=De,N=I*S/C,R=M+N;return R>S?S:R}catch(u){throw new Error(`Failed to get inbound capacity for chain ${e}: ${u instanceof Error?u.message:String(u)}`)}}async getInboundLimit(e){const a=await this.getPeer(e);if(!a)throw new Error(`No peer found for chain ${e}. Set up the peer first using setPeer.`);return a.inboundLimit}async*setInboundLimit(e,a,i){const o=await this.getAdminCapId(),n=await this.getPackageId(),u=await this.getPeer(e);if(!u)throw new Error(`No peer found for chain ${e}. Set up the peer first using setPeer.`);const g=new _.Transaction,T=f.chainToChainId(e),w=u.address.address.toUint8Array(),S=Array.from(w);try{const A=await this.getPackageIdFromObject(this.contracts.coreBridge),I=g.moveCall({target:`${A}::bytes32::from_bytes`,arguments:[g.pure.vector("u8",S)]}),C=g.moveCall({target:`${A}::external_address::new`,arguments:[I]});g.moveCall({target:`${n}::state::set_peer`,typeArguments:[this.contracts.ntt.token],arguments:[g.object(o),g.object(this.contracts.ntt.manager),g.pure.u16(T),C,g.pure.u8(u.tokenDecimals),g.pure.u64(a.toString()),g.object(_.SUI_CLOCK_OBJECT_ID)]})}catch(A){throw new Error(`Failed to create setInboundLimit transaction: ${A instanceof Error?A.message:String(A)}`)}yield new B0.SuiUnsignedTransaction(g,this.network,this.chain,"Set Inbound Limit")}async getRateLimitDuration(){return De}async getIsApproved(e){const a=await this.getInboxItem(e);if(!a)return!1;const{inboxItemFields:i,threshold:o}=a,n=i.votes;let u=0;return n?.fields?.bitmap&&(u=Ft(parseInt(n.fields.bitmap))),u>=o}async getIsExecuted(e){return(await this.getTransferReleaseStatus(e))?.$kind==="Released"}async getIsTransferInboundQueued(e){return(await this.getTransferReleaseStatus(e))?.$kind==="ReleaseAfter"}async getInboundQueuedTransfer(e,a){const i={emitterChain:e,payload:{nttManagerPayload:a}},o=await this.getTransferReleaseStatus(i);if(o?.$kind!=="ReleaseAfter")return null;const n=parseInt(o.ReleaseAfter),u=await this.getInboxItem(i);if(!u)return null;const{inboxItemFields:g}=u,T=g.data||{};let w;if(a.payload?.recipientAddress)w=a.payload.recipientAddress;else if(T.recipient)w=f.toUniversal(this.chain,T.recipient);else if(T.recipient_address)w=f.toUniversal(this.chain,T.recipient_address);else return null;let S;if(a.payload?.trimmedAmount)S=a.payload.trimmedAmount.amount;else if(T.amount)S=BigInt(T.amount.toString());else return null;return{recipient:w,amount:S,rateLimitExpiryTimestamp:n/1e3}}async*completeInboundQueuedTransfer(e,a,i){if(await this.isPaused())throw new Error("Contract is paused");const n={emitterChain:e,payload:{nttManagerPayload:a}};yield*this.redeem([n],i)}async getTransceiver(e){if(e!==0)return null;const a=this.contracts.ntt.transceiver?.wormhole;if(a){const i=this.chain,o=this;return{async getTransceiverType(){return"wormhole"},async getAddress(){const n=await W0(o.provider,a);return{chain:i,address:f.toUniversal(i,n.fields.emitter_cap.fields.id.id)}},async*setPeer(n,u){yield*o.setTransceiverPeer(0,n,u)},async getPeer(n){return await o.getTransceiverPeer(0,n)},async*setPauser(){throw new Error("setPauser not implemented for Sui transceiver")},async getPauser(){return null},async*receive(){throw new Error("receive not implemented for Sui transceiver")}}}return null}async getTransceiverPeer(e,a){if(e!==0)return null;const i=this.contracts.ntt.transceiver?.wormhole;if(!i)return null;try{const o=await this.provider.getObject({id:i,options:{showContent:!0}});if(!o.data?.content||o.data.content.dataType!=="moveObject")return null;const u=o.data.content.fields.peers,g=f.chainToChainId(a),T=await this.provider.getDynamicFieldObject({parentId:u.fields.id.id,name:{type:"u16",value:g}});if(!T.data?.content||T.data.content.dataType!=="moveObject")return null;const S=T.data.content.fields.value.fields.value.fields.data,M=new Uint8Array(S);return{chain:a,address:f.toUniversal(a,M)}}catch(o){return console.error(o),null}}async getTransceiverType(e=0){if(e!==0)throw new Error(`Transceiver index ${e} not supported`);const a=this.contracts.ntt.transceiver?.wormhole;if(!a)throw new Error("Wormhole transceiver not found in contracts");const i=await this.provider.getObject({id:a,options:{showType:!0}});if(!i.data?.type)throw new Error("Unable to determine transceiver object type");const o=i.data.type.split("::")[0],n=new _.Transaction;n.moveCall({target:`${o}::transceiver::get_transceiver_type`,arguments:[]});const u=await this.provider.devInspectTransactionBlock({transactionBlock:n,sender:"0x0000000000000000000000000000000000000000000000000000000000000000"});if(u.results&&u.results.length>0){const g=u.results[0];if(g&&g.returnValues&&g.returnValues.length>0){const T=g.returnValues[0];if(T&&Array.isArray(T)&&T.length>0){const w=T[0];if(Array.isArray(w))return new TextDecoder().decode(new Uint8Array(w))}}}throw new Error("Failed to get transceiver info from response")}async verifyAddresses(){try{const e=await this.provider.getObject({id:this.contracts.ntt.manager,options:{showContent:!0}});if(!e.data?.content||e.data.content.dataType!=="moveObject")return null;const o=e.data.content.fields.transceivers.fields.id.id,n=await this.provider.getDynamicFields({parentId:o}),u={manager:this.contracts.ntt.manager,token:await me.extractTokenTypeFromSuiState(this.provider,this.contracts.ntt.manager),transceiver:{}};for(const w of n.data)if(w.name?.type?.includes("transceiver_registry::Key"))try{const S=await this.provider.getObject({id:w.objectId,options:{showContent:!0}});if(S.data?.content&&S.data.content.dataType==="moveObject"){const M=S.data.content.fields.value.fields,A=M.state_object_id;M.id===0&&(u.transceiver.wormhole=A)}}catch(S){console.warn(`Failed to read transceiver info: ${S}`)}const g={manager:this.contracts.ntt.manager,token:this.contracts.ntt.token,transceiver:this.contracts.ntt.transceiver||{}},T=(w,S)=>{for(const M in w)typeof w[M]=="object"&&w[M]!==null&&typeof S[M]=="object"&&S[M]!==null?(T(w[M],S[M]),Object.keys(w[M]).length===0&&delete w[M]):w[M]===S[M]&&delete w[M]};return T(u,g),Object.keys(u).length>0?u:null}catch(e){return console.warn(`Failed to verify addresses: ${e}`),null}}async getUpgradeCapId(){const e=await this.getNttState();if(!e.upgrade_cap_id)throw new Error("UpgradeCap ID not found in NTT state");return e.upgrade_cap_id}async addReleaseCall(e,a,i,o){const n=a.find(C=>C.payloadName==="WormholeTransfer");if(!n)throw new Error("No wormhole attestation found");const u=await this.provider.getObject({id:this.contracts.ntt.manager,options:{showContent:!0}});if(!u.data?.content||u.data.content.dataType!=="moveObject")throw new Error("Failed to fetch manager state");const g=u.data.content,T=E1(g.fields.inbox.type),w=n.payload.nttManagerPayload;let S;try{S=f.serialize(te,w.payload)}catch(C){throw new Error(`Failed to serialize native token transfer payload: ${C instanceof Error?C.message:String(C)}`)}const M=await ee(this.provider,this.coreBridgeStateId),A=N1(e,T,M,S,w.id,w.sender.toUint8Array()),[I]=e.moveCall({target:`${i}::upgrades::new_version_gated`,arguments:[]});if(!I)throw new Error("Failed to create version gated object");e.moveCall({target:`${i}::ntt::release`,typeArguments:[this.contracts.ntt.token],arguments:[e.object(this.contracts.ntt.manager),I,e.pure.u16(f.chainToChainId(n.emitterChain)),A,e.object(o),e.object(_.SUI_CLOCK_OBJECT_ID)]})}async addRedeemCall(e,a,i,o){const n=this.contracts.ntt.transceiver?.wormhole;if(!n)throw new Error("Wormhole transceiver not found in contracts");const u=await this.getPackageIdFromObject(n),g=await ee(this.provider,this.coreBridgeStateId),T=f.serialize$1(a),[w]=e.moveCall({target:`${g}::vaa::parse_and_verify`,arguments:[e.object(this.coreBridgeStateId),e.pure.vector("u8",Array.from(T)),e.object(_.SUI_CLOCK_OBJECT_ID)]});if(!w)throw new Error("Failed to parse VAA");const S=await this.getPackageId(),[M]=e.moveCall({target:`${u}::wormhole_transceiver::validate_message`,typeArguments:[`${S}::auth::ManagerAuth`],arguments:[e.object(n),w]});if(!M)throw new Error("Failed to validate VAA through transceiver");const A=e.moveCall({target:`${i}::upgrades::new_version_gated`,arguments:[]});e.moveCall({target:`${i}::ntt::redeem`,typeArguments:[this.contracts.ntt.token,`${u}::wormhole_transceiver::TransceiverAuth`],arguments:[e.object(this.contracts.ntt.manager),A,e.object(o),M,e.object(_.SUI_CLOCK_OBJECT_ID)]})}async getTransferReleaseStatus(e){const a=await this.getInboxItem(e);if(!a)return null;const{inboxItemFields:i}=a;return i.release_status}async getInboxItem(e){const a=await this.getNttState(),i=parseInt(a.threshold),o=E1(a.inbox.type),n=this.contracts.ntt.token,u=e.emitterChain;if(!u)throw new Error("No emitter chain found in attestation");const g=f.chainToChainId(u),T=await this.getPackageId(),w=e.payload.nttManagerPayload;if(!w)throw new Error("No NTT manager payload found in attestation");let S;try{S=f.serialize(te,w.payload)}catch(R){throw new Error(`Failed to serialize native token transfer payload: ${R instanceof Error?R.message:String(R)}`)}const M=new _.Transaction,A=await ee(this.provider,this.contracts.coreBridge),I=N1(M,o,A,S,w.id,w.sender.toUint8Array()),[C]=M.moveCall({target:`${T}::state::borrow_inbox_item`,typeArguments:[n],arguments:[M.object(this.contracts.ntt.manager),M.pure.u16(g),I]});M.moveCall({target:"0x2::bcs::to_bytes",typeArguments:[`${T}::inbox::InboxItem<${o}::native_token_transfer::NativeTokenTransfer>`],arguments:[C]});const N=await this.provider.devInspectTransactionBlock({transactionBlock:M,sender:"0x0000000000000000000000000000000000000000000000000000000000000000"});return qt(N,i)}}class je{network;chain;provider;contracts;executorId;executorRequestsId;coreBridgeStateId;nttContracts;constructor(e,a,i,o){if(this.network=e,this.chain=a,this.provider=i,this.contracts=o,!X0[e])throw new Error(`Network ${e} not supported`);this.executorId=X0[e].executorId,this.executorRequestsId=X0[e].executorRequestsId,this.coreBridgeStateId=X0[e].coreBridgeStateId,this.nttContracts=o.ntt}static async fromRpc(e,a){const[i,o]=await _.SuiPlatform.chainFromRpc(e),n=a[o];if(n.network!==i)throw new Error(`Network mismatch: ${n.network} != ${i}`);return new je(i,o,e,n.contracts)}async*transfer(e,a,i,o,n,u=!1){if(new Date>o.expires)throw new Error("Quote has expired");if(!(await this.getSupportedDestinationChains()).includes(a.chain))throw new Error("Executor only supports Solana and EVM destination chains");const T=await this.createSuiNttTransferWithExecutor(e,a,o,n);yield new B0.SuiUnsignedTransaction(T,this.network,this.chain,"NTT Transfer with Executor")}async createSuiNttTransferWithExecutor(e,a,i,o){const n=new _.Transaction,u=f.chainToChainId(a.chain),g=o.contracts.ntt.manager,T=o.contracts.ntt.token,w=j1(T),M=new f.SuiAddress(w?_.SuiPlatform.nativeTokenId(this.network,this.chain).address:T).getCoinType(),{packageId:A,fields:I}=await _1(o.provider,g),[C]=await Bt(o.provider,I.transceivers.fields.id.id);if(!C)throw new Error("No transceiver state ID found");const{packageId:N}=await _1(o.provider,C);let R;try{a.address.toUniversalAddress?R=a.address.toUniversalAddress().toUint8Array():R=a.address.toUint8Array()}catch(p){throw new Error(`Failed to convert destination address to bytes: ${p instanceof Error?p.message:String(p)}`)}const E=await o.provider.getCoinMetadata({coinType:M});if(!E?.id)throw new Error(`CoinMetadata not found for ${M}`);const D=E.id;let O;if(!w){const p=await _.SuiPlatform.getCoins(this.provider,e,M),[x,...k]=p.filter(P=>_.isSameType(P.coinType,M));if(x===void 0)throw new Error(`Coins array doesn't contain any coins of type ${M}`);O=n.object(x.coinObjectId),k.length&&n.mergeCoins(O,k.map(P=>n.object(P.coinObjectId)))}const[U]=w?n.splitCoins(n.gas,[n.pure.u64(i.remainingAmount)]):n.splitCoins(O,[n.pure.u64(i.remainingAmount)]),[V]=n.moveCall({target:`${A}::upgrades::new_version_gated`,arguments:[]}),[z,G]=n.moveCall({target:`${A}::ntt::prepare_transfer`,typeArguments:[M],arguments:[n.object(g),U,n.object(D),n.pure.u16(u),n.pure.vector("u8",Array.from(R)),n.pure.option("vector<u8>",null),n.pure.bool(!1)]}),[O0]=n.moveCall({target:`${A}::state::get_chain_id`,typeArguments:[M],arguments:[n.object(g)]}),[N0]=n.moveCall({target:`${A}::state::get_next_sequence`,typeArguments:[M],arguments:[n.object(g)]}),H=await ee(this.provider,this.coreBridgeStateId),[L]=n.moveCall({target:`${H}::bytes32::to_bytes`,arguments:[N0]});n.moveCall({target:`${A}::ntt::transfer_tx_sender`,typeArguments:[M],arguments:[n.object(g),V,n.object(D),z,n.object(_.SUI_CLOCK_OBJECT_ID)]});const[K]=n.moveCall({target:`${A}::state::create_transceiver_message`,typeArguments:[`${N}::wormhole_transceiver::TransceiverAuth`,M],arguments:[n.object(g),N0,n.object(_.SUI_CLOCK_OBJECT_ID)]}),[b]=n.moveCall({target:`${N}::wormhole_transceiver::release_outbound`,typeArguments:[`${A}::auth::ManagerAuth`],arguments:[n.object(C),K]}),[t]=n.splitCoins(n.gas,[n.pure.u64(0n)]);n.moveCall({target:`${H}::publish_message::publish_message`,arguments:[n.object(this.coreBridgeStateId),t,b,n.object(_.SUI_CLOCK_OBJECT_ID)]});const[s]=n.moveCall({target:"0x2::coin::from_balance",typeArguments:[M],arguments:[G]});if(w?n.mergeCoins(n.gas,[s]):n.transferObjects([s],`0x${f.Buffer.from(e.address).toString("hex")}`),i.referrerFee>0n){const p=`0x${f.Buffer.from(i.referrer.address.toUint8Array()).toString("hex")}`,[x]=w?n.splitCoins(n.gas,[n.pure.u64(i.referrerFee)]):n.splitCoins(O,[n.pure.u64(i.referrerFee)]);n.transferObjects([x],p)}const d=f.Buffer.from(g.substring(2),"hex"),[l]=n.moveCall({target:`${this.executorRequestsId}::executor_requests::make_ntt_v1_request`,arguments:[O0,n.pure.vector("u8",d),L]}),[y]=n.splitCoins(n.gas,[n.pure.u64(i.estimatedCost)]);let h;if(a.chain==="Solana"){const p=a.address.toString();h=`0x${new f.PublicKey(p).toBuffer().toString("hex")}`}else h=a.address.toString(),h.startsWith("0x")||(h=`0x${h}`);let v;const m=(await o.getPeer(a.chain))?.address;m&&(v=m.address.toString());let r;return v?r=v:r=h,n.moveCall({target:`${this.executorId}::executor::request_execution`,arguments:[y,n.object(_.SUI_CLOCK_OBJECT_ID),n.pure.u16(u),n.pure.address(r),n.pure.address(typeof e=="string"?e:`0x${Array.from(e.address||[]).map(p=>p.toString(16).padStart(2,"0")).join("")}`),n.pure.vector("u8",Array.from(i.signedQuote)),l,n.pure.vector("u8",Array.from(i.relayInstructions))]}),n}async estimateMsgValueAndGasLimit(e){return{msgValue:0n,gasLimit:20000000n}}getSupportedDestinationChains(){return["Solana","Ethereum","Bsc","Polygon","Avalanche","Arbitrum","Optimism","Base"]}}f.registerProtocol(_._platform,"Ntt",me);f.registerProtocol(_._platform,"NttWithExecutor",je);var $;(function(c){c.TRIMMED_DECIMALS=8,c.ManualOptions={automatic:!1},c.AutomaticOptions={automatic:!0};function e(w){return["Mainnet","Testnet"]}c.resolveSupportedNetworks=e;function a(w,S){return Object.values(w.tokens).flatMap(A=>A.map(I=>I.chain))}c.resolveSupportedChains=a;function i(w,S){return Object.entries(w.tokens).reduce((A,[,I])=>{const C=I.find(N=>N.chain===S.chain);return C&&(A.push(f.Wormhole.tokenId(S.chain,C.token)),C.isWrappedGasToken&&A.push(f.nativeTokenId(S.chain))),A},[])}c.resolveSourceTokens=i;function o(w,S,M,A){return Object.entries(w.tokens).map(([,I])=>{if(!I.find(R=>R.chain===M.chain&&(R.token.toLowerCase()===f.canonicalAddress(S).toLowerCase()||f.isNative(S.address)&&R.isWrappedGasToken)))return;const N=I.find(R=>R.chain===A.chain);if(N)return f.Wormhole.tokenId(A.chain,N.token)}).filter(I=>!!I)}c.resolveDestinationTokens=o;function n(w,S,M){const A=Object.values(w.tokens),I=f.canonicalAddress(S),C=f.canonicalAddress(M);for(const N of A){const R=N.find(E=>E.chain===S.chain&&(E.token.toLowerCase()===I.toLowerCase()||f.isNative(S.address)&&E.isWrappedGasToken));if(R){const E=N.find(D=>D.chain===M.chain&&(D.token.toLowerCase()===C.toLowerCase()||f.isNative(M.address)&&D.isWrappedGasToken));if(E)return{srcContracts:{token:R.token,manager:R.manager,transceiver:{wormhole:R.transceiver.find(D=>D.type==="wormhole").address},quoter:R.quoter},dstContracts:{token:E.token,manager:E.manager,transceiver:{wormhole:E.transceiver.find(D=>D.type==="wormhole").address}}}}}throw new Error("Cannot find Ntt contracts in config for: "+I)}c.resolveNttContracts=n;function u(w,S,M){const A=Object.values(w.tokens),I=f.canonicalAddress(S);for(const C of A)if(C.find(R=>R.manager.toLowerCase()===I.toLowerCase()&&R.chain===S.chain)){const R=C.find(E=>E.chain===M);if(!R)throw new Error(`Cannot find destination Ntt contracts in config for: ${I}`);return{token:R.token,manager:R.manager,transceiver:{wormhole:R.transceiver.find(E=>E.type==="wormhole").address},quoter:R.quoter}}throw new Error("Cannot find Ntt contracts in config for: "+I)}c.resolveDestinationNttContracts=u;function g(w,S){const M=S*95n/100n;return w>M}c.isCapacityThresholdExceeded=g;function T(w,S){return f.truncate(w,Math.min(w.decimals,S,c.TRIMMED_DECIMALS))}c.trimAmount=T})($||($={}));function V1(c){class e extends $t{static config=c}return e}class $t extends f.FinalizableRoute{static NATIVE_GAS_DROPOFF_SUPPORTED=!1;static IS_AUTOMATIC=!1;staticConfig=this.constructor.config;static config={tokens:{}};static meta={name:"ManualNtt"};static supportedNetworks(){return $.resolveSupportedNetworks(this.config)}static supportedChains(e){return $.resolveSupportedChains(this.config,e)}static async supportedSourceTokens(e){return $.resolveSourceTokens(this.config,e)}static async supportedDestinationTokens(e,a,i){return $.resolveDestinationTokens(this.config,e,a,i)}static isProtocolSupported(e){return e.supportsProtocol("Ntt")}getDefaultOptions(){return $.ManualOptions}async validate(e,a){const i=a.options??this.getDefaultOptions(),o=f.parse(a.amount,e.source.decimals),n=$.trimAmount(o,e.destination.decimals),u=f.isNative(e.source.id.address),{srcContracts:g,dstContracts:T}=$.resolveNttContracts(this.staticConfig,e.source.id,e.destination.id);return{valid:!0,params:{amount:a.amount,normalizedParams:{amount:n,sourceContracts:g,destinationContracts:T,options:{queue:!1,automatic:!1,wrapNative:u}},options:i}}}async quote(e,a){const i=f.scale(a.normalizedParams.amount,e.destination.decimals),o={success:!0,params:a,sourceToken:{token:e.source.id,amount:a.normalizedParams.amount},destinationToken:{token:e.destination.id,amount:i},eta:f.estimateFinalityTime(e.fromChain.chain)+f.guardianAttestationEta*1e3},{fromChain:n,toChain:u}=e,g=await u.getProtocol("Ntt",{ntt:a.normalizedParams.destinationContracts}),T=await g.getRateLimitDuration();if(T>0n){const w=await g.getCurrentInboundCapacity(n.chain);$.isCapacityThresholdExceeded(f.units(i),w)&&(o.warnings=[{type:"DestinationCapacityWarning",delayDurationSec:Number(T)}])}return o}async initiate(e,a,i,o){const{params:n}=i,{fromChain:u}=e,g=f.Wormhole.parseAddress(a.chain(),a.address()),w=(await u.getProtocol("Ntt",{ntt:n.normalizedParams.sourceContracts})).transfer(g,f.units(n.normalizedParams.amount),o,n.normalizedParams.options),S=await f.signSendWait(u,w,a);return{from:u.chain,to:o.chain,state:f.TransferState.SourceInitiated,originTxs:S,params:n}}async complete(e,a){if(!f.isAttested(a)){if(f.isRedeemed(a))return a;throw new Error("The source must be finalized in order to complete the transfer")}const i=this.wh.getChain(a.to),o=await i.getProtocol("Ntt",{ntt:a.params.normalizedParams.destinationContracts}),n=f.Wormhole.parseAddress(e.chain(),e.address()),u=o.redeem([a.attestation.attestation],n),g=await f.signSendWait(i,u,e);return{...a,state:f.TransferState.DestinationInitiated,destinationTxs:g}}async resume(e){const a=await this.wh.getVaa(e.txid,"Ntt:WormholeTransfer");if(!a)throw new Error("No VAA found for transaction: "+e.txid);const i={chain:a.emitterChain,emitter:a.emitterAddress,sequence:a.sequence},{recipientChain:o,trimmedAmount:n}=a.payload.nttManagerPayload.payload,u=f.canonicalAddress({chain:a.emitterChain,address:a.payload.nttManagerPayload.payload.sourceToken}),g=f.canonicalAddress({chain:a.emitterChain,address:a.payload.sourceNttManager}),T=f.chainToPlatform(a.emitterChain)==="Solana"?g:f.canonicalAddress({chain:a.emitterChain,address:a.emitterAddress}),w=$.resolveDestinationNttContracts(this.staticConfig,{chain:a.emitterChain,address:a.payload.sourceNttManager},o),S=f.fromBaseUnits(n.amount,n.decimals);return{from:a.emitterChain,to:o,state:f.TransferState.Attested,originTxs:[e],attestation:{id:i,attestation:a},params:{amount:f.display(S),options:{automatic:!1},normalizedParams:{amount:S,options:{queue:!1},sourceContracts:{token:u,manager:g,transceiver:{wormhole:T}},destinationContracts:{token:w.token,manager:w.manager,transceiver:{wormhole:w.transceiver.wormhole}}}}}}async finalize(e,a){if(!f.isDestinationQueued(a))throw new Error("The transfer must be destination queued in order to finalize");const{attestation:{attestation:i}}=a,o=this.wh.getChain(a.to),n=await o.getProtocol("Ntt",{ntt:a.params.normalizedParams.destinationContracts}),u=f.Wormhole.chainAddress(e.chain(),e.address()),g=n.completeInboundQueuedTransfer(a.from,i.payload.nttManagerPayload,u.address),T=await f.signSendWait(o,g,e);return{...a,state:f.TransferState.DestinationFinalized,destinationTxs:[...a.destinationTxs??[],...T]}}async*track(e,a){if(f.isSourceInitiated(e)||f.isSourceFinalized(e)){const{txid:n}=e.originTxs[e.originTxs.length-1],u=await this.wh.getVaa(n,"Ntt:WormholeTransfer",a);if(!u)throw new Error("No VAA found for transaction: "+n);const g={chain:u.emitterChain,emitter:u.emitterAddress,sequence:u.sequence};e={...e,state:f.TransferState.Attested,attestation:{id:g,attestation:u}},yield e}const o=await this.wh.getChain(e.to).getProtocol("Ntt",{ntt:e.params.normalizedParams.destinationContracts});if(f.isAttested(e)){const{attestation:{attestation:n}}=e;await o.getIsApproved(n)&&(e={...e,state:f.TransferState.DestinationInitiated},yield e)}if(f.isRedeemed(e)||f.isDestinationQueued(e)){const{attestation:{attestation:n}}=e,u=await o.getInboundQueuedTransfer(n.emitterChain,n.payload.nttManagerPayload);u!==null?(e={...e,state:f.TransferState.DestinationQueued,queueReleaseTime:new Date(u.rateLimitExpiryTimestamp*1e3)},yield e):await o.getIsExecuted(n)&&(e={...e,state:f.TransferState.DestinationFinalized},yield e)}yield e}}function Q1(c){class e extends Wt{static config=c}return e}class Wt extends f.AutomaticRoute{static NATIVE_GAS_DROPOFF_SUPPORTED=!1;staticConfig=this.constructor.config;static config={tokens:{}};static meta={name:"AutomaticNtt"};static supportedNetworks(){return $.resolveSupportedNetworks(this.config)}static supportedChains(e){return $.resolveSupportedChains(this.config,e)}static async supportedSourceTokens(e){return $.resolveSourceTokens(this.config,e)}static async supportedDestinationTokens(e,a,i){return $.resolveDestinationTokens(this.config,e,a,i)}static isProtocolSupported(e){return e.supportsProtocol("Ntt")}getDefaultOptions(){return $.AutomaticOptions}async isAvailable(e){const{srcContracts:a}=$.resolveNttContracts(this.staticConfig,e.source.id,e.destination.id);return(await e.fromChain.getProtocol("Ntt",{ntt:a})).isRelayingAvailable(e.toChain.chain)}async validate(e,a){const i=a.options??this.getDefaultOptions(),o=f.isNative(e.source.id.address),n=f.parse(a.amount,e.source.decimals),u=$.trimAmount(n,e.destination.decimals),{srcContracts:g,dstContracts:T}=$.resolveNttContracts(this.staticConfig,e.source.id,e.destination.id);return{valid:!0,params:{amount:a.amount,normalizedParams:{amount:u,sourceContracts:g,destinationContracts:T,options:{queue:!1,automatic:!0,wrapNative:o}},options:i}}}async quote(e,a){const{fromChain:i,toChain:o}=e,n=await i.getProtocol("Ntt",{ntt:a.normalizedParams.sourceContracts});if(!await n.isRelayingAvailable(o.chain))return{success:!1,error:new Error(`Relaying to chain ${o.chain} is not available`)};const u=await n.quoteDeliveryPrice(o.chain,a.normalizedParams.options),g=f.scale(a.normalizedParams.amount,e.destination.decimals),T={success:!0,params:a,sourceToken:{token:e.source.id,amount:a.normalizedParams.amount},destinationToken:{token:e.destination.id,amount:g},relayFee:{token:f.Wormhole.tokenId(i.chain,"native"),amount:f.fromBaseUnits(u,i.config.nativeTokenDecimals)},eta:f.estimateFinalityTime(e.fromChain.chain)+f.guardianAttestationEta*1e3},w=await o.getProtocol("Ntt",{ntt:a.normalizedParams.destinationContracts}),S=await w.getRateLimitDuration();if(S>0n){const M=await w.getCurrentInboundCapacity(i.chain);$.isCapacityThresholdExceeded(f.units(g),M)&&(T.warnings=[{type:"DestinationCapacityWarning",delayDurationSec:Number(S)}])}return T}async initiate(e,a,i,o){const{params:n}=i,{fromChain:u}=e,g=f.Wormhole.parseAddress(a.chain(),a.address()),w=(await u.getProtocol("Ntt",{ntt:n.normalizedParams.sourceContracts})).transfer(g,f.units(n.normalizedParams.amount),o,n.normalizedParams.options),S=await f.signSendWait(u,w,a);return{from:u.chain,to:o.chain,state:f.TransferState.SourceInitiated,originTxs:S,params:n}}async resume(e){const a=await this.wh.getVaa(e.txid,"Ntt:WormholeTransferStandardRelayer");if(!a)throw new Error("No VAA found for transaction: "+e.txid);const i={chain:a.emitterChain,emitter:a.emitterAddress,sequence:a.sequence},{payload:o}=a.payload,{recipientChain:n,trimmedAmount:u}=o.nttManagerPayload.payload,g=f.canonicalAddress({chain:a.emitterChain,address:o.nttManagerPayload.payload.sourceToken}),T=f.canonicalAddress({chain:a.emitterChain,address:o.sourceNttManager}),w=f.chainToPlatform(a.emitterChain)==="Solana"?T:f.canonicalAddress({chain:a.emitterChain,address:a.emitterAddress}),S=$.resolveDestinationNttContracts(this.staticConfig,{chain:a.emitterChain,address:o.sourceNttManager},n),M=f.fromBaseUnits(u.amount,u.decimals);return{from:a.emitterChain,to:n,state:f.TransferState.Attested,originTxs:[e],attestation:{id:i,attestation:a},params:{amount:f.display(M),options:{automatic:!0},normalizedParams:{amount:M,options:{queue:!1,automatic:!0},sourceContracts:{token:g,manager:T,transceiver:{wormhole:w}},destinationContracts:{token:S.token,manager:S.manager,transceiver:{wormhole:S.transceiver.wormhole}}}}}}async finalize(e,a){if(!f.isDestinationQueued(a))throw new Error("The transfer must be destination queued in order to finalize");const{attestation:{attestation:i}}=a,o=this.wh.getChain(a.to),n=await o.getProtocol("Ntt",{ntt:a.params.normalizedParams.destinationContracts}),u=f.Wormhole.chainAddress(e.chain(),e.address()),g=i.payloadName==="WormholeTransfer"?i.payload:i.payload.payload,T=n.completeInboundQueuedTransfer(a.from,g.nttManagerPayload,u.address),w=await f.signSendWait(o,T,e);return{...a,state:f.TransferState.DestinationFinalized,destinationTxs:[...a.destinationTxs??[],...w]}}async*track(e,a){if(f.isSourceInitiated(e)||f.isSourceFinalized(e)){const{txid:n}=e.originTxs[e.originTxs.length-1],u=S=>f.chainToPlatform(S)==="Evm",g=u(e.from)&&u(e.to)?"Ntt:WormholeTransferStandardRelayer":"Ntt:WormholeTransfer",T=await this.wh.getVaa(n,g,a);if(!T)throw new Error(`No VAA found for transaction: ${n}`);const w={chain:T.emitterChain,emitter:T.emitterAddress,sequence:T.sequence};e={...e,state:f.TransferState.Attested,attestation:{id:w,attestation:T}},yield e}const o=await this.wh.getChain(e.to).getProtocol("Ntt",{ntt:e.params.normalizedParams.destinationContracts});if(f.isAttested(e)){const{attestation:{attestation:n}}=e;await o.getIsApproved(n)&&(e={...e,state:f.TransferState.DestinationInitiated},yield e)}if(f.isRedeemed(e)||f.isDestinationQueued(e)){const{attestation:{attestation:n}}=e,u=n.payloadName==="WormholeTransfer"?n.payload:n.payload.payload,g=await o.getInboundQueuedTransfer(n.emitterChain,u.nttManagerPayload);g!==null?(e={...e,state:f.TransferState.DestinationQueued,queueReleaseTime:new Date(g.rateLimitExpiryTimestamp*1e3)},yield e):await o.getIsExecuted(n)&&(e={...e,state:f.TransferState.DestinationFinalized},yield e)}yield e}}const Ve={Mainnet:"https://executor.labsapis.com",Testnet:"https://executor-testnet.labsapis.com"},zt=c=>{let e="";if(f.chainToPlatform(c)==="Evm")e="0x9b2A3B92b1D86938D3Ed37B0519952C227bA6D09";else if(f.chainToPlatform(c)==="Solana")e="9q2q3EtP1VNdyaxzju1CGfh3EDj7heGABgxAJNyQDXgT";else if(f.chainToPlatform(c)==="Sui")e="0xbfa1240e48c622d97881473953be730091161b7931d89bd6afe667841cf69ef4";else throw new Error(`No referrer address for chain ${c}`);return f.Wormhole.chainAddress(c,e)};var Z0;(function(c){c.Pending="pending",c.Failed="failed",c.Unsupported="unsupported",c.Submitted="submitted",c.Underpaid="underpaid",c.Aborted="aborted"})(Z0||(Z0={}));var L1;(function(c){c.ERM1="ERM1",c.ERV1="ERV1",c.ERN1="ERN1",c.ERC1="ERC1",c.ERC2="ERC2"})(L1||(L1={}));async function Kt(c){const e=`${Ve[c]}/v0/capabilities`;try{return(await f.axios.get(e)).data}catch{throw new Error(`Failed to fetch capabilities for network: ${c}.`)}}async function jt(c,e,a,i){const o=`${Ve[c]}/v0/quote`;try{return(await f.axios.post(o,{srcChain:f.toChainId(e),dstChain:f.toChainId(a),relayInstructions:i})).data}catch{throw new Error("Failed to fetch signed quote.")}}async function O1(c,e,a){const i=`${Ve[c]}/v0/status/tx`;try{return(await f.axios.post(i,{txHash:e,chainId:f.toChainId(a)})).data}catch{throw new Error(`Failed to fetch status for txHash: ${e}.`)}}const Vt=65535n;function Qt(c,e,a){if(e>Vt)throw new Error("dBps exceeds max u16");const i=f.units(c);let o=i,n=0n;if(e>0){n=i*e/100000n;const u=$.trimAmount(f.fromBaseUnits(n,c.decimals),a);o=i-f.units(u)}return{referrerFee:n,remainingAmount:o,referrerFeeDbps:e}}function G1(c){class e extends Gt{static config=c}return e}class Gt extends f.AutomaticRoute{static NATIVE_GAS_DROPOFF_SUPPORTED=!0;staticConfig=this.constructor.config;static config={ntt:{tokens:{}}};static meta={name:"NttExecutorRoute"};static supportedNetworks(){return $.resolveSupportedNetworks(this.config.ntt)}static supportedChains(e){return $.resolveSupportedChains(this.config.ntt,e)}static async supportedSourceTokens(e){return $.resolveSourceTokens(this.config.ntt,e)}static async supportedDestinationTokens(e,a,i){return $.resolveDestinationTokens(this.config.ntt,e,a,i)}static isProtocolSupported(e){return e.supportsProtocol("Ntt")}getDefaultOptions(){return{nativeGas:0}}async validate(e,a){const i=a.options??this.getDefaultOptions();if(i.nativeGas!==void 0&&(i.nativeGas<0||i.nativeGas>1))return{valid:!1,error:new Error("Invalid native gas percentage"),params:a};const o=f.parse(a.amount,e.source.decimals),n=$.trimAmount(o,e.destination.decimals),{srcContracts:u,dstContracts:g}=$.resolveNttContracts(this.staticConfig.ntt,e.source.id,e.destination.id);let T=0n;if(this.staticConfig.referrerFee&&(T=this.staticConfig.referrerFee.feeDbps,this.staticConfig.referrerFee.perTokenOverrides)){const S=f.canonicalAddress(e.source.id),M=this.staticConfig.referrerFee.perTokenOverrides[e.source.id.chain]?.[S];M?.referrerFeeDbps!==void 0&&(T=M.referrerFeeDbps)}return{valid:!0,params:{amount:a.amount,normalizedParams:{amount:n,sourceContracts:u,destinationContracts:g,referrerFeeDbps:T},options:i}}}async quote(e,a){const{fromChain:i,toChain:o}=e;try{const n=await this.fetchExecutorQuote(e,a),{remainingAmount:u,estimatedCost:g,gasDropOff:T,expires:w}=n,S=f.scale(f.fromBaseUnits(u,e.source.decimals),e.destination.decimals),M={success:!0,params:a,sourceToken:{token:e.source.id,amount:a.normalizedParams.amount},destinationToken:{token:e.destination.id,amount:S},relayFee:{token:f.nativeTokenId(i.chain),amount:f.fromBaseUnits(g,i.config.nativeTokenDecimals)},destinationNativeGas:f.fromBaseUnits(T,o.config.nativeTokenDecimals),eta:f.estimateFinalityTime(e.fromChain.chain)+f.guardianAttestationEta*1e3,expires:w,details:n},A=await o.getProtocol("Ntt",{ntt:a.normalizedParams.destinationContracts}),I=await A.getRateLimitDuration();if(I>0n){const C=await A.getCurrentInboundCapacity(i.chain);$.isCapacityThresholdExceeded(f.units(S),C)&&(M.warnings=[{type:"DestinationCapacityWarning",delayDurationSec:Number(I)}])}return M}catch(n){return{success:!1,error:n instanceof Error?n:new Error(String(n))}}}async fetchExecutorQuote(e,a){const{fromChain:i,toChain:o}=e;let n=zt(i.chain);const u=this.staticConfig.referrerFee;if(u){const N0=f.chainToPlatform(i.chain),H=u.referrerAddresses?.[N0]??"";H&&(n=f.Wormhole.chainAddress(i.chain,H))}const{referrerFee:g,remainingAmount:T,referrerFeeDbps:w}=Qt(a.normalizedParams.amount,a.normalizedParams.referrerFeeDbps,e.destination.decimals);if(T<=0n)throw new Error("Amount after fee <= 0");const S=await Kt(i.network);if(!S[f.toChainId(i.chain)])throw new Error("Unsupported source chain");const A=S[f.toChainId(o.chain)];if(!A||!A.requestPrefixes.includes("ERN1"))throw new Error("Unsupported destination chain");const{recipient:I}=e,C=await o.getProtocol("NttWithExecutor",{ntt:a.normalizedParams.destinationContracts}),N=BigInt(A.gasDropOffLimit),R=a.options.nativeGas&&N>0n?BigInt(Math.round(a.options.nativeGas*100))*N/100n:0n;let{msgValue:E,gasLimit:D}=await C.estimateMsgValueAndGasLimit(I);if(this.staticConfig.referrerFee?.perTokenOverrides){const N0=f.canonicalAddress(e.destination.id),H=this.staticConfig.referrerFee.perTokenOverrides[e.destination.id.chain]?.[N0];H?.gasLimit!==void 0&&(D=H.gasLimit),H?.msgValue!==void 0&&(E=H.msgValue)}const O=[];O.push({request:{type:"GasInstruction",gasLimit:D,msgValue:E}}),R>0n&&O.push({request:{type:"GasDropOffInstruction",dropOff:R,recipient:I?I.address.toUniversalAddress():new f.UniversalAddress(new Uint8Array(32))}});const U=f.serialize(f.relayInstructionsLayout,{requests:O}),V=await jt(i.network,i.chain,o.chain,f.hex.encode(U,!0));if(!V.estimatedCost)throw new Error("No estimated cost");const z=BigInt(V.estimatedCost),G=f.hex.decode(V.signedQuote),O0=f.deserialize$1(f.signedQuoteLayout,G);return{signedQuote:G,relayInstructions:U,estimatedCost:z,payeeAddress:O0.quote.payeeAddress,referrer:n,referrerFee:g,remainingAmount:T,referrerFeeDbps:w,expires:O0.quote.expiryTime,gasDropOff:R}}async initiate(e,a,i,o){if(!i.details)throw new Error("Missing quote details");const{params:n,details:u}=i;f.deserialize$1(f.relayInstructionsLayout,u.relayInstructions).requests.forEach(({request:E})=>{if(E.type==="GasDropOffInstruction"&&!E.recipient.equals(o.address.toUniversalAddress()))throw new Error("Gas drop-off recipient does not match")});const{fromChain:T}=e,w=f.Wormhole.parseAddress(a.chain(),a.address()),S=await T.getProtocol("NttWithExecutor",{ntt:n.normalizedParams.sourceContracts}),M=await T.getProtocol("Ntt",{ntt:n.normalizedParams.sourceContracts}),A=f.isNative(e.source.id.address),I=S.transfer(w,o,f.units(n.normalizedParams.amount),u,M,A),C=await f.signSendWait(T,I,a);let N=0;return(async()=>{for(;N<20;){try{const[E]=await O1(T.network,C.at(-1).txid,T.chain);if(E)break}catch{}N++,await new Promise(E=>setTimeout(E,2e3))}})(),{from:T.chain,to:o.chain,state:f.TransferState.SourceInitiated,originTxs:C,params:n}}async complete(e,a){if(!f.isAttested(a)&&!f.isFailed(a)){if(f.isRedeemed(a))return a;throw new Error("The source must be finalized in order to complete the transfer")}if(!a.attestation)throw new Error("No attestation found for the transfer");const i=this.wh.getChain(a.to),o=await i.getProtocol("Ntt",{ntt:a.params.normalizedParams.destinationContracts}),n=f.Wormhole.parseAddress(e.chain(),e.address()),u=o.redeem([a.attestation.attestation],n),g=await f.signSendWait(i,u,e);return{...a,state:f.TransferState.DestinationInitiated,attestation:a.attestation,destinationTxs:g}}async resume(e){const a=await this.wh.getVaa(e.txid,"Ntt:WormholeTransfer");if(!a)throw new Error("No VAA found for transaction: "+e.txid);const i={chain:a.emitterChain,emitter:a.emitterAddress,sequence:a.sequence},{recipientChain:o,trimmedAmount:n}=a.payload.nttManagerPayload.payload,u=f.canonicalAddress({chain:a.emitterChain,address:a.payload.nttManagerPayload.payload.sourceToken}),g=f.canonicalAddress({chain:a.emitterChain,address:a.payload.sourceNttManager}),T=f.chainToPlatform(a.emitterChain)==="Solana"?g:f.canonicalAddress({chain:a.emitterChain,address:a.emitterAddress}),w=$.resolveDestinationNttContracts(this.staticConfig.ntt,{chain:a.emitterChain,address:a.payload.sourceNttManager},o),S=f.fromBaseUnits(n.amount,n.decimals);return{from:a.emitterChain,to:o,state:f.TransferState.Attested,originTxs:[e],attestation:{id:i,attestation:a},params:{amount:f.display(S),options:{},normalizedParams:{amount:S,sourceContracts:{token:u,manager:g,transceiver:{wormhole:T}},destinationContracts:{token:w.token,manager:w.manager,transceiver:{wormhole:w.transceiver.wormhole}},referrerFeeDbps:0n}}}}async finalize(e,a){if(!f.isDestinationQueued(a))throw new Error("The transfer must be destination queued in order to finalize");const{attestation:{attestation:i}}=a,o=this.wh.getChain(a.to),n=await o.getProtocol("Ntt",{ntt:a.params.normalizedParams.destinationContracts}),u=f.Wormhole.chainAddress(e.chain(),e.address()),g=n.completeInboundQueuedTransfer(a.from,i.payload.nttManagerPayload,u.address),T=await f.signSendWait(o,g,e);return{...a,state:f.TransferState.DestinationFinalized,destinationTxs:[...a.destinationTxs??[],...T]}}async*track(e,a){if(f.isSourceInitiated(e)||f.isSourceFinalized(e)){const{txid:n}=e.originTxs.at(-1),u=await this.wh.getVaa(n,"Ntt:WormholeTransfer",a);if(!u)throw new Error("No VAA found for transaction: "+n);const g={chain:u.emitterChain,emitter:u.emitterAddress,sequence:u.sequence};e={...e,state:f.TransferState.Attested,attestation:{id:g,attestation:u}},yield e}const o=await this.wh.getChain(e.to).getProtocol("Ntt",{ntt:e.params.normalizedParams.destinationContracts});if(f.isAttested(e)&&!f.isFailed(e)){const[n]=await O1(this.wh.network,e.originTxs.at(-1).txid,e.from);if(!n)throw new Error("No transaction status found");const u=n.status;(u===Z0.Failed||u===Z0.Underpaid||u===Z0.Unsupported||u===Z0.Aborted)&&(e={...e,state:f.TransferState.Failed,error:new f.RelayFailedError(`Relay failed with status: ${u}`)},yield e)}if(f.isAttested(e)||f.isFailed(e)){if(!e.attestation)throw new Error("No attestation found");const{attestation:{attestation:n}}=e;await o.getIsApproved(n)&&(e={...e,state:f.TransferState.DestinationInitiated,attestation:e.attestation},yield e)}if(f.isRedeemed(e)||f.isDestinationQueued(e)){const{attestation:{attestation:n}}=e,u=await o.getInboundQueuedTransfer(n.emitterChain,n.payload.nttManagerPayload);u!==null?(e={...e,state:f.TransferState.DestinationQueued,queueReleaseTime:new Date(u.rateLimitExpiryTimestamp*1e3)},yield e):await o.getIsExecuted(n)&&(e={...e,state:f.TransferState.DestinationFinalized},yield e)}yield e}}const Ht=(c,e)=>[V1(c),Q1(c),G1({ntt:c,...e})];exports.nttAutomaticRoute=Q1;exports.nttExecutorRoute=G1;exports.nttManualRoute=V1;exports.nttRoutes=Ht;