@layerzerolabs/lz-evm-sdk-v1 1.5.26 → 1.5.27

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 (184) hide show
  1. package/deployments/avalanche-sandbox-local/DefaultProxyAdmin.json +273 -0
  2. package/deployments/avalanche-sandbox-local/Endpoint.json +1282 -0
  3. package/deployments/avalanche-sandbox-local/FPValidator.json +382 -0
  4. package/deployments/avalanche-sandbox-local/MPTValidator01.json +395 -0
  5. package/deployments/avalanche-sandbox-local/NonceContract.json +159 -0
  6. package/deployments/avalanche-sandbox-local/PriceFeed.json +760 -0
  7. package/deployments/avalanche-sandbox-local/PriceFeed_Implementation.json +776 -0
  8. package/deployments/avalanche-sandbox-local/PriceFeed_Proxy.json +233 -0
  9. package/deployments/avalanche-sandbox-local/RelayerV2.json +1169 -0
  10. package/deployments/avalanche-sandbox-local/RelayerV2_Implementation.json +1270 -0
  11. package/deployments/avalanche-sandbox-local/RelayerV2_Proxy.json +245 -0
  12. package/deployments/avalanche-sandbox-local/TreasuryV2.json +458 -0
  13. package/deployments/avalanche-sandbox-local/UltraLightNodeV2.json +1816 -0
  14. package/deployments/bsc-sandbox-local/DefaultProxyAdmin.json +273 -0
  15. package/deployments/bsc-sandbox-local/Endpoint.json +1282 -0
  16. package/deployments/bsc-sandbox-local/FPValidator.json +382 -0
  17. package/deployments/bsc-sandbox-local/MPTValidator01.json +395 -0
  18. package/deployments/bsc-sandbox-local/NonceContract.json +159 -0
  19. package/deployments/bsc-sandbox-local/PriceFeed.json +760 -0
  20. package/deployments/bsc-sandbox-local/PriceFeed_Implementation.json +776 -0
  21. package/deployments/bsc-sandbox-local/PriceFeed_Proxy.json +233 -0
  22. package/deployments/bsc-sandbox-local/RelayerV2.json +1169 -0
  23. package/deployments/bsc-sandbox-local/RelayerV2_Implementation.json +1270 -0
  24. package/deployments/bsc-sandbox-local/RelayerV2_Proxy.json +245 -0
  25. package/deployments/bsc-sandbox-local/TreasuryV2.json +458 -0
  26. package/deployments/bsc-sandbox-local/UltraLightNodeV2.json +1816 -0
  27. package/deployments/ethereum-sandbox-local/DefaultProxyAdmin.json +10 -10
  28. package/deployments/ethereum-sandbox-local/Endpoint.json +7 -7
  29. package/deployments/ethereum-sandbox-local/FPValidator.json +4 -4
  30. package/deployments/ethereum-sandbox-local/MPTValidator01.json +3 -3
  31. package/deployments/ethereum-sandbox-local/NonceContract.json +3 -3
  32. package/deployments/ethereum-sandbox-local/RelayerV2.json +27 -27
  33. package/deployments/ethereum-sandbox-local/RelayerV2_Implementation.json +6 -6
  34. package/deployments/ethereum-sandbox-local/RelayerV2_Proxy.json +26 -26
  35. package/deployments/ethereum-sandbox-local/TreasuryV2.json +7 -7
  36. package/deployments/ethereum-sandbox-local/UltraLightNodeV2.json +7 -7
  37. package/deployments/polygon-sandbox-local/DefaultProxyAdmin.json +10 -10
  38. package/deployments/polygon-sandbox-local/Endpoint.json +7 -7
  39. package/deployments/polygon-sandbox-local/FPValidator.json +4 -4
  40. package/deployments/polygon-sandbox-local/MPTValidator01.json +3 -3
  41. package/deployments/polygon-sandbox-local/NonceContract.json +3 -3
  42. package/deployments/polygon-sandbox-local/RelayerV2.json +27 -27
  43. package/deployments/polygon-sandbox-local/RelayerV2_Implementation.json +6 -6
  44. package/deployments/polygon-sandbox-local/RelayerV2_Proxy.json +26 -26
  45. package/deployments/polygon-sandbox-local/TreasuryV2.json +7 -7
  46. package/deployments/polygon-sandbox-local/UltraLightNodeV2.json +7 -7
  47. package/dist/chaintypes/RelayerV2.sol/IForwarder.d.ts +43 -0
  48. package/dist/chaintypes/RelayerV2.sol/IForwarder.d.ts.map +1 -0
  49. package/dist/chaintypes/RelayerV2.sol/IForwarder.js +2 -0
  50. package/dist/chaintypes/RelayerV2.sol/IStargateComposer.d.ts +43 -0
  51. package/dist/chaintypes/RelayerV2.sol/IStargateComposer.d.ts.map +1 -0
  52. package/dist/chaintypes/RelayerV2.sol/IStargateComposer.js +2 -0
  53. package/dist/chaintypes/RelayerV2.sol/RelayerV2.d.ts +731 -0
  54. package/dist/chaintypes/RelayerV2.sol/RelayerV2.d.ts.map +1 -0
  55. package/dist/chaintypes/RelayerV2.sol/RelayerV2.js +2 -0
  56. package/dist/chaintypes/RelayerV2.sol/index.d.ts +3 -0
  57. package/dist/chaintypes/RelayerV2.sol/index.d.ts.map +1 -0
  58. package/dist/chaintypes/RelayerV2.sol/index.js +2 -0
  59. package/dist/chaintypes/factories/RelayerV2.sol/IForwarder__factory.d.ts +19 -0
  60. package/dist/chaintypes/factories/RelayerV2.sol/IForwarder__factory.d.ts.map +1 -0
  61. package/dist/chaintypes/factories/RelayerV2.sol/IForwarder__factory.js +32 -0
  62. package/dist/chaintypes/factories/RelayerV2.sol/IStargateComposer__factory.d.ts +19 -0
  63. package/dist/chaintypes/factories/RelayerV2.sol/IStargateComposer__factory.d.ts.map +1 -0
  64. package/dist/chaintypes/factories/RelayerV2.sol/IStargateComposer__factory.js +32 -0
  65. package/dist/chaintypes/factories/RelayerV2.sol/RelayerV2__factory.d.ts +772 -0
  66. package/dist/chaintypes/factories/RelayerV2.sol/RelayerV2__factory.d.ts.map +1 -0
  67. package/dist/chaintypes/factories/RelayerV2.sol/RelayerV2__factory.js +1012 -0
  68. package/dist/chaintypes/factories/RelayerV2.sol/index.d.ts +3 -0
  69. package/dist/chaintypes/factories/RelayerV2.sol/index.d.ts.map +1 -0
  70. package/dist/chaintypes/factories/RelayerV2.sol/index.js +10 -0
  71. package/dist/chaintypes/factories/messagelib-e2/MessageLibBase__factory.d.ts +686 -0
  72. package/dist/chaintypes/factories/messagelib-e2/MessageLibBase__factory.d.ts.map +1 -0
  73. package/dist/chaintypes/factories/messagelib-e2/MessageLibBase__factory.js +894 -0
  74. package/dist/chaintypes/factories/messagelib-e2/index.d.ts +5 -0
  75. package/dist/chaintypes/factories/messagelib-e2/index.d.ts.map +1 -0
  76. package/dist/chaintypes/factories/messagelib-e2/index.js +34 -0
  77. package/dist/chaintypes/factories/messagelib-e2/interfaces/ILayerZeroRelayer__factory.d.ts +61 -0
  78. package/dist/chaintypes/factories/messagelib-e2/interfaces/ILayerZeroRelayer__factory.d.ts.map +1 -0
  79. package/dist/chaintypes/factories/messagelib-e2/interfaces/ILayerZeroRelayer__factory.js +87 -0
  80. package/dist/chaintypes/factories/messagelib-e2/interfaces/ILayerZeroTreasury__factory.d.ts +35 -0
  81. package/dist/chaintypes/factories/messagelib-e2/interfaces/ILayerZeroTreasury__factory.d.ts.map +1 -0
  82. package/dist/chaintypes/factories/messagelib-e2/interfaces/ILayerZeroTreasury__factory.js +53 -0
  83. package/dist/chaintypes/factories/messagelib-e2/interfaces/IMessageLib__factory.d.ts +247 -0
  84. package/dist/chaintypes/factories/messagelib-e2/interfaces/IMessageLib__factory.d.ts.map +1 -0
  85. package/dist/chaintypes/factories/messagelib-e2/interfaces/IMessageLib__factory.js +327 -0
  86. package/dist/chaintypes/factories/messagelib-e2/interfaces/index.d.ts +4 -0
  87. package/dist/chaintypes/factories/messagelib-e2/interfaces/index.d.ts.map +1 -0
  88. package/dist/chaintypes/factories/messagelib-e2/interfaces/index.js +12 -0
  89. package/dist/chaintypes/factories/messagelib-e2/libs/ExecutorOptions__factory.d.ts +72 -0
  90. package/dist/chaintypes/factories/messagelib-e2/libs/ExecutorOptions__factory.d.ts.map +1 -0
  91. package/dist/chaintypes/factories/messagelib-e2/libs/ExecutorOptions__factory.js +107 -0
  92. package/dist/chaintypes/factories/messagelib-e2/libs/Options__factory.d.ts +62 -0
  93. package/dist/chaintypes/factories/messagelib-e2/libs/Options__factory.d.ts.map +1 -0
  94. package/dist/chaintypes/factories/messagelib-e2/libs/Options__factory.js +94 -0
  95. package/dist/chaintypes/factories/messagelib-e2/libs/RelayerOptions__factory.d.ts +72 -0
  96. package/dist/chaintypes/factories/messagelib-e2/libs/RelayerOptions__factory.d.ts.map +1 -0
  97. package/dist/chaintypes/factories/messagelib-e2/libs/RelayerOptions__factory.js +107 -0
  98. package/dist/chaintypes/factories/messagelib-e2/libs/TreasuryOptions__factory.d.ts +42 -0
  99. package/dist/chaintypes/factories/messagelib-e2/libs/TreasuryOptions__factory.d.ts.map +1 -0
  100. package/dist/chaintypes/factories/messagelib-e2/libs/TreasuryOptions__factory.js +68 -0
  101. package/dist/chaintypes/factories/messagelib-e2/libs/index.d.ts +4 -0
  102. package/dist/chaintypes/factories/messagelib-e2/libs/index.d.ts.map +1 -0
  103. package/dist/chaintypes/factories/messagelib-e2/libs/index.js +12 -0
  104. package/dist/chaintypes/factories/messagelib-e2/uln/UlnConfig__factory.d.ts +292 -0
  105. package/dist/chaintypes/factories/messagelib-e2/uln/UlnConfig__factory.d.ts.map +1 -0
  106. package/dist/chaintypes/factories/messagelib-e2/uln/UlnConfig__factory.js +387 -0
  107. package/dist/chaintypes/factories/messagelib-e2/uln/UltraLightNode301__factory.d.ts +1086 -0
  108. package/dist/chaintypes/factories/messagelib-e2/uln/UltraLightNode301__factory.d.ts.map +1 -0
  109. package/dist/chaintypes/factories/messagelib-e2/uln/UltraLightNode301__factory.js +1412 -0
  110. package/dist/chaintypes/factories/messagelib-e2/uln/index.d.ts +5 -0
  111. package/dist/chaintypes/factories/messagelib-e2/uln/index.d.ts.map +1 -0
  112. package/dist/chaintypes/factories/messagelib-e2/uln/index.js +35 -0
  113. package/dist/chaintypes/factories/messagelib-e2/uln/interfaces/ILayerZeroOracle__factory.d.ts +61 -0
  114. package/dist/chaintypes/factories/messagelib-e2/uln/interfaces/ILayerZeroOracle__factory.d.ts.map +1 -0
  115. package/dist/chaintypes/factories/messagelib-e2/uln/interfaces/ILayerZeroOracle__factory.js +87 -0
  116. package/dist/chaintypes/factories/messagelib-e2/uln/interfaces/index.d.ts +2 -0
  117. package/dist/chaintypes/factories/messagelib-e2/uln/interfaces/index.d.ts.map +1 -0
  118. package/dist/chaintypes/factories/messagelib-e2/uln/interfaces/index.js +8 -0
  119. package/dist/chaintypes/factories/messagelib-e2/uln/libs/OracleOptions__factory.d.ts +32 -0
  120. package/dist/chaintypes/factories/messagelib-e2/uln/libs/OracleOptions__factory.d.ts.map +1 -0
  121. package/dist/chaintypes/factories/messagelib-e2/uln/libs/OracleOptions__factory.js +55 -0
  122. package/dist/chaintypes/factories/messagelib-e2/uln/libs/index.d.ts +2 -0
  123. package/dist/chaintypes/factories/messagelib-e2/uln/libs/index.d.ts.map +1 -0
  124. package/dist/chaintypes/factories/messagelib-e2/uln/libs/index.js +8 -0
  125. package/dist/chaintypes/messagelib-e2/MessageLibBase.d.ts +655 -0
  126. package/dist/chaintypes/messagelib-e2/MessageLibBase.d.ts.map +1 -0
  127. package/dist/chaintypes/messagelib-e2/MessageLibBase.js +2 -0
  128. package/dist/chaintypes/messagelib-e2/index.d.ts +8 -0
  129. package/dist/chaintypes/messagelib-e2/index.d.ts.map +1 -0
  130. package/dist/chaintypes/messagelib-e2/index.js +2 -0
  131. package/dist/chaintypes/messagelib-e2/interfaces/ILayerZeroRelayer.d.ts +71 -0
  132. package/dist/chaintypes/messagelib-e2/interfaces/ILayerZeroRelayer.d.ts.map +1 -0
  133. package/dist/chaintypes/messagelib-e2/interfaces/ILayerZeroRelayer.js +2 -0
  134. package/dist/chaintypes/messagelib-e2/interfaces/ILayerZeroTreasury.d.ts +48 -0
  135. package/dist/chaintypes/messagelib-e2/interfaces/ILayerZeroTreasury.d.ts.map +1 -0
  136. package/dist/chaintypes/messagelib-e2/interfaces/ILayerZeroTreasury.js +2 -0
  137. package/dist/chaintypes/messagelib-e2/interfaces/IMessageLib.d.ts +253 -0
  138. package/dist/chaintypes/messagelib-e2/interfaces/IMessageLib.d.ts.map +1 -0
  139. package/dist/chaintypes/messagelib-e2/interfaces/IMessageLib.js +2 -0
  140. package/dist/chaintypes/messagelib-e2/interfaces/index.d.ts +4 -0
  141. package/dist/chaintypes/messagelib-e2/interfaces/index.d.ts.map +1 -0
  142. package/dist/chaintypes/messagelib-e2/interfaces/index.js +2 -0
  143. package/dist/chaintypes/messagelib-e2/libs/ExecutorOptions.d.ts +75 -0
  144. package/dist/chaintypes/messagelib-e2/libs/ExecutorOptions.d.ts.map +1 -0
  145. package/dist/chaintypes/messagelib-e2/libs/ExecutorOptions.js +2 -0
  146. package/dist/chaintypes/messagelib-e2/libs/Options.d.ts +67 -0
  147. package/dist/chaintypes/messagelib-e2/libs/Options.d.ts.map +1 -0
  148. package/dist/chaintypes/messagelib-e2/libs/Options.js +2 -0
  149. package/dist/chaintypes/messagelib-e2/libs/RelayerOptions.d.ts +75 -0
  150. package/dist/chaintypes/messagelib-e2/libs/RelayerOptions.d.ts.map +1 -0
  151. package/dist/chaintypes/messagelib-e2/libs/RelayerOptions.js +2 -0
  152. package/dist/chaintypes/messagelib-e2/libs/TreasuryOptions.d.ts +51 -0
  153. package/dist/chaintypes/messagelib-e2/libs/TreasuryOptions.d.ts.map +1 -0
  154. package/dist/chaintypes/messagelib-e2/libs/TreasuryOptions.js +2 -0
  155. package/dist/chaintypes/messagelib-e2/libs/index.d.ts +4 -0
  156. package/dist/chaintypes/messagelib-e2/libs/index.d.ts.map +1 -0
  157. package/dist/chaintypes/messagelib-e2/libs/index.js +2 -0
  158. package/dist/chaintypes/messagelib-e2/uln/UlnConfig.d.ts +309 -0
  159. package/dist/chaintypes/messagelib-e2/uln/UlnConfig.d.ts.map +1 -0
  160. package/dist/chaintypes/messagelib-e2/uln/UlnConfig.js +2 -0
  161. package/dist/chaintypes/messagelib-e2/uln/UltraLightNode301.d.ts +979 -0
  162. package/dist/chaintypes/messagelib-e2/uln/UltraLightNode301.d.ts.map +1 -0
  163. package/dist/chaintypes/messagelib-e2/uln/UltraLightNode301.js +2 -0
  164. package/dist/chaintypes/messagelib-e2/uln/index.d.ts +7 -0
  165. package/dist/chaintypes/messagelib-e2/uln/index.d.ts.map +1 -0
  166. package/dist/chaintypes/messagelib-e2/uln/index.js +2 -0
  167. package/dist/chaintypes/messagelib-e2/uln/interfaces/ILayerZeroOracle.d.ts +71 -0
  168. package/dist/chaintypes/messagelib-e2/uln/interfaces/ILayerZeroOracle.d.ts.map +1 -0
  169. package/dist/chaintypes/messagelib-e2/uln/interfaces/ILayerZeroOracle.js +2 -0
  170. package/dist/chaintypes/messagelib-e2/uln/interfaces/index.d.ts +2 -0
  171. package/dist/chaintypes/messagelib-e2/uln/interfaces/index.d.ts.map +1 -0
  172. package/dist/chaintypes/messagelib-e2/uln/interfaces/index.js +2 -0
  173. package/dist/chaintypes/messagelib-e2/uln/libs/OracleOptions.d.ts +43 -0
  174. package/dist/chaintypes/messagelib-e2/uln/libs/OracleOptions.d.ts.map +1 -0
  175. package/dist/chaintypes/messagelib-e2/uln/libs/OracleOptions.js +2 -0
  176. package/dist/chaintypes/messagelib-e2/uln/libs/index.d.ts +2 -0
  177. package/dist/chaintypes/messagelib-e2/uln/libs/index.d.ts.map +1 -0
  178. package/dist/chaintypes/messagelib-e2/uln/libs/index.js +2 -0
  179. package/dist/index.cjs +22108 -0
  180. package/dist/index.cjs.map +1 -0
  181. package/dist/index.d.ts +31586 -3
  182. package/dist/index.mjs +22027 -0
  183. package/dist/index.mjs.map +1 -0
  184. package/package.json +18 -4
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../index.ts","../chaintypes/factories/index.ts","../chaintypes/factories/arbitrum/index.ts","../chaintypes/factories/arbitrum/interfaces/index.ts","../chaintypes/factories/arbitrum/interfaces/ArbSys__factory.ts","../chaintypes/factories/example/index.ts","../chaintypes/factories/example/AltTokenUA__factory.ts","../chaintypes/factories/interfaces/index.ts","../chaintypes/factories/interfaces/IContractOne__factory.ts","../chaintypes/factories/interfaces/ILayerZeroEndpoint__factory.ts","../chaintypes/factories/interfaces/ILayerZeroMessagingLibrary__factory.ts","../chaintypes/factories/interfaces/ILayerZeroMessagingLibraryV2__factory.ts","../chaintypes/factories/interfaces/ILayerZeroOracle__factory.ts","../chaintypes/factories/interfaces/ILayerZeroOracleV2__factory.ts","../chaintypes/factories/interfaces/ILayerZeroPriceFeed__factory.ts","../chaintypes/factories/interfaces/ILayerZeroPriceFeedV2__factory.ts","../chaintypes/factories/interfaces/ILayerZeroReceiver__factory.ts","../chaintypes/factories/interfaces/ILayerZeroRelayer__factory.ts","../chaintypes/factories/interfaces/ILayerZeroRelayerV2__factory.ts","../chaintypes/factories/interfaces/ILayerZeroRelayerV2PriceData__factory.ts","../chaintypes/factories/interfaces/ILayerZeroTreasury__factory.ts","../chaintypes/factories/interfaces/ILayerZeroUltraLightNodeV1__factory.ts","../chaintypes/factories/interfaces/ILayerZeroUltraLightNodeV2__factory.ts","../chaintypes/factories/interfaces/ILayerZeroUserApplicationConfig__factory.ts","../chaintypes/factories/interfaces/ILayerZeroValidationLibrary__factory.ts","../chaintypes/factories/interfaces/IValidationLibraryHelper__factory.ts","../chaintypes/factories/interfaces/IValidationLibraryHelperV2__factory.ts","../chaintypes/factories/precrime/index.ts","../chaintypes/factories/precrime/example/index.ts","../chaintypes/factories/precrime/example/inherit/index.ts","../chaintypes/factories/precrime/example/inherit/CounterI__factory.ts","../chaintypes/factories/precrime/example/inherit/CounterPrecrime__factory.ts","../chaintypes/factories/precrime/example/view/index.ts","../chaintypes/factories/precrime/example/view/CounterPrecrimeView__factory.ts","../chaintypes/factories/precrime/example/view/CounterV__factory.ts","../chaintypes/factories/precrime/example/view/CounterView__factory.ts","../chaintypes/factories/precrime/interfaces/index.ts","../chaintypes/factories/precrime/interfaces/IPreCrime__factory.ts","../chaintypes/factories/precrime/interfaces/IPreCrimeBase__factory.ts","../chaintypes/factories/precrime/interfaces/IPreCrimeView__factory.ts","../chaintypes/factories/precrime/PreCrime__factory.ts","../chaintypes/factories/precrime/PreCrimeBase__factory.ts","../chaintypes/factories/precrime/PreCrimeView__factory.ts","../chaintypes/factories/proof/index.ts","../chaintypes/factories/proof/MPTValidatorV4.sol/index.ts","../chaintypes/factories/proof/MPTValidatorV4.sol/IUltraLightNode__factory.ts","../chaintypes/factories/proof/MPTValidatorV4.sol/MPTValidatorV4__factory.ts","../chaintypes/factories/proof/MPTValidatorV5.sol/index.ts","../chaintypes/factories/proof/MPTValidatorV5.sol/IUltraLightNode__factory.ts","../chaintypes/factories/proof/MPTValidatorV5.sol/MPTValidatorV5__factory.ts","../chaintypes/factories/proof/FPValidator__factory.ts","../chaintypes/factories/proof/MPTValidator__factory.ts","../chaintypes/factories/proof/MPTValidator01__factory.ts","../chaintypes/factories/proof/MPTValidatorStgV3__factory.ts","../chaintypes/factories/proof/MPTValidatorV2__factory.ts","../chaintypes/factories/proxy/index.ts","../chaintypes/factories/proxy/DefaultProxyAdmin__factory.ts","../chaintypes/factories/proxy/TransparentUpgradeableProxy__factory.ts","../chaintypes/factories/Endpoint__factory.ts","../chaintypes/factories/EndpointLite__factory.ts","../chaintypes/factories/FeeHandler__factory.ts","../chaintypes/factories/NonceContract__factory.ts","../chaintypes/factories/NonceContractRadar__factory.ts","../chaintypes/factories/PriceFeed__factory.ts","../chaintypes/factories/Relayer__factory.ts","../chaintypes/factories/RelayerV2__factory.ts","../chaintypes/factories/RelayerV2Radar__factory.ts","../chaintypes/factories/Treasury__factory.ts","../chaintypes/factories/TreasuryV2__factory.ts","../chaintypes/factories/TreasuryV2Radar__factory.ts","../chaintypes/factories/UltraLightNode__factory.ts","../chaintypes/factories/UltraLightNodeV2__factory.ts","../chaintypes/factories/UltraLightNodeV2AltToken__factory.ts","../chaintypes/factories/UltraLightNodeV2Radar__factory.ts"],"names":["interfaces_exports","utils","Contract","_abi","example_exports","ContractFactory","_bytecode","isSuperArgs","IUltraLightNode__factory"],"mappings":"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","sourcesContent":["import * as fs from 'fs'\n\nexport * from './chaintypes'\n\nexport function getDeployedContractAddress(network: string, contractName: string): string {\n const deploymentJson = `${__dirname}/deployments/${network}/${contractName}.json`\n if (!fs.existsSync(deploymentJson)) {\n throw new Error(`Deployment not found: ${deploymentJson}, did you forget to deploy ${contractName}?`)\n }\n const deployment = JSON.parse(fs.readFileSync(deploymentJson, 'utf-8'))\n return deployment.address\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nexport * as arbitrum from \"./arbitrum\";\nexport * as example from \"./example\";\nexport * as interfaces from \"./interfaces\";\nexport * as precrime from \"./precrime\";\nexport * as proof from \"./proof\";\nexport * as proxy from \"./proxy\";\nexport { Endpoint__factory } from \"./Endpoint__factory\";\nexport { EndpointLite__factory } from \"./EndpointLite__factory\";\nexport { FeeHandler__factory } from \"./FeeHandler__factory\";\nexport { NonceContract__factory } from \"./NonceContract__factory\";\nexport { NonceContractRadar__factory } from \"./NonceContractRadar__factory\";\nexport { PriceFeed__factory } from \"./PriceFeed__factory\";\nexport { Relayer__factory } from \"./Relayer__factory\";\nexport { RelayerV2__factory } from \"./RelayerV2__factory\";\nexport { RelayerV2Radar__factory } from \"./RelayerV2Radar__factory\";\nexport { Treasury__factory } from \"./Treasury__factory\";\nexport { TreasuryV2__factory } from \"./TreasuryV2__factory\";\nexport { TreasuryV2Radar__factory } from \"./TreasuryV2Radar__factory\";\nexport { UltraLightNode__factory } from \"./UltraLightNode__factory\";\nexport { UltraLightNodeV2__factory } from \"./UltraLightNodeV2__factory\";\nexport { UltraLightNodeV2AltToken__factory } from \"./UltraLightNodeV2AltToken__factory\";\nexport { UltraLightNodeV2Radar__factory } from \"./UltraLightNodeV2Radar__factory\";\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nexport * as interfaces from \"./interfaces\";\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nexport { ArbSys__factory } from \"./ArbSys__factory\";\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n ArbSys,\n ArbSysInterface,\n} from \"../../../arbitrum/interfaces/ArbSys\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"caller\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"destination\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"uniqueId\",\n type: \"uint256\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"batchNumber\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"indexInBatch\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"arbBlockNum\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"ethBlockNum\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"timestamp\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"callvalue\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"L2ToL1Transaction\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"arbBlockNumber\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"arbChainID\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"arbOSVersion\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"index\",\n type: \"uint256\",\n },\n ],\n name: \"getStorageAt\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getStorageGasAvailable\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"account\",\n type: \"address\",\n },\n ],\n name: \"getTransactionCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"isTopLevelCall\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"sender\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"dest\",\n type: \"address\",\n },\n ],\n name: \"mapL1SenderContractAddressToL2Alias\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"myCallersAddressWithoutAliasing\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"destination\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"calldataForL1\",\n type: \"bytes\",\n },\n ],\n name: \"sendTxToL1\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"wasMyCallersAddressAliased\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"destination\",\n type: \"address\",\n },\n ],\n name: \"withdrawEth\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n] as const;\n\nexport class ArbSys__factory {\n static readonly abi = _abi;\n static createInterface(): ArbSysInterface {\n return new utils.Interface(_abi) as ArbSysInterface;\n }\n static connect(address: string, signerOrProvider: Signer | Provider): ArbSys {\n return new Contract(address, _abi, signerOrProvider) as ArbSys;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nexport { AltTokenUA__factory } from \"./AltTokenUA__factory\";\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../../common\";\nimport type { AltTokenUA, AltTokenUAInterface } from \"../../example/AltTokenUA\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_endpoint\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_feeToken\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_feeHandler\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n inputs: [],\n name: \"endpoint\",\n outputs: [\n {\n internalType: \"contract ILayerZeroEndpoint\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"feeHandler\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"feeToken\",\n outputs: [\n {\n internalType: \"contract IERC20\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_fromAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n ],\n name: \"lzReceive\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n {\n internalType: \"uint256\",\n name: \"_fee\",\n type: \"uint256\",\n },\n ],\n name: \"send\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x608060405234801561001057600080fd5b5060405161077b38038061077b8339818101604052606081101561003357600080fd5b5080516020820151604090920151600080546001600160a01b039384166001600160a01b03199182161790915560018054948416948216949094179093556002805492909116919092161790556106ec8061008f6000396000f3fe6080604052600436106100595760003560e01c80635e280f11116100435780635e280f11146101f5578063647846a51461020a578063d120b3db1461021f57610059565b80621d35671461005e5780633c93adee146101b7575b600080fd5b34801561006a57600080fd5b506101b56004803603608081101561008157600080fd5b61ffff82351691908101906040810160208201356401000000008111156100a757600080fd5b8201836020820111156100b957600080fd5b803590602001918460018302840111640100000000831117156100db57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929567ffffffffffffffff85351695909490935060408101925060200135905064010000000081111561014057600080fd5b82018360208201111561015257600080fd5b8035906020019184600183028401116401000000008311171561017457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610374945050505050565b005b3480156101c357600080fd5b506101cc61037a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561020157600080fd5b506101cc610396565b34801561021657600080fd5b506101cc6103b2565b6101b5600480360360a081101561023557600080fd5b61ffff8235169173ffffffffffffffffffffffffffffffffffffffff6020820135169181019060608101604082013564010000000081111561027657600080fd5b82018360208201111561028857600080fd5b803590602001918460018302840111640100000000831117156102aa57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156102fd57600080fd5b82018360208201111561030f57600080fd5b8035906020019184600183028401116401000000008311171561033157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506103ce915050565b50505050565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b600154600254604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff928316602482015260448101859052905191909216916323b872dd9160648083019260209291908290030181600087803b15801561045357600080fd5b505af1158015610467573d6000803e3d6000fd5b505050506040513d602081101561047d57600080fd5b505060408051606086811b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020808401919091523090911b6034830152825180830360280181526048830193849052600080547fc58031000000000000000000000000000000000000000000000000000000000090955261ffff8a16604c85019081523360ac860181905260cc860183905260c0606c8701908152845161010c8801528451949773ffffffffffffffffffffffffffffffffffffffff169663c5803100968e968a968e9690948e9491939092608c83019260ec81019261012c90910191908b01908083838b5b8381101561058357818101518382015260200161056b565b50505050905090810190601f1680156105b05780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b838110156105e35781810151838201526020016105cb565b50505050905090810190601f1680156106105780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b8381101561064357818101518382015260200161062b565b50505050905090810190601f1680156106705780820380516001836020036101000a031916815260200191505b509950505050505050505050600060405180830381600087803b15801561069657600080fd5b505af11580156106aa573d6000803e3d6000fd5b5050505050505050505056fea264697066735822122090425e0a7759f750952ebcf5654c31c4636f322a10c9765a42529252c03912c064736f6c63430007060033\";\n\ntype AltTokenUAConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: AltTokenUAConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class AltTokenUA__factory extends ContractFactory {\n constructor(...args: AltTokenUAConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n _endpoint: PromiseOrValue<string>,\n _feeToken: PromiseOrValue<string>,\n _feeHandler: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<AltTokenUA> {\n return super.deploy(\n _endpoint,\n _feeToken,\n _feeHandler,\n overrides || {}\n ) as Promise<AltTokenUA>;\n }\n override getDeployTransaction(\n _endpoint: PromiseOrValue<string>,\n _feeToken: PromiseOrValue<string>,\n _feeHandler: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(\n _endpoint,\n _feeToken,\n _feeHandler,\n overrides || {}\n );\n }\n override attach(address: string): AltTokenUA {\n return super.attach(address) as AltTokenUA;\n }\n override connect(signer: Signer): AltTokenUA__factory {\n return super.connect(signer) as AltTokenUA__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): AltTokenUAInterface {\n return new utils.Interface(_abi) as AltTokenUAInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): AltTokenUA {\n return new Contract(address, _abi, signerOrProvider) as AltTokenUA;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nexport { IContractOne__factory } from \"./IContractOne__factory\";\nexport { ILayerZeroEndpoint__factory } from \"./ILayerZeroEndpoint__factory\";\nexport { ILayerZeroMessagingLibrary__factory } from \"./ILayerZeroMessagingLibrary__factory\";\nexport { ILayerZeroMessagingLibraryV2__factory } from \"./ILayerZeroMessagingLibraryV2__factory\";\nexport { ILayerZeroOracle__factory } from \"./ILayerZeroOracle__factory\";\nexport { ILayerZeroOracleV2__factory } from \"./ILayerZeroOracleV2__factory\";\nexport { ILayerZeroPriceFeed__factory } from \"./ILayerZeroPriceFeed__factory\";\nexport { ILayerZeroPriceFeedV2__factory } from \"./ILayerZeroPriceFeedV2__factory\";\nexport { ILayerZeroReceiver__factory } from \"./ILayerZeroReceiver__factory\";\nexport { ILayerZeroRelayer__factory } from \"./ILayerZeroRelayer__factory\";\nexport { ILayerZeroRelayerV2__factory } from \"./ILayerZeroRelayerV2__factory\";\nexport { ILayerZeroRelayerV2PriceData__factory } from \"./ILayerZeroRelayerV2PriceData__factory\";\nexport { ILayerZeroTreasury__factory } from \"./ILayerZeroTreasury__factory\";\nexport { ILayerZeroUltraLightNodeV1__factory } from \"./ILayerZeroUltraLightNodeV1__factory\";\nexport { ILayerZeroUltraLightNodeV2__factory } from \"./ILayerZeroUltraLightNodeV2__factory\";\nexport { ILayerZeroUserApplicationConfig__factory } from \"./ILayerZeroUserApplicationConfig__factory\";\nexport { ILayerZeroValidationLibrary__factory } from \"./ILayerZeroValidationLibrary__factory\";\nexport { IValidationLibraryHelper__factory } from \"./IValidationLibraryHelper__factory\";\nexport { IValidationLibraryHelperV2__factory } from \"./IValidationLibraryHelperV2__factory\";\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n IContractOne,\n IContractOneInterface,\n} from \"../../interfaces/IContractOne\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"x\",\n type: \"uint256\",\n },\n ],\n name: \"setIt\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport class IContractOne__factory {\n static readonly abi = _abi;\n static createInterface(): IContractOneInterface {\n return new utils.Interface(_abi) as IContractOneInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IContractOne {\n return new Contract(address, _abi, signerOrProvider) as IContractOne;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n ILayerZeroEndpoint,\n ILayerZeroEndpointInterface,\n} from \"../../interfaces/ILayerZeroEndpoint\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n {\n internalType: \"bool\",\n name: \"_payInZRO\",\n type: \"bool\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParam\",\n type: \"bytes\",\n },\n ],\n name: \"estimateFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"nativeFee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"zroFee\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_srcAddress\",\n type: \"bytes\",\n },\n ],\n name: \"forceResumeReceive\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getChainId\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_version\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_configType\",\n type: \"uint256\",\n },\n ],\n name: \"getConfig\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_srcAddress\",\n type: \"bytes\",\n },\n ],\n name: \"getInboundNonce\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_srcAddress\",\n type: \"address\",\n },\n ],\n name: \"getOutboundNonce\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n ],\n name: \"getReceiveLibraryAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n ],\n name: \"getReceiveVersion\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n ],\n name: \"getSendLibraryAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n ],\n name: \"getSendVersion\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_srcAddress\",\n type: \"bytes\",\n },\n ],\n name: \"hasStoredPayload\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"isReceivingPayload\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"isSendingPayload\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"address\",\n name: \"_dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"uint64\",\n name: \"_nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"uint256\",\n name: \"_gasLimit\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n ],\n name: \"receivePayload\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n ],\n name: \"retryPayload\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_destination\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n {\n internalType: \"address payable\",\n name: \"_refundAddress\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_zroPaymentAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"send\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_version\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint256\",\n name: \"_configType\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_config\",\n type: \"bytes\",\n },\n ],\n name: \"setConfig\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_version\",\n type: \"uint16\",\n },\n ],\n name: \"setReceiveVersion\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_version\",\n type: \"uint16\",\n },\n ],\n name: \"setSendVersion\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport class ILayerZeroEndpoint__factory {\n static readonly abi = _abi;\n static createInterface(): ILayerZeroEndpointInterface {\n return new utils.Interface(_abi) as ILayerZeroEndpointInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): ILayerZeroEndpoint {\n return new Contract(address, _abi, signerOrProvider) as ILayerZeroEndpoint;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n ILayerZeroMessagingLibrary,\n ILayerZeroMessagingLibraryInterface,\n} from \"../../interfaces/ILayerZeroMessagingLibrary\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n {\n internalType: \"bool\",\n name: \"_payInZRO\",\n type: \"bool\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParam\",\n type: \"bytes\",\n },\n ],\n name: \"estimateFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"nativeFee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"zroFee\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_configType\",\n type: \"uint256\",\n },\n ],\n name: \"getConfig\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n {\n internalType: \"uint64\",\n name: \"_lastNonce\",\n type: \"uint64\",\n },\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_destination\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n {\n internalType: \"address payable\",\n name: \"refundAddress\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_zroPaymentAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"send\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_configType\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_config\",\n type: \"bytes\",\n },\n ],\n name: \"setConfig\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport class ILayerZeroMessagingLibrary__factory {\n static readonly abi = _abi;\n static createInterface(): ILayerZeroMessagingLibraryInterface {\n return new utils.Interface(_abi) as ILayerZeroMessagingLibraryInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): ILayerZeroMessagingLibrary {\n return new Contract(\n address,\n _abi,\n signerOrProvider\n ) as ILayerZeroMessagingLibrary;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n ILayerZeroMessagingLibraryV2,\n ILayerZeroMessagingLibraryV2Interface,\n} from \"../../interfaces/ILayerZeroMessagingLibraryV2\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n {\n internalType: \"bool\",\n name: \"_payInZRO\",\n type: \"bool\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParam\",\n type: \"bytes\",\n },\n ],\n name: \"estimateFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"nativeFee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"zroFee\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_configType\",\n type: \"uint256\",\n },\n ],\n name: \"getConfig\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_path\",\n type: \"bytes\",\n },\n ],\n name: \"getOutboundNonce\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n {\n internalType: \"uint64\",\n name: \"_lastNonce\",\n type: \"uint64\",\n },\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_destination\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n {\n internalType: \"address payable\",\n name: \"refundAddress\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_zroPaymentAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"send\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_configType\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_config\",\n type: \"bytes\",\n },\n ],\n name: \"setConfig\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport class ILayerZeroMessagingLibraryV2__factory {\n static readonly abi = _abi;\n static createInterface(): ILayerZeroMessagingLibraryV2Interface {\n return new utils.Interface(_abi) as ILayerZeroMessagingLibraryV2Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): ILayerZeroMessagingLibraryV2 {\n return new Contract(\n address,\n _abi,\n signerOrProvider\n ) as ILayerZeroMessagingLibraryV2;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n ILayerZeroOracle,\n ILayerZeroOracleInterface,\n} from \"../../interfaces/ILayerZeroOracle\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundProofType\",\n type: \"uint16\",\n },\n ],\n name: \"getPrice\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"price\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_address\",\n type: \"address\",\n },\n ],\n name: \"isApproved\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"_outboundBlockConfirmations\",\n type: \"uint64\",\n },\n ],\n name: \"notifyOracle\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport class ILayerZeroOracle__factory {\n static readonly abi = _abi;\n static createInterface(): ILayerZeroOracleInterface {\n return new utils.Interface(_abi) as ILayerZeroOracleInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): ILayerZeroOracle {\n return new Contract(address, _abi, signerOrProvider) as ILayerZeroOracle;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n ILayerZeroOracleV2,\n ILayerZeroOracleV2Interface,\n} from \"../../interfaces/ILayerZeroOracleV2\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"_outboundBlockConfirmation\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n ],\n name: \"assignJob\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"price\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"_outboundBlockConfirmation\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n ],\n name: \"getFee\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"price\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address payable\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawFee\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport class ILayerZeroOracleV2__factory {\n static readonly abi = _abi;\n static createInterface(): ILayerZeroOracleV2Interface {\n return new utils.Interface(_abi) as ILayerZeroOracleV2Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): ILayerZeroOracleV2 {\n return new Contract(address, _abi, signerOrProvider) as ILayerZeroOracleV2;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n ILayerZeroPriceFeed,\n ILayerZeroPriceFeedInterface,\n} from \"../../interfaces/ILayerZeroPriceFeed\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint256\",\n name: \"_callDataSize\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"_gas\",\n type: \"uint256\",\n },\n ],\n name: \"estimateFeeByChain\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"fee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint128\",\n name: \"priceRatio\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n ],\n name: \"getPrice\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint128\",\n name: \"priceRatio\",\n type: \"uint128\",\n },\n {\n internalType: \"uint64\",\n name: \"gasPriceInUnit\",\n type: \"uint64\",\n },\n {\n internalType: \"uint32\",\n name: \"gasPerByte\",\n type: \"uint32\",\n },\n ],\n internalType: \"struct ILayerZeroPriceFeed.Price\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getPriceRatioDenominator\",\n outputs: [\n {\n internalType: \"uint128\",\n name: \"\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"nativeTokenPriceUSD\",\n outputs: [\n {\n internalType: \"uint128\",\n name: \"\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nexport class ILayerZeroPriceFeed__factory {\n static readonly abi = _abi;\n static createInterface(): ILayerZeroPriceFeedInterface {\n return new utils.Interface(_abi) as ILayerZeroPriceFeedInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): ILayerZeroPriceFeed {\n return new Contract(address, _abi, signerOrProvider) as ILayerZeroPriceFeed;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n ILayerZeroPriceFeedV2,\n ILayerZeroPriceFeedV2Interface,\n} from \"../../interfaces/ILayerZeroPriceFeedV2\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"uint32\",\n name: \"_dstEid\",\n type: \"uint32\",\n },\n {\n internalType: \"uint256\",\n name: \"_callDataSize\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"_gas\",\n type: \"uint256\",\n },\n ],\n name: \"estimateFeeByEid\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"fee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint128\",\n name: \"priceRatio\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"priceRatioDenominator\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"nativePriceUSD\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint32\",\n name: \"_dstEid\",\n type: \"uint32\",\n },\n ],\n name: \"getPrice\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint128\",\n name: \"priceRatio\",\n type: \"uint128\",\n },\n {\n internalType: \"uint64\",\n name: \"gasPriceInUnit\",\n type: \"uint64\",\n },\n {\n internalType: \"uint32\",\n name: \"gasPerByte\",\n type: \"uint32\",\n },\n ],\n internalType: \"struct ILayerZeroPriceFeedV2.Price\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getPriceRatioDenominator\",\n outputs: [\n {\n internalType: \"uint128\",\n name: \"\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nexport class ILayerZeroPriceFeedV2__factory {\n static readonly abi = _abi;\n static createInterface(): ILayerZeroPriceFeedV2Interface {\n return new utils.Interface(_abi) as ILayerZeroPriceFeedV2Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): ILayerZeroPriceFeedV2 {\n return new Contract(\n address,\n _abi,\n signerOrProvider\n ) as ILayerZeroPriceFeedV2;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n ILayerZeroReceiver,\n ILayerZeroReceiverInterface,\n} from \"../../interfaces/ILayerZeroReceiver\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"uint64\",\n name: \"_nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n ],\n name: \"lzReceive\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport class ILayerZeroReceiver__factory {\n static readonly abi = _abi;\n static createInterface(): ILayerZeroReceiverInterface {\n return new utils.Interface(_abi) as ILayerZeroReceiverInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): ILayerZeroReceiver {\n return new Contract(address, _abi, signerOrProvider) as ILayerZeroReceiver;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n ILayerZeroRelayer,\n ILayerZeroRelayerInterface,\n} from \"../../interfaces/ILayerZeroRelayer\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_payloadSize\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"getPrice\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"price\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_address\",\n type: \"address\",\n },\n ],\n name: \"isApproved\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"notifyRelayer\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport class ILayerZeroRelayer__factory {\n static readonly abi = _abi;\n static createInterface(): ILayerZeroRelayerInterface {\n return new utils.Interface(_abi) as ILayerZeroRelayerInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): ILayerZeroRelayer {\n return new Contract(address, _abi, signerOrProvider) as ILayerZeroRelayer;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n ILayerZeroRelayerV2,\n ILayerZeroRelayerV2Interface,\n} from \"../../interfaces/ILayerZeroRelayerV2\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_payloadSize\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"assignJob\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"price\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_payloadSize\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"getFee\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"price\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address payable\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawFee\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport class ILayerZeroRelayerV2__factory {\n static readonly abi = _abi;\n static createInterface(): ILayerZeroRelayerV2Interface {\n return new utils.Interface(_abi) as ILayerZeroRelayerV2Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): ILayerZeroRelayerV2 {\n return new Contract(address, _abi, signerOrProvider) as ILayerZeroRelayerV2;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n ILayerZeroRelayerV2PriceData,\n ILayerZeroRelayerV2PriceDataInterface,\n} from \"../../interfaces/ILayerZeroRelayerV2PriceData\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundProofType\",\n type: \"uint16\",\n },\n ],\n name: \"dstConfigLookup\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint128\",\n name: \"dstNativeAmtCap\",\n type: \"uint128\",\n },\n {\n internalType: \"uint64\",\n name: \"baseGas\",\n type: \"uint64\",\n },\n {\n internalType: \"uint64\",\n name: \"gasPerByte\",\n type: \"uint64\",\n },\n ],\n internalType: \"struct ILayerZeroRelayerV2PriceData.DstConfig\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n ],\n name: \"dstPriceLookup\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint128\",\n name: \"dstPriceRatio\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"dstGasPriceInWei\",\n type: \"uint128\",\n },\n ],\n internalType: \"struct ILayerZeroRelayerV2PriceData.DstPrice\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nexport class ILayerZeroRelayerV2PriceData__factory {\n static readonly abi = _abi;\n static createInterface(): ILayerZeroRelayerV2PriceDataInterface {\n return new utils.Interface(_abi) as ILayerZeroRelayerV2PriceDataInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): ILayerZeroRelayerV2PriceData {\n return new Contract(\n address,\n _abi,\n signerOrProvider\n ) as ILayerZeroRelayerV2PriceData;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n ILayerZeroTreasury,\n ILayerZeroTreasuryInterface,\n} from \"../../interfaces/ILayerZeroTreasury\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"payInZro\",\n type: \"bool\",\n },\n {\n internalType: \"uint256\",\n name: \"relayerFee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"oracleFee\",\n type: \"uint256\",\n },\n ],\n name: \"getFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nexport class ILayerZeroTreasury__factory {\n static readonly abi = _abi;\n static createInterface(): ILayerZeroTreasuryInterface {\n return new utils.Interface(_abi) as ILayerZeroTreasuryInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): ILayerZeroTreasury {\n return new Contract(address, _abi, signerOrProvider) as ILayerZeroTreasury;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n ILayerZeroUltraLightNodeV1,\n ILayerZeroUltraLightNodeV1Interface,\n} from \"../../interfaces/ILayerZeroUltraLightNodeV1\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_oracle\",\n type: \"address\",\n },\n ],\n name: \"oracleQuotedAmount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_relayer\",\n type: \"address\",\n },\n ],\n name: \"relayerQuotedAmount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_remoteChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"_lookupHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256\",\n name: \"_confirmations\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"_data\",\n type: \"bytes32\",\n },\n ],\n name: \"updateHash\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_gasLimit\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"_lookupHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"_transactionProof\",\n type: \"bytes\",\n },\n ],\n name: \"validateTransactionProof\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint8\",\n name: \"_type\",\n type: \"uint8\",\n },\n {\n internalType: \"address\",\n name: \"_owner\",\n type: \"address\",\n },\n {\n internalType: \"address payable\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawNative\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawZRO\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport class ILayerZeroUltraLightNodeV1__factory {\n static readonly abi = _abi;\n static createInterface(): ILayerZeroUltraLightNodeV1Interface {\n return new utils.Interface(_abi) as ILayerZeroUltraLightNodeV1Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): ILayerZeroUltraLightNodeV1 {\n return new Contract(\n address,\n _abi,\n signerOrProvider\n ) as ILayerZeroUltraLightNodeV1;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n ILayerZeroUltraLightNodeV2,\n ILayerZeroUltraLightNodeV2Interface,\n} from \"../../interfaces/ILayerZeroUltraLightNodeV2\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"lib\",\n type: \"address\",\n },\n ],\n name: \"AddInboundProofLibraryForChain\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"userApplication\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"configType\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"newConfig\",\n type: \"bytes\",\n },\n ],\n name: \"AppConfigUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"proofType\",\n type: \"uint16\",\n },\n ],\n name: \"EnableSupportedOutboundProof\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"lookupHash\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"blockData\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"confirmations\",\n type: \"uint256\",\n },\n ],\n name: \"HashReceived\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"payloadHash\",\n type: \"bytes32\",\n },\n ],\n name: \"InvalidDst\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n name: \"Packet\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"payloadHash\",\n type: \"bytes32\",\n },\n ],\n name: \"PacketReceived\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"adapterParams\",\n type: \"bytes\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n ],\n name: \"RelayerParams\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"size\",\n type: \"uint256\",\n },\n ],\n name: \"SetChainAddressSize\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"proofType\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"SetDefaultAdapterParamsForChainId\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"inboundProofLib\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"inboundBlockConfirm\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"relayer\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"outboundBlockConfirm\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n ],\n name: \"SetDefaultConfigForChainId\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"tokenAddress\",\n type: \"address\",\n },\n ],\n name: \"SetLayerZeroToken\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"uln\",\n type: \"bytes32\",\n },\n ],\n name: \"SetRemoteUln\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"treasuryAddress\",\n type: \"address\",\n },\n ],\n name: \"SetTreasury\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"msgSender\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"WithdrawNative\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"msgSender\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"WithdrawZRO\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_address\",\n type: \"address\",\n },\n ],\n name: \"accruedNativeFee\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_remoteChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_userApplicationAddress\",\n type: \"address\",\n },\n ],\n name: \"getAppConfig\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"inboundProofLibraryVersion\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"inboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"relayer\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"outboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n ],\n internalType:\n \"struct ILayerZeroUltraLightNodeV2.ApplicationConfiguration\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"_lookupHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256\",\n name: \"_confirmations\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"_blockData\",\n type: \"bytes32\",\n },\n ],\n name: \"updateHash\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_gasLimit\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"_lookupHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"_blockData\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"_transactionProof\",\n type: \"bytes\",\n },\n ],\n name: \"validateTransactionProof\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address payable\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawNative\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawZRO\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport class ILayerZeroUltraLightNodeV2__factory {\n static readonly abi = _abi;\n static createInterface(): ILayerZeroUltraLightNodeV2Interface {\n return new utils.Interface(_abi) as ILayerZeroUltraLightNodeV2Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): ILayerZeroUltraLightNodeV2 {\n return new Contract(\n address,\n _abi,\n signerOrProvider\n ) as ILayerZeroUltraLightNodeV2;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n ILayerZeroUserApplicationConfig,\n ILayerZeroUserApplicationConfigInterface,\n} from \"../../interfaces/ILayerZeroUserApplicationConfig\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_srcAddress\",\n type: \"bytes\",\n },\n ],\n name: \"forceResumeReceive\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_version\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint256\",\n name: \"_configType\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_config\",\n type: \"bytes\",\n },\n ],\n name: \"setConfig\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_version\",\n type: \"uint16\",\n },\n ],\n name: \"setReceiveVersion\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_version\",\n type: \"uint16\",\n },\n ],\n name: \"setSendVersion\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport class ILayerZeroUserApplicationConfig__factory {\n static readonly abi = _abi;\n static createInterface(): ILayerZeroUserApplicationConfigInterface {\n return new utils.Interface(\n _abi\n ) as ILayerZeroUserApplicationConfigInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): ILayerZeroUserApplicationConfig {\n return new Contract(\n address,\n _abi,\n signerOrProvider\n ) as ILayerZeroUserApplicationConfig;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n ILayerZeroValidationLibrary,\n ILayerZeroValidationLibraryInterface,\n} from \"../../interfaces/ILayerZeroValidationLibrary\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"blockData\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"_data\",\n type: \"bytes\",\n },\n {\n internalType: \"uint256\",\n name: \"_remoteAddressSize\",\n type: \"uint256\",\n },\n ],\n name: \"validateProof\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct LayerZeroPacket.Packet\",\n name: \"packet\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nexport class ILayerZeroValidationLibrary__factory {\n static readonly abi = _abi;\n static createInterface(): ILayerZeroValidationLibraryInterface {\n return new utils.Interface(_abi) as ILayerZeroValidationLibraryInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): ILayerZeroValidationLibrary {\n return new Contract(\n address,\n _abi,\n signerOrProvider\n ) as ILayerZeroValidationLibrary;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n IValidationLibraryHelper,\n IValidationLibraryHelperInterface,\n} from \"../../interfaces/IValidationLibraryHelper\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n {\n internalType: \"uint16\",\n name: \"srcChain\",\n type: \"uint16\",\n },\n {\n internalType: \"uint256\",\n name: \"sizeOfSrcAddress\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n ],\n name: \"getPacket\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct LayerZeroPacket.Packet\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getUtilsVersion\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"hashRoot\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256[]\",\n name: \"receiptSlotIndex\",\n type: \"uint256[]\",\n },\n {\n internalType: \"uint256\",\n name: \"logIndex\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes[]\",\n name: \"proof\",\n type: \"bytes[]\",\n },\n ],\n name: \"getVerifyLog\",\n outputs: [\n {\n components: [\n {\n internalType: \"bytes32\",\n name: \"contractAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"topicZeroSig\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IValidationLibraryHelper.ULNLog\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n] as const;\n\nexport class IValidationLibraryHelper__factory {\n static readonly abi = _abi;\n static createInterface(): IValidationLibraryHelperInterface {\n return new utils.Interface(_abi) as IValidationLibraryHelperInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IValidationLibraryHelper {\n return new Contract(\n address,\n _abi,\n signerOrProvider\n ) as IValidationLibraryHelper;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n IValidationLibraryHelperV2,\n IValidationLibraryHelperV2Interface,\n} from \"../../interfaces/IValidationLibraryHelperV2\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n {\n internalType: \"uint256\",\n name: \"sizeOfSrcAddress\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n ],\n name: \"getPacket\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct LayerZeroPacket.Packet\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getProofType\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getUtilsVersion\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"hashRoot\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256[]\",\n name: \"receiptSlotIndex\",\n type: \"uint256[]\",\n },\n {\n internalType: \"uint256\",\n name: \"logIndex\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes[]\",\n name: \"proof\",\n type: \"bytes[]\",\n },\n ],\n name: \"getVerifyLog\",\n outputs: [\n {\n components: [\n {\n internalType: \"bytes32\",\n name: \"contractAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"topicZeroSig\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IValidationLibraryHelperV2.ULNLog\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n] as const;\n\nexport class IValidationLibraryHelperV2__factory {\n static readonly abi = _abi;\n static createInterface(): IValidationLibraryHelperV2Interface {\n return new utils.Interface(_abi) as IValidationLibraryHelperV2Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IValidationLibraryHelperV2 {\n return new Contract(\n address,\n _abi,\n signerOrProvider\n ) as IValidationLibraryHelperV2;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nexport * as example from \"./example\";\nexport * as interfaces from \"./interfaces\";\nexport { PreCrime__factory } from \"./PreCrime__factory\";\nexport { PreCrimeBase__factory } from \"./PreCrimeBase__factory\";\nexport { PreCrimeView__factory } from \"./PreCrimeView__factory\";\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nexport * as inherit from \"./inherit\";\nexport * as view from \"./view\";\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nexport { CounterI__factory } from \"./CounterI__factory\";\nexport { CounterPrecrime__factory } from \"./CounterPrecrime__factory\";\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n BigNumberish,\n Overrides,\n} from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../../../../common\";\nimport type {\n CounterI,\n CounterIInterface,\n} from \"../../../../precrime/example/inherit/CounterI\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n ],\n name: \"Receive\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"dstChainId\",\n type: \"uint16\",\n },\n ],\n name: \"Send\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"CODE_MISS_SIMULATE_RESULT\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_PACKETS_OVERSIZE\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_PACKETS_UNSORTED\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_PRECRIME_FAILURE\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_SUCCESS\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_VERSION\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"PRECRIME_VERSION\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n ],\n name: \"_simulateAndRevert\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n ],\n name: \"brokeIncrement\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"brokeTotalCount\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"chainId\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n ],\n name: \"getConfig\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16[]\",\n name: \"peers\",\n type: \"uint16[]\",\n },\n ],\n name: \"getCountState\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint256\",\n name: \"totalCount\",\n type: \"uint256\",\n },\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"eid\",\n type: \"uint16\",\n },\n {\n internalType: \"uint256\",\n name: \"inboundCount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"outboundCount\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct CounterPrecrime.ChainPathCount[]\",\n name: \"chainPathCounts\",\n type: \"tuple[]\",\n },\n ],\n internalType: \"struct CounterPrecrime.CountState\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint32\",\n name: \"_chainId\",\n type: \"uint32\",\n },\n ],\n name: \"getInboundNonce\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint32\",\n name: \"\",\n type: \"uint32\",\n },\n ],\n name: \"inboundCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n ],\n name: \"increment\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"localChainId\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n ],\n name: \"lzReceive\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"maxBatchSize\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint32\",\n name: \"\",\n type: \"uint32\",\n },\n ],\n name: \"outboundCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n {\n internalType: \"bytes[]\",\n name: \"_simulation\",\n type: \"bytes[]\",\n },\n ],\n name: \"precrime\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"code\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"reason\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"precrimeAdmin\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n name: \"remoteChainIds\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n name: \"remotePrecrimeAddresses\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint64\",\n name: \"_maxBatchSize\",\n type: \"uint64\",\n },\n ],\n name: \"setMaxBatchSize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_precrimeAdmin\",\n type: \"address\",\n },\n ],\n name: \"setPrecrimeAdmin\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16[]\",\n name: \"_remoteChainIds\",\n type: \"uint16[]\",\n },\n {\n internalType: \"bytes32[]\",\n name: \"_remotePrecrimeAddresses\",\n type: \"bytes32[]\",\n },\n ],\n name: \"setRemotePrecrimeAddresses\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n ],\n name: \"simulate\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"code\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"version\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x60a06040523480156200001157600080fd5b50604051620028da380380620028da833981016040819052620000349162000092565b60f081901b6001600160f01b03191660805260008054600a600160401b600160e01b0319909116336801000000000000000002176001600160401b0319161790556006805461ffff90921661ffff19909216919091179055620000bd565b600060208284031215620000a4578081fd5b815161ffff81168114620000b6578182fd5b9392505050565b60805160f01c6127e6620000f4600039806105855280610c895280610d295280611183528061167f52806116f752506127e66000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063622f17f611610104578063bb968368116100a2578063e9dc2d7611610071578063e9dc2d761461038f578063ec67df30146103a2578063f0099e2a146103c3578063f95d1404146103d6576101da565b8063bb96836814610359578063c6be4b9b1461036c578063c892b2fc14610374578063d5795de41461037c576101da565b80639a8a0592116100de5780639a8a05921461030b5780639eb51f5b14610313578063ab2b35ec14610326578063afea44ef14610346576101da565b8063622f17f6146102c557806392d99a7f146102d85780639590dc9d146102eb576101da565b806334e300971161017c5780634e0ab1ab1161014b5780634e0ab1ab1461028f57806354fd4d50146102a257806356a47289146102aa5780635b056da5146102bd576101da565b806334e300971461025f57806334eafb111461026757806337de4ba11461027c578063472641c11461025f576101da565b806317c9efb0116101b857806317c9efb01461021a5780632913daa01461022257806329e7504d146102375780632ce909c61461024a576101da565b80630638fb64146101df5780630e735a63146101fd57806316fb432514610205575b600080fd5b6101e76103de565b6040516101f49190612567565b60405180910390f35b6101e76103e3565b610218610213366004611ee3565b6103e8565b005b6101e7610422565b61022a610427565b6040516101f49190612593565b610218610245366004611ee3565b610437565b61025261048d565b6040516101f4919061228c565b6101e76104b5565b61026f6104ba565b6040516101f491906123e7565b61021861028a366004611bdd565b6104c0565b61026f61029d366004611fd6565b61054a565b6101e761056b565b61026f6102b8366004611fee565b610571565b6101e7610583565b61026f6102d3366004611fee565b6105a7565b6102186102e6366004611ba2565b6105b9565b6102fe6102f9366004611bdd565b610672565b6040516101f491906123f0565b6101e76106ca565b6101e7610321366004611fd6565b6106d4565b610339610334366004611c86565b61070c565b6040516101f4919061252b565b610218610354366004612012565b61080a565b610218610367366004611cc1565b6108a2565b6101e7610966565b61021861096b565b61021861038a366004611ee3565b610976565b61026f61039d366004611fee565b6109c0565b6103b56103b0366004611c1d565b6109d8565b6040516101f4929190612576565b6103b56103d1366004611bdd565b610b2f565b6101e7610cd6565b600281565b600381565b7fcb0b88af7634dddeb013597e4fe3c505cc18eb1ba8a4f866b2116a8e7c03bc3f816040516104179190612567565b60405180910390a150565b600081565b60005467ffffffffffffffff1681565b61ffff81166000908152600460205260409081902080546001908101909155600380549091019055517f1a60eb2fda5707f4f6d9c8ff94ff294beddf56ed57f62a58fecb430cf4e7341690610417908390612567565b60005468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b600181565b60035481565b3330146104cc57600080fd5b6000806104d98484610cdc565b9150915060007f3ef05302deb6e14f33ae2b21afd103358bb2c6820565d5bae8d19d738bce07d18383604051602001610513929190612576565b60408051601f198184030181529082905261053192916020016120ed565b6040516020818303038152906040529050805160208201fd5b6002818154811061055a57600080fd5b600091825260209091200154905081565b614e2190565b60046020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60056020526000908152604090205481565b60005468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16331461061f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061690612460565b60405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff90921668010000000000000000027fffffffff0000000000000000000000000000000000000000ffffffffffffffff909216919091179055565b60606000806106818585610e01565b60005482516040519395509193506106b09260019267ffffffffffffffff9092169190869086906020016121cc565b604051602081830303815290604052925050505b92915050565b60065461ffff1681565b600181815481106106e457600080fd5b9060005260206000209060109182820401919006600202915054906101000a900461ffff1681565b61071461189d565b6000825167ffffffffffffffff8111801561072e57600080fd5b5060405190808252806020026020018201604052801561076857816020015b6107556118b7565b81526020019060019003908161074d5790505b50905060005b83518110156107ea57600084828151811061078557fe5b6020908102919091018101516040805160608101825261ffff83168082526000818152600486528381205483870152908152600590945292819020549083015284519092508490849081106107d657fe5b60209081029190910101525060010161076e565b50604080518082019091526003548152602081019190915290505b919050565b60005468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061690612460565b600080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff92909216919091179055565b60005468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146108ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061690612460565b805182511461093a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610616906124f4565b815161094d9060019060208501906118dc565b508051610961906002906020840190611985565b505050565b600481565b600380546001019055565b61ffff81166000908152600560205260409081902080546001019055517fcb0b88af7634dddeb013597e4fe3c505cc18eb1ba8a4f866b2116a8e7c03bc3f90610417908390612567565b63ffffffff1660009081526004602052604090205490565b60006060818367ffffffffffffffff811180156109f457600080fd5b50604051908082528060200260200182016040528015610a2857816020015b6060815260200190600190039081610a135790505b50905060008467ffffffffffffffff81118015610a4457600080fd5b50604051908082528060200260200182016040528015610a6e578160200160208202803683370190505b50905060005b85811015610af357600080888884818110610a8b57fe5b9050602002810190610a9d91906125a8565b810190610aaa9190611eff565b9150915081848481518110610abb57fe5b602002602001019061ffff16908161ffff168152505080858481518110610ade57fe5b60209081029190910101525050600101610a74565b50610aff8888836110a5565b909450925061ffff841615610b15575050610b26565b610b1e82611237565b909450925050505b94509492505050565b60006060610b3d848461130d565b909250905061ffff821615610b5157610ccf565b6000803073ffffffffffffffffffffffffffffffffffffffff166337de4ba160e01b8787604051602401610b869291906122ad565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051610bf19190612135565b6000604051808303816000865af19150503d8060008114610c2e576040519150601f19603f3d011682016040523d82523d6000602084013e610c33565b606091505b50915091508115610c70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061690612403565b610c798161149f565b909450925061ffff8416610ccc577f000000000000000000000000000000000000000000000000000000000000000083604051602001610cba929190612576565b60405160208183030381529060405292505b50505b9250929050565b614e2181565b6000606060005b83811015610d1957610d11858583818110610cfa57fe5b9050602002810190610d0c919061260b565b61151f565b600101610ce3565b50600060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000061ffff168152602001610dd26001805480602002602001604051908101604052809291908181526020018280548015610dc857602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610d8f5790505b505050505061070c565b9052604051610de4919060200161253e565b60408051808303601f190181529190526000969095509350505050565b60608082610ee2576001600281805480602002602001604051908101604052809291908181526020018280548015610e8057602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610e475790505b5050505050915080805480602002602001604051908101604052809291908181526020018280548015610ed257602002820191906000526020600020905b815481526020019060010190808311610ebe575b5050505050905091509150610ccf565b6000610ef6610ef185876126a2565b611532565b905061ffff81161561109d578061ffff1667ffffffffffffffff81118015610f1d57600080fd5b50604051908082528060200260200182016040528015610f47578160200160208202803683370190505b50925060008161ffff1667ffffffffffffffff81118015610f6757600080fd5b50604051908082528060200260200182016040528015610f91578160200160208202803683370190505b50925060005b60015461ffff8216101561109a5760005b61ffff811687111561109157600088888361ffff16818110610fc657fe5b9050602002810190610fd8919061260b565b610fe6906020810190611ee3565b90508061ffff1660018461ffff1681548110610ffe57fe5b60009182526020909120601082040154600f9091166002026101000a900461ffff161415611088578087858151811061103357fe5b602002602001019061ffff16908161ffff168152505060028361ffff168154811061105a57fe5b906000526020600020015486858151811061107157fe5b602090810291909101015250600190920191611091565b50600101610fa8565b50600101610f97565b50505b509250929050565b6000606083156111745760006110bb8686610e01565b50905060005b8151811015611171576000805b865181101561111e578383815181106110e357fe5b602002602001015161ffff168782815181106110fb57fe5b602002602001015161ffff161415611116576001915061111e565b6001016110ce565b50806111685760046040518060400160405280602081526020017f6d697373696e672072656d6f74652073696d756c6174696f6e20726573756c748152509450945050505061122f565b506001016110c1565b50505b6000805b84518110156111d5577f000000000000000000000000000000000000000000000000000000000000000061ffff168582815181106111b257fe5b602002602001015161ffff1614156111cd57600191506111d5565b600101611178565b508061121a57505060408051808201909152601f81527f6d697373696e67206c6f63616c2073696d756c6174696f6e20726573756c740060208201526004915061122f565b50506040805160208101909152600080825291505b935093915050565b60006060600080611247856115cf565b915091506000805b836020015160200151518110156112c8576000846020015160200151828151811061127657fe5b6020026020010151905060006112908583600001516116ea565b905061129c82826117e6565b909850965061ffff8816156112b657505050505050611308565b6040015192909201915060010161124f565b506112d7836020015182611852565b909550935061ffff8516156112ee57505050611308565b600060405180602001604052806000815250945094505050505b915091565b6000805460609067ffffffffffffffff1683111561134e57600260405160200161133690612151565b60405160208183030381529060405291509150610ccf565b82156114855760008080805b8681101561148057600088888381811061137057fe5b9050602002810190611382919061260b565b61138b906126f0565b90508461ffff16816000015161ffff161415806113ac575083816020015114155b15611424578051602082015160408301519196509450925060006113cf82611886565b60010190508067ffffffffffffffff168467ffffffffffffffff161461141e5760036040516020016114009061217a565b60405160208183030381529060405297509750505050505050610ccf565b50611477565b8260010192508267ffffffffffffffff16816040015167ffffffffffffffff161461147757600360405160200161145a906121a3565b604051602081830303815290604052965096505050505050610ccf565b5060010161135a565b505050505b505060408051602081019091526000808252909250929050565b60208101516000906060907fffffffff0000000000000000000000000000000000000000000000000000000081167f3ef0530200000000000000000000000000000000000000000000000000000000146114fb57835160208501fd5b600484019350838060200190518101906115159190611f4d565b9250925050915091565b61152f6102456020830183611ee3565b50565b6000805b60015461ffff821610156115c95760005b83518161ffff1610156115c057838161ffff168151811061156457fe5b60200260200101516000015161ffff1660018361ffff168154811061158557fe5b60009182526020909120601082040154600f9091166002026101000a900461ffff1614156115b8576001909201916115c0565b600101611547565b50600101611536565b50919050565b6115d76119c0565b6060825167ffffffffffffffff811180156115f157600080fd5b5060405190808252806020026020018201604052801561162b57816020015b6116186119c0565b8152602001906001900390816116105790505b50905060005b83518110156116e457600084828151811061164857fe5b60200260200101519050808060200190518101906116669190611d7a565b83838151811061167257fe5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000061ffff168383815181106116ae57fe5b60200260200101516000015161ffff1614156116db578282815181106116d057fe5b602002602001015193505b50600101611631565b50915091565b6116f26118b7565b61ffff7f00000000000000000000000000000000000000000000000000000000000000001660005b84518110156117b357600085828151811061173157fe5b602002602001015190508461ffff16816000015161ffff1614156117aa5760005b816020015160200151518110156117a8576000826020015160200151828151811061177957fe5b6020026020010151905084816000015161ffff16141561179f5794506106c49350505050565b50600101611752565b505b5060010161171a565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061690612497565b6000606082604001518460200151111561181e57600160405180606001604052806026815260200161278b6026913991509150610ccf565b82602001518460400151111561148557600160405180606001604052806026815260200161273d6026913991509150610ccf565b600060608284600001511115610ccf5760016040518060600160405280602881526020016127636028913991509150610ccf565b5161ffff1660009081526004602052604090205490565b604051806040016040528060008152602001606081525090565b6040518060600160405280600061ffff16815260200160008152602001600081525090565b82805482825590600052602060002090600f016010900481019282156119755791602002820160005b8382111561194557835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302611905565b80156119735782816101000a81549061ffff0219169055600201602081600101049283019260010302611945565b505b506119819291506119e3565b5090565b828054828255906000526020600020908101928215611975579160200282015b828111156119755782518255916020019190600101906119a5565b6040518060400160405280600061ffff1681526020016119de61189d565b905290565b5b8082111561198157600081556001016119e4565b60008083601f840112611a09578182fd5b50813567ffffffffffffffff811115611a20578182fd5b6020830191508360208083028501011115610ccf57600080fd5b600082601f830112611a4a578081fd5b81356020611a5f611a5a83612662565b61263e565b8281528181019085830183850287018401881015611a7b578586fd5b855b85811015611aa2578135611a908161272c565b84529284019290840190600101611a7d565b5090979650505050505050565b600082601f830112611abf578081fd5b8135611acd611a5a82612680565b818152846020838601011115611ae1578283fd5b816020850160208301379081016020019190915292915050565b600060808284031215611b0c578081fd5b6040516080810167ffffffffffffffff8282108183111715611b2a57fe5b8160405282935084359150611b3e8261272c565b81835260208501356020840152611b5760408601611b8a565b60408401526060850135915080821115611b7057600080fd5b50611b7d85828601611aaf565b6060830152505092915050565b803567ffffffffffffffff8116811461080557600080fd5b600060208284031215611bb3578081fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114611bd6578182fd5b9392505050565b60008060208385031215611bef578081fd5b823567ffffffffffffffff811115611c05578182fd5b611c11858286016119f8565b90969095509350505050565b60008060008060408587031215611c32578182fd5b843567ffffffffffffffff80821115611c49578384fd5b611c55888389016119f8565b90965094506020870135915080821115611c6d578384fd5b50611c7a878288016119f8565b95989497509550505050565b600060208284031215611c97578081fd5b813567ffffffffffffffff811115611cad578182fd5b611cb984828501611a3a565b949350505050565b60008060408385031215611cd3578182fd5b823567ffffffffffffffff80821115611cea578384fd5b611cf686838701611a3a565b9350602091508185013581811115611d0c578384fd5b85019050601f81018613611d1e578283fd5b8035611d2c611a5a82612662565b81815283810190838501858402850186018a1015611d48578687fd5b8694505b83851015611d6a578035835260019490940193918501918501611d4c565b5080955050505050509250929050565b60006020808385031215611d8c578182fd5b825167ffffffffffffffff80821115611da3578384fd5b81850191506040808388031215611db8578485fd5b80518181018181108482111715611dcb57fe5b82528351611dd88161272c565b81528385015183811115611dea578687fd5b808501945050818489031215611dfe578586fd5b81518281018181108582111715611e1157fe5b8352845181528585015184811115611e27578788fd5b80860195505088601f860112611e3b578687fd5b8451611e49611a5a82612662565b8181528781019087890160608085028a018b018e1015611e67578b8cfd5b8b99505b848a1015611ec95780828f031215611e81578b8cfd5b87518181018181108b82111715611e9457fe5b89528251611ea18161272c565b8152828c01518c8201528883015189820152845260019990990198928a019290810190611e6b565b505083890152505094810194909452509195945050505050565b600060208284031215611ef4578081fd5b8135611bd68161272c565b60008060408385031215611f11578182fd5b8235611f1c8161272c565b9150602083013567ffffffffffffffff811115611f37578182fd5b611f4385828601611aaf565b9150509250929050565b60008060408385031215611f5f578182fd5b8251611f6a8161272c565b602084015190925067ffffffffffffffff811115611f86578182fd5b8301601f81018513611f96578182fd5b8051611fa4611a5a82612680565b818152866020838501011115611fb8578384fd5b611fc98260208301602086016126fc565b8093505050509250929050565b600060208284031215611fe7578081fd5b5035919050565b600060208284031215611fff578081fd5b813563ffffffff81168114611bd6578182fd5b600060208284031215612023578081fd5b611bd682611b8a565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000815180845261206e8160208601602086016126fc565b601f01601f19169290920160200192915050565b600060408084018351855260208085015183828801528281518085526060945084890191508383019250865b818110156120df578351805161ffff16845285810151868501528701518784015292840192918501916001016120ae565b509098975050505050505050565b60007fffffffff000000000000000000000000000000000000000000000000000000008416825282516121278160048501602087016126fc565b919091016004019392505050565b600082516121478184602087016126fc565b9190910192915050565b7f7061636b6574732073697a6520657863656564206c696d6974656400000000008152601b0190565b7f736b697070656420696e626f756e644e6f6e636520666f7262696464656e00008152601e0190565b7f756e736f72746564207061636b65747300000000000000000000000000000000815260100190565b60007fffff0000000000000000000000000000000000000000000000000000000000008760f01b1682527fffffffffffffffff0000000000000000000000000000000000000000000000008660c01b16600283015284600a830152602a820184516020808701845b8381101561225457815161ffff1685529382019390820190600101612234565b50508551818701939250845b8181101561227c57845184529382019392820192600101612260565b50919a9950505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602080825281810183905260009060408084018583028501820187855b888110156120df577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818b360301811261232a578788fd5b8a01608081356123398161272c565b61ffff1685528188013588860152612352878301611b8a565b67ffffffffffffffff8082168988015260609150818401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1853603018112612399578b8cfd5b84018035828111156123a9578c8dfd5b8036038613156123b7578c8dfd5b84848a01526123cb858a01828e850161202c565b998c0199985050509489019450505060019190910190506122ca565b90815260200190565b600060208252611bd66020830184612056565b60208082526024908201527f73696d756c6174652073686f756c64206e657665722072657475726e2073756360408201527f6365737300000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252600a908201527f6f6e6c792061646d696e00000000000000000000000000000000000000000000604082015260600190565b6020808252603d908201527f5072656372696d653a20636f756e745374617465206e6f7420666f756e642c2060408201527f61726520796f75206d697373696e6720612073696d756c6174696f6e3f000000606082015260800190565b60208082526016908201527f5072656372696d653a20696e76616c69642073697a6500000000000000000000604082015260600190565b600060208252611bd66020830184612082565b60006020825261ffff83511660208301526020830151604080840152611cb96060840182612082565b61ffff91909116815260200190565b600061ffff8416825260406020830152611cb96040830184612056565b67ffffffffffffffff91909116815260200190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126125dc578283fd5b83018035915067ffffffffffffffff8211156125f6578283fd5b602001915036819003821315610ccf57600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112612147578182fd5b60405181810167ffffffffffffffff8111828210171561265a57fe5b604052919050565b600067ffffffffffffffff82111561267657fe5b5060209081020190565b600067ffffffffffffffff82111561269457fe5b50601f01601f191660200190565b60006126b0611a5a84612662565b8381526020808201919084845b878110156126e4576126d23683358901611afb565b855293820193908201906001016126bd565b50919695505050505050565b60006106c43683611afb565b60005b838110156127175781810151838201526020016126ff565b83811115612726576000848401525b50505050565b61ffff8116811461152f57600080fdfe5072656372696d653a206f7574626f756e64436f756e74203e20696e626f756e64436f756e745072656372696d653a20746f74616c436f756e74203e2073756d206f7574626f756e64436f756e745072656372696d653a20696e626f756e64436f756e74203e206f7574626f756e64436f756e74a26469706673582212202c9c9ff37abde3d3d5bc2a6c39197678998a4e2a1c314b48fd841c2c50e4d3c064736f6c63430007060033\";\n\ntype CounterIConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: CounterIConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class CounterI__factory extends ContractFactory {\n constructor(...args: CounterIConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n _chainId: PromiseOrValue<BigNumberish>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<CounterI> {\n return super.deploy(_chainId, overrides || {}) as Promise<CounterI>;\n }\n override getDeployTransaction(\n _chainId: PromiseOrValue<BigNumberish>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(_chainId, overrides || {});\n }\n override attach(address: string): CounterI {\n return super.attach(address) as CounterI;\n }\n override connect(signer: Signer): CounterI__factory {\n return super.connect(signer) as CounterI__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): CounterIInterface {\n return new utils.Interface(_abi) as CounterIInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): CounterI {\n return new Contract(address, _abi, signerOrProvider) as CounterI;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n CounterPrecrime,\n CounterPrecrimeInterface,\n} from \"../../../../precrime/example/inherit/CounterPrecrime\";\n\nconst _abi = [\n {\n inputs: [],\n name: \"CODE_MISS_SIMULATE_RESULT\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_PACKETS_OVERSIZE\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_PACKETS_UNSORTED\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_PRECRIME_FAILURE\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_SUCCESS\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_VERSION\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"PRECRIME_VERSION\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n ],\n name: \"_simulateAndRevert\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n ],\n name: \"getConfig\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16[]\",\n name: \"peers\",\n type: \"uint16[]\",\n },\n ],\n name: \"getCountState\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint256\",\n name: \"totalCount\",\n type: \"uint256\",\n },\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"eid\",\n type: \"uint16\",\n },\n {\n internalType: \"uint256\",\n name: \"inboundCount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"outboundCount\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct CounterPrecrime.ChainPathCount[]\",\n name: \"chainPathCounts\",\n type: \"tuple[]\",\n },\n ],\n internalType: \"struct CounterPrecrime.CountState\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"localChainId\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"maxBatchSize\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n {\n internalType: \"bytes[]\",\n name: \"_simulation\",\n type: \"bytes[]\",\n },\n ],\n name: \"precrime\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"code\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"reason\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"precrimeAdmin\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n name: \"remoteChainIds\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n name: \"remotePrecrimeAddresses\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint64\",\n name: \"_maxBatchSize\",\n type: \"uint64\",\n },\n ],\n name: \"setMaxBatchSize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_precrimeAdmin\",\n type: \"address\",\n },\n ],\n name: \"setPrecrimeAdmin\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16[]\",\n name: \"_remoteChainIds\",\n type: \"uint16[]\",\n },\n {\n internalType: \"bytes32[]\",\n name: \"_remotePrecrimeAddresses\",\n type: \"bytes32[]\",\n },\n ],\n name: \"setRemotePrecrimeAddresses\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n ],\n name: \"simulate\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"code\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"version\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n] as const;\n\nexport class CounterPrecrime__factory {\n static readonly abi = _abi;\n static createInterface(): CounterPrecrimeInterface {\n return new utils.Interface(_abi) as CounterPrecrimeInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): CounterPrecrime {\n return new Contract(address, _abi, signerOrProvider) as CounterPrecrime;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nexport { CounterPrecrimeView__factory } from \"./CounterPrecrimeView__factory\";\nexport { CounterV__factory } from \"./CounterV__factory\";\nexport { CounterView__factory } from \"./CounterView__factory\";\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n BigNumberish,\n Overrides,\n} from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../../../../common\";\nimport type {\n CounterPrecrimeView,\n CounterPrecrimeViewInterface,\n} from \"../../../../precrime/example/view/CounterPrecrimeView\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_localChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_counterView\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n inputs: [],\n name: \"CODE_MISS_SIMULATE_RESULT\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_PACKETS_OVERSIZE\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_PACKETS_UNSORTED\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_PRECRIME_FAILURE\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_SUCCESS\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_VERSION\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"PRECRIME_VERSION\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"counterView\",\n outputs: [\n {\n internalType: \"contract CounterView\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n ],\n name: \"getConfig\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"localChainId\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"maxBatchSize\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n {\n internalType: \"bytes[]\",\n name: \"_simulation\",\n type: \"bytes[]\",\n },\n ],\n name: \"precrime\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"code\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"reason\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"precrimeAdmin\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n name: \"remoteChainIds\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n name: \"remotePrecrimeAddresses\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_counterView\",\n type: \"address\",\n },\n ],\n name: \"setCounterView\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint64\",\n name: \"_maxBatchSize\",\n type: \"uint64\",\n },\n ],\n name: \"setMaxBatchSize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_precrimeAdmin\",\n type: \"address\",\n },\n ],\n name: \"setPrecrimeAdmin\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16[]\",\n name: \"_remoteChainIds\",\n type: \"uint16[]\",\n },\n {\n internalType: \"bytes32[]\",\n name: \"_remotePrecrimeAddresses\",\n type: \"bytes32[]\",\n },\n ],\n name: \"setRemotePrecrimeAddresses\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n ],\n name: \"simulate\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"code\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"version\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x60a06040523480156200001157600080fd5b50604051620027e8380380620027e883398101604081905262000034916200009f565b60f09190911b6001600160f01b03191660805260008054600180546001600160a01b0319166001600160a01b0390941693909317909255600a600160401b600160e01b0319909216336801000000000000000002176001600160401b031916919091179055620000ec565b60008060408385031215620000b2578182fd5b825161ffff81168114620000c4578283fd5b60208401519092506001600160a01b0381168114620000e1578182fd5b809150509250929050565b60805160f01c6126c56200012360003980610417528061086d5280610c3f528061114952806112e8528061135f52506126c56000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806354fd4d50116100d8578063afea44ef1161008c578063ec67df3011610066578063ec67df301461029d578063f0099e2a146102be578063f95d1404146102d157610177565b8063afea44ef1461026f578063bb96836814610282578063c6be4b9b1461029557610177565b806392d99a7f116100bd57806392d99a7f146102295780639590dc9d1461023c5780639eb51f5b1461025c57610177565b806354fd4d50146102195780635b056da51461022157610177565b80632913daa01161012f57806334e300971161011457806334e30097146101f1578063472641c1146101f15780634e0ab1ab146101f957610177565b80632913daa0146101d45780632ce909c6146101e957610177565b80631046c46a116101605780631046c46a146101a257806317c9efb0146101b7578063224227cd146101bf57610177565b80630638fb641461017c5780630e735a631461019a575b600080fd5b6101846102d9565b6040516101919190612447565b60405180910390f35b6101846102de565b6101b56101b0366004611a5e565b6102e3565b005b610184610390565b6101c7610395565b6040516101919190611f8d565b6101dc6103b1565b6040516101919190612473565b6101c76103c1565b6101846103e9565b61020c610207366004611d26565b6103ee565b6040516101919190612337565b61018461040f565b610184610415565b6101b5610237366004611a5e565b610439565b61024f61024a366004611a7a565b6104e9565b6040516101919190612340565b61018461026a366004611d26565b610541565b6101b561027d366004611d3e565b610579565b6101b5610290366004611b23565b610611565b6101846106d5565b6102b06102ab366004611aba565b6106da565b604051610191929190612456565b6102b06102cc366004611a7a565b610831565b6101846108b7565b600281565b600381565b60005468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034090612353565b60405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600081565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60005467ffffffffffffffff1681565b60005468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b600181565b600381815481106103fe57600080fd5b600091825260209091200154905081565b61271190565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034090612353565b6000805473ffffffffffffffffffffffffffffffffffffffff90921668010000000000000000027fffffffff0000000000000000000000000000000000000000ffffffffffffffff909216919091179055565b60606000806104f885856108bd565b60005482516040519395509193506105279260019267ffffffffffffffff909216919086908690602001611ecd565b604051602081830303815290604052925050505b92915050565b6002818154811061055157600080fd5b9060005260206000209060109182820401919006600202915054906101000a900461ffff1681565b60005468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146105d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034090612353565b600080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff92909216919091179055565b60005468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16331461066e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034090612353565b80518251146106a9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610340906123c1565b81516106bc90600290602085019061163d565b5080516106d09060039060208401906116e6565b505050565b600481565b60006060818367ffffffffffffffff811180156106f657600080fd5b5060405190808252806020026020018201604052801561072a57816020015b60608152602001906001900390816107155790505b50905060008467ffffffffffffffff8111801561074657600080fd5b50604051908082528060200260200182016040528015610770578160200160208202803683370190505b50905060005b858110156107f55760008088888481811061078d57fe5b905060200281019061079f9190612488565b8101906107ac9190611ce2565b91509150818484815181106107bd57fe5b602002602001019061ffff16908161ffff1681525050808584815181106107e057fe5b60209081029190910101525050600101610776565b50610801888883610b61565b909450925061ffff841615610817575050610828565b61082082610cf3565b909450925050505b94509492505050565b6000606061083f8484610dc9565b909250905061ffff821615610853576108b0565b61085d8484610f5b565b909250905061ffff82166108b0577f00000000000000000000000000000000000000000000000000000000000000008160405160200161089e929190612456565b60405160208183030381529060405290505b9250929050565b61271181565b6060808261099e57600260038180548060200260200160405190810160405280929190818152602001828054801561093c57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116109035790505b505050505091508080548060200260200160405190810160405280929190818152602001828054801561098e57602002820191906000526020600020905b81548152602001906001019080831161097a575b50505050509050915091506108b0565b60006109b26109ad8587612576565b6111a0565b905061ffff811615610b59578061ffff1667ffffffffffffffff811180156109d957600080fd5b50604051908082528060200260200182016040528015610a03578160200160208202803683370190505b50925060008161ffff1667ffffffffffffffff81118015610a2357600080fd5b50604051908082528060200260200182016040528015610a4d578160200160208202803683370190505b50925060005b60025461ffff82161015610b565760005b61ffff8116871115610b4d57600088888361ffff16818110610a8257fe5b9050602002810190610a9491906124eb565b610aa2906020810190611cc6565b90508061ffff1660028461ffff1681548110610aba57fe5b60009182526020909120601082040154600f9091166002026101000a900461ffff161415610b445780878581518110610aef57fe5b602002602001019061ffff16908161ffff168152505060038361ffff1681548110610b1657fe5b9060005260206000200154868581518110610b2d57fe5b602090810291909101015250600190920191610b4d565b50600101610a64565b50600101610a53565b50505b509250929050565b600060608315610c30576000610b7786866108bd565b50905060005b8151811015610c2d576000805b8651811015610bda57838381518110610b9f57fe5b602002602001015161ffff16878281518110610bb757fe5b602002602001015161ffff161415610bd25760019150610bda565b600101610b8a565b5080610c245760046040518060400160405280602081526020017f6d697373696e672072656d6f74652073696d756c6174696f6e20726573756c7481525094509450505050610ceb565b50600101610b7d565b50505b6000805b8451811015610c91577f000000000000000000000000000000000000000000000000000000000000000061ffff16858281518110610c6e57fe5b602002602001015161ffff161415610c895760019150610c91565b600101610c34565b5080610cd657505060408051808201909152601f81527f6d697373696e67206c6f63616c2073696d756c6174696f6e20726573756c7400602082015260049150610ceb565b50506040805160208101909152600080825291505b935093915050565b60006060600080610d038561123d565b915091506000805b83602001516020015151811015610d845760008460200151602001518281518110610d3257fe5b602002602001015190506000610d4c858360000151611352565b9050610d58828261144e565b909850965061ffff881615610d7257505050505050610dc4565b60400151929092019150600101610d0b565b50610d938360200151826114ba565b909550935061ffff851615610daa57505050610dc4565b600060405180602001604052806000815250945094505050505b915091565b6000805460609067ffffffffffffffff16831115610e0a576002604051602001610df290611e52565b604051602081830303815290604052915091506108b0565b8215610f415760008080805b86811015610f3c576000888883818110610e2c57fe5b9050602002810190610e3e91906124eb565b610e47906125c4565b90508461ffff16816000015161ffff16141580610e68575083816020015114155b15610ee057805160208201516040830151919650945092506000610e8b826114ee565b60010190508067ffffffffffffffff168467ffffffffffffffff1614610eda576003604051602001610ebc90611e7b565b604051602081830303815290604052975097505050505050506108b0565b50610f33565b8260010192508267ffffffffffffffff16816040015167ffffffffffffffff1614610f33576003604051602001610f1690611ea4565b6040516020818303038152906040529650965050505050506108b0565b50600101610e16565b505050505b505060408051602081019091526000808252909250929050565b6001546040517fab2b35ec000000000000000000000000000000000000000000000000000000008152600091606091839173ffffffffffffffffffffffffffffffffffffffff169063ab2b35ec90610fb890600290600401611fae565b60006040518083038186803b158015610fd057600080fd5b505afa158015610fe4573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261102a9190810190611bff565b905060005b8481101561113957600086868381811061104557fe5b905060200281019061105791906124eb565b611060906125c4565b60015481516040517f0e0ac9d700000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff90911691630e0ac9d7916110bc918791906004016123f8565b60006040518083038186803b1580156110d457600080fd5b505afa1580156110e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261112e9190810190611bff565b92505060010161102f565b50600060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000061ffff16815260200183815250604051602001611185919061241e565b60405160208183030381529060405292509250509250929050565b6000805b60025461ffff821610156112375760005b83518161ffff16101561122e57838161ffff16815181106111d257fe5b60200260200101516000015161ffff1660028361ffff16815481106111f357fe5b60009182526020909120601082040154600f9091166002026101000a900461ffff1614156112265760019092019161122e565b6001016111b5565b506001016111a4565b50919050565b611245611721565b6060825167ffffffffffffffff8111801561125f57600080fd5b5060405190808252806020026020018201604052801561129957816020015b611286611721565b81526020019060019003908161127e5790505b50905060005b835181101561134c578381815181106112b457fe5b60200260200101518060200190518101906112cf9190611c3a565b8282815181106112db57fe5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000061ffff1682828151811061131757fe5b60200260200101516000015161ffff1614156113445781818151811061133957fe5b602002602001015192505b60010161129f565b50915091565b61135a611744565b61ffff7f00000000000000000000000000000000000000000000000000000000000000001660005b845181101561141b57600085828151811061139957fe5b602002602001015190508461ffff16816000015161ffff1614156114125760005b8160200151602001515181101561141057600082602001516020015182815181106113e157fe5b6020026020010151905084816000015161ffff16141561140757945061053b9350505050565b506001016113ba565b505b50600101611382565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103409061238a565b6000606082604001518460200151111561148657600160405180606001604052806026815260200161266a60269139915091506108b0565b826020015184604001511115610f4157600160405180606001604052806026815260200161261c60269139915091506108b0565b600060608284600001511115610f4157600160405180606001604052806028815260200161264260289139915091506108b0565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166361bc221a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561155957600080fd5b505afa15801561156d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115919190611be3565b83516040517f58b46b3100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff8316916358b46b31916115e691600401612447565b60206040518083038186803b1580156115fe57600080fd5b505afa158015611612573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116369190611d5a565b9392505050565b82805482825590600052602060002090600f016010900481019282156116d65791602002820160005b838211156116a657835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302611666565b80156116d45782816101000a81549061ffff02191690556002016020816001010492830192600103026116a6565b505b506116e2929150611769565b5090565b8280548282559060005260206000209081019282156116d6579160200282015b828111156116d6578251825591602001919060010190611706565b6040518060400160405280600061ffff16815260200161173f61177e565b905290565b6040518060600160405280600061ffff16815260200160008152602001600081525090565b5b808211156116e2576000815560010161176a565b604051806040016040528060008152602001606081525090565b600082601f8301126117a8578081fd5b813560206117bd6117b88361254c565b612528565b82815281810190858301838502870184018810156117d9578586fd5b855b858110156117f7578135845292840192908401906001016117db565b5090979650505050505050565b60008083601f840112611815578182fd5b50813567ffffffffffffffff81111561182c578182fd5b60208301915083602080830285010111156108b057600080fd5b600082601f830112611856578081fd5b813567ffffffffffffffff81111561186a57fe5b61189b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612528565b8181528460208386010111156118af578283fd5b816020850160208301379081016020019190915292915050565b600060408083850312156118db578182fd5b805181810167ffffffffffffffff82821081831117156118f757fe5b8184528294508551835260209150818601518181111561191657600080fd5b8601601f8101881361192757600080fd5b80516119356117b88261254c565b818152848101908386016060808502860188018d101561195457600080fd5b60009550855b858110156119b45781838f031215611970578687fd5b8a518281018181108a8211171561198357fe5b8c528351611990816125f5565b8152838a01518a8201528b8401518c8201528552938801939181019160010161195a565b5050508086880152505050505050505092915050565b6000608082840312156119db578081fd5b6040516080810167ffffffffffffffff82821081831117156119f957fe5b8160405282935084359150611a0d826125f5565b8183526020850135602084015260408501359150611a2a82612605565b8160408401526060850135915080821115611a4457600080fd5b50611a5185828601611846565b6060830152505092915050565b600060208284031215611a6f578081fd5b8135611636816125d0565b60008060208385031215611a8c578081fd5b823567ffffffffffffffff811115611aa2578182fd5b611aae85828601611804565b90969095509350505050565b60008060008060408587031215611acf578182fd5b843567ffffffffffffffff80821115611ae6578384fd5b611af288838901611804565b90965094506020870135915080821115611b0a578384fd5b50611b1787828801611804565b95989497509550505050565b60008060408385031215611b35578182fd5b823567ffffffffffffffff80821115611b4c578384fd5b818501915085601f830112611b5f578384fd5b81356020611b6f6117b88361254c565b82815281810190858301838502870184018b1015611b8b578889fd5b8896505b84871015611bb6578035611ba2816125f5565b835260019690960195918301918301611b8f565b5096505086013592505080821115611bcc578283fd5b50611bd985828601611798565b9150509250929050565b600060208284031215611bf4578081fd5b8151611636816125d0565b600060208284031215611c10578081fd5b815167ffffffffffffffff811115611c26578182fd5b611c32848285016118c9565b949350505050565b600060208284031215611c4b578081fd5b815167ffffffffffffffff80821115611c62578283fd5b9083019060408286031215611c75578283fd5b604051604081018181108382111715611c8a57fe5b6040528251611c98816125f5565b8152602083015182811115611cab578485fd5b611cb7878286016118c9565b60208301525095945050505050565b600060208284031215611cd7578081fd5b8135611636816125f5565b60008060408385031215611cf4578182fd5b8235611cff816125f5565b9150602083013567ffffffffffffffff811115611d1a578182fd5b611bd985828601611846565b600060208284031215611d37578081fd5b5035919050565b600060208284031215611d4f578081fd5b813561163681612605565b600060208284031215611d6b578081fd5b815161163681612605565b60008151808452815b81811015611d9b57602081850181015186830182015201611d7f565b81811115611dac5782602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600060408084018351855260208085015183828801528281518085526060945084890191508383019250865b81811015611e3c578351805161ffff1684528581015186850152870151878401529284019291850191600101611e0b565b509098975050505050505050565b61ffff169052565b7f7061636b6574732073697a6520657863656564206c696d6974656400000000008152601b0190565b7f736b697070656420696e626f756e644e6f6e636520666f7262696464656e00008152601e0190565b7f756e736f72746564207061636b65747300000000000000000000000000000000815260100190565b60007fffff0000000000000000000000000000000000000000000000000000000000008760f01b1682527fffffffffffffffff0000000000000000000000000000000000000000000000008660c01b16600283015284600a830152602a820184516020808701845b83811015611f5557815161ffff1685529382019390820190600101611f35565b50508551818701939250845b81811015611f7d57845184529382019392820192600101611f61565b50919a9950505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60006020808301818452808554611fc58184612337565b9150611fd08761256a565b9250845b81600f8201101561212357835461ffff611ff085828416611e4a565b612001878601828460101c16611e4a565b604061201381870183858b1c16611e4a565b6060612026818801848660301c16611e4a565b60806120388189018587861c16611e4a565b60a0925061204d838901858760501c16611e4a565b60c061205f818a018688861c16611e4a565b60e09250612074838a01868860701c16611e4a565b6120866101008a018688851c16611e4a565b6120996101208a01868860901c16611e4a565b6120ab6101408a018688871c16611e4a565b6120be6101608a01868860b01c16611e4a565b6120d06101808a018688841c16611e4a565b50506120e56101a08801848660d01c16611e4a565b6120f76101c088018486841c16611e4a565b50505061210b6101e085018260f01c611e4a565b50600193909301926102009290920191601001611fd4565b925492818110156121445761213c8361ffff8616611e4a565b918401916001015b818110156121655761215d8361ffff8660101c16611e4a565b918401916001015b818110156121855761217d8361ffff86881c16611e4a565b918401916001015b818110156121a65761219e8361ffff8660301c16611e4a565b918401916001015b818110156121c7576121bf8361ffff8660401c16611e4a565b918401916001015b818110156121e8576121e08361ffff8660501c16611e4a565b918401916001015b81811015612209576122018361ffff8660601c16611e4a565b918401916001015b8181101561222a576122228361ffff8660701c16611e4a565b918401916001015b8181101561224b576122438361ffff8660801c16611e4a565b918401916001015b8181101561226c576122648361ffff8660901c16611e4a565b918401916001015b8181101561228d576122858361ffff8660a01c16611e4a565b918401916001015b818110156122ae576122a68361ffff8660b01c16611e4a565b918401916001015b818110156122cf576122c78361ffff8660c01c16611e4a565b918401916001015b818110156122f0576122e88361ffff8660d01c16611e4a565b918401916001015b81811015612311576123098361ffff8660e01c16611e4a565b918401916001015b8181101561232b57612326838560f01c611e4a565b918401915b50909695505050505050565b90815260200190565b6000602082526116366020830184611d76565b6020808252600a908201527f6f6e6c792061646d696e00000000000000000000000000000000000000000000604082015260600190565b6020808252601f908201527f5072656372696d653a20636f756e74207374617465206e6f7420666f756e6400604082015260600190565b60208082526016908201527f5072656372696d653a20696e76616c69642073697a6500000000000000000000604082015260600190565b60006040825261240b6040830185611ddf565b905061ffff831660208301529392505050565b60006020825261ffff83511660208301526020830151604080840152611c326060840182611ddf565b61ffff91909116815260200190565b600061ffff8416825260406020830152611c326040830184611d76565b67ffffffffffffffff91909116815260200190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126124bc578283fd5b83018035915067ffffffffffffffff8211156124d6578283fd5b6020019150368190038213156108b057600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261251e578182fd5b9190910192915050565b60405181810167ffffffffffffffff8111828210171561254457fe5b604052919050565b600067ffffffffffffffff82111561256057fe5b5060209081020190565b60009081526020902090565b60006125846117b88461254c565b8381526020808201919084845b878110156125b8576125a636833589016119ca565b85529382019390820190600101612591565b50919695505050505050565b600061053b36836119ca565b73ffffffffffffffffffffffffffffffffffffffff811681146125f257600080fd5b50565b61ffff811681146125f257600080fd5b67ffffffffffffffff811681146125f257600080fdfe5072656372696d653a206f7574626f756e64436f756e74203e20696e626f756e64436f756e745072656372696d653a20746f74616c436f756e74203e2073756d206f7574626f756e64436f756e745072656372696d653a20696e626f756e64436f756e74203e206f7574626f756e64436f756e74a264697066735822122012516f7908e468a3c466df1fd423f16fc80f6913c14024a24f02bc8a01133f9b64736f6c63430007060033\";\n\ntype CounterPrecrimeViewConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: CounterPrecrimeViewConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class CounterPrecrimeView__factory extends ContractFactory {\n constructor(...args: CounterPrecrimeViewConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n _localChainId: PromiseOrValue<BigNumberish>,\n _counterView: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<CounterPrecrimeView> {\n return super.deploy(\n _localChainId,\n _counterView,\n overrides || {}\n ) as Promise<CounterPrecrimeView>;\n }\n override getDeployTransaction(\n _localChainId: PromiseOrValue<BigNumberish>,\n _counterView: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(\n _localChainId,\n _counterView,\n overrides || {}\n );\n }\n override attach(address: string): CounterPrecrimeView {\n return super.attach(address) as CounterPrecrimeView;\n }\n override connect(signer: Signer): CounterPrecrimeView__factory {\n return super.connect(signer) as CounterPrecrimeView__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): CounterPrecrimeViewInterface {\n return new utils.Interface(_abi) as CounterPrecrimeViewInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): CounterPrecrimeView {\n return new Contract(address, _abi, signerOrProvider) as CounterPrecrimeView;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n BigNumberish,\n Overrides,\n} from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../../../../common\";\nimport type {\n CounterV,\n CounterVInterface,\n} from \"../../../../precrime/example/view/CounterV\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n ],\n name: \"Receive\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"dstChainId\",\n type: \"uint16\",\n },\n ],\n name: \"Send\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n ],\n name: \"brokeIncrement\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"brokeTotalCount\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"chainId\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n ],\n name: \"getInboundNonce\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint32\",\n name: \"\",\n type: \"uint32\",\n },\n ],\n name: \"inboundCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n ],\n name: \"increment\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n ],\n name: \"lzReceive\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint32\",\n name: \"\",\n type: \"uint32\",\n },\n ],\n name: \"outboundCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"totalCount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x608060405234801561001057600080fd5b506040516103c13803806103c183398101604081905261002f9161004a565b6003805461ffff191661ffff92909216919091179055610073565b60006020828403121561005b578081fd5b815161ffff8116811461006c578182fd5b9392505050565b61033f806100826000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c806358b46b31116100765780639a8a05921161005b5780639a8a059214610134578063c892b2fc14610149578063d5795de414610151576100a3565b806358b46b3114610101578063622f17f614610121576100a3565b806316fb4325146100a857806329e7504d146100bd57806334eafb11146100d057806356a47289146100ee575b600080fd5b6100bb6100b636600461028f565b610164565b005b6100bb6100cb36600461028f565b61019e565b6100d86101f0565b6040516100e591906102eb565b60405180910390f35b6100d86100fc3660046102b8565b6101f6565b61011461010f36600461028f565b610208565b6040516100e591906102f4565b6100d861012f3660046102b8565b61021e565b61013c610230565b6040516100e591906102dc565b6100bb61023a565b6100bb61015f36600461028f565b610245565b7fcb0b88af7634dddeb013597e4fe3c505cc18eb1ba8a4f866b2116a8e7c03bc3f8160405161019391906102dc565b60405180910390a150565b61ffff811660009081526001602081905260408083208054830190558254909101909155517f1a60eb2fda5707f4f6d9c8ff94ff294beddf56ed57f62a58fecb430cf4e73416906101939083906102dc565b60005481565b60016020526000908152604090205481565b61ffff1660009081526001602052604090205490565b60026020526000908152604090205481565b60035461ffff1681565b600080546001019055565b61ffff81166000908152600260205260409081902080546001019055517fcb0b88af7634dddeb013597e4fe3c505cc18eb1ba8a4f866b2116a8e7c03bc3f906101939083906102dc565b6000602082840312156102a0578081fd5b813561ffff811681146102b1578182fd5b9392505050565b6000602082840312156102c9578081fd5b813563ffffffff811681146102b1578182fd5b61ffff91909116815260200190565b90815260200190565b67ffffffffffffffff9190911681526020019056fea26469706673582212202b51a3a40942e84df2a6bf38ba70aea472460de990841e63ed8cad4c266800e664736f6c63430007060033\";\n\ntype CounterVConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: CounterVConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class CounterV__factory extends ContractFactory {\n constructor(...args: CounterVConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n _chainId: PromiseOrValue<BigNumberish>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<CounterV> {\n return super.deploy(_chainId, overrides || {}) as Promise<CounterV>;\n }\n override getDeployTransaction(\n _chainId: PromiseOrValue<BigNumberish>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(_chainId, overrides || {});\n }\n override attach(address: string): CounterV {\n return super.attach(address) as CounterV;\n }\n override connect(signer: Signer): CounterV__factory {\n return super.connect(signer) as CounterV__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): CounterVInterface {\n return new utils.Interface(_abi) as CounterVInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): CounterV {\n return new Contract(address, _abi, signerOrProvider) as CounterV;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../../../../common\";\nimport type {\n CounterView,\n CounterViewInterface,\n} from \"../../../../precrime/example/view/CounterView\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_counter\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n inputs: [],\n name: \"counter\",\n outputs: [\n {\n internalType: \"contract CounterV\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16[]\",\n name: \"peers\",\n type: \"uint16[]\",\n },\n ],\n name: \"getCountState\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint256\",\n name: \"totalCount\",\n type: \"uint256\",\n },\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"eid\",\n type: \"uint16\",\n },\n {\n internalType: \"uint256\",\n name: \"inboundCount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"outboundCount\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct CounterView.ChainPathCount[]\",\n name: \"chainPathCounts\",\n type: \"tuple[]\",\n },\n ],\n internalType: \"struct CounterView.CountState\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint256\",\n name: \"totalCount\",\n type: \"uint256\",\n },\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"eid\",\n type: \"uint16\",\n },\n {\n internalType: \"uint256\",\n name: \"inboundCount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"outboundCount\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct CounterView.ChainPathCount[]\",\n name: \"chainPathCounts\",\n type: \"tuple[]\",\n },\n ],\n internalType: \"struct CounterView.CountState\",\n name: \"countState\",\n type: \"tuple\",\n },\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n ],\n name: \"lzReceive\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint256\",\n name: \"totalCount\",\n type: \"uint256\",\n },\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"eid\",\n type: \"uint16\",\n },\n {\n internalType: \"uint256\",\n name: \"inboundCount\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"outboundCount\",\n type: \"uint256\",\n },\n ],\n internalType: \"struct CounterView.ChainPathCount[]\",\n name: \"chainPathCounts\",\n type: \"tuple[]\",\n },\n ],\n internalType: \"struct CounterView.CountState\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x608060405234801561001057600080fd5b506040516107df3803806107df83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610082565b600060208284031215610065578081fd5b81516001600160a01b038116811461007b578182fd5b9392505050565b61074e806100916000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630e0ac9d71461004657806361bc221a1461006f578063ab2b35ec14610084575b600080fd5b6100596100543660046104de565b610097565b6040516100669190610671565b60405180910390f35b610077610129565b6040516100669190610650565b61005961009236600461046f565b610145565b61009f610419565b60005b836020015151811015610121576000846020015182815181106100c157fe5b602002602001015190508361ffff16816000015161ffff161415610118578451600190810186526020808301805190920190915285015180518291908490811061010757fe5b602002602001018190525050610121565b506001016100a2565b509192915050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b61014d610419565b60008267ffffffffffffffff8111801561016657600080fd5b506040519080825280602002602001820160405280156101a057816020015b61018d610433565b8152602001906001900390816101855790505b50905060005b8381101561035f5760008585838181106101bc57fe5b90506020020160208101906101d19190610617565b6040805160608101825261ffff8316815260005491517f56a4728900000000000000000000000000000000000000000000000000000000815292935091602083019173ffffffffffffffffffffffffffffffffffffffff16906356a472899061023e9086906004016106e5565b60206040518083038186803b15801561025657600080fd5b505afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610638565b81526000546040517f622f17f600000000000000000000000000000000000000000000000000000000815260209092019173ffffffffffffffffffffffffffffffffffffffff9091169063622f17f6906102ec9086906004016106e5565b60206040518083038186803b15801561030457600080fd5b505afa158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190610638565b81525083838151811061034b57fe5b6020908102919091010152506001016101a6565b5060408051808201808352600080547f34eafb11000000000000000000000000000000000000000000000000000000009092529251829173ffffffffffffffffffffffffffffffffffffffff16906334eafb1190604480850191602091818703018186803b1580156103d057600080fd5b505afa1580156103e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104089190610638565b815260200192909252509392505050565b604051806040016040528060008152602001606081525090565b6040518060600160405280600061ffff16815260200160008152602001600081525090565b803561ffff8116811461046a57600080fd5b919050565b60008060208385031215610481578182fd5b823567ffffffffffffffff80821115610498578384fd5b818501915085601f8301126104ab578384fd5b8135818111156104b9578485fd5b86602080830285010111156104cc578485fd5b60209290920196919550909350505050565b60008060408084860312156104f1578283fd5b833567ffffffffffffffff80821115610508578485fd5b818601915082828803121561051b578485fd5b8251838101818110838211171561052e57fe5b84528235815260208084013583811115610546578788fd5b80850194505088601f85011261055a578687fd5b83358381111561056657fe5b61057382838302016106f4565b818152828101908684016060808502890186018e1015610591578b8cfd5b8b98505b848910156105f15780828f0312156105ab578b8cfd5b89518181018181108a821117156105be57fe5b8b526105c983610458565b815282870135878201528a8301358b8201528452600198909801979285019290810190610595565b50508084860152505050819650610609818901610458565b955050505050509250929050565b600060208284031215610628578081fd5b61063182610458565b9392505050565b600060208284031215610649578081fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600060208083526060808401855183860152828601516040808188015282825180855260808901915086840194508793505b808410156106d8578451805161ffff1683528781015188840152830151838301529386019360019390930192908501906106a3565b5098975050505050505050565b61ffff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561071057fe5b60405291905056fea2646970667358221220a1b8a2cf4a899d4d18529d7d8e62e338a78e13dab844ca351162c7b0b9bb9a1364736f6c63430007060033\";\n\ntype CounterViewConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: CounterViewConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class CounterView__factory extends ContractFactory {\n constructor(...args: CounterViewConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n _counter: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<CounterView> {\n return super.deploy(_counter, overrides || {}) as Promise<CounterView>;\n }\n override getDeployTransaction(\n _counter: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(_counter, overrides || {});\n }\n override attach(address: string): CounterView {\n return super.attach(address) as CounterView;\n }\n override connect(signer: Signer): CounterView__factory {\n return super.connect(signer) as CounterView__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): CounterViewInterface {\n return new utils.Interface(_abi) as CounterViewInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): CounterView {\n return new Contract(address, _abi, signerOrProvider) as CounterView;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nexport { IPreCrime__factory } from \"./IPreCrime__factory\";\nexport { IPreCrimeBase__factory } from \"./IPreCrimeBase__factory\";\nexport { IPreCrimeView__factory } from \"./IPreCrimeView__factory\";\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n IPreCrime,\n IPreCrimeInterface,\n} from \"../../../precrime/interfaces/IPreCrime\";\n\nconst _abi = [\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n ],\n name: \"getConfig\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n {\n internalType: \"bytes[]\",\n name: \"_simulation\",\n type: \"bytes[]\",\n },\n ],\n name: \"precrime\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"code\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"reason\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n ],\n name: \"simulate\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"code\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"result\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"version\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nexport class IPreCrime__factory {\n static readonly abi = _abi;\n static createInterface(): IPreCrimeInterface {\n return new utils.Interface(_abi) as IPreCrimeInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IPreCrime {\n return new Contract(address, _abi, signerOrProvider) as IPreCrime;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n IPreCrimeBase,\n IPreCrimeBaseInterface,\n} from \"../../../precrime/interfaces/IPreCrimeBase\";\n\nconst _abi = [\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n ],\n name: \"getConfig\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n {\n internalType: \"bytes[]\",\n name: \"_simulation\",\n type: \"bytes[]\",\n },\n ],\n name: \"precrime\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"code\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"reason\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"version\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nexport class IPreCrimeBase__factory {\n static readonly abi = _abi;\n static createInterface(): IPreCrimeBaseInterface {\n return new utils.Interface(_abi) as IPreCrimeBaseInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IPreCrimeBase {\n return new Contract(address, _abi, signerOrProvider) as IPreCrimeBase;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n IPreCrimeView,\n IPreCrimeViewInterface,\n} from \"../../../precrime/interfaces/IPreCrimeView\";\n\nconst _abi = [\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n ],\n name: \"getConfig\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n {\n internalType: \"bytes[]\",\n name: \"_simulation\",\n type: \"bytes[]\",\n },\n ],\n name: \"precrime\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"code\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"reason\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n ],\n name: \"simulate\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"code\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"result\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"version\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nexport class IPreCrimeView__factory {\n static readonly abi = _abi;\n static createInterface(): IPreCrimeViewInterface {\n return new utils.Interface(_abi) as IPreCrimeViewInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IPreCrimeView {\n return new Contract(address, _abi, signerOrProvider) as IPreCrimeView;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type { PreCrime, PreCrimeInterface } from \"../../precrime/PreCrime\";\n\nconst _abi = [\n {\n inputs: [],\n name: \"CODE_MISS_SIMULATE_RESULT\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_PACKETS_OVERSIZE\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_PACKETS_UNSORTED\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_PRECRIME_FAILURE\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_SUCCESS\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_VERSION\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"PRECRIME_VERSION\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n ],\n name: \"_simulateAndRevert\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n ],\n name: \"getConfig\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"localChainId\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"maxBatchSize\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n {\n internalType: \"bytes[]\",\n name: \"_simulation\",\n type: \"bytes[]\",\n },\n ],\n name: \"precrime\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"code\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"reason\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"precrimeAdmin\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint64\",\n name: \"_maxBatchSize\",\n type: \"uint64\",\n },\n ],\n name: \"setMaxBatchSize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_precrimeAdmin\",\n type: \"address\",\n },\n ],\n name: \"setPrecrimeAdmin\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n ],\n name: \"simulate\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"code\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"version\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n] as const;\n\nexport class PreCrime__factory {\n static readonly abi = _abi;\n static createInterface(): PreCrimeInterface {\n return new utils.Interface(_abi) as PreCrimeInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): PreCrime {\n return new Contract(address, _abi, signerOrProvider) as PreCrime;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n PreCrimeBase,\n PreCrimeBaseInterface,\n} from \"../../precrime/PreCrimeBase\";\n\nconst _abi = [\n {\n inputs: [],\n name: \"CODE_MISS_SIMULATE_RESULT\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_PACKETS_OVERSIZE\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_PACKETS_UNSORTED\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_PRECRIME_FAILURE\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_SUCCESS\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_VERSION\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n ],\n name: \"getConfig\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"localChainId\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"maxBatchSize\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n {\n internalType: \"bytes[]\",\n name: \"_simulation\",\n type: \"bytes[]\",\n },\n ],\n name: \"precrime\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"code\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"reason\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"precrimeAdmin\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint64\",\n name: \"_maxBatchSize\",\n type: \"uint64\",\n },\n ],\n name: \"setMaxBatchSize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_precrimeAdmin\",\n type: \"address\",\n },\n ],\n name: \"setPrecrimeAdmin\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"version\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nexport class PreCrimeBase__factory {\n static readonly abi = _abi;\n static createInterface(): PreCrimeBaseInterface {\n return new utils.Interface(_abi) as PreCrimeBaseInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): PreCrimeBase {\n return new Contract(address, _abi, signerOrProvider) as PreCrimeBase;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n PreCrimeView,\n PreCrimeViewInterface,\n} from \"../../precrime/PreCrimeView\";\n\nconst _abi = [\n {\n inputs: [],\n name: \"CODE_MISS_SIMULATE_RESULT\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_PACKETS_OVERSIZE\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_PACKETS_UNSORTED\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_PRECRIME_FAILURE\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CODE_SUCCESS\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_VERSION\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"PRECRIME_VERSION\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n ],\n name: \"getConfig\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"localChainId\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"maxBatchSize\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n {\n internalType: \"bytes[]\",\n name: \"_simulation\",\n type: \"bytes[]\",\n },\n ],\n name: \"precrime\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"code\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"reason\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"precrimeAdmin\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint64\",\n name: \"_maxBatchSize\",\n type: \"uint64\",\n },\n ],\n name: \"setMaxBatchSize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_precrimeAdmin\",\n type: \"address\",\n },\n ],\n name: \"setPrecrimeAdmin\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"srcAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IPreCrimeBase.Packet[]\",\n name: \"_packets\",\n type: \"tuple[]\",\n },\n ],\n name: \"simulate\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"code\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"version\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n] as const;\n\nexport class PreCrimeView__factory {\n static readonly abi = _abi;\n static createInterface(): PreCrimeViewInterface {\n return new utils.Interface(_abi) as PreCrimeViewInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): PreCrimeView {\n return new Contract(address, _abi, signerOrProvider) as PreCrimeView;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nexport * as mptValidatorV4Sol from \"./MPTValidatorV4.sol\";\nexport * as mptValidatorV5Sol from \"./MPTValidatorV5.sol\";\nexport { FPValidator__factory } from \"./FPValidator__factory\";\nexport { MPTValidator__factory } from \"./MPTValidator__factory\";\nexport { MPTValidator01__factory } from \"./MPTValidator01__factory\";\nexport { MPTValidatorStgV3__factory } from \"./MPTValidatorStgV3__factory\";\nexport { MPTValidatorV2__factory } from \"./MPTValidatorV2__factory\";\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nexport { IUltraLightNode__factory } from \"./IUltraLightNode__factory\";\nexport { MPTValidatorV4__factory } from \"./MPTValidatorV4__factory\";\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n IUltraLightNode,\n IUltraLightNodeInterface,\n} from \"../../../proof/MPTValidatorV4.sol/IUltraLightNode\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"userApplicationAddress\",\n type: \"address\",\n },\n ],\n name: \"getAppConfig\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"inboundProofLibraryVersion\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"inboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"relayer\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"outboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n ],\n internalType: \"struct IUltraLightNode.ApplicationConfiguration\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_oracle\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"_remoteChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"_lookupHash\",\n type: \"bytes32\",\n },\n ],\n name: \"getBlockHeaderData\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint256\",\n name: \"confirmations\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"data\",\n type: \"bytes32\",\n },\n ],\n internalType: \"struct IUltraLightNode.BlockData\",\n name: \"blockData\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nexport class IUltraLightNode__factory {\n static readonly abi = _abi;\n static createInterface(): IUltraLightNodeInterface {\n return new utils.Interface(_abi) as IUltraLightNodeInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IUltraLightNode {\n return new Contract(address, _abi, signerOrProvider) as IUltraLightNode;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n BigNumberish,\n Overrides,\n} from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../../../common\";\nimport type {\n MPTValidatorV4,\n MPTValidatorV4Interface,\n} from \"../../../proof/MPTValidatorV4.sol/MPTValidatorV4\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_stargateBridgeAddress\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_stgTokenAddress\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"_localChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_ulnAddress\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n inputs: [],\n name: \"PACKET_SIGNATURE\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct LayerZeroPacket.Packet\",\n name: \"packet\",\n type: \"tuple\",\n },\n {\n internalType: \"bytes32\",\n name: \"blockHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"receiptsRoot\",\n type: \"bytes32\",\n },\n ],\n name: \"assertMessagePath\",\n outputs: [],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n {\n internalType: \"uint16\",\n name: \"srcChain\",\n type: \"uint16\",\n },\n {\n internalType: \"uint256\",\n name: \"sizeOfSrcAddress\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n ],\n name: \"getPacket\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct LayerZeroPacket.Packet\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getUtilsVersion\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"hashRoot\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256[]\",\n name: \"receiptSlotIndex\",\n type: \"uint256[]\",\n },\n {\n internalType: \"uint256\",\n name: \"logIndex\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes[]\",\n name: \"proof\",\n type: \"bytes[]\",\n },\n ],\n name: \"getVerifyLog\",\n outputs: [\n {\n components: [\n {\n internalType: \"bytes32\",\n name: \"contractAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"topicZeroSig\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IValidationLibraryHelper.ULNLog\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"localChainId\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n ],\n name: \"secureStgPayload\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n ],\n name: \"secureStgTokenPayload\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"stargateBridgeAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"stgTokenAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"uln\",\n outputs: [\n {\n internalType: \"contract IUltraLightNode\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"utilsVersion\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"_receiptsRoot\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"_transactionProof\",\n type: \"bytes\",\n },\n {\n internalType: \"uint256\",\n name: \"_remoteAddressSize\",\n type: \"uint256\",\n },\n ],\n name: \"validateProof\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct LayerZeroPacket.Packet\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x6101006040526000805460ff191660031790553480156200001f57600080fd5b50604051620024b0380380620024b083398101604081905262000042916200009b565b606093841b6001600160601b031990811660805292841b831660a05260f09190911b6001600160f01b03191660c05290911b1660e052620000fe565b80516001600160a01b03811681146200009657600080fd5b919050565b60008060008060808587031215620000b1578384fd5b620000bc856200007e565b9350620000cc602086016200007e565b9250604085015161ffff81168114620000e3578283fd5b9150620000f3606086016200007e565b905092959194509250565b60805160601c60a05160601c60c05160f01c60e05160601c612357620001596000398061029b528061079c528061086b525080610253528061070c5250806102135280610400525080610277528061039552506123576000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636c473aff1161008c578063be9d395e11610066578063be9d395e146101b1578063d633ad61146101c6578063e0cabadd146101ce578063ea455df9146101e1576100df565b80636c473aff1461017457806378d823f71461017c578063b71e0f7114610191576100df565b80635711c2a8116100bd5780635711c2a8146101375780635b056da5146101575780636348d2691461016c576100df565b80630f222e65146100e45780633fc18d4c1461010d57806347713b3914610122575b600080fd5b6100f76100f23660046118ae565b6101f4565b60405161010491906120d3565b60405180910390f35b610115610211565b6040516101049190611db7565b61012a610235565b604051610104919061213b565b61014a61014536600461199f565b61023e565b6040516101049190611e13565b61015f610251565b6040516101049190612102565b610115610275565b610115610299565b61018f61018a366004611b12565b6102bd565b005b6101a461019f366004611922565b6102cd565b604051610104919061204c565b6101b9610478565b6040516101049190611e0a565b61012a61049c565b6101a46101dc3660046119d2565b6104a5565b61014a6101ef36600461199f565b6104b9565b6101fc6115a8565b610208858585856104c4565b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005460ff1681565b606061024982610625565b90505b919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6102c883838361070a565b505050565b6102d56115c7565b600082116102fe5760405162461bcd60e51b81526004016102f590612015565b60405180910390fd5b600080808080610310888a018a611bff565b9450945094509450945060006103288b8484876104c4565b60208101519091507fe8d23d927749ec8e512eb885679c2977d57068839d8cca1a85685dbbea0648f61461036e5760405162461bcd60e51b81526004016102f590611eed565b80516040820151600091610386919089908c9061094d565b905061039381878e61070a565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16816060015173ffffffffffffffffffffffffffffffffffffffff1614156103fe576103f88160c00151610625565b60c08201525b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16816060015173ffffffffffffffffffffffffffffffffffffffff161415610469576104638160c00151610a43565b60c08201525b9b9a5050505050505050505050565b7fe8d23d927749ec8e512eb885679c2977d57068839d8cca1a85685dbbea0648f681565b60005460ff1690565b6104ad6115c7565b6102088585858561094d565b606061024982610a43565b6104cc6115a8565b81518451146104ed5760405162461bcd60e51b81526004016102f590611e48565b600082511161050e5760405162461bcd60e51b81526004016102f590611f81565b610516611605565b606060005b84518110156105a85784818151811061053057fe5b60200260200101519150818051906020012088146105605760405162461bcd60e51b81526004016102f590611eb6565b61058687828151811061056f57fe5b602002602001015161058084610aed565b90610b61565b925060018551038110156105a05761059d83610ccf565b97505b60010161051b565b5060006105b9600361058085610db8565b905060006105cf6105ca8389610b61565b610e44565b90506105d96115a8565b6105ea6105e583610ed6565b610ccf565b81526105fd6105e5600061058085610ed6565b602082015261061361060e83610ed6565b610f6c565b60408201529998505050505050505050565b6020810151606090600160ff82161415610703576000806000806000806000898060200190518101906106589190611c84565b9750975097509750975097509750506000815111156106fb57815160009015610682575060148201515b803b806106f85760008260405160200161069c9190611d87565b60408051601f19818403018152602083810183526000808552925191945091926106d4928f928f928f928f928f928f928b9201612149565b60408051601f198184030181529190529c5061024c9b505050505050505050505050565b50505b505050505050505b5090919050565b7f000000000000000000000000000000000000000000000000000000000000000061ffff16836020015161ffff16146107555760405162461bcd60e51b81526004016102f590611f24565b825160608401516040517fa466222200000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169263a4662222926107d1929190600401612111565b60c06040518083038186803b1580156107e957600080fd5b505afa1580156107fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108219190611a74565b60a081015185516040517febfa08e900000000000000000000000000000000000000000000000000000000815292935060009273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169263ebfa08e9926108a0928990600401611dd8565b604080518083038186803b1580156108b757600080fd5b505afa1580156108cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ef91906117c7565b9050828160200151146109145760405162461bcd60e51b81526004016102f590611e7f565b816020015167ffffffffffffffff16816000015110156109465760405162461bcd60e51b81526004016102f590611fb8565b5050505050565b6109556115c7565b602085015160608601516068870151858801607c0151919061097561161f565b61097f8189611065565b5061098f8160008c60888c61109f565b5060006109a7896109a186601c61115b565b9061115b565b90506109b161161f565b6109bb8183611065565b506109d760008d6109cd8d609c6111b8565b849291908661109f565b506040805160e08101825261ffff808e16825298909816602089015267ffffffffffffffff909416938701939093525073ffffffffffffffffffffffffffffffffffffffff9093166060850152915160808401525060a082018490525160c08201529050949350505050565b606060008083806020019051810190610a5c9190611a2f565b9150915060008083511115610a72575060148201515b73ffffffffffffffffffffffffffffffffffffffff8116610ae45760405161dead90600090610aa5908390602001611d87565b60405160208183030381529060405290508084604051602001610ac9929190611e26565b6040516020818303038152906040529550505050505061024c565b50929392505050565b610af5611605565b602082018051835160009190911a908015801590610b16575060c060ff8316105b15610b4557600192909201917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b6040805180820190915290815260208101929092525092915050565b610b69611605565b610b7283611219565b610bad5760405162461bcd60e51b81526004018080602001828103825260218152602001806122e06021913960400191505060405180910390fd5b610bb683611253565b8210610c09576040805162461bcd60e51b815260206004820152601660248201527f524c50206974656d206f7574206f6620626f756e647300000000000000000000604482015290519081900360640190fd5b8251602084015190810190600090610c20906112ab565b60208601510190506000805b85811015610c4b57610c3d8361134a565b928301929150600101610c2c565b50610c558261134a565b9050828183011115610cae576040805162461bcd60e51b815260206004820152601160248201527f524c50206974656d206f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b60405180604001604052808281526020018381525093505050505b92915050565b805160009015801590610ce457508151602110155b610d35576040805162461bcd60e51b815260206004820181905260248201527f524c504465636f64657220746f55696e7420696e76616c6964206c656e677468604482015290519081900360640190fd5b6000610d4483602001516112ab565b90508083600001511015610d895760405162461bcd60e51b81526004018080602001828103825260288152602001806122b86028913960400191505060405180910390fd5b825160208085015183018051928490039291831015610daf57826020036101000a820491505b50949350505050565b610dc0611605565b6000610dcf83602001516112ab565b60208401518451908201805192935060009290921a91908015801590610df8575060c060ff8416105b15610e2757600191909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b604080518082019091529081526020810191909152949350505050565b610e4c611639565b610e5582611219565b610ea6576040805162461bcd60e51b815260206004820152601f60248201527f524c504465636f646572206974657261746f72206973206e6f74206c69737400604482015290519081900360640190fd5b6000610eb583602001516112ab565b60208085015160408051808201909152868152920190820152915050919050565b610ede611605565b610ee78261141f565b610f38576040805162461bcd60e51b815260206004820152601f60248201527f524c504465636f646572206974657261746f7220686173206e6f206e65787400604482015290519081900360640190fd5b60208201516000610f488261134a565b80830160209586015260408051808201909152908152938401919091525090919050565b8051606090610fac5760405162461bcd60e51b81526004018080602001828103825260218152602001806123016021913960400191505060405180910390fd5b6000610fbb83602001516112ab565b905080836000015110156110005760405162461bcd60e51b81526004018080602001828103825260288152602001806122b86028913960400191505060405180910390fd5b825181900360008167ffffffffffffffff8111801561101e57600080fd5b506040519080825280601f01601f191660200182016040528015611049576020820181803683370190505b5090506000816020019050610daf848760200151018285611434565b61106d61161f565b60208206156110825760208206602003820191505b506020828101829052604080518085526000815290920101905290565b6110a761161f565b856020015182860111156110d1576110d1866110c9886020015188860161149d565b6002026114b4565b6000808751805188602083010193508089870111156110f05788860182525b5050508484015b602084106111165780518252601f1990930192602091820191016110f7565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208690036101000a01908116901991909116179052508495945050505050565b6000828211156111b2576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015611212576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b805160009061122a5750600061024c565b6020820151805160001a9060c08210156112495760009250505061024c565b5060019392505050565b80516000906112645750600061024c565b60008061127484602001516112ab565b602085015185519181019250015b808210156112a2576112938261134a565b60019093019290910190611282565b50909392505050565b8051600090811a60808110156112c557600091505061024c565b60b88110806112e0575060c081108015906112e0575060f881105b156112ef57600191505061024c565b60c0811015611321577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a01905061024c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0a01905061024c565b80516000908190811a60808110156113655760019150611418565b60b8811015611398577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8181019150611418565b60c08110156113c55760b78103600185019450806020036101000a85510460018201810193505050611418565b60f88110156113f8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4181019150611418565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b80518051602091820151919092015191011190565b8061143e576102c8565b5b6020811061145e578251825260209283019290910190601f190161143f565b915181516020939093036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169216919091179052565b6000818311156114ae575081610cc9565b50919050565b81516114c08383611065565b506114cb83826114d1565b50505050565b6114d961161f565b611212838460000151518485516114ee61161f565b82518211156114fc57600080fd5b8460200151828501111561151e5761151e856110c9876020015187860161149d565b60008086518051876020830101935080888701111561153d5787860182525b505050602084015b602084106115645780518252601f199093019260209182019101611545565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208690036101000a019081169019919091161790525083949350505050565b6040805160608082018352600080835260208301529181019190915290565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820181905260a082019290925260c081019190915290565b604051806040016040528060008152602001600081525090565b604051806040016040528060608152602001600081525090565b604051806040016040528061164c611605565b8152602001600081525090565b803561024c8161226c565b805161024c8161226c565b600082601f83011261167f578081fd5b8135602061169461168f83612200565b6121dc565b82815281810190858301855b858110156116c9576116b7898684358b0101611730565b845292840192908401906001016116a0565b5090979650505050505050565b600082601f8301126116e6578081fd5b813560206116f661168f83612200565b8281528181019085830183850287018401881015611712578586fd5b855b858110156116c957813584529284019290840190600101611714565b600082601f830112611740578081fd5b813561174e61168f8261221e565b818152846020838601011115611762578283fd5b816020850160208301379081016020019190915292915050565b600082601f83011261178c578081fd5b815161179a61168f8261221e565b8181528460208386010111156117ae578283fd5b6117bf826020830160208701612240565b949350505050565b6000604082840312156117d8578081fd5b6040516040810181811067ffffffffffffffff821117156117f557fe5b604052825181526020928301519281019290925250919050565b600060c08284031215611820578081fd5b60405160c0810181811067ffffffffffffffff8211171561183d57fe5b8060405250809150825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201525092915050565b803561024c81612291565b805161024c81612291565b803561024c816122a1565b805161024c816122a1565b600080600080608085870312156118c3578384fd5b84359350602085013567ffffffffffffffff808211156118e1578485fd5b6118ed888389016116d6565b9450604087013593506060870135915080821115611909578283fd5b506119168782880161166f565b91505092959194509250565b60008060008060608587031215611937578182fd5b84359350602085013567ffffffffffffffff80821115611955578384fd5b818701915087601f830112611968578384fd5b813581811115611976578485fd5b886020828501011115611987578485fd5b95986020929092019750949560400135945092505050565b6000602082840312156119b0578081fd5b813567ffffffffffffffff8111156119c6578182fd5b6117bf84828501611730565b600080600080608085870312156119e7578182fd5b843567ffffffffffffffff8111156119fd578283fd5b611a0987828801611730565b9450506020850135611a1a81612291565b93969395505050506040820135916060013590565b60008060408385031215611a41578182fd5b825167ffffffffffffffff811115611a57578283fd5b611a638582860161177c565b925050602083015190509250929050565b600060c08284031215611a85578081fd5b60405160c0810181811067ffffffffffffffff82111715611aa257fe5b6040528251611ab081612291565b81526020830151611ac0816122a1565b60208201526040830151611ad38161226c565b6040820152611ae46060840161188d565b6060820152611af5608084016118a3565b6080820152611b0660a08401611664565b60a08201529392505050565b600080600060608486031215611b26578081fd5b833567ffffffffffffffff80821115611b3d578283fd5b9085019060e08288031215611b50578283fd5b611b5a60e06121dc565b611b6383611882565b8152611b7160208401611882565b6020820152611b8260408401611898565b6040820152611b9360608401611659565b6060820152608083013582811115611ba9578485fd5b611bb589828601611730565b60808301525060a083013560a082015260c083013582811115611bd6578485fd5b611be289828601611730565b60c083015250976020870135975060409096013595945050505050565b600080600080600060a08688031215611c16578283fd5b8535611c2181612291565b945060208601359350604086013567ffffffffffffffff80821115611c44578485fd5b611c5089838a0161166f565b94506060880135915080821115611c65578283fd5b50611c72888289016116d6565b95989497509295608001359392505050565b6000806000806000806000806101c0898b031215611ca0578586fd5b885160ff81168114611cb0578687fd5b80985050602089015196506040890151955060608901519450611cd68a60808b016117c7565b9350611ce58a60c08b0161180f565b925061018089015167ffffffffffffffff80821115611d02578384fd5b611d0e8c838d0161177c565b93506101a08b0151915080821115611d24578283fd5b50611d318b828c0161177c565b9150509295985092959890939650565b73ffffffffffffffffffffffffffffffffffffffff169052565b60008151808452611d73816020860160208601612240565b601f01601f19169290920160200192915050565b60609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff93909316835261ffff919091166020830152604082015260600190565b90815260200190565b6000602082526112126020830184611d5b565b600060408252611e396040830185611d5b565b90508260208301529392505050565b6020808252601c908201527f50726f6f664c69623a20696e76616c69642070726f6f662073697a6500000000604082015260600190565b6020808252601e908201527f50726f6f664c69623a20696e76616c6964207265636569707420726f6f740000604082015260600190565b6020808252601a908201527f50726f6f664c69623a20696e76616c696420686173686c696e6b000000000000604082015260600190565b6020808252601f908201527f50726f6f664c69623a207061636b6574206e6f74207265636f676e697a656400604082015260600190565b60208082526026908201527f50726f6f664c69623a20696e76616c69642064657374696e6174696f6e20636860408201527f61696e2049440000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601d908201527f50726f6f664c69623a2070726f6f662073697a65206d757374203e2030000000604082015260600190565b60208082526028908201527f50726f6f664c69623a206e6f7420656e6f75676820626c6f636b20636f6e666960408201527f726d6174696f6e73000000000000000000000000000000000000000000000000606082015260800190565b6020808252601e908201527f50726f6f664c69623a20696e76616c696420616464726573732073697a650000604082015260600190565b60006020825261ffff8084511660208401528060208501511660408401525067ffffffffffffffff604084015116606083015260608301516120916080840182611d41565b50608083015160e060a08401526120ac610100840182611d5b565b905060a084015160c084015260c0840151601f198483030160e08501526102088282611d5b565b600060208252825160208301526020830151604083015260408301516060808401526117bf6080840182611d5b565b61ffff91909116815260200190565b61ffff92909216825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b60ff91909116815260200190565b60006101c060ff8b16835289602084015288604084015287606084015286516080840152602087015160a0840152855160c0840152602086015160e084015260408601516101008401526060860151610120840152608086015161014084015260a0860151610160840152806101808401526121c781840186611d5b565b90508281036101a08401526104698185611d5b565b60405181810167ffffffffffffffff811182821017156121f857fe5b604052919050565b600067ffffffffffffffff82111561221457fe5b5060209081020190565b600067ffffffffffffffff82111561223257fe5b50601f01601f191660200190565b60005b8381101561225b578181015183820152602001612243565b838111156114cb5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461228e57600080fd5b50565b61ffff8116811461228e57600080fd5b67ffffffffffffffff8116811461228e57600080fdfe524c504465636f6465723a20696e76616c696420524c50206974656d206f66667365742073697a65524c504465636f646572206974657261746f72206973206e6f742061206c697374524c504465636f64657220746f427974657320696e76616c6964206c656e677468a264697066735822122082719a4980240c289846372288120d014d9177dc0df40b8425fcea32aabdc1f764736f6c63430007060033\";\n\ntype MPTValidatorV4ConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: MPTValidatorV4ConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class MPTValidatorV4__factory extends ContractFactory {\n constructor(...args: MPTValidatorV4ConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n _stargateBridgeAddress: PromiseOrValue<string>,\n _stgTokenAddress: PromiseOrValue<string>,\n _localChainId: PromiseOrValue<BigNumberish>,\n _ulnAddress: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<MPTValidatorV4> {\n return super.deploy(\n _stargateBridgeAddress,\n _stgTokenAddress,\n _localChainId,\n _ulnAddress,\n overrides || {}\n ) as Promise<MPTValidatorV4>;\n }\n override getDeployTransaction(\n _stargateBridgeAddress: PromiseOrValue<string>,\n _stgTokenAddress: PromiseOrValue<string>,\n _localChainId: PromiseOrValue<BigNumberish>,\n _ulnAddress: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(\n _stargateBridgeAddress,\n _stgTokenAddress,\n _localChainId,\n _ulnAddress,\n overrides || {}\n );\n }\n override attach(address: string): MPTValidatorV4 {\n return super.attach(address) as MPTValidatorV4;\n }\n override connect(signer: Signer): MPTValidatorV4__factory {\n return super.connect(signer) as MPTValidatorV4__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): MPTValidatorV4Interface {\n return new utils.Interface(_abi) as MPTValidatorV4Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): MPTValidatorV4 {\n return new Contract(address, _abi, signerOrProvider) as MPTValidatorV4;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nexport { IUltraLightNode__factory } from \"./IUltraLightNode__factory\";\nexport { MPTValidatorV5__factory } from \"./MPTValidatorV5__factory\";\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n\nimport { Contract, Signer, utils } from \"ethers\";\nimport type { Provider } from \"@ethersproject/providers\";\nimport type {\n IUltraLightNode,\n IUltraLightNodeInterface,\n} from \"../../../proof/MPTValidatorV5.sol/IUltraLightNode\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"userApplicationAddress\",\n type: \"address\",\n },\n ],\n name: \"getAppConfig\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"inboundProofLibraryVersion\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"inboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"relayer\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"outboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n ],\n internalType: \"struct IUltraLightNode.ApplicationConfiguration\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_oracle\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"_remoteChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"_lookupHash\",\n type: \"bytes32\",\n },\n ],\n name: \"getBlockHeaderData\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint256\",\n name: \"confirmations\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"data\",\n type: \"bytes32\",\n },\n ],\n internalType: \"struct IUltraLightNode.BlockData\",\n name: \"blockData\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nexport class IUltraLightNode__factory {\n static readonly abi = _abi;\n static createInterface(): IUltraLightNodeInterface {\n return new utils.Interface(_abi) as IUltraLightNodeInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): IUltraLightNode {\n return new Contract(address, _abi, signerOrProvider) as IUltraLightNode;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n BigNumberish,\n Overrides,\n} from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../../../common\";\nimport type {\n MPTValidatorV5,\n MPTValidatorV5Interface,\n} from \"../../../proof/MPTValidatorV5.sol/MPTValidatorV5\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_stargateBridgeAddress\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_stgTokenAddress\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"_localChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_ulnAddress\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_relayerAddress\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n inputs: [],\n name: \"PACKET_SIGNATURE\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct LayerZeroPacket.Packet\",\n name: \"packet\",\n type: \"tuple\",\n },\n {\n internalType: \"bytes32\",\n name: \"blockHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"receiptsRoot\",\n type: \"bytes32\",\n },\n ],\n name: \"assertMessagePath\",\n outputs: [],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n {\n internalType: \"uint16\",\n name: \"srcChain\",\n type: \"uint16\",\n },\n {\n internalType: \"uint256\",\n name: \"sizeOfSrcAddress\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n ],\n name: \"getPacket\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct LayerZeroPacket.Packet\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getUtilsVersion\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"hashRoot\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256[]\",\n name: \"receiptSlotIndex\",\n type: \"uint256[]\",\n },\n {\n internalType: \"uint256\",\n name: \"logIndex\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes[]\",\n name: \"proof\",\n type: \"bytes[]\",\n },\n ],\n name: \"getVerifyLog\",\n outputs: [\n {\n components: [\n {\n internalType: \"bytes32\",\n name: \"contractAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"topicZeroSig\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IValidationLibraryHelper.ULNLog\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"localChainId\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"relayerAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n ],\n name: \"secureStgPayload\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n ],\n name: \"secureStgTokenPayload\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"stargateBridgeAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"stgTokenAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"uln\",\n outputs: [\n {\n internalType: \"contract IUltraLightNode\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"utilsVersion\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"_receiptsRoot\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"_transactionProof\",\n type: \"bytes\",\n },\n {\n internalType: \"uint256\",\n name: \"_remoteAddressSize\",\n type: \"uint256\",\n },\n ],\n name: \"validateProof\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct LayerZeroPacket.Packet\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x6101206040526000805460ff191660031790553480156200001f57600080fd5b50604051620025ba380380620025ba8339810160408190526200004291620000a3565b606094851b6001600160601b031990811660805293851b841660a05260f09290921b6001600160f01b03191660e052831b82166101005290911b1660c05262000119565b80516001600160a01b03811681146200009e57600080fd5b919050565b600080600080600060a08688031215620000bb578081fd5b620000c68662000086565b9450620000d66020870162000086565b9350604086015161ffff81168114620000ed578182fd5b9250620000fd6060870162000086565b91506200010d6080870162000086565b90509295509295909350565b60805160601c60a05160601c60c05160601c60e05160f01c6101005160601c61243462000186600039806102d252806107d352806108a252508061028a5280610743525080610226528061092a52508061024a52806104375250806102ae52806103cc52506124346000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636c473aff1161008c578063be9d395e11610066578063be9d395e146101c4578063d633ad61146101d9578063e0cabadd146101e1578063ea455df9146101f4576100ea565b80636c473aff1461018757806378d823f71461018f578063b71e0f71146101a4576100ea565b806347713b39116100c857806347713b39146101355780635711c2a81461014a5780635b056da51461016a5780636348d2691461017f576100ea565b80630f222e65146100ef57806318a7cca8146101185780633fc18d4c1461012d575b600080fd5b6101026100fd366004611954565b610207565b60405161010f91906121b0565b60405180910390f35b610120610224565b60405161010f9190611e5d565b610120610248565b61013d61026c565b60405161010f9190612218565b61015d610158366004611a45565b610275565b60405161010f9190611eb9565b610172610288565b60405161010f91906121df565b6101206102ac565b6101206102d0565b6101a261019d366004611bb8565b6102f4565b005b6101b76101b23660046119c8565b610304565b60405161010f9190612129565b6101cc6104af565b60405161010f9190611eb0565b61013d6104d3565b6101b76101ef366004611a78565b6104dc565b61015d610202366004611a45565b6104f0565b61020f61164e565b61021b858585856104fb565b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005460ff1681565b60606102808261065c565b90505b919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6102ff838383610741565b505050565b61030c61166d565b600082116103355760405162461bcd60e51b815260040161032c906120f2565b60405180910390fd5b600080808080610347888a018a611ca5565b94509450945094509450600061035f8b8484876104fb565b60208101519091507fe8d23d927749ec8e512eb885679c2977d57068839d8cca1a85685dbbea0648f6146103a55760405162461bcd60e51b815260040161032c90611f93565b805160408201516000916103bd919089908c906109f3565b90506103ca81878e610741565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16816060015173ffffffffffffffffffffffffffffffffffffffff1614156104355761042f8160c0015161065c565b60c08201525b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16816060015173ffffffffffffffffffffffffffffffffffffffff1614156104a05761049a8160c00151610ae9565b60c08201525b9b9a5050505050505050505050565b7fe8d23d927749ec8e512eb885679c2977d57068839d8cca1a85685dbbea0648f681565b60005460ff1690565b6104e461166d565b61021b858585856109f3565b606061028082610ae9565b61050361164e565b81518451146105245760405162461bcd60e51b815260040161032c90611eee565b60008251116105455760405162461bcd60e51b815260040161032c9061205e565b61054d6116ab565b606060005b84518110156105df5784818151811061056757fe5b60200260200101519150818051906020012088146105975760405162461bcd60e51b815260040161032c90611f5c565b6105bd8782815181106105a657fe5b60200260200101516105b784610b93565b90610c07565b925060018551038110156105d7576105d483610d75565b97505b600101610552565b5060006105f060036105b785610e5e565b905060006106066106018389610c07565b610eea565b905061061061164e565b61062161061c83610f7c565b610d75565b815261063461061c60006105b785610f7c565b602082015261064a61064583610f7c565b611012565b60408201529998505050505050505050565b6020810151606090600160ff8216141561073a5760008060008060008060008980602001905181019061068f9190611d2a565b975097509750975097509750975050600081511115610732578151600090156106b9575060148201515b803b8061072f576000826040516020016106d39190611e2d565b60408051601f198184030181526020838101835260008085529251919450919261070b928f928f928f928f928f928f928b9201612226565b60408051601f198184030181529190529c506102839b505050505050505050505050565b50505b505050505050505b5090919050565b7f000000000000000000000000000000000000000000000000000000000000000061ffff16836020015161ffff161461078c5760405162461bcd60e51b815260040161032c90611fca565b825160608401516040517fa466222200000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169263a4662222926108089291906004016121ee565b60c06040518083038186803b15801561082057600080fd5b505afa158015610834573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108589190611b1a565b60a081015185516040517febfa08e900000000000000000000000000000000000000000000000000000000815292935060009273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169263ebfa08e9926108d7928990600401611e7e565b604080518083038186803b1580156108ee57600080fd5b505afa158015610902573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610926919061186d565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16826040015173ffffffffffffffffffffffffffffffffffffffff16146109975760405162461bcd60e51b815260040161032c90612027565b828160200151146109ba5760405162461bcd60e51b815260040161032c90611f25565b816020015167ffffffffffffffff16816000015110156109ec5760405162461bcd60e51b815260040161032c90612095565b5050505050565b6109fb61166d565b602085015160608601516068870151858801607c01519190610a1b6116c5565b610a25818961110b565b50610a358160008c60888c611145565b506000610a4d89610a4786601c611201565b90611201565b9050610a576116c5565b610a61818361110b565b50610a7d60008d610a738d609c61125e565b8492919086611145565b506040805160e08101825261ffff808e16825298909816602089015267ffffffffffffffff909416938701939093525073ffffffffffffffffffffffffffffffffffffffff9093166060850152915160808401525060a082018490525160c08201529050949350505050565b606060008083806020019051810190610b029190611ad5565b9150915060008083511115610b18575060148201515b73ffffffffffffffffffffffffffffffffffffffff8116610b8a5760405161dead90600090610b4b908390602001611e2d565b60405160208183030381529060405290508084604051602001610b6f929190611ecc565b60405160208183030381529060405295505050505050610283565b50929392505050565b610b9b6116ab565b602082018051835160009190911a908015801590610bbc575060c060ff8316105b15610beb57600192909201917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b6040805180820190915290815260208101929092525092915050565b610c0f6116ab565b610c18836112bf565b610c535760405162461bcd60e51b81526004018080602001828103825260218152602001806123bd6021913960400191505060405180910390fd5b610c5c836112f9565b8210610caf576040805162461bcd60e51b815260206004820152601660248201527f524c50206974656d206f7574206f6620626f756e647300000000000000000000604482015290519081900360640190fd5b8251602084015190810190600090610cc690611351565b60208601510190506000805b85811015610cf157610ce3836113f0565b928301929150600101610cd2565b50610cfb826113f0565b9050828183011115610d54576040805162461bcd60e51b815260206004820152601160248201527f524c50206974656d206f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b60405180604001604052808281526020018381525093505050505b92915050565b805160009015801590610d8a57508151602110155b610ddb576040805162461bcd60e51b815260206004820181905260248201527f524c504465636f64657220746f55696e7420696e76616c6964206c656e677468604482015290519081900360640190fd5b6000610dea8360200151611351565b90508083600001511015610e2f5760405162461bcd60e51b81526004018080602001828103825260288152602001806123956028913960400191505060405180910390fd5b825160208085015183018051928490039291831015610e5557826020036101000a820491505b50949350505050565b610e666116ab565b6000610e758360200151611351565b60208401518451908201805192935060009290921a91908015801590610e9e575060c060ff8416105b15610ecd57600191909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b604080518082019091529081526020810191909152949350505050565b610ef26116df565b610efb826112bf565b610f4c576040805162461bcd60e51b815260206004820152601f60248201527f524c504465636f646572206974657261746f72206973206e6f74206c69737400604482015290519081900360640190fd5b6000610f5b8360200151611351565b60208085015160408051808201909152868152920190820152915050919050565b610f846116ab565b610f8d826114c5565b610fde576040805162461bcd60e51b815260206004820152601f60248201527f524c504465636f646572206974657261746f7220686173206e6f206e65787400604482015290519081900360640190fd5b60208201516000610fee826113f0565b80830160209586015260408051808201909152908152938401919091525090919050565b80516060906110525760405162461bcd60e51b81526004018080602001828103825260218152602001806123de6021913960400191505060405180910390fd5b60006110618360200151611351565b905080836000015110156110a65760405162461bcd60e51b81526004018080602001828103825260288152602001806123956028913960400191505060405180910390fd5b825181900360008167ffffffffffffffff811180156110c457600080fd5b506040519080825280601f01601f1916602001820160405280156110ef576020820181803683370190505b5090506000816020019050610e558487602001510182856114da565b6111136116c5565b60208206156111285760208206602003820191505b506020828101829052604080518085526000815290920101905290565b61114d6116c5565b85602001518286011115611177576111778661116f8860200151888601611543565b60020261155a565b6000808751805188602083010193508089870111156111965788860182525b5050508484015b602084106111bc5780518252601f19909301926020918201910161119d565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208690036101000a01908116901991909116179052508495945050505050565b600082821115611258576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156112b8576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b80516000906112d057506000610283565b6020820151805160001a9060c08210156112ef57600092505050610283565b5060019392505050565b805160009061130a57506000610283565b60008061131a8460200151611351565b602085015185519181019250015b8082101561134857611339826113f0565b60019093019290910190611328565b50909392505050565b8051600090811a608081101561136b576000915050610283565b60b8811080611386575060c08110801590611386575060f881105b15611395576001915050610283565b60c08110156113c7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a019050610283565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0a019050610283565b80516000908190811a608081101561140b57600191506114be565b60b881101561143e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81810191506114be565b60c081101561146b5760b78103600185019450806020036101000a855104600182018101935050506114be565b60f881101561149e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41810191506114be565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b80518051602091820151919092015191011190565b806114e4576102ff565b5b60208110611504578251825260209283019290910190601f19016114e5565b915181516020939093036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169216919091179052565b600081831115611554575081610d6f565b50919050565b8151611566838361110b565b506115718382611577565b50505050565b61157f6116c5565b6112b8838460000151518485516115946116c5565b82518211156115a257600080fd5b846020015182850111156115c4576115c48561116f8760200151878601611543565b6000808651805187602083010193508088870111156115e35787860182525b505050602084015b6020841061160a5780518252601f1990930192602091820191016115eb565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208690036101000a019081169019919091161790525083949350505050565b6040805160608082018352600080835260208301529181019190915290565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820181905260a082019290925260c081019190915290565b604051806040016040528060008152602001600081525090565b604051806040016040528060608152602001600081525090565b60405180604001604052806116f26116ab565b8152602001600081525090565b803561028381612349565b805161028381612349565b600082601f830112611725578081fd5b8135602061173a611735836122dd565b6122b9565b82815281810190858301855b8581101561176f5761175d898684358b01016117d6565b84529284019290840190600101611746565b5090979650505050505050565b600082601f83011261178c578081fd5b8135602061179c611735836122dd565b82815281810190858301838502870184018810156117b8578586fd5b855b8581101561176f578135845292840192908401906001016117ba565b600082601f8301126117e6578081fd5b81356117f4611735826122fb565b818152846020838601011115611808578283fd5b816020850160208301379081016020019190915292915050565b600082601f830112611832578081fd5b8151611840611735826122fb565b818152846020838601011115611854578283fd5b61186582602083016020870161231d565b949350505050565b60006040828403121561187e578081fd5b6040516040810181811067ffffffffffffffff8211171561189b57fe5b604052825181526020928301519281019290925250919050565b600060c082840312156118c6578081fd5b60405160c0810181811067ffffffffffffffff821117156118e357fe5b8060405250809150825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201525092915050565b80356102838161236e565b80516102838161236e565b80356102838161237e565b80516102838161237e565b60008060008060808587031215611969578384fd5b84359350602085013567ffffffffffffffff80821115611987578485fd5b6119938883890161177c565b94506040870135935060608701359150808211156119af578283fd5b506119bc87828801611715565b91505092959194509250565b600080600080606085870312156119dd578182fd5b84359350602085013567ffffffffffffffff808211156119fb578384fd5b818701915087601f830112611a0e578384fd5b813581811115611a1c578485fd5b886020828501011115611a2d578485fd5b95986020929092019750949560400135945092505050565b600060208284031215611a56578081fd5b813567ffffffffffffffff811115611a6c578182fd5b611865848285016117d6565b60008060008060808587031215611a8d578182fd5b843567ffffffffffffffff811115611aa3578283fd5b611aaf878288016117d6565b9450506020850135611ac08161236e565b93969395505050506040820135916060013590565b60008060408385031215611ae7578182fd5b825167ffffffffffffffff811115611afd578283fd5b611b0985828601611822565b925050602083015190509250929050565b600060c08284031215611b2b578081fd5b60405160c0810181811067ffffffffffffffff82111715611b4857fe5b6040528251611b568161236e565b81526020830151611b668161237e565b60208201526040830151611b7981612349565b6040820152611b8a60608401611933565b6060820152611b9b60808401611949565b6080820152611bac60a0840161170a565b60a08201529392505050565b600080600060608486031215611bcc578081fd5b833567ffffffffffffffff80821115611be3578283fd5b9085019060e08288031215611bf6578283fd5b611c0060e06122b9565b611c0983611928565b8152611c1760208401611928565b6020820152611c286040840161193e565b6040820152611c39606084016116ff565b6060820152608083013582811115611c4f578485fd5b611c5b898286016117d6565b60808301525060a083013560a082015260c083013582811115611c7c578485fd5b611c88898286016117d6565b60c083015250976020870135975060409096013595945050505050565b600080600080600060a08688031215611cbc578283fd5b8535611cc78161236e565b945060208601359350604086013567ffffffffffffffff80821115611cea578485fd5b611cf689838a01611715565b94506060880135915080821115611d0b578283fd5b50611d188882890161177c565b95989497509295608001359392505050565b6000806000806000806000806101c0898b031215611d46578586fd5b885160ff81168114611d56578687fd5b80985050602089015196506040890151955060608901519450611d7c8a60808b0161186d565b9350611d8b8a60c08b016118b5565b925061018089015167ffffffffffffffff80821115611da8578384fd5b611db48c838d01611822565b93506101a08b0151915080821115611dca578283fd5b50611dd78b828c01611822565b9150509295985092959890939650565b73ffffffffffffffffffffffffffffffffffffffff169052565b60008151808452611e1981602086016020860161231d565b601f01601f19169290920160200192915050565b60609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff93909316835261ffff919091166020830152604082015260600190565b90815260200190565b6000602082526112b86020830184611e01565b600060408252611edf6040830185611e01565b90508260208301529392505050565b6020808252601c908201527f50726f6f664c69623a20696e76616c69642070726f6f662073697a6500000000604082015260600190565b6020808252601e908201527f50726f6f664c69623a20696e76616c6964207265636569707420726f6f740000604082015260600190565b6020808252601a908201527f50726f6f664c69623a20696e76616c696420686173686c696e6b000000000000604082015260600190565b6020808252601f908201527f50726f6f664c69623a207061636b6574206e6f74207265636f676e697a656400604082015260600190565b60208082526026908201527f50726f6f664c69623a20696e76616c69642064657374696e6174696f6e20636860408201527f61696e2049440000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f50726f6f664c69623a20696e76616c69642072656c6179657200000000000000604082015260600190565b6020808252601d908201527f50726f6f664c69623a2070726f6f662073697a65206d757374203e2030000000604082015260600190565b60208082526028908201527f50726f6f664c69623a206e6f7420656e6f75676820626c6f636b20636f6e666960408201527f726d6174696f6e73000000000000000000000000000000000000000000000000606082015260800190565b6020808252601e908201527f50726f6f664c69623a20696e76616c696420616464726573732073697a650000604082015260600190565b60006020825261ffff8084511660208401528060208501511660408401525067ffffffffffffffff6040840151166060830152606083015161216e6080840182611de7565b50608083015160e060a0840152612189610100840182611e01565b905060a084015160c084015260c0840151601f198483030160e085015261021b8282611e01565b600060208252825160208301526020830151604083015260408301516060808401526118656080840182611e01565b61ffff91909116815260200190565b61ffff92909216825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b60ff91909116815260200190565b60006101c060ff8b16835289602084015288604084015287606084015286516080840152602087015160a0840152855160c0840152602086015160e084015260408601516101008401526060860151610120840152608086015161014084015260a0860151610160840152806101808401526122a481840186611e01565b90508281036101a08401526104a08185611e01565b60405181810167ffffffffffffffff811182821017156122d557fe5b604052919050565b600067ffffffffffffffff8211156122f157fe5b5060209081020190565b600067ffffffffffffffff82111561230f57fe5b50601f01601f191660200190565b60005b83811015612338578181015183820152602001612320565b838111156115715750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461236b57600080fd5b50565b61ffff8116811461236b57600080fd5b67ffffffffffffffff8116811461236b57600080fdfe524c504465636f6465723a20696e76616c696420524c50206974656d206f66667365742073697a65524c504465636f646572206974657261746f72206973206e6f742061206c697374524c504465636f64657220746f427974657320696e76616c6964206c656e677468a26469706673582212204ee08a964aaa42a9af7440eb3bcde0f569374d8d8e0b403b86121ea39aaceed464736f6c63430007060033\";\n\ntype MPTValidatorV5ConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: MPTValidatorV5ConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class MPTValidatorV5__factory extends ContractFactory {\n constructor(...args: MPTValidatorV5ConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n _stargateBridgeAddress: PromiseOrValue<string>,\n _stgTokenAddress: PromiseOrValue<string>,\n _localChainId: PromiseOrValue<BigNumberish>,\n _ulnAddress: PromiseOrValue<string>,\n _relayerAddress: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<MPTValidatorV5> {\n return super.deploy(\n _stargateBridgeAddress,\n _stgTokenAddress,\n _localChainId,\n _ulnAddress,\n _relayerAddress,\n overrides || {}\n ) as Promise<MPTValidatorV5>;\n }\n override getDeployTransaction(\n _stargateBridgeAddress: PromiseOrValue<string>,\n _stgTokenAddress: PromiseOrValue<string>,\n _localChainId: PromiseOrValue<BigNumberish>,\n _ulnAddress: PromiseOrValue<string>,\n _relayerAddress: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(\n _stargateBridgeAddress,\n _stgTokenAddress,\n _localChainId,\n _ulnAddress,\n _relayerAddress,\n overrides || {}\n );\n }\n override attach(address: string): MPTValidatorV5 {\n return super.attach(address) as MPTValidatorV5;\n }\n override connect(signer: Signer): MPTValidatorV5__factory {\n return super.connect(signer) as MPTValidatorV5__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): MPTValidatorV5Interface {\n return new utils.Interface(_abi) as MPTValidatorV5Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): MPTValidatorV5 {\n return new Contract(address, _abi, signerOrProvider) as MPTValidatorV5;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../../common\";\nimport type {\n FPValidator,\n FPValidatorInterface,\n} from \"../../proof/FPValidator\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_stargateBridgeAddress\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_stargateTokenAddress\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n {\n internalType: \"uint256\",\n name: \"sizeOfSrcAddress\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n ],\n name: \"getPacket\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct LayerZeroPacket.Packet\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getProofType\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getUtilsVersion\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256[]\",\n name: \"\",\n type: \"uint256[]\",\n },\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes[]\",\n name: \"proof\",\n type: \"bytes[]\",\n },\n ],\n name: \"getVerifyLog\",\n outputs: [\n {\n components: [\n {\n internalType: \"bytes32\",\n name: \"contractAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"topicZeroSig\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IValidationLibraryHelperV2.ULNLog\",\n name: \"log\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"proofType\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n ],\n name: \"secureStgPayload\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n ],\n name: \"secureStgTokenPayload\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"stargateBridgeAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"stargateTokenAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"utilsVersion\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"_packetHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"_transactionProof\",\n type: \"bytes\",\n },\n {\n internalType: \"uint256\",\n name: \"_remoteAddressSize\",\n type: \"uint256\",\n },\n ],\n name: \"validateProof\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct LayerZeroPacket.Packet\",\n name: \"packet\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x60c06040526000805461ff001960ff199091166002171661010017905534801561002857600080fd5b5060405161139538038061139583398101604081905261004791610081565b6001600160601b0319606092831b8116608052911b1660a0526100b3565b80516001600160a01b038116811461007c57600080fd5b919050565b60008060408385031215610093578182fd5b61009c83610065565b91506100aa60208401610065565b90509250929050565b60805160601c60a05160601c6112af6100e6600039806103dc528061045f525080610200528061037152506112af6000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80636348d26911610081578063d633ad611161005b578063d633ad6114610184578063e965c1921461018c578063ea455df914610194576100c9565b80636348d269146101545780639bcd850f14610169578063b71e0f7114610171576100c9565b80632ff20449116100b25780632ff204491461010c57806347713b391461012c5780635711c2a814610134576100c9565b806305af5d35146100ce5780630f222e65146100ec575b600080fd5b6100d66101a7565b6040516100e3919061112f565b60405180910390f35b6100ff6100fa366004610c82565b6101b0565b6040516100e39190611100565b61011f61011a366004610df7565b6101c2565b6040516100e39190611070565b6100d66101dd565b610147610142366004610d7f565b6101eb565b6040516100e39190610fa7565b61015c6101fe565b6040516100e39190610f86565b6100d6610222565b61011f61017f366004610d02565b61022b565b6100d661044f565b61015c61045d565b6101476101a2366004610d7f565b610481565b60005460ff1681565b6101b8610a73565b9695505050505050565b6101ca610a92565b6101d584848461048c565b949350505050565b600054610100900460ff1681565b60606101f682610666565b90505b919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005460ff1690565b610233610a92565b60008211610276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161026d90611039565b60405180910390fd5b60208311801561029c5750848484604051610292929190610f76565b6040518091039020145b6102d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161026d90610fdc565b60006102e16020828688611225565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505060208083015192935061036d915061032f908790818a611225565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525088925085915061048c9050565b92507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16836060015173ffffffffffffffffffffffffffffffffffffffff1614156103da576103d48360c00151610666565b60c08401525b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16836060015173ffffffffffffffffffffffffffffffffffffffff1614156104455761043f8360c0015161074b565b60c08401525b5050949350505050565b600054610100900460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606101f68261074b565b610494610a92565b835160006104a38560206107f5565b90508082101561051457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4c617965725a65726f5061636b65743a20696e76616c6964207061636b657400604482015290519081900360640190fd5b6008860151600a870151868801600c8101516020909101518486039392919061ffff83166105a357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4c617965725a65726f5061636b65743a20696e76616c6964207061636b657400604482015290519081900360640190fd5b6105ab610ad0565b6105b5818c610872565b506105c58160008e602a8f6108ac565b506105ce610ad0565b86156105fc576105de8188610872565b506105fa60008e6105f08b60206107f5565b849291908b6108ac565b505b6040805160e08101825261ffff968716815294909516602085015267ffffffffffffffff9095169383019390935273ffffffffffffffffffffffffffffffffffffffff1660608201529051608082015260a08101879052905160c082015293505050509392505050565b6020810151606090600160ff82161415610744576000806000806000806000898060200190518101906106999190610e43565b97509750975097509750975097505060008151111561073c578151600090156106c3575060148201515b803b80610739576000826040516020016106dd9190610f46565b60408051601f1981840301815260208381018352600080855292519194509192610715928f928f928f928f928f928f928b920161113d565b60408051601f198184030181529190529c506101f99b505050505050505050505050565b50505b505050505050505b5090919050565b6060600080838060200190518101906107649190610db2565b915091506000808351111561077a575060148201515b73ffffffffffffffffffffffffffffffffffffffff81166107ec5760405161dead906000906107ad908390602001610f46565b604051602081830303815290604052905080846040516020016107d1929190610fba565b604051602081830303815290604052955050505050506101f9565b50929392505050565b60008282018381101561086957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b61087a610ad0565b602082061561088f5760208206602003820191505b506020828101829052604080518085526000815290920101905290565b6108b4610ad0565b856020015182860111156108de576108de866108d68860200151888601610968565b60020261097f565b6000808751805188602083010193508089870111156108fd5788860182525b5050508484015b602084106109235780518252601f199093019260209182019101610904565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208690036101000a01908116901991909116179052508495945050505050565b60008183111561097957508161086c565b50919050565b815161098b8383610872565b50610996838261099c565b50505050565b6109a4610ad0565b610869838460000151518485516109b9610ad0565b82518211156109c757600080fd5b846020015182850111156109e9576109e9856108d68760200151878601610968565b600080865180518760208301019350808887011115610a085787860182525b505050602084015b60208410610a2f5780518252601f199093019260209182019101610a10565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208690036101000a019081169019919091161790525083949350505050565b6040805160608082018352600080835260208301529181019190915290565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820181905260a082019290925260c081019190915290565b604051806040016040528060608152602001600081525090565b60008083601f840112610afb578081fd5b50813567ffffffffffffffff811115610b12578182fd5b6020830191508360208083028501011115610b2c57600080fd5b9250929050565b600082601f830112610b43578081fd5b8135610b56610b5182611203565b6111df565b818152846020838601011115610b6a578283fd5b816020850160208301379081016020019190915292915050565b600082601f830112610b94578081fd5b8151610ba2610b5182611203565b818152846020838601011115610bb6578283fd5b6101d582602083016020870161124d565b600060408284031215610bd8578081fd5b6040516040810181811067ffffffffffffffff82111715610bf557fe5b604052825181526020928301519281019290925250919050565b600060c08284031215610c20578081fd5b60405160c0810181811067ffffffffffffffff82111715610c3d57fe5b8060405250809150825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201525092915050565b60008060008060008060808789031215610c9a578182fd5b86359550602087013567ffffffffffffffff80821115610cb8578384fd5b610cc48a838b01610aea565b9097509550604089013594506060890135915080821115610ce3578384fd5b50610cf089828a01610aea565b979a9699509497509295939492505050565b60008060008060608587031215610d17578384fd5b84359350602085013567ffffffffffffffff80821115610d35578485fd5b818701915087601f830112610d48578485fd5b813581811115610d56578586fd5b886020828501011115610d67578586fd5b95986020929092019750949560400135945092505050565b600060208284031215610d90578081fd5b813567ffffffffffffffff811115610da6578182fd5b6101d584828501610b33565b60008060408385031215610dc4578182fd5b825167ffffffffffffffff811115610dda578283fd5b610de685828601610b84565b925050602083015190509250929050565b600080600060608486031215610e0b578283fd5b833567ffffffffffffffff811115610e21578384fd5b610e2d86828701610b33565b9660208601359650604090950135949350505050565b6000806000806000806000806101c0898b031215610e5f578182fd5b885160ff81168114610e6f578283fd5b80985050602089015196506040890151955060608901519450610e958a60808b01610bc7565b9350610ea48a60c08b01610c0f565b925061018089015167ffffffffffffffff80821115610ec1578384fd5b610ecd8c838d01610b84565b93506101a08b0151915080821115610ee3578283fd5b50610ef08b828c01610b84565b9150509295985092959890939650565b73ffffffffffffffffffffffffffffffffffffffff169052565b60008151808452610f3281602086016020860161124d565b601f01601f19169290920160200192915050565b60609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b6000828483379101908152919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602082526108696020830184610f1a565b600060408252610fcd6040830185610f1a565b90508260208301529392505050565b60208082526023908201527f50726f6f664c69623a20696e76616c6964207472616e73616374696f6e20707260408201527f6f6f660000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601e908201527f50726f6f664c69623a20696e76616c696420616464726573732073697a650000604082015260600190565b60006020825261ffff8084511660208401528060208501511660408401525067ffffffffffffffff604084015116606083015260608301516110b56080840182610f00565b50608083015160e060a08401526110d0610100840182610f1a565b905060a084015160c084015260c0840151601f198483030160e08501526110f78282610f1a565b95945050505050565b600060208252825160208301526020830151604083015260408301516060808401526101d56080840182610f1a565b60ff91909116815260200190565b60006101c060ff8b16835289602084015288604084015287606084015286516080840152602087015160a0840152855160c0840152602086015160e084015260408601516101008401526060860151610120840152608086015161014084015260a0860151610160840152806101808401526111bb81840186610f1a565b90508281036101a08401526111d08185610f1a565b9b9a5050505050505050505050565b60405181810167ffffffffffffffff811182821017156111fb57fe5b604052919050565b600067ffffffffffffffff82111561121757fe5b50601f01601f191660200190565b60008085851115611234578182fd5b83861115611240578182fd5b5050820193919092039150565b60005b83811015611268578181015183820152602001611250565b83811115610996575050600091015256fea26469706673582212200bc6632f15b3aab0b1a705a34639ab874b271ae5506d53b35dafc51882474b2b64736f6c63430007060033\";\n\ntype FPValidatorConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: FPValidatorConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class FPValidator__factory extends ContractFactory {\n constructor(...args: FPValidatorConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n _stargateBridgeAddress: PromiseOrValue<string>,\n _stargateTokenAddress: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<FPValidator> {\n return super.deploy(\n _stargateBridgeAddress,\n _stargateTokenAddress,\n overrides || {}\n ) as Promise<FPValidator>;\n }\n override getDeployTransaction(\n _stargateBridgeAddress: PromiseOrValue<string>,\n _stargateTokenAddress: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(\n _stargateBridgeAddress,\n _stargateTokenAddress,\n overrides || {}\n );\n }\n override attach(address: string): FPValidator {\n return super.attach(address) as FPValidator;\n }\n override connect(signer: Signer): FPValidator__factory {\n return super.connect(signer) as FPValidator__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): FPValidatorInterface {\n return new utils.Interface(_abi) as FPValidatorInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): FPValidator {\n return new Contract(address, _abi, signerOrProvider) as FPValidator;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../../common\";\nimport type {\n MPTValidator,\n MPTValidatorInterface,\n} from \"../../proof/MPTValidator\";\n\nconst _abi = [\n {\n inputs: [],\n name: \"PACKET_SIGNATURE\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"hashRoot\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256\",\n name: \"receiptSlotIndex\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"logIndex\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes[]\",\n name: \"proof\",\n type: \"bytes[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"pointers\",\n type: \"uint256[]\",\n },\n ],\n name: \"getVerifyLog\",\n outputs: [\n {\n components: [\n {\n internalType: \"bytes32\",\n name: \"contractAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"topicZeroSig\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct MPTValidator.ULNLog\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"_receiptsRoot\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"_transactionProof\",\n type: \"bytes\",\n },\n {\n internalType: \"uint256\",\n name: \"_remoteAddressSize\",\n type: \"uint256\",\n },\n ],\n name: \"validateProof\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct LayerZeroPacket.Packet\",\n name: \"packet\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x608060405234801561001057600080fd5b50611469806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063b71e0f7114610046578063be9d395e1461006f578063fa3ebe1314610084575b600080fd5b610059610054366004611060565b6100a4565b60405161006691906112c0565b60405180910390f35b610077610163565b604051610066919061124b565b6100976100923660046110dd565b610187565b6040516100669190611350565b6100ac610e8e565b6000808080806100be888a018a61115b565b9450945094509450945060006100d78b848488886101a6565b60208101519091507fe8d23d927749ec8e512eb885679c2977d57068839d8cca1a85685dbbea0648f614610140576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161013790611254565b60405180910390fd5b6101548160400151878a8460000151610306565b9b9a5050505050505050505050565b7fe8d23d927749ec8e512eb885679c2977d57068839d8cca1a85685dbbea0648f681565b61018f610ecc565b61019c86868686866101a6565b9695505050505050565b6101ae610ecc565b6000606060005b8551811015610245578581815181106101ca57fe5b6020026020010151915081805190602001208914610214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161013790611289565b845181101561023d5784818151811061022957fe5b602002602001015192506020838301015198505b6001016101b5565b506000610259610254836103fc565b610474565b805190915060009061026b908a610520565b9050610279610254826105e9565b915061028482610675565b5061028e82610675565b5061029882610675565b506102af610254896102a985610675565b90610520565b91506102b9610ecc565b6102ca6102c584610675565b610725565b81526102dd6102c560006102a986610675565b60208201526102f36102ee84610675565b610842565b60408201529a9950505050505050505050565b61030e610e8e565b602085015160608601516068870151858801607c0151919061032e610eeb565b610338818961096f565b506103488160008c60888c6109a9565b5060006103608961035a866014610a65565b90610a65565b905061036a610eeb565b610374818361096f565b5061039060008d6103868d609c610adc565b84929190866109a9565b506040805160e08101825261ffff808e16825298909816602089015267ffffffffffffffff909416938701939093525073ffffffffffffffffffffffffffffffffffffffff9093166060850152915160808401525060a082018490525160c08201529050949350505050565b610404610f05565b602082018051835160009190911a908015801590610425575060c060ff8316105b1561045457600192909201917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b60405180604001604052808281526020018481525093505050505b919050565b61047c610f1f565b61048582610b57565b6104f057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f524c504465636f646572206974657261746f72206973206e6f74206c69737400604482015290519081900360640190fd5b60006104ff8360200151610b91565b60208085015160408051808201909152868152920190820152915050919050565b610528610f05565b61053183610b57565b610586576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806113f26021913960400191505060405180910390fd5b60006105958460200151610b91565b60208501510190506000805b848110156105c0576105b283610c30565b9283019291506001016105a1565b506105ca82610c30565b6040805180820190915290815260208101929092525090505b92915050565b6105f1610f05565b60006106008360200151610b91565b60208401518451908201805192935060009290921a91908015801590610629575060c060ff8416105b1561065857600191909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b604080518082019091529081526020810191909152949350505050565b61067d610f05565b61068682610d05565b6106f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f524c504465636f646572206974657261746f7220686173206e6f206e65787400604482015290519081900360640190fd5b6020820151600061070182610c30565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061073a57508151602110155b6107a557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f524c504465636f64657220746f55696e7420696e76616c6964206c656e677468604482015290519081900360640190fd5b60006107b48360200151610b91565b90508083600001511015610813576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806113ca6028913960400191505060405180910390fd5b82516020808501518301805192849003929183101561083957826020036101000a820491505b50949350505050565b805160609061089c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806114136021913960400191505060405180910390fd5b60006108ab8360200151610b91565b9050808360000151101561090a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806113ca6028913960400191505060405180910390fd5b825181900360008167ffffffffffffffff8111801561092857600080fd5b506040519080825280601f01601f191660200182016040528015610953576020820181803683370190505b5090506000816020019050610839848760200151018285610d1a565b610977610eeb565b602082061561098c5760208206602003820191505b506020828101829052604080518085526000815290920101905290565b6109b1610eeb565b856020015182860111156109db576109db866109d38860200151888601610d83565b600202610d9a565b6000808751805188602083010193508089870111156109fa5788860182525b5050508484015b60208410610a205780518252601f199093019260209182019101610a01565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208690036101000a01908116901991909116179052508495945050505050565b600082821115610ad657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015610b5057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b8051600090610b685750600061046f565b6020820151805160001a9060c0821015610b875760009250505061046f565b5060019392505050565b8051600090811a6080811015610bab57600091505061046f565b60b8811080610bc6575060c08110801590610bc6575060f881105b15610bd557600191505061046f565b60c0811015610c07577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a01905061046f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0a01905061046f565b80516000908190811a6080811015610c4b5760019150610cfe565b60b8811015610c7e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8181019150610cfe565b60c0811015610cab5760b78103600185019450806020036101000a85510460018201810193505050610cfe565b60f8811015610cde577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4181019150610cfe565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b80518051602091820151919092015191011190565b80610d2457610d7e565b5b60208110610d44578251825260209283019290910190601f1901610d25565b8251825160208390036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161782525b505050565b600081831115610d945750816105e3565b50919050565b8151610da6838361096f565b50610db18382610db7565b50505050565b610dbf610eeb565b610b5083846000015151848551610dd4610eeb565b8251821115610de257600080fd5b84602001518285011115610e0457610e04856109d38760200151878601610d83565b600080865180518760208301019350808887011115610e235787860182525b505050602084015b60208410610e4a5780518252601f199093019260209182019101610e2b565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208690036101000a019081169019919091161790525083949350505050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820181905260a082019290925260c081019190915290565b6040805160608082018352600080835260208301529181019190915290565b604051806040016040528060608152602001600081525090565b604051806040016040528060008152602001600081525090565b6040518060400160405280610f32610f05565b8152602001600081525090565b6000601f8381840112610f50578182fd5b82356020610f65610f60836113ab565b611387565b82815281810190868301865b85811015610feb57813589018a603f820112610f8b578889fd5b85810135604067ffffffffffffffff821115610fa357fe5b610fb488601f198c85011601611387565b8281528d82848601011115610fc7578b8cfd5b828285018a83013791820188018b9052508552509284019290840190600101610f71565b509098975050505050505050565b600082601f830112611009578081fd5b81356020611019610f60836113ab565b8281528181019085830183850287018401881015611035578586fd5b855b8581101561105357813584529284019290840190600101611037565b5090979650505050505050565b60008060008060608587031215611075578384fd5b84359350602085013567ffffffffffffffff80821115611093578485fd5b818701915087601f8301126110a6578485fd5b8135818111156110b4578586fd5b8860208285010111156110c5578586fd5b95986020929092019750949560400135945092505050565b600080600080600060a086880312156110f4578081fd5b853594506020860135935060408601359250606086013567ffffffffffffffff80821115611120578283fd5b61112c89838a01610f3f565b93506080880135915080821115611141578283fd5b5061114e88828901610ff9565b9150509295509295909350565b600080600080600060a08688031215611172578081fd5b853561ffff81168114611183578182fd5b9450602086013567ffffffffffffffff8082111561119f578283fd5b6111ab89838a01610f3f565b955060408801359150808211156111c0578283fd5b506111cd88828901610ff9565b9598949750949560608101359550608001359392505050565b73ffffffffffffffffffffffffffffffffffffffff169052565b60008151808452815b8181101561122557602081850181015186830182015201611209565b818111156112365782602083870101525b50601f01601f19169290920160200192915050565b90815260200190565b6020808252818101527f4c617965725a65726f3a207061636b6574206e6f74207265636f676e697a6564604082015260600190565b6020808252601b908201527f4c617965725a65726f3a20696e76616c696420686173686c696e6b0000000000604082015260600190565b60006020825261ffff8084511660208401528060208501511660408401525067ffffffffffffffff6040840151166060830152606083015161130560808401826111e6565b50608083015160e060a0840152611320610100840182611200565b905060a084015160c084015260c0840151601f198483030160e08501526113478282611200565b95945050505050565b6000602082528251602083015260208301516040830152604083015160608084015261137f6080840182611200565b949350505050565b60405181810167ffffffffffffffff811182821017156113a357fe5b604052919050565b600067ffffffffffffffff8211156113bf57fe5b506020908102019056fe524c504465636f6465723a20696e76616c696420524c50206974656d206f66667365742073697a65524c504465636f646572206974657261746f72206973206e6f742061206c697374524c504465636f64657220746f427974657320696e76616c6964206c656e677468a26469706673582212202aa35137ff2c5a8faa726691263d9b7e776e173183f0dc12cbd584184ff914d964736f6c63430007060033\";\n\ntype MPTValidatorConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: MPTValidatorConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class MPTValidator__factory extends ContractFactory {\n constructor(...args: MPTValidatorConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<MPTValidator> {\n return super.deploy(overrides || {}) as Promise<MPTValidator>;\n }\n override getDeployTransaction(\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(overrides || {});\n }\n override attach(address: string): MPTValidator {\n return super.attach(address) as MPTValidator;\n }\n override connect(signer: Signer): MPTValidator__factory {\n return super.connect(signer) as MPTValidator__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): MPTValidatorInterface {\n return new utils.Interface(_abi) as MPTValidatorInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): MPTValidator {\n return new Contract(address, _abi, signerOrProvider) as MPTValidator;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../../common\";\nimport type {\n MPTValidator01,\n MPTValidator01Interface,\n} from \"../../proof/MPTValidator01\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_stargateBridgeAddress\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_stargateTokenAddress\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n inputs: [],\n name: \"PACKET_SIGNATURE\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n {\n internalType: \"uint256\",\n name: \"sizeOfSrcAddress\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n ],\n name: \"getPacket\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct LayerZeroPacket.Packet\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getProofType\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getUtilsVersion\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"hashRoot\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256[]\",\n name: \"receiptSlotIndex\",\n type: \"uint256[]\",\n },\n {\n internalType: \"uint256\",\n name: \"logIndex\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes[]\",\n name: \"proof\",\n type: \"bytes[]\",\n },\n ],\n name: \"getVerifyLog\",\n outputs: [\n {\n components: [\n {\n internalType: \"bytes32\",\n name: \"contractAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"topicZeroSig\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct IValidationLibraryHelperV2.ULNLog\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"proofType\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n ],\n name: \"secureStgPayload\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n ],\n name: \"secureStgTokenPayload\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"stargateBridgeAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"stargateTokenAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"utilsVersion\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"_receiptsRoot\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"_transactionProof\",\n type: \"bytes\",\n },\n {\n internalType: \"uint256\",\n name: \"_remoteAddressSize\",\n type: \"uint256\",\n },\n ],\n name: \"validateProof\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct LayerZeroPacket.Packet\",\n name: \"packet\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x60c060405260008054600160ff199091161761ff0019166104001790553480156200002957600080fd5b5060405162001e5238038062001e528339810160408190526200004c9162000088565b6001600160601b0319606092831b8116608052911b1660a052620000bf565b80516001600160a01b03811681146200008357600080fd5b919050565b600080604083850312156200009b578182fd5b620000a6836200006b565b9150620000b6602084016200006b565b90509250929050565b60805160601c60a05160601c611d5f620000f360003980610373528061041c52508061022b52806103085250611d5f6000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80639bcd850f11610081578063d633ad611161005b578063d633ad61146101a4578063e965c192146101ac578063ea455df9146101b4576100d4565b80639bcd850f14610174578063b71e0f711461017c578063be9d395e1461018f576100d4565b806347713b39116100b257806347713b39146101375780635711c2a81461013f5780636348d2691461015f576100d4565b806305af5d35146100d95780630f222e65146100f75780632ff2044914610117575b600080fd5b6100e16101c7565b6040516100ee9190611b7f565b60405180910390f35b61010a61010536600461166f565b6101d0565b6040516100ee9190611b50565b61012a6101253660046117d8565b6101ed565b6040516100ee9190611ac9565b6100e1610208565b61015261014d366004611760565b610216565b6040516100ee9190611981565b610167610229565b6040516100ee9190611957565b6100e161024d565b61012a61018a3660046116e3565b610256565b6101976103e8565b6040516100ee9190611978565b6100e161040c565b61016761041a565b6101526101c2366004611760565b61043e565b60005460ff1681565b6101d8611349565b6101e485858585610449565b95945050505050565b6101f5611368565b6102008484846105aa565b949350505050565b600054610100900460ff1681565b6060610221826106ff565b90505b919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005460ff1690565b61025e611368565b600082116102875760405162461bcd60e51b815260040161027e90611a92565b60405180910390fd5b6000808061029786880188611605565b92509250925060006102ab89848487610449565b60208101519091507fe9bded5f24a4168e4f3bf44e00298c993b22376aad8c58c7dda9718a54cbea82146102f15760405162461bcd60e51b815260040161027e90611a24565b61030481604001518783600001516105aa565b94507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16856060015173ffffffffffffffffffffffffffffffffffffffff1614156103715761036b8560c001516106ff565b60c08601525b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16856060015173ffffffffffffffffffffffffffffffffffffffff1614156103dc576103d68560c001516107e4565b60c08601525b50505050949350505050565b7fe9bded5f24a4168e4f3bf44e00298c993b22376aad8c58c7dda9718a54cbea8281565b600054610100900460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060610221826107e4565b610451611349565b81518451146104725760405162461bcd60e51b815260040161027e906119b6565b60008251116104935760405162461bcd60e51b815260040161027e90611a5b565b61049b6113a6565b606060005b845181101561052d578481815181106104b557fe5b60200260200101519150818051906020012088146104e55760405162461bcd60e51b815260040161027e906119ed565b61050b8782815181106104f457fe5b60200260200101516105058461088e565b90610902565b925060018551038110156105255761052283610a70565b97505b6001016104a0565b50600061053e600361050585610b59565b9050600061055461054f8389610902565b610be5565b905061055e611349565b61056f61056a83610c77565b610a70565b815261058261056a600061050585610c77565b602082015261059861059383610c77565b610d0d565b60408201529998505050505050505050565b6105b2611368565b60408401516048850151604a860151858701604c81015160609091015161ffff8316610625576040805162461bcd60e51b815260206004820152601f60248201527f4c617965725a65726f5061636b65743a20696e76616c6964207061636b657400604482015290519081900360640190fd5b61062d6113c0565b610637818a610e06565b506106478160008c606a8d610e40565b5060006106558a6020610efc565b905060006106638883610f5d565b905061066d6113c0565b6106778183610e06565b5061069360008e610689866060610efc565b8492919086610e40565b506040805160e08101825261ffff988916815296909716602087015267ffffffffffffffff909716958501959095525073ffffffffffffffffffffffffffffffffffffffff909116606083015251608082015260a08101869052915160c0830152509150509392505050565b6020810151606090600160ff821614156107dd576000806000806000806000898060200190518101906107329190611824565b9750975097509750975097509750506000815111156107d55781516000901561075c575060148201515b803b806107d2576000826040516020016107769190611927565b60408051601f19818403018152602083810183526000808552925191945091926107ae928f928f928f928f928f928f928b9201611b8d565b60408051601f198184030181529190529c506102249b505050505050505050505050565b50505b505050505050505b5090919050565b6060600080838060200190518101906107fd9190611793565b9150915060008083511115610813575060148201515b73ffffffffffffffffffffffffffffffffffffffff81166108855760405161dead90600090610846908390602001611927565b6040516020818303038152906040529050808460405160200161086a929190611994565b60405160208183030381529060405295505050505050610224565b50929392505050565b6108966113a6565b602082018051835160009190911a9080158015906108b7575060c060ff8316105b156108e657600192909201917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b6040805180820190915290815260208101929092525092915050565b61090a6113a6565b61091383610fba565b61094e5760405162461bcd60e51b8152600401808060200182810382526021815260200180611ce86021913960400191505060405180910390fd5b61095783610ff4565b82106109aa576040805162461bcd60e51b815260206004820152601660248201527f524c50206974656d206f7574206f6620626f756e647300000000000000000000604482015290519081900360640190fd5b82516020840151908101906000906109c19061104c565b60208601510190506000805b858110156109ec576109de836110eb565b9283019291506001016109cd565b506109f6826110eb565b9050828183011115610a4f576040805162461bcd60e51b815260206004820152601160248201527f524c50206974656d206f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b60405180604001604052808281526020018381525093505050505b92915050565b805160009015801590610a8557508151602110155b610ad6576040805162461bcd60e51b815260206004820181905260248201527f524c504465636f64657220746f55696e7420696e76616c6964206c656e677468604482015290519081900360640190fd5b6000610ae5836020015161104c565b90508083600001511015610b2a5760405162461bcd60e51b8152600401808060200182810382526028815260200180611cc06028913960400191505060405180910390fd5b825160208085015183018051928490039291831015610b5057826020036101000a820491505b50949350505050565b610b616113a6565b6000610b70836020015161104c565b60208401518451908201805192935060009290921a91908015801590610b99575060c060ff8416105b15610bc857600191909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b604080518082019091529081526020810191909152949350505050565b610bed6113da565b610bf682610fba565b610c47576040805162461bcd60e51b815260206004820152601f60248201527f524c504465636f646572206974657261746f72206973206e6f74206c69737400604482015290519081900360640190fd5b6000610c56836020015161104c565b60208085015160408051808201909152868152920190820152915050919050565b610c7f6113a6565b610c88826111c0565b610cd9576040805162461bcd60e51b815260206004820152601f60248201527f524c504465636f646572206974657261746f7220686173206e6f206e65787400604482015290519081900360640190fd5b60208201516000610ce9826110eb565b80830160209586015260408051808201909152908152938401919091525090919050565b8051606090610d4d5760405162461bcd60e51b8152600401808060200182810382526021815260200180611d096021913960400191505060405180910390fd5b6000610d5c836020015161104c565b90508083600001511015610da15760405162461bcd60e51b8152600401808060200182810382526028815260200180611cc06028913960400191505060405180910390fd5b825181900360008167ffffffffffffffff81118015610dbf57600080fd5b506040519080825280601f01601f191660200182016040528015610dea576020820181803683370190505b5090506000816020019050610b508487602001510182856111d5565b610e0e6113c0565b6020820615610e235760208206602003820191505b506020828101829052604080518085526000815290920101905290565b610e486113c0565b85602001518286011115610e7257610e7286610e6a886020015188860161123e565b600202611255565b600080875180518860208301019350808987011115610e915788860182525b5050508484015b60208410610eb75780518252601f199093019260209182019101610e98565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208690036101000a01908116901991909116179052508495945050505050565b600082820183811015610f56576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115610fb4576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b8051600090610fcb57506000610224565b6020820151805160001a9060c0821015610fea57600092505050610224565b5060019392505050565b805160009061100557506000610224565b600080611015846020015161104c565b602085015185519181019250015b8082101561104357611034826110eb565b60019093019290910190611023565b50909392505050565b8051600090811a6080811015611066576000915050610224565b60b8811080611081575060c08110801590611081575060f881105b15611090576001915050610224565b60c08110156110c2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a019050610224565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0a019050610224565b80516000908190811a608081101561110657600191506111b9565b60b8811015611139577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81810191506111b9565b60c08110156111665760b78103600185019450806020036101000a855104600182018101935050506111b9565b60f8811015611199577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41810191506111b9565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b80518051602091820151919092015191011190565b806111df57611239565b5b602081106111ff578251825260209283019290910190601f19016111e0565b8251825160208390036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161782525b505050565b60008183111561124f575081610a6a565b50919050565b81516112618383610e06565b5061126c8382611272565b50505050565b61127a6113c0565b610f568384600001515184855161128f6113c0565b825182111561129d57600080fd5b846020015182850111156112bf576112bf85610e6a876020015187860161123e565b6000808651805187602083010193508088870111156112de5787860182525b505050602084015b602084106113055780518252601f1990930192602091820191016112e6565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208690036101000a019081169019919091161790525083949350505050565b6040805160608082018352600080835260208301529181019190915290565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820181905260a082019290925260c081019190915290565b604051806040016040528060008152602001600081525090565b604051806040016040528060608152602001600081525090565b60405180604001604052806113ed6113a6565b8152602001600081525090565b600082601f83011261140a578081fd5b8135602061141f61141a83611c53565b611c2f565b82815281810190858301855b8581101561145457611442898684358b01016114bb565b8452928401929084019060010161142b565b5090979650505050505050565b600082601f830112611471578081fd5b8135602061148161141a83611c53565b828152818101908583018385028701840188101561149d578586fd5b855b858110156114545781358452928401929084019060010161149f565b600082601f8301126114cb578081fd5b81356114d961141a82611c71565b8181528460208386010111156114ed578283fd5b816020850160208301379081016020019190915292915050565b600082601f830112611517578081fd5b815161152561141a82611c71565b818152846020838601011115611539578283fd5b610200826020830160208701611c93565b60006040828403121561155b578081fd5b6040516040810181811067ffffffffffffffff8211171561157857fe5b604052825181526020928301519281019290925250919050565b600060c082840312156115a3578081fd5b60405160c0810181811067ffffffffffffffff821117156115c057fe5b8060405250809150825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201525092915050565b600080600060608486031215611619578283fd5b833567ffffffffffffffff80821115611630578485fd5b61163c878388016113fa565b94506020860135915080821115611651578384fd5b5061165e86828701611461565b925050604084013590509250925092565b60008060008060808587031215611684578081fd5b84359350602085013567ffffffffffffffff808211156116a2578283fd5b6116ae88838901611461565b94506040870135935060608701359150808211156116ca578283fd5b506116d7878288016113fa565b91505092959194509250565b600080600080606085870312156116f8578384fd5b84359350602085013567ffffffffffffffff80821115611716578485fd5b818701915087601f830112611729578485fd5b813581811115611737578586fd5b886020828501011115611748578586fd5b95986020929092019750949560400135945092505050565b600060208284031215611771578081fd5b813567ffffffffffffffff811115611787578182fd5b610200848285016114bb565b600080604083850312156117a5578182fd5b825167ffffffffffffffff8111156117bb578283fd5b6117c785828601611507565b925050602083015190509250929050565b6000806000606084860312156117ec578283fd5b833567ffffffffffffffff811115611802578384fd5b61180e868287016114bb565b9660208601359650604090950135949350505050565b6000806000806000806000806101c0898b031215611840578586fd5b885160ff81168114611850578687fd5b809850506020890151965060408901519550606089015194506118768a60808b0161154a565b93506118858a60c08b01611592565b925061018089015167ffffffffffffffff808211156118a2578384fd5b6118ae8c838d01611507565b93506101a08b01519150808211156118c4578283fd5b506118d18b828c01611507565b9150509295985092959890939650565b73ffffffffffffffffffffffffffffffffffffffff169052565b60008151808452611913816020860160208601611c93565b601f01601f19169290920160200192915050565b60609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b90815260200190565b600060208252610f5660208301846118fb565b6000604082526119a760408301856118fb565b90508260208301529392505050565b6020808252601c908201527f50726f6f664c69623a20696e76616c69642070726f6f662073697a6500000000604082015260600190565b6020808252601a908201527f50726f6f664c69623a20696e76616c696420686173686c696e6b000000000000604082015260600190565b6020808252601f908201527f50726f6f664c69623a207061636b6574206e6f74207265636f676e697a656400604082015260600190565b6020808252601d908201527f50726f6f664c69623a2070726f6f662073697a65206d757374203e2030000000604082015260600190565b6020808252601e908201527f50726f6f664c69623a20696e76616c696420616464726573732073697a650000604082015260600190565b60006020825261ffff8084511660208401528060208501511660408401525067ffffffffffffffff60408401511660608301526060830151611b0e60808401826118e1565b50608083015160e060a0840152611b296101008401826118fb565b905060a084015160c084015260c0840151601f198483030160e08501526101e482826118fb565b6000602082528251602083015260208301516040830152604083015160608084015261020060808401826118fb565b60ff91909116815260200190565b60006101c060ff8b16835289602084015288604084015287606084015286516080840152602087015160a0840152855160c0840152602086015160e084015260408601516101008401526060860151610120840152608086015161014084015260a086015161016084015280610180840152611c0b818401866118fb565b90508281036101a0840152611c2081856118fb565b9b9a5050505050505050505050565b60405181810167ffffffffffffffff81118282101715611c4b57fe5b604052919050565b600067ffffffffffffffff821115611c6757fe5b5060209081020190565b600067ffffffffffffffff821115611c8557fe5b50601f01601f191660200190565b60005b83811015611cae578181015183820152602001611c96565b8381111561126c575050600091015256fe524c504465636f6465723a20696e76616c696420524c50206974656d206f66667365742073697a65524c504465636f646572206974657261746f72206973206e6f742061206c697374524c504465636f64657220746f427974657320696e76616c6964206c656e677468a2646970667358221220106f7d50599a8a4577b48aeaf7160923ff702f6336e36ff3611dc5f5806ccf2664736f6c63430007060033\";\n\ntype MPTValidator01ConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: MPTValidator01ConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class MPTValidator01__factory extends ContractFactory {\n constructor(...args: MPTValidator01ConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n _stargateBridgeAddress: PromiseOrValue<string>,\n _stargateTokenAddress: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<MPTValidator01> {\n return super.deploy(\n _stargateBridgeAddress,\n _stargateTokenAddress,\n overrides || {}\n ) as Promise<MPTValidator01>;\n }\n override getDeployTransaction(\n _stargateBridgeAddress: PromiseOrValue<string>,\n _stargateTokenAddress: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(\n _stargateBridgeAddress,\n _stargateTokenAddress,\n overrides || {}\n );\n }\n override attach(address: string): MPTValidator01 {\n return super.attach(address) as MPTValidator01;\n }\n override connect(signer: Signer): MPTValidator01__factory {\n return super.connect(signer) as MPTValidator01__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): MPTValidator01Interface {\n return new utils.Interface(_abi) as MPTValidator01Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): MPTValidator01 {\n return new Contract(address, _abi, signerOrProvider) as MPTValidator01;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n BigNumberish,\n Overrides,\n} from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../../common\";\nimport type {\n MPTValidatorStgV3,\n MPTValidatorStgV3Interface,\n} from \"../../proof/MPTValidatorStgV3\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_stargateBridgeAddress\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_stgTokenAddress\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"_localChainId\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n inputs: [],\n name: \"PACKET_SIGNATURE\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n {\n internalType: \"uint16\",\n name: \"srcChain\",\n type: \"uint16\",\n },\n {\n internalType: \"uint256\",\n name: \"sizeOfSrcAddress\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n ],\n name: \"getPacket\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct LayerZeroPacket.Packet\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"hashRoot\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256[]\",\n name: \"receiptSlotIndex\",\n type: \"uint256[]\",\n },\n {\n internalType: \"uint256\",\n name: \"logIndex\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes[]\",\n name: \"proof\",\n type: \"bytes[]\",\n },\n ],\n name: \"getVerifyLog\",\n outputs: [\n {\n components: [\n {\n internalType: \"bytes32\",\n name: \"contractAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"topicZeroSig\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct MPTValidatorStgV3.ULNLog\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"localChainId\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n ],\n name: \"secureStgPayload\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n ],\n name: \"secureStgTokenPayload\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"stargateBridgeAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"stgTokenAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"_receiptsRoot\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"_transactionProof\",\n type: \"bytes\",\n },\n {\n internalType: \"uint256\",\n name: \"_remoteAddressSize\",\n type: \"uint256\",\n },\n ],\n name: \"validateProof\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct LayerZeroPacket.Packet\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x60e06040523480156200001157600080fd5b5060405162001ead38038062001ead833981016040819052620000349162000083565b606092831b6001600160601b03199081166080529190921b1660a05260f01b6001600160f01b03191660c052620000d5565b80516001600160a01b03811681146200007e57600080fd5b919050565b60008060006060848603121562000098578283fd5b620000a38462000066565b9250620000b36020850162000066565b9150604084015161ffff81168114620000ca578182fd5b809150509250925092565b60805160601c60a05160601c60c05160f01c611d936200011a600039806101d452806102b252508061019d52806103685250806101f852806102fd5250611d936000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80636348d26911610076578063be9d395e1161005b578063be9d395e14610143578063e0cabadd14610158578063ea455df91461016b576100a3565b80636348d2691461011b578063b71e0f7114610123576100a3565b80630f222e65146100a85780633fc18d4c146100d15780635711c2a8146100e65780635b056da514610106575b600080fd5b6100bb6100b636600461162b565b61017e565b6040516100c89190611b83565b60405180910390f35b6100d961019b565b6040516100c8919061199b565b6100f96100f436600461171c565b6101bf565b6040516100c891906119c5565b61010e6101d2565b6040516100c89190611bb2565b6100d96101f6565b61013661013136600461169f565b61021a565b6040516100c89190611afc565b61014b6103df565b6040516100c891906119bc565b61013661016636600461174f565b610403565b6100f961017936600461171c565b610417565b610186611355565b61019285858585610422565b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606101ca82610568565b90505b919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b610222611374565b6000808080610233878901896117ef565b935093509350935060006102498a848487610422565b60208101519091507fe8d23d927749ec8e512eb885679c2977d57068839d8cca1a85685dbbea0648f6146102985760405162461bcd60e51b815260040161028f90611a68565b60405180910390fd5b60006102ae8260400151878a856000015161064d565b90507f000000000000000000000000000000000000000000000000000000000000000061ffff16816020015161ffff16146102fb5760405162461bcd60e51b815260040161028f90611a9f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16816060015173ffffffffffffffffffffffffffffffffffffffff161415610366576103608160c00151610568565b60c08201525b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16816060015173ffffffffffffffffffffffffffffffffffffffff1614156103d1576103cb8160c00151610743565b60c08201525b9a9950505050505050505050565b7fe8d23d927749ec8e512eb885679c2977d57068839d8cca1a85685dbbea0648f681565b61040b611374565b6101928585858561064d565b60606101ca82610743565b61042a611355565b815184511461044b5760405162461bcd60e51b815260040161028f906119fa565b6104536113b2565b606060005b84518110156104e55784818151811061046d57fe5b602002602001015191508180519060200120881461049d5760405162461bcd60e51b815260040161028f90611a31565b6104c38782815181106104ac57fe5b60200260200101516104bd846107ed565b90610861565b925060018551038110156104dd576104da836109cf565b97505b600101610458565b5060006104f660036104bd85610ab8565b9050600061050c6105078389610861565b610b44565b9050610516611355565b61052761052283610bd6565b6109cf565b8152610540610522600061053a85610bd6565b90610c6c565b602082015261055661055183610bd6565b610d19565b60408201529998505050505050505050565b6020810151606090600160ff821614156106465760008060008060008060008980602001905181019061059b9190611868565b97509750975097509750975097505060008151111561063e578151600090156105c5575060148201515b803b8061063b576000826040516020016105df919061196b565b60408051601f1981840301815260208381018352600080855292519194509192610617928f928f928f928f928f928f928b9201611bc1565b60408051601f198184030181529190529c506101cd9b505050505050505050505050565b50505b505050505050505b5090919050565b610655611374565b602085015160608601516068870151858801607c015191906106756113cc565b61067f8189610e12565b5061068f8160008c60888c610e4c565b5060006106a7896106a1866014610f08565b90610f08565b90506106b16113cc565b6106bb8183610e12565b506106d760008d6106cd8d609c610f65565b8492919086610e4c565b506040805160e08101825261ffff808e16825298909816602089015267ffffffffffffffff909416938701939093525073ffffffffffffffffffffffffffffffffffffffff9093166060850152915160808401525060a082018490525160c08201529050949350505050565b60606000808380602001905181019061075c91906117aa565b9150915060008083511115610772575060148201515b73ffffffffffffffffffffffffffffffffffffffff81166107e45760405161dead906000906107a590839060200161196b565b604051602081830303815290604052905080846040516020016107c99291906119d8565b604051602081830303815290604052955050505050506101cd565b50929392505050565b6107f56113b2565b602082018051835160009190911a908015801590610816575060c060ff8316105b1561084557600192909201917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b6040805180820190915290815260208101929092525092915050565b6108696113b2565b61087283610fc6565b6108ad5760405162461bcd60e51b8152600401808060200182810382526021815260200180611d1c6021913960400191505060405180910390fd5b6108b683611000565b8210610909576040805162461bcd60e51b815260206004820152601660248201527f524c50206974656d206f7574206f6620626f756e647300000000000000000000604482015290519081900360640190fd5b825160208401519081019060009061092090611058565b60208601510190506000805b8581101561094b5761093d836110f7565b92830192915060010161092c565b50610955826110f7565b90508281830111156109ae576040805162461bcd60e51b815260206004820152601160248201527f524c50206974656d206f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b60405180604001604052808281526020018381525093505050505b92915050565b8051600090158015906109e457508151602110155b610a35576040805162461bcd60e51b815260206004820181905260248201527f524c504465636f64657220746f55696e7420696e76616c6964206c656e677468604482015290519081900360640190fd5b6000610a448360200151611058565b90508083600001511015610a895760405162461bcd60e51b8152600401808060200182810382526028815260200180611cf46028913960400191505060405180910390fd5b825160208085015183018051928490039291831015610aaf57826020036101000a820491505b50949350505050565b610ac06113b2565b6000610acf8360200151611058565b60208401518451908201805192935060009290921a91908015801590610af8575060c060ff8416105b15610b2757600191909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b604080518082019091529081526020810191909152949350505050565b610b4c6113e6565b610b5582610fc6565b610ba6576040805162461bcd60e51b815260206004820152601f60248201527f524c504465636f646572206974657261746f72206973206e6f74206c69737400604482015290519081900360640190fd5b6000610bb58360200151611058565b60208085015160408051808201909152868152920190820152915050919050565b610bde6113b2565b610be7826111cc565b610c38576040805162461bcd60e51b815260206004820152601f60248201527f524c504465636f646572206974657261746f7220686173206e6f206e65787400604482015290519081900360640190fd5b60208201516000610c48826110f7565b80830160209586015260408051808201909152908152938401919091525090919050565b610c746113b2565b610c7d83610fc6565b610cb85760405162461bcd60e51b8152600401808060200182810382526021815260200180611d1c6021913960400191505060405180910390fd5b6000610cc78460200151611058565b60208501510190506000805b84811015610cf257610ce4836110f7565b928301929150600101610cd3565b50610cfc826110f7565b604080518082019091529081526020810192909252509392505050565b8051606090610d595760405162461bcd60e51b8152600401808060200182810382526021815260200180611d3d6021913960400191505060405180910390fd5b6000610d688360200151611058565b90508083600001511015610dad5760405162461bcd60e51b8152600401808060200182810382526028815260200180611cf46028913960400191505060405180910390fd5b825181900360008167ffffffffffffffff81118015610dcb57600080fd5b506040519080825280601f01601f191660200182016040528015610df6576020820181803683370190505b5090506000816020019050610aaf8487602001510182856111e1565b610e1a6113cc565b6020820615610e2f5760208206602003820191505b506020828101829052604080518085526000815290920101905290565b610e546113cc565b85602001518286011115610e7e57610e7e86610e76886020015188860161124a565b600202611261565b600080875180518860208301019350808987011115610e9d5788860182525b5050508484015b60208410610ec35780518252601f199093019260209182019101610ea4565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208690036101000a01908116901991909116179052508495945050505050565b600082821115610f5f576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015610fbf576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b8051600090610fd7575060006101cd565b6020820151805160001a9060c0821015610ff6576000925050506101cd565b5060019392505050565b8051600090611011575060006101cd565b6000806110218460200151611058565b602085015185519181019250015b8082101561104f57611040826110f7565b6001909301929091019061102f565b50909392505050565b8051600090811a60808110156110725760009150506101cd565b60b881108061108d575060c0811080159061108d575060f881105b1561109c5760019150506101cd565b60c08110156110ce577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a0190506101cd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0a0190506101cd565b80516000908190811a608081101561111257600191506111c5565b60b8811015611145577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81810191506111c5565b60c08110156111725760b78103600185019450806020036101000a855104600182018101935050506111c5565b60f88110156111a5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41810191506111c5565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b80518051602091820151919092015191011190565b806111eb57611245565b5b6020811061120b578251825260209283019290910190601f19016111ec565b8251825160208390036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161782525b505050565b60008183111561125b5750816109c9565b50919050565b815161126d8383610e12565b50611278838261127e565b50505050565b6112866113cc565b610fbf8384600001515184855161129b6113cc565b82518211156112a957600080fd5b846020015182850111156112cb576112cb85610e76876020015187860161124a565b6000808651805187602083010193508088870111156112ea5787860182525b505050602084015b602084106113115780518252601f1990930192602091820191016112f2565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208690036101000a019081169019919091161790525083949350505050565b6040805160608082018352600080835260208301529181019190915290565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820181905260a082019290925260c081019190915290565b604051806040016040528060008152602001600081525090565b604051806040016040528060608152602001600081525090565b60405180604001604052806113f96113b2565b8152602001600081525090565b600082601f830112611416578081fd5b8135602061142b61142683611c87565b611c63565b82815281810190858301855b858110156114605761144e898684358b01016114c7565b84529284019290840190600101611437565b5090979650505050505050565b600082601f83011261147d578081fd5b8135602061148d61142683611c87565b82815281810190858301838502870184018810156114a9578586fd5b855b85811015611460578135845292840192908401906001016114ab565b600082601f8301126114d7578081fd5b81356114e561142682611ca5565b8181528460208386010111156114f9578283fd5b816020850160208301379081016020019190915292915050565b600082601f830112611523578081fd5b815161153161142682611ca5565b818152846020838601011115611545578283fd5b611556826020830160208701611cc7565b949350505050565b60006040828403121561156f578081fd5b6040516040810181811067ffffffffffffffff8211171561158c57fe5b604052825181526020928301519281019290925250919050565b600060c082840312156115b7578081fd5b60405160c0810181811067ffffffffffffffff821117156115d457fe5b8060405250809150825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201525092915050565b803561ffff811681146101cd57600080fd5b60008060008060808587031215611640578384fd5b84359350602085013567ffffffffffffffff8082111561165e578485fd5b61166a8883890161146d565b9450604087013593506060870135915080821115611686578283fd5b5061169387828801611406565b91505092959194509250565b600080600080606085870312156116b4578384fd5b84359350602085013567ffffffffffffffff808211156116d2578485fd5b818701915087601f8301126116e5578485fd5b8135818111156116f3578586fd5b886020828501011115611704578586fd5b95986020929092019750949560400135945092505050565b60006020828403121561172d578081fd5b813567ffffffffffffffff811115611743578182fd5b611556848285016114c7565b60008060008060808587031215611764578384fd5b843567ffffffffffffffff81111561177a578485fd5b611786878288016114c7565b94505061179560208601611619565b93969395505050506040820135916060013590565b600080604083850312156117bc578182fd5b825167ffffffffffffffff8111156117d2578283fd5b6117de85828601611513565b925050602083015190509250929050565b60008060008060808587031215611804578182fd5b61180d85611619565b9350602085013567ffffffffffffffff80821115611829578384fd5b61183588838901611406565b9450604087013591508082111561184a578384fd5b506118578782880161146d565b949793965093946060013593505050565b6000806000806000806000806101c0898b031215611884578586fd5b885160ff81168114611894578687fd5b809850506020890151965060408901519550606089015194506118ba8a60808b0161155e565b93506118c98a60c08b016115a6565b925061018089015167ffffffffffffffff808211156118e6578384fd5b6118f28c838d01611513565b93506101a08b0151915080821115611908578283fd5b506119158b828c01611513565b9150509295985092959890939650565b73ffffffffffffffffffffffffffffffffffffffff169052565b60008151808452611957816020860160208601611cc7565b601f01601f19169290920160200192915050565b60609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b90815260200190565b600060208252610fbf602083018461193f565b6000604082526119eb604083018561193f565b90508260208301529392505050565b6020808252601c908201527f50726f6f664c69623a20696e76616c69642070726f6f662073697a6500000000604082015260600190565b6020808252601a908201527f50726f6f664c69623a20696e76616c696420686173686c696e6b000000000000604082015260600190565b6020808252601f908201527f50726f6f664c69623a207061636b6574206e6f74207265636f676e697a656400604082015260600190565b60208082526026908201527f50726f6f664c69623a20696e76616c69642064657374696e6174696f6e20636860408201527f61696e2049440000000000000000000000000000000000000000000000000000606082015260800190565b60006020825261ffff8084511660208401528060208501511660408401525067ffffffffffffffff60408401511660608301526060830151611b416080840182611925565b50608083015160e060a0840152611b5c61010084018261193f565b905060a084015160c084015260c0840151601f198483030160e0850152610192828261193f565b60006020825282516020830152602083015160408301526040830151606080840152611556608084018261193f565b61ffff91909116815260200190565b60006101c060ff8b16835289602084015288604084015287606084015286516080840152602087015160a0840152855160c0840152602086015160e084015260408601516101008401526060860151610120840152608086015161014084015260a086015161016084015280610180840152611c3f8184018661193f565b90508281036101a0840152611c54818561193f565b9b9a5050505050505050505050565b60405181810167ffffffffffffffff81118282101715611c7f57fe5b604052919050565b600067ffffffffffffffff821115611c9b57fe5b5060209081020190565b600067ffffffffffffffff821115611cb957fe5b50601f01601f191660200190565b60005b83811015611ce2578181015183820152602001611cca565b83811115611278575050600091015256fe524c504465636f6465723a20696e76616c696420524c50206974656d206f66667365742073697a65524c504465636f646572206974657261746f72206973206e6f742061206c697374524c504465636f64657220746f427974657320696e76616c6964206c656e677468a264697066735822122010ed279bfcbe2893da4c617febd90b18d841369cf6914c6b3e4c129e7c14c97c64736f6c63430007060033\";\n\ntype MPTValidatorStgV3ConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: MPTValidatorStgV3ConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class MPTValidatorStgV3__factory extends ContractFactory {\n constructor(...args: MPTValidatorStgV3ConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n _stargateBridgeAddress: PromiseOrValue<string>,\n _stgTokenAddress: PromiseOrValue<string>,\n _localChainId: PromiseOrValue<BigNumberish>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<MPTValidatorStgV3> {\n return super.deploy(\n _stargateBridgeAddress,\n _stgTokenAddress,\n _localChainId,\n overrides || {}\n ) as Promise<MPTValidatorStgV3>;\n }\n override getDeployTransaction(\n _stargateBridgeAddress: PromiseOrValue<string>,\n _stgTokenAddress: PromiseOrValue<string>,\n _localChainId: PromiseOrValue<BigNumberish>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(\n _stargateBridgeAddress,\n _stgTokenAddress,\n _localChainId,\n overrides || {}\n );\n }\n override attach(address: string): MPTValidatorStgV3 {\n return super.attach(address) as MPTValidatorStgV3;\n }\n override connect(signer: Signer): MPTValidatorStgV3__factory {\n return super.connect(signer) as MPTValidatorStgV3__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): MPTValidatorStgV3Interface {\n return new utils.Interface(_abi) as MPTValidatorStgV3Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): MPTValidatorStgV3 {\n return new Contract(address, _abi, signerOrProvider) as MPTValidatorStgV3;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../../common\";\nimport type {\n MPTValidatorV2,\n MPTValidatorV2Interface,\n} from \"../../proof/MPTValidatorV2\";\n\nconst _abi = [\n {\n inputs: [],\n name: \"PACKET_SIGNATURE\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n {\n internalType: \"uint16\",\n name: \"srcChain\",\n type: \"uint16\",\n },\n {\n internalType: \"uint256\",\n name: \"sizeOfSrcAddress\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n ],\n name: \"getPacket\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct LayerZeroPacket.Packet\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"hashRoot\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256[]\",\n name: \"receiptSlotIndex\",\n type: \"uint256[]\",\n },\n {\n internalType: \"uint256\",\n name: \"logIndex\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes[]\",\n name: \"proof\",\n type: \"bytes[]\",\n },\n ],\n name: \"getVerifyLog\",\n outputs: [\n {\n components: [\n {\n internalType: \"bytes32\",\n name: \"contractAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"topicZeroSig\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct MPTValidatorV2.ULNLog\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bytes32\",\n name: \"_receiptsRoot\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"_transactionProof\",\n type: \"bytes\",\n },\n {\n internalType: \"uint256\",\n name: \"_remoteAddressSize\",\n type: \"uint256\",\n },\n ],\n name: \"validateProof\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes32\",\n name: \"ulnAddress\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n internalType: \"struct LayerZeroPacket.Packet\",\n name: \"packet\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x608060405234801561001057600080fd5b506115c0806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630f222e6514610051578063b71e0f711461007a578063be9d395e1461009a578063e0cabadd146100af575b600080fd5b61006461005f366004611148565b6100c2565b60405161007191906114a7565b60405180910390f35b61008d6100883660046111bc565b6100df565b6040516100719190611420565b6100a261017f565b6040516100719190611372565b61008d6100bd366004611239565b6101a3565b6100ca610f5f565b6100d6858585856101b7565b95945050505050565b6100e7610f7e565b60008080806100f887890189611294565b9350935093509350600061010e8a8484876101b7565b60208101519091507fe8d23d927749ec8e512eb885679c2977d57068839d8cca1a85685dbbea0648f61461015d5760405162461bcd60e51b8152600401610154906113e9565b60405180910390fd5b6101718160400151868984600001516102fd565b9a9950505050505050505050565b7fe8d23d927749ec8e512eb885679c2977d57068839d8cca1a85685dbbea0648f681565b6101ab610f7e565b6100d6858585856102fd565b6101bf610f5f565b81518451146101e05760405162461bcd60e51b81526004016101549061137b565b6101e8610fbc565b606060005b845181101561027a5784818151811061020257fe5b60200260200101519150818051906020012088146102325760405162461bcd60e51b8152600401610154906113b2565b61025887828151811061024157fe5b6020026020010151610252846103f3565b9061046b565b925060018551038110156102725761026f836105d9565b97505b6001016101ed565b50600061028b6003610252856106c2565b905060006102a161029c838961046b565b61074e565b90506102ab610f5f565b6102bc6102b7836107e0565b6105d9565b81526102d56102b760006102cf856107e0565b90610876565b60208201526102eb6102e6836107e0565b610923565b60408201529998505050505050505050565b610305610f7e565b602085015160608601516068870151858801607c01519190610325610fd6565b61032f8189610a1c565b5061033f8160008c60888c610a56565b50600061035789610351866014610b12565b90610b12565b9050610361610fd6565b61036b8183610a1c565b5061038760008d61037d8d609c610b6f565b8492919086610a56565b506040805160e08101825261ffff808e16825298909816602089015267ffffffffffffffff909416938701939093525073ffffffffffffffffffffffffffffffffffffffff9093166060850152915160808401525060a082018490525160c08201529050949350505050565b6103fb610fbc565b602082018051835160009190911a90801580159061041c575060c060ff8316105b1561044b57600192909201917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b60405180604001604052808281526020018481525093505050505b919050565b610473610fbc565b61047c83610bd0565b6104b75760405162461bcd60e51b81526004018080602001828103825260218152602001806115496021913960400191505060405180910390fd5b6104c083610c0a565b8210610513576040805162461bcd60e51b815260206004820152601660248201527f524c50206974656d206f7574206f6620626f756e647300000000000000000000604482015290519081900360640190fd5b825160208401519081019060009061052a90610c62565b60208601510190506000805b858110156105555761054783610d01565b928301929150600101610536565b5061055f82610d01565b90508281830111156105b8576040805162461bcd60e51b815260206004820152601160248201527f524c50206974656d206f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b60405180604001604052808281526020018381525093505050505b92915050565b8051600090158015906105ee57508151602110155b61063f576040805162461bcd60e51b815260206004820181905260248201527f524c504465636f64657220746f55696e7420696e76616c6964206c656e677468604482015290519081900360640190fd5b600061064e8360200151610c62565b905080836000015110156106935760405162461bcd60e51b81526004018080602001828103825260288152602001806115216028913960400191505060405180910390fd5b8251602080850151830180519284900392918310156106b957826020036101000a820491505b50949350505050565b6106ca610fbc565b60006106d98360200151610c62565b60208401518451908201805192935060009290921a91908015801590610702575060c060ff8416105b1561073157600191909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b604080518082019091529081526020810191909152949350505050565b610756610ff0565b61075f82610bd0565b6107b0576040805162461bcd60e51b815260206004820152601f60248201527f524c504465636f646572206974657261746f72206973206e6f74206c69737400604482015290519081900360640190fd5b60006107bf8360200151610c62565b60208085015160408051808201909152868152920190820152915050919050565b6107e8610fbc565b6107f182610dd6565b610842576040805162461bcd60e51b815260206004820152601f60248201527f524c504465636f646572206974657261746f7220686173206e6f206e65787400604482015290519081900360640190fd5b6020820151600061085282610d01565b80830160209586015260408051808201909152908152938401919091525090919050565b61087e610fbc565b61088783610bd0565b6108c25760405162461bcd60e51b81526004018080602001828103825260218152602001806115496021913960400191505060405180910390fd5b60006108d18460200151610c62565b60208501510190506000805b848110156108fc576108ee83610d01565b9283019291506001016108dd565b5061090682610d01565b604080518082019091529081526020810192909252509392505050565b80516060906109635760405162461bcd60e51b815260040180806020018281038252602181526020018061156a6021913960400191505060405180910390fd5b60006109728360200151610c62565b905080836000015110156109b75760405162461bcd60e51b81526004018080602001828103825260288152602001806115216028913960400191505060405180910390fd5b825181900360008167ffffffffffffffff811180156109d557600080fd5b506040519080825280601f01601f191660200182016040528015610a00576020820181803683370190505b50905060008160200190506106b9848760200151018285610deb565b610a24610fd6565b6020820615610a395760208206602003820191505b506020828101829052604080518085526000815290920101905290565b610a5e610fd6565b85602001518286011115610a8857610a8886610a808860200151888601610e54565b600202610e6b565b600080875180518860208301019350808987011115610aa75788860182525b5050508484015b60208410610acd5780518252601f199093019260209182019101610aae565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208690036101000a01908116901991909116179052508495945050505050565b600082821115610b69576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015610bc9576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b8051600090610be157506000610466565b6020820151805160001a9060c0821015610c0057600092505050610466565b5060019392505050565b8051600090610c1b57506000610466565b600080610c2b8460200151610c62565b602085015185519181019250015b80821015610c5957610c4a82610d01565b60019093019290910190610c39565b50909392505050565b8051600090811a6080811015610c7c576000915050610466565b60b8811080610c97575060c08110801590610c97575060f881105b15610ca6576001915050610466565b60c0811015610cd8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4a019050610466565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0a019050610466565b80516000908190811a6080811015610d1c5760019150610dcf565b60b8811015610d4f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8181019150610dcf565b60c0811015610d7c5760b78103600185019450806020036101000a85510460018201810193505050610dcf565b60f8811015610daf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4181019150610dcf565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b80518051602091820151919092015191011190565b80610df557610e4f565b5b60208110610e15578251825260209283019290910190601f1901610df6565b8251825160208390036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161782525b505050565b600081831115610e655750816105d3565b50919050565b8151610e778383610a1c565b50610e828382610e88565b50505050565b610e90610fd6565b610bc983846000015151848551610ea5610fd6565b8251821115610eb357600080fd5b84602001518285011115610ed557610ed585610a808760200151878601610e54565b600080865180518760208301019350808887011115610ef45787860182525b505050602084015b60208410610f1b5780518252601f199093019260209182019101610efc565b5181517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208690036101000a019081169019919091161790525083949350505050565b6040805160608082018352600080835260208301529181019190915290565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820181905260a082019290925260c081019190915290565b604051806040016040528060008152602001600081525090565b604051806040016040528060608152602001600081525090565b6040518060400160405280611003610fbc565b8152602001600081525090565b600082601f830112611020578081fd5b8135602061103561103083611502565b6114de565b82815281810190858301855b8581101561106a57611058898684358b01016110d1565b84529284019290840190600101611041565b5090979650505050505050565b600082601f830112611087578081fd5b8135602061109761103083611502565b82815281810190858301838502870184018810156110b3578586fd5b855b8581101561106a578135845292840192908401906001016110b5565b600082601f8301126110e1578081fd5b813567ffffffffffffffff8111156110f557fe5b6111086020601f19601f840116016114de565b81815284602083860101111561111c578283fd5b816020850160208301379081016020019190915292915050565b803561ffff8116811461046657600080fd5b6000806000806080858703121561115d578384fd5b84359350602085013567ffffffffffffffff8082111561117b578485fd5b61118788838901611077565b94506040870135935060608701359150808211156111a3578283fd5b506111b087828801611010565b91505092959194509250565b600080600080606085870312156111d1578384fd5b84359350602085013567ffffffffffffffff808211156111ef578485fd5b818701915087601f830112611202578485fd5b813581811115611210578586fd5b886020828501011115611221578586fd5b95986020929092019750949560400135945092505050565b6000806000806080858703121561124e578384fd5b843567ffffffffffffffff811115611264578485fd5b611270878288016110d1565b94505061127f60208601611136565b93969395505050506040820135916060013590565b600080600080608085870312156112a9578384fd5b6112b285611136565b9350602085013567ffffffffffffffff808211156112ce578485fd5b6112da88838901611010565b945060408701359150808211156112ef578384fd5b506112fc87828801611077565b949793965093946060013593505050565b73ffffffffffffffffffffffffffffffffffffffff169052565b60008151808452815b8181101561134c57602081850181015186830182015201611330565b8181111561135d5782602083870101525b50601f01601f19169290920160200192915050565b90815260200190565b6020808252601c908201527f50726f6f664c69623a20696e76616c69642070726f6f662073697a6500000000604082015260600190565b6020808252601a908201527f50726f6f664c69623a20696e76616c696420686173686c696e6b000000000000604082015260600190565b6020808252601f908201527f50726f6f664c69623a207061636b6574206e6f74207265636f676e697a656400604082015260600190565b60006020825261ffff8084511660208401528060208501511660408401525067ffffffffffffffff60408401511660608301526060830151611465608084018261130d565b50608083015160e060a0840152611480610100840182611327565b905060a084015160c084015260c0840151601f198483030160e08501526100d68282611327565b600060208252825160208301526020830151604083015260408301516060808401526114d66080840182611327565b949350505050565b60405181810167ffffffffffffffff811182821017156114fa57fe5b604052919050565b600067ffffffffffffffff82111561151657fe5b506020908102019056fe524c504465636f6465723a20696e76616c696420524c50206974656d206f66667365742073697a65524c504465636f646572206974657261746f72206973206e6f742061206c697374524c504465636f64657220746f427974657320696e76616c6964206c656e677468a264697066735822122087fad397dac6dabf7a45643dfce6c4ce4af83b8486ada0e4640f7fd4ac36a32464736f6c63430007060033\";\n\ntype MPTValidatorV2ConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: MPTValidatorV2ConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class MPTValidatorV2__factory extends ContractFactory {\n constructor(...args: MPTValidatorV2ConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<MPTValidatorV2> {\n return super.deploy(overrides || {}) as Promise<MPTValidatorV2>;\n }\n override getDeployTransaction(\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(overrides || {});\n }\n override attach(address: string): MPTValidatorV2 {\n return super.attach(address) as MPTValidatorV2;\n }\n override connect(signer: Signer): MPTValidatorV2__factory {\n return super.connect(signer) as MPTValidatorV2__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): MPTValidatorV2Interface {\n return new utils.Interface(_abi) as MPTValidatorV2Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): MPTValidatorV2 {\n return new Contract(address, _abi, signerOrProvider) as MPTValidatorV2;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nexport { DefaultProxyAdmin__factory } from \"./DefaultProxyAdmin__factory\";\nexport { TransparentUpgradeableProxy__factory } from \"./TransparentUpgradeableProxy__factory\";\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../../common\";\nimport type {\n DefaultProxyAdmin,\n DefaultProxyAdminInterface,\n} from \"../../proxy/DefaultProxyAdmin\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"initialOwner\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"contract TransparentUpgradeableProxy\",\n name: \"proxy\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"newAdmin\",\n type: \"address\",\n },\n ],\n name: \"changeProxyAdmin\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract TransparentUpgradeableProxy\",\n name: \"proxy\",\n type: \"address\",\n },\n ],\n name: \"getProxyAdmin\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract TransparentUpgradeableProxy\",\n name: \"proxy\",\n type: \"address\",\n },\n ],\n name: \"getProxyImplementation\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract TransparentUpgradeableProxy\",\n name: \"proxy\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"implementation\",\n type: \"address\",\n },\n ],\n name: \"upgrade\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"contract TransparentUpgradeableProxy\",\n name: \"proxy\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"implementation\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"upgradeAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x608060405234801561001057600080fd5b50604051610d29380380610d298339818101604052602081101561003357600080fd5b5051600061003f610086565b600080546001600160a01b0319166001600160a01b038316908117825560405192935091600080516020610d09833981519152908290a3506100808161008a565b5061019b565b3390565b610092610086565b6001600160a01b03166100a361018c565b6001600160a01b0316146100fe576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166101435760405162461bcd60e51b8152600401808060200182810382526026815260200180610ce36026913960400191505060405180910390fd5b600080546040516001600160a01b0380851693921691600080516020610d0983398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b610b39806101aa6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461015d57806399a88ec414610229578063f2fde38b14610271578063f3b7dead146102b15761007b565b8063204e1c7a14610080578063715018a6146100e95780637eff275e146101005780638da5cb5b14610148575b600080fd5b34801561008c57600080fd5b506100c0600480360360208110156100a357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102f1565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100f557600080fd5b506100fe6103a9565b005b34801561010c57600080fd5b506100fe6004803603604081101561012357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166104c0565b34801561015457600080fd5b506100c06105ed565b6100fe6004803603606081101561017357600080fd5b73ffffffffffffffffffffffffffffffffffffffff82358116926020810135909116918101906060810160408201356401000000008111156101b457600080fd5b8201836020820111156101c657600080fd5b803590602001918460018302840111640100000000831117156101e857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610609945050505050565b34801561023557600080fd5b506100fe6004803603604081101561024c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166107a2565b34801561027d57600080fd5b506100fe6004803603602081101561029457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108b3565b3480156102bd57600080fd5b506100c0600480360360208110156102d457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a54565b60008060008373ffffffffffffffffffffffffffffffffffffffff1660405180807f5c60da1b000000000000000000000000000000000000000000000000000000008152506004019050600060405180830381855afa9150503d8060008114610376576040519150601f19603f3d011682016040523d82523d6000602084013e61037b565b606091505b50915091508161038a57600080fd5b80806020019051602081101561039f57600080fd5b5051949350505050565b6103b1610ad9565b73ffffffffffffffffffffffffffffffffffffffff166103cf6105ed565b73ffffffffffffffffffffffffffffffffffffffff161461045157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6104c8610ad9565b73ffffffffffffffffffffffffffffffffffffffff166104e66105ed565b73ffffffffffffffffffffffffffffffffffffffff161461056857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff16638f283970826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156105d157600080fd5b505af11580156105e5573d6000803e3d6000fd5b505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b610611610ad9565b73ffffffffffffffffffffffffffffffffffffffff1661062f6105ed565b73ffffffffffffffffffffffffffffffffffffffff16146106b157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b8273ffffffffffffffffffffffffffffffffffffffff16634f1ef2863484846040518463ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610738578181015183820152602001610720565b50505050905090810190601f1680156107655780820380516001836020036101000a031916815260200191505b5093505050506000604051808303818588803b15801561078457600080fd5b505af1158015610798573d6000803e3d6000fd5b5050505050505050565b6107aa610ad9565b73ffffffffffffffffffffffffffffffffffffffff166107c86105ed565b73ffffffffffffffffffffffffffffffffffffffff161461084a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff16633659cfe6826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156105d157600080fd5b6108bb610ad9565b73ffffffffffffffffffffffffffffffffffffffff166108d96105ed565b73ffffffffffffffffffffffffffffffffffffffff161461095b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166109c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610ade6026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008060008373ffffffffffffffffffffffffffffffffffffffff1660405180807ff851a440000000000000000000000000000000000000000000000000000000008152506004019050600060405180830381855afa9150503d8060008114610376576040519150601f19603f3d011682016040523d82523d6000602084013e61037b565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a26469706673582212207e8b78e8142e259e8c0e6a379234599f5aeaf5ef11c76d29bf0917fd5218f40464736f6c634300070600334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573738be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0\";\n\ntype DefaultProxyAdminConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: DefaultProxyAdminConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class DefaultProxyAdmin__factory extends ContractFactory {\n constructor(...args: DefaultProxyAdminConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n initialOwner: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<DefaultProxyAdmin> {\n return super.deploy(\n initialOwner,\n overrides || {}\n ) as Promise<DefaultProxyAdmin>;\n }\n override getDeployTransaction(\n initialOwner: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(initialOwner, overrides || {});\n }\n override attach(address: string): DefaultProxyAdmin {\n return super.attach(address) as DefaultProxyAdmin;\n }\n override connect(signer: Signer): DefaultProxyAdmin__factory {\n return super.connect(signer) as DefaultProxyAdmin__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): DefaultProxyAdminInterface {\n return new utils.Interface(_abi) as DefaultProxyAdminInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): DefaultProxyAdmin {\n return new Contract(address, _abi, signerOrProvider) as DefaultProxyAdmin;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n PayableOverrides,\n BytesLike,\n} from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../../common\";\nimport type {\n TransparentUpgradeableProxy,\n TransparentUpgradeableProxyInterface,\n} from \"../../proxy/TransparentUpgradeableProxy\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_logic\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"admin_\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_data\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"payable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"previousAdmin\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"newAdmin\",\n type: \"address\",\n },\n ],\n name: \"AdminChanged\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"implementation\",\n type: \"address\",\n },\n ],\n name: \"Upgraded\",\n type: \"event\",\n },\n {\n stateMutability: \"payable\",\n type: \"fallback\",\n },\n {\n inputs: [],\n name: \"admin\",\n outputs: [\n {\n internalType: \"address\",\n name: \"admin_\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newAdmin\",\n type: \"address\",\n },\n ],\n name: \"changeAdmin\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"implementation\",\n outputs: [\n {\n internalType: \"address\",\n name: \"implementation_\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n ],\n name: \"upgradeTo\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newImplementation\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"data\",\n type: \"bytes\",\n },\n ],\n name: \"upgradeToAndCall\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n stateMutability: \"payable\",\n type: \"receive\",\n },\n] as const;\n\nconst _bytecode =\n \"0x608060405260405162000e3038038062000e30833981810160405260608110156200002957600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200005557600080fd5b9083019060208201858111156200006b57600080fd5b82516401000000008111828201881017156200008657600080fd5b82525081516020918201929091019080838360005b83811015620000b55781810151838201526020016200009b565b50505050905090810190601f168015620000e35780820380516001836020036101000a031916815260200191505b5060405250849150829050620000f98262000137565b8051156200011a57620001188282620001ae60201b6200047e1760201c565b505b50620001239050565b6200012e82620001dd565b505050620003be565b6200014d816200020160201b620004aa1760201c565b6200018a5760405162461bcd60e51b815260040180806020018281038252603681526020018062000dd46036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6060620001d6838360405180606001604052806027815260200162000dad6027913962000207565b9392505050565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b3b151590565b6060620002148462000201565b620002515760405162461bcd60e51b815260040180806020018281038252602681526020018062000e0a6026913960400191505060405180910390fd5b600080856001600160a01b0316856040518082805190602001908083835b60208310620002905780518252601f1990920191602091820191016200026f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114620002f2576040519150601f19603f3d011682016040523d82523d6000602084013e620002f7565b606091505b5090925090506200030a82828662000314565b9695505050505050565b6060831562000325575081620001d6565b825115620003365782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200038257818101518382015260200162000368565b50505050905090810190601f168015620003b05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6109df80620003ce6000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146101425780638f28397014610180578063f851a440146101c05761006d565b80633659cfe6146100755780634f1ef286146100b55761006d565b3661006d5761006b6101d5565b005b61006b6101d5565b34801561008157600080fd5b5061006b6004803603602081101561009857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101ef565b61006b600480360360408110156100cb57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516919081019060408101602082013564010000000081111561010357600080fd5b82018360208201111561011557600080fd5b8035906020019184600183028401116401000000008311171561013757600080fd5b509092509050610243565b34801561014e57600080fd5b506101576102da565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561018c57600080fd5b5061006b600480360360208110156101a357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610331565b3480156101cc57600080fd5b50610157610439565b6101dd6104b0565b6101ed6101e8610544565b610569565b565b6101f761058d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023857610233816105b2565b610240565b6102406101d5565b50565b61024b61058d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102cd57610287836105b2565b6102c78383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061047e92505050565b506102d5565b6102d56101d5565b505050565b60006102e461058d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103265761031f610544565b905061032e565b61032e6101d5565b90565b61033961058d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102385773ffffffffffffffffffffffffffffffffffffffff81166103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806108ab603a913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61040161058d565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301528051918290030190a1610233816105ff565b600061044361058d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103265761031f61058d565b60606104a383836040518060600160405280602781526020016108e560279139610623565b9392505050565b3b151590565b6104b861058d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561053c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260428152602001806109686042913960600191505060405180910390fd5b6101ed6101ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015610588573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6105bb8161076a565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b606061062e846104aa565b610683576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806109426026913960400191505060405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff16856040518082805190602001908083835b602083106106eb57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016106ae565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461074b576040519150601f19603f3d011682016040523d82523d6000602084013e610750565b606091505b50915091506107608282866107ec565b9695505050505050565b610773816104aa565b6107c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603681526020018061090c6036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b606083156107fb5750816104a3565b82511561080b5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561086f578181015183820152602001610857565b50505050905090810190601f16801561089c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe5472616e73706172656e745570677261646561626c6550726f78793a206e65772061646d696e20697320746865207a65726f2061646472657373416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e74726163745472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574a264697066735822122011a056e4f81a189b00121b9f044425449d19a6f2840c7786e34ce8419941140164736f6c63430007060033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374\";\n\ntype TransparentUpgradeableProxyConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: TransparentUpgradeableProxyConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class TransparentUpgradeableProxy__factory extends ContractFactory {\n constructor(...args: TransparentUpgradeableProxyConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n _logic: PromiseOrValue<string>,\n admin_: PromiseOrValue<string>,\n _data: PromiseOrValue<BytesLike>,\n overrides?: PayableOverrides & { from?: PromiseOrValue<string> }\n ): Promise<TransparentUpgradeableProxy> {\n return super.deploy(\n _logic,\n admin_,\n _data,\n overrides || {}\n ) as Promise<TransparentUpgradeableProxy>;\n }\n override getDeployTransaction(\n _logic: PromiseOrValue<string>,\n admin_: PromiseOrValue<string>,\n _data: PromiseOrValue<BytesLike>,\n overrides?: PayableOverrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(_logic, admin_, _data, overrides || {});\n }\n override attach(address: string): TransparentUpgradeableProxy {\n return super.attach(address) as TransparentUpgradeableProxy;\n }\n override connect(signer: Signer): TransparentUpgradeableProxy__factory {\n return super.connect(signer) as TransparentUpgradeableProxy__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): TransparentUpgradeableProxyInterface {\n return new utils.Interface(_abi) as TransparentUpgradeableProxyInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): TransparentUpgradeableProxy {\n return new Contract(\n address,\n _abi,\n signerOrProvider\n ) as TransparentUpgradeableProxy;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n BigNumberish,\n Overrides,\n} from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../common\";\nimport type { Endpoint, EndpointInterface } from \"../Endpoint\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"version\",\n type: \"uint16\",\n },\n ],\n name: \"DefaultReceiveVersionSet\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"version\",\n type: \"uint16\",\n },\n ],\n name: \"DefaultSendVersionSet\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"version\",\n type: \"uint16\",\n },\n ],\n name: \"NewLibraryVersionAdded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n ],\n name: \"PayloadCleared\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"reason\",\n type: \"bytes\",\n },\n ],\n name: \"PayloadStored\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n ],\n name: \"UaForceResumeReceive\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"ua\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"version\",\n type: \"uint16\",\n },\n ],\n name: \"UaReceiveVersionSet\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"ua\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"version\",\n type: \"uint16\",\n },\n ],\n name: \"UaSendVersionSet\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"BLOCK_VERSION\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"DEFAULT_VERSION\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"chainId\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"defaultReceiveLibraryAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"defaultReceiveVersion\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"defaultSendLibrary\",\n outputs: [\n {\n internalType: \"contract ILayerZeroMessagingLibrary\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"defaultSendVersion\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n {\n internalType: \"bool\",\n name: \"_payInZRO\",\n type: \"bool\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"estimateFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"nativeFee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"zroFee\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_srcAddress\",\n type: \"bytes\",\n },\n ],\n name: \"forceResumeReceive\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getChainId\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_version\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_configType\",\n type: \"uint256\",\n },\n ],\n name: \"getConfig\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_srcAddress\",\n type: \"bytes\",\n },\n ],\n name: \"getInboundNonce\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_srcAddress\",\n type: \"address\",\n },\n ],\n name: \"getOutboundNonce\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n ],\n name: \"getReceiveLibraryAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"receiveLibraryAddress\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n ],\n name: \"getReceiveVersion\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n ],\n name: \"getSendLibraryAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"sendLibraryAddress\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n ],\n name: \"getSendVersion\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_srcAddress\",\n type: \"bytes\",\n },\n ],\n name: \"hasStoredPayload\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n name: \"inboundNonce\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"isReceivingPayload\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"isSendingPayload\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"latestVersion\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"libraryLookup\",\n outputs: [\n {\n internalType: \"contract ILayerZeroMessagingLibrary\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_newLayerZeroLibraryAddress\",\n type: \"address\",\n },\n ],\n name: \"newVersion\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"outboundNonce\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"address\",\n name: \"_dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"uint64\",\n name: \"_nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"uint256\",\n name: \"_gasLimit\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n ],\n name: \"receivePayload\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n ],\n name: \"retryPayload\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_destination\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n {\n internalType: \"address payable\",\n name: \"_refundAddress\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_zroPaymentAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"send\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_version\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint256\",\n name: \"_configType\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_config\",\n type: \"bytes\",\n },\n ],\n name: \"setConfig\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_newDefaultReceiveVersion\",\n type: \"uint16\",\n },\n ],\n name: \"setDefaultReceiveVersion\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_newDefaultSendVersion\",\n type: \"uint16\",\n },\n ],\n name: \"setDefaultSendVersion\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_newVersion\",\n type: \"uint16\",\n },\n ],\n name: \"setReceiveVersion\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_newVersion\",\n type: \"uint16\",\n },\n ],\n name: \"setSendVersion\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n name: \"storedPayload\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"payloadLength\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"payloadHash\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"uaConfigLookup\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"sendVersion\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"receiveVersion\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"receiveLibraryAddress\",\n type: \"address\",\n },\n {\n internalType: \"contract ILayerZeroMessagingLibrary\",\n name: \"sendLibrary\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x60a06040526008805461ff001960ff19909116600117166101001790553480156200002957600080fd5b506040516200378e3803806200378e833981810160405260208110156200004f57600080fd5b505160006200005d620000bd565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060f01b6001600160f01b031916608052620000c1565b3390565b60805160f01c6136aa620000e4600039806116855280611c5952506136aa6000f3fe6080604052600436106102855760003560e01c80639c729da111610153578063ca066b35116100cb578063f2fde38b1161007f578063f5ecbdbc11610064578063f5ecbdbc14610e54578063faee093f14610f16578063fdc07c7014610f2b57610285565b8063f2fde38b14610db8578063f4abee4b14610deb57610285565b8063da1a7c9a116100b0578063da1a7c9a14610d5b578063e97a448a14610d8e578063ebfea6e014610da357610285565b8063ca066b3514610cae578063cbed8b9c14610cc357610285565b8063bd42a71311610122578063c2fa481311610107578063c2fa481314610a49578063c580310014610b48578063c7e3711714610c8057610285565b8063bd42a71314610a06578063c07f47d414610a3457610285565b80639c729da1146108a7578063a91606df146108da578063aaff5f16146108ef578063b2086499146109c957610285565b806342d65a8d1161020157806376a386dc116101b55780638da5cb5b1161019a5780638da5cb5b146107bf5780639924d33b146107d45780639a8a05921461089257610285565b806376a386dc146106765780637a1457481461076557610285565b80635d9ef01a116101e65780635d9ef01a14610619578063715018a61461062e57806371ba2fd61461064357610285565b806342d65a8d146105605780634afb422b146105e857610285565b806310ddb1371161025857806324ba3f2c1161023d57806324ba3f2c1461042f5780633408e4701461044457806340a7bb101461045957610285565b806310ddb137146103ce578063158c81ad146103fc57610285565b806307e0db171461028a578063096568f6146102ba5780630b837bb5146103045780630eaf6ea614610332575b600080fd5b34801561029657600080fd5b506102b8600480360360208110156102ad57600080fd5b503561ffff16610fb3565b005b3480156102c657600080fd5b506102ed600480360360208110156102dd57600080fd5b50356001600160a01b03166110ea565b6040805161ffff9092168252519081900360200190f35b34801561031057600080fd5b506102b86004803603602081101561032757600080fd5b503561ffff16611129565b34801561033e57600080fd5b506103ba6004803603604081101561035557600080fd5b61ffff823516919081019060408101602082013564010000000081111561037b57600080fd5b82018360208201111561038d57600080fd5b803590602001918460018302840111640100000000831117156103af57600080fd5b509092509050611309565b604080519115158252519081900360200190f35b3480156103da57600080fd5b506102b8600480360360208110156103f157600080fd5b503561ffff16611355565b34801561040857600080fd5b506102b86004803603602081101561041f57600080fd5b50356001600160a01b0316611495565b34801561043b57600080fd5b506102ed61167e565b34801561045057600080fd5b506102ed611683565b34801561046557600080fd5b50610547600480360360a081101561047c57600080fd5b61ffff823516916001600160a01b03602082013516918101906060810160408201356401000000008111156104b057600080fd5b8201836020820111156104c257600080fd5b803590602001918460018302840111640100000000831117156104e457600080fd5b91939092823515159260408101906020013564010000000081111561050857600080fd5b82018360208201111561051a57600080fd5b8035906020019184600183028401116401000000008311171561053c57600080fd5b5090925090506116a7565b6040805192835260208301919091528051918290030190f35b34801561056c57600080fd5b506102b86004803603604081101561058357600080fd5b61ffff82351691908101906040810160208201356401000000008111156105a957600080fd5b8201836020820111156105bb57600080fd5b803590602001918460018302840111640100000000831117156105dd57600080fd5b509092509050611800565b3480156105f457600080fd5b506105fd6119a0565b604080516001600160a01b039092168252519081900360200190f35b34801561062557600080fd5b506102ed6119b7565b34801561063a57600080fd5b506102b86119c1565b34801561064f57600080fd5b506105fd6004803603602081101561066657600080fd5b50356001600160a01b0316611a97565b34801561068257600080fd5b506107346004803603604081101561069957600080fd5b61ffff82351691908101906040810160208201356401000000008111156106bf57600080fd5b8201836020820111156106d157600080fd5b803590602001918460018302840111640100000000831117156106f357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611b81945050505050565b6040805167ffffffffffffffff90941684526001600160a01b03909216602084015282820152519081900360600190f35b34801561077157600080fd5b506107a26004803603604081101561078857600080fd5b50803561ffff1690602001356001600160a01b0316611bd8565b6040805167ffffffffffffffff9092168252519081900360200190f35b3480156107cb57600080fd5b506105fd611c10565b3480156107e057600080fd5b506107a2600480360360408110156107f757600080fd5b61ffff823516919081019060408101602082013564010000000081111561081d57600080fd5b82018360208201111561082f57600080fd5b8035906020019184600183028401116401000000008311171561085157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c1f945050505050565b34801561089e57600080fd5b506102ed611c57565b3480156108b357600080fd5b506105fd600480360360208110156108ca57600080fd5b50356001600160a01b0316611c7b565b3480156108e657600080fd5b506102ed611d58565b3480156108fb57600080fd5b506102b86004803603606081101561091257600080fd5b61ffff823516919081019060408101602082013564010000000081111561093857600080fd5b82018360208201111561094a57600080fd5b8035906020019184600183028401116401000000008311171561096c57600080fd5b91939092909160208101903564010000000081111561098a57600080fd5b82018360208201111561099c57600080fd5b803590602001918460018302840111640100000000831117156109be57600080fd5b509092509050611d5e565b3480156109d557600080fd5b506107a2600480360360408110156109ec57600080fd5b50803561ffff1690602001356001600160a01b0316612143565b348015610a1257600080fd5b506102b860048036036020811015610a2957600080fd5b503561ffff1661216a565b348015610a4057600080fd5b506102ed612350565b348015610a5557600080fd5b506102b8600480360360c0811015610a6c57600080fd5b61ffff8235169190810190604081016020820135640100000000811115610a9257600080fd5b820183602082011115610aa457600080fd5b80359060200191846001830284011164010000000083111715610ac657600080fd5b919390926001600160a01b038335169267ffffffffffffffff602082013516926040820135929091608081019060600135640100000000811115610b0957600080fd5b820183602082011115610b1b57600080fd5b80359060200191846001830284011164010000000083111715610b3d57600080fd5b509092509050612372565b6102b8600480360360c0811015610b5e57600080fd5b61ffff8235169190810190604081016020820135640100000000811115610b8457600080fd5b820183602082011115610b9657600080fd5b80359060200191846001830284011164010000000083111715610bb857600080fd5b919390929091602081019035640100000000811115610bd657600080fd5b820183602082011115610be857600080fd5b80359060200191846001830284011164010000000083111715610c0a57600080fd5b919390926001600160a01b0383358116936020810135909116929190606081019060400135640100000000811115610c4157600080fd5b820183602082011115610c5357600080fd5b80359060200191846001830284011164010000000083111715610c7557600080fd5b509092509050612995565b348015610c8c57600080fd5b506105fd60048036036020811015610ca357600080fd5b503561ffff16612bf4565b348015610cba57600080fd5b506103ba612c0f565b348015610ccf57600080fd5b506102b860048036036080811015610ce657600080fd5b61ffff823581169260208101359091169160408201359190810190608081016060820135640100000000811115610d1c57600080fd5b820183602082011115610d2e57600080fd5b80359060200191846001830284011164010000000083111715610d5057600080fd5b509092509050612c20565b348015610d6757600080fd5b506102ed60048036036020811015610d7e57600080fd5b50356001600160a01b0316612e16565b348015610d9a57600080fd5b506103ba612e64565b348015610daf57600080fd5b506105fd612e70565b348015610dc457600080fd5b506102b860048036036020811015610ddb57600080fd5b50356001600160a01b0316612e7f565b348015610df757600080fd5b50610e1e60048036036020811015610e0e57600080fd5b50356001600160a01b0316612fab565b6040805161ffff95861681529390941660208401526001600160a01b039182168385015216606082015290519081900360800190f35b348015610e6057600080fd5b50610ea160048036036080811015610e7757600080fd5b5061ffff81358116916020810135909116906001600160a01b036040820135169060600135612fea565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610edb578181015183820152602001610ec3565b50505050905090810190601f168015610f085780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610f2257600080fd5b506102ed61327a565b348015610f3757600080fd5b506107a260048036036040811015610f4e57600080fd5b61ffff8235169190810190604081016020820135640100000000811115610f7457600080fd5b820183602082011115610f8657600080fd5b80359060200191846001830284011164010000000083111715610fa857600080fd5b50909250905061328a565b600054819061ffff740100000000000000000000000000000000000000009091048116908216111580610fe9575061ffff818116145b6110245760405162461bcd60e51b815260040180806020018281038252602c8152602001806133b8602c913960400191505060405180910390fd5b336000818152600460209081526040808320805461ffff88167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909116811782558085526001808552948390205494820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039690961695909517909455815194855291840192909252815190927ff2bc255571446a2f9b7cb2f0c75fd6a279bdb469f515d5a5c9910f713aeb32ca92908290030190a1505050565b6001600160a01b0381166000908152600460205260408120805461ffff161561111857805461ffff16611120565b60025461ffff165b9150505b919050565b6111316132d7565b6001600160a01b0316611142611c10565b6001600160a01b03161461119d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600054819061ffff7401000000000000000000000000000000000000000090910481169082161115806111d3575061ffff818116145b61120e5760405162461bcd60e51b815260040180806020018281038252602c8152602001806133b8602c913960400191505060405180910390fd5b61ffff821661124e5760405162461bcd60e51b81526004018080602001828103825260288152602001806135f36028913960400191505060405180910390fd5b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff848116918217808455908116600090815260016020908152604091829020547fffffffffffffffff0000000000000000000000000000000000000000ffffffff9093166001600160a01b039093166401000000000292909217909355825191825291517feb685c087d38029bbde35299b748c6b80f099c7e5c3f9fe2dbb3ace1099e3b07929181900390910190a15050565b61ffff8316600090815260076020526040808220905182919085908590808383808284379190910194855250506040519283900360200190922060010154151593505050509392505050565b600054819061ffff74010000000000000000000000000000000000000000909104811690821611158061138b575061ffff818116145b6113c65760405162461bcd60e51b815260040180806020018281038252602c8152602001806133b8602c913960400191505060405180910390fd5b33600081815260046020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff166201000061ffff8916908102919091178083558186526001855294839020547fffffffffffffffff0000000000000000000000000000000000000000ffffffff9095166001600160a01b0390951664010000000002949094178155815194855291840192909252815190927f9c199418af68d1547d7b99c71ee6a9eb18b27990dfcfb38982f3e3fb8c7b6bef92908290030190a1505050565b61149d6132d7565b6001600160a01b03166114ae611c10565b6001600160a01b031614611509576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03811661154e5760405162461bcd60e51b815260040180806020018281038252602d815260200180613549602d913960400191505060405180910390fd5b60005461ffff740100000000000000000000000000000000000000009091048116106115ab5760405162461bcd60e51b815260040180806020018281038252602c81526020018061351d602c913960400191505060405180910390fd5b60008054600161ffff7401000000000000000000000000000000000000000080840482168301821681027fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff90941693909317808555839004811684526020918252604080852080546001600160a01b0388167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790559354845193900416825291517f18c7402e58a1bec57f4eb75af242f65ababbbe09d9db383e0542f00635e5b8c5929181900390910190a150565b600081565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b03861660009081526004602052604081208054829190829061ffff16156116e25760018201546001600160a01b03166116f7565b60025464010000000090046001600160a01b03165b9050806001600160a01b03166340a7bb108c8c8c8c8c8c8c6040518863ffffffff1660e01b8152600401808861ffff168152602001876001600160a01b03168152602001806020018515158152602001806020018381038352888882818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509950505050505050505050604080518083038186803b1580156117bb57600080fd5b505afa1580156117cf573d6000803e3d6000fd5b505050506040513d60408110156117e557600080fd5b508051602090910151909c909b509950505050505050505050565b61ffff831660009081526007602052604080822090518490849080838380828437919091019485525050604051928390036020019092206001810154909350151591506118969050576040805162461bcd60e51b815260206004820152601c60248201527f4c617965725a65726f3a206e6f2073746f726564207061796c6f616400000000604482015290519081900360640190fd5b80546801000000000000000090046001600160a01b03163314611900576040805162461bcd60e51b815260206004820152601960248201527f4c617965725a65726f3a20696e76616c69642063616c6c657200000000000000604482015290519081900360640190fd5b80547fffffffff00000000000000000000000000000000000000000000000000000000168155600060018201556040805161ffff86168152602081018281529181018490527f23d2684f396e92a6e2ff2d16f98e6fea00d50cb27a64b531bc0748f730211f98918691869186919060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a150505050565b60025464010000000090046001600160a01b031681565b60025461ffff1681565b6119c96132d7565b6001600160a01b03166119da611c10565b6001600160a01b031614611a35576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6001600160a01b0381166000908152600460205260408120805461ffff62010000909104811690811415611afc5760405162461bcd60e51b815260040180806020018281038252602b81526020018061364a602b913960400191505060405180910390fd5b61ffff8116611b645760025462010000900461ffff9081161415611b515760405162461bcd60e51b81526004018080602001828103825260358152602001806133e46035913960400191505060405180910390fd5b6003546001600160a01b03169250611b7a565b815464010000000090046001600160a01b031692505b5050919050565b600760209081526000928352604090922081518083018401805192815290840192909301919091209152805460019091015467ffffffffffffffff8216916801000000000000000090046001600160a01b03169083565b61ffff821660009081526006602090815260408083206001600160a01b038516845290915290205467ffffffffffffffff1692915050565b6000546001600160a01b031690565b6005602090815260009283526040909220815180830184018051928152908401929093019190912091525467ffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b0381166000908152600460205260408120805461ffff90811690811415611cda5760405162461bcd60e51b81526004018080602001828103825260288152602001806134f56028913960400191505060405180910390fd5b61ffff8116611d445760025461ffff9081161415611d295760405162461bcd60e51b815260040180806020018281038252603281526020018061348d6032913960400191505060405180910390fd5b60025464010000000090046001600160a01b03169250611b7a565b50600101546001600160a01b031692915050565b61ffff81565b600854610100900460ff16600114611dbd576040805162461bcd60e51b815260206004820181905260248201527f4c617965725a65726f3a206e6f2072656365697665207265656e7472616e6379604482015290519081900360640190fd5b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661020017905561ffff85166000908152600760205260408082209051869086908083838082843791909101948552505060405192839003602001909220600181015490935015159150611e7f9050576040805162461bcd60e51b815260206004820152601c60248201527f4c617965725a65726f3a206e6f2073746f726564207061796c6f616400000000604482015290519081900360640190fd5b805467ffffffffffffffff1682148015611eba5750806001015483836040518083838082843780830192505050925050506040518091039020145b611f0b576040805162461bcd60e51b815260206004820152601a60248201527f4c617965725a65726f3a20696e76616c6964207061796c6f6164000000000000604482015290519081900360640190fd5b80547fffffffff000000000000000000000000000000000000000000000000000000008116825560006001830181905561ffff88168152600560205260408082209051680100000000000000009093046001600160a01b0316928890889080838380828437919091019485525050604051928390036020018320547e1d356700000000000000000000000000000000000000000000000000000000845261ffff8c166004850190815267ffffffffffffffff90911660448501819052608060248601908152608486018c90529095506001600160a01b03871694621d356794508d93508c928c9288928d928d929091606481019060a401888880828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b15801561206657600080fd5b505af115801561207a573d6000803e3d6000fd5b505050507f612434f39581c8e7d99746c9c20c6eb0ce8c0eb99f007c5719d620841370957d8888888486604051808661ffff168152602001806020018467ffffffffffffffff168152602001836001600160a01b031681526020018281038252868682818152602001925080828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055505050505050565b600660209081526000928352604080842090915290825290205467ffffffffffffffff1681565b6121726132d7565b6001600160a01b0316612183611c10565b6001600160a01b0316146121de576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600054819061ffff740100000000000000000000000000000000000000009091048116908216111580612214575061ffff818116145b61224f5760405162461bcd60e51b815260040180806020018281038252602c8152602001806133b8602c913960400191505060405180910390fd5b61ffff821661228f5760405162461bcd60e51b815260040180806020018281038252602b8152602001806135a5602b913960400191505060405180910390fd5b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff166201000061ffff8581168281029390931793849055920490911660009081526001602090815260409182902054600380546001600160a01b039092167fffffffffffffffffffffffff0000000000000000000000000000000000000000909216919091179055815192835290517f96874dbe70c8a59e7996847475489a70a1b5096ed92cdc858b63ebabd071f8199281900390910190a15050565b60005474010000000000000000000000000000000000000000900461ffff1681565b600854610100900460ff166001146123d1576040805162461bcd60e51b815260206004820181905260248201527f4c617965725a65726f3a206e6f2072656365697665207265656e7472616e6379604482015290519081900360640190fd5b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661020017905561ffff8816600090815260056020526040908190209051889088908083838082843791909101948552505060405192839003602001909220805467ffffffffffffffff80821660010181167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090921682179092559087161491506124ca9050576040805162461bcd60e51b815260206004820152601660248201527f4c617965725a65726f3a2077726f6e67206e6f6e636500000000000000000000604482015290519081900360640190fd5b6001600160a01b0385166000908152600460205260409020805462010000900461ffff16612540576003546001600160a01b0316331461253b5760405162461bcd60e51b81526004018080602001828103825260228152602001806134196022913960400191505060405180910390fd5b6125a6565b805464010000000090046001600160a01b031633146125a6576040805162461bcd60e51b815260206004820152601a60248201527f4c617965725a65726f3a20696e76616c6964206c696272617279000000000000604482015290519081900360640190fd5b61ffff891660009081526007602052604080822090518a908a908083838082843791909101948552505060405192839003602001909220600181015490935015915061263b9050576040805162461bcd60e51b815260206004820152601e60248201527f4c617965725a65726f3a20696e206d65737361676520626c6f636b696e670000604482015290519081900360640190fd5b866001600160a01b0316621d3567868c8c8c8b8a8a6040518863ffffffff1660e01b8152600401808761ffff168152602001806020018567ffffffffffffffff168152602001806020018381038352888882818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600088803b1580156126f757600080fd5b5087f193505050508015612709575060015b61295d573d808015612737576040519150601f19603f3d011682016040523d82523d6000602084013e61273c565b606091505b5060405180606001604052808686905067ffffffffffffffff168152602001896001600160a01b0316815260200186866040518083838082843780830192505050925050506040518091039020815250600760008d61ffff1661ffff1681526020019081526020016000208b8b604051808383808284378083019250505092505050908152602001604051809103902060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a8154816001600160a01b0302191690836001600160a01b03160217905550604082015181600101559050507f0f9e4d95b62f08222d612b5ab92039cd8fbbbea550a95e8df9f927436bbdf5db8b8b8b8b8b8a8a88604051808961ffff16815260200180602001876001600160a01b031681526020018667ffffffffffffffff168152602001806020018060200184810384528b8b82818152602001925080828437600083820152601f01601f1916909101858103845287815260200190508787808284376000838201819052601f909101601f191690920186810384528751815287516020918201939189019250908190849084905b83811015612918578181015183820152602001612900565b50505050905090810190601f1680156129455780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390a1505b5050600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555050505050505050565b60085460ff166001146129ef576040805162461bcd60e51b815260206004820152601d60248201527f4c617965725a65726f3a206e6f2073656e64207265656e7472616e6379000000604482015290519081900360640190fd5b6008805460027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911617905533600081815260046020908152604080832061ffff8e1684526006835281842094845293909152902080547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000811667ffffffffffffffff91821660010191821617909155612a89826132db565b6001600160a01b0316634d3a0f7c3433848f8f8f8f8f8f8f8f8f6040518d63ffffffff1660e01b8152600401808c6001600160a01b031681526020018b67ffffffffffffffff1681526020018a61ffff1681526020018060200180602001876001600160a01b03168152602001866001600160a01b031681526020018060200184810384528c8c82818152602001925080828437600083820152601f01601f191690910185810384528a815260200190508a8a80828437600083820152601f01601f191690910185810383528681526020019050868680828437600081840152601f19601f8201169050808301925050509e5050505050505050505050505050506000604051808303818588803b158015612ba357600080fd5b505af1158015612bb7573d6000803e3d6000fd5b5050600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555050505050505050505050505050565b6001602052600090815260409020546001600160a01b031681565b600854610100900460ff1660021490565b600054859061ffff740100000000000000000000000000000000000000009091048116908216111580612c56575061ffff818116145b612c915760405162461bcd60e51b815260040180806020018281038252602c8152602001806133b8602c913960400191505060405180910390fd5b61ffff8616612cf15760025461ffff808216620100009092041614612ce75760405162461bcd60e51b81526004018080602001828103825260368152602001806134bf6036913960400191505060405180910390fd5b60025461ffff1695505b61ffff8681161415612d345760405162461bcd60e51b815260040180806020018281038252602f81526020018061361b602f913960400191505060405180910390fd5b61ffff808716600090815260016020526040908190205490517ff8e1734c00000000000000000000000000000000000000000000000000000000815291871660048301908152336024840181905260448401889052608060648501908152608485018790526001600160a01b039093169363f8e1734c938a938a928a928a929160a401848480828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612df657600080fd5b505af1158015612e0a573d6000803e3d6000fd5b50505050505050505050565b6001600160a01b0381166000908152600460205260408120805462010000900461ffff1615612e5057805462010000900461ffff16611120565b505060025462010000900461ffff16919050565b60085460ff1660021490565b6003546001600160a01b031681565b612e876132d7565b6001600160a01b0316612e98611c10565b6001600160a01b031614612ef3576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116612f385760405162461bcd60e51b815260040180806020018281038252602681526020018061343b6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6004602052600090815260409020805460019091015461ffff80831692620100008104909116916001600160a01b036401000000009092048216911684565b600054606090859061ffff740100000000000000000000000000000000000000009091048116908216111580613023575061ffff818116145b61305e5760405162461bcd60e51b815260040180806020018281038252602c8152602001806133b8602c913960400191505060405180910390fd5b61ffff86166130be5760025461ffff8082166201000090920416146130b45760405162461bcd60e51b815260040180806020018281038252602c815260200180613461602c913960400191505060405180910390fd5b60025461ffff1695505b61ffff86811614156131015760405162461bcd60e51b815260040180806020018281038252602f815260200180613576602f913960400191505060405180910390fd5b61ffff8087166000908152600160205260408082205481517f52d2871f00000000000000000000000000000000000000000000000000000000815293891660048501526001600160a01b0388811660248601526044850188905291519116926352d2871f926064808301939192829003018186803b15801561318257600080fd5b505afa158015613196573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156131bf57600080fd5b81019080805160405193929190846401000000008211156131df57600080fd5b9083019060208201858111156131f457600080fd5b825164010000000081118282018810171561320e57600080fd5b82525081516020918201929091019080838360005b8381101561323b578181015183820152602001613223565b50505050905090810190601f1680156132685780820380516001836020036101000a031916815260200191505b50604052505050915050949350505050565b60025462010000900461ffff1681565b61ffff831660009081526005602052604080822090518490849080838380828437919091019485525050604051928390036020019092205467ffffffffffffffff16925050509392505050565b3390565b805460009061ffff166133485760025461ffff908116141561332e5760405162461bcd60e51b81526004018080602001828103825260238152602001806135d06023913960400191505060405180910390fd5b5060025464010000000090046001600160a01b0316611124565b815461ffff90811614156133a3576040805162461bcd60e51b815260206004820152601b60248201527f4c617965725a65726f3a20696e20424c4f434b5f56455253494f4e0000000000604482015290519081900360640190fd5b5060018101546001600160a01b031661112456fe4c617965725a65726f3a20696e76616c6964206d6573736167696e67206c6962726172792076657273696f6e4c617965725a65726f3a20726563656976652076657273696f6e202864656661756c742920697320424c4f434b5f56455253494f4e4c617965725a65726f3a20696e76616c69642064656661756c74206c6962726172794f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734c617965725a65726f3a206e6f2044454641554c5420636f6e666967207768696c65206d6967726174696f6e4c617965725a65726f3a2073656e642076657273696f6e202864656661756c742920697320424c4f434b5f56455253494f4e4c617965725a65726f3a2063616e206e6f742073657420436f6e66696720647572696e672044454641554c54206d6967726174696f6e4c617965725a65726f3a2073656e642076657273696f6e20697320424c4f434b5f56455253494f4e4c617965725a65726f3a2063616e206e6f7420616464206e6577206d6573736167696e67206c6962726172794c617965725a65726f3a206e65772076657273696f6e2063616e6e6f74206265207a65726f20616464726573734c617965725a65726f3a2063616e206e6f742067657420636f6e66696720666f7220424c4f434b5f56455253494f4e4c617965725a65726f3a2064656661756c7420726563656976652076657273696f6e206d757374203e20304c617965725a65726f3a2064656661756c7420696e20424c4f434b5f56455253494f4e4c617965725a65726f3a2064656661756c742073656e642076657273696f6e206d757374203e20304c617965725a65726f3a2063616e206e6f742073657420636f6e66696720666f7220424c4f434b5f56455253494f4e4c617965725a65726f3a20726563656976652076657273696f6e20697320424c4f434b5f56455253494f4ea26469706673582212208ed5abf804b10b0f71da77c570eb372ab4e36974c6a955e66c94b397fe506a9e64736f6c63430007060033\";\n\ntype EndpointConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: EndpointConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class Endpoint__factory extends ContractFactory {\n constructor(...args: EndpointConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n _chainId: PromiseOrValue<BigNumberish>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<Endpoint> {\n return super.deploy(_chainId, overrides || {}) as Promise<Endpoint>;\n }\n override getDeployTransaction(\n _chainId: PromiseOrValue<BigNumberish>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(_chainId, overrides || {});\n }\n override attach(address: string): Endpoint {\n return super.attach(address) as Endpoint;\n }\n override connect(signer: Signer): Endpoint__factory {\n return super.connect(signer) as Endpoint__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): EndpointInterface {\n return new utils.Interface(_abi) as EndpointInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): Endpoint {\n return new Contract(address, _abi, signerOrProvider) as Endpoint;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n BigNumberish,\n Overrides,\n} from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../common\";\nimport type { EndpointLite, EndpointLiteInterface } from \"../EndpointLite\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"version\",\n type: \"uint16\",\n },\n ],\n name: \"DefaultReceiveVersionSet\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"version\",\n type: \"uint16\",\n },\n ],\n name: \"DefaultSendVersionSet\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"version\",\n type: \"uint16\",\n },\n ],\n name: \"NewLibraryVersionAdded\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n ],\n name: \"PayloadCleared\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"reason\",\n type: \"bytes\",\n },\n ],\n name: \"PayloadStored\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n ],\n name: \"UaForceResumeReceive\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"ua\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"version\",\n type: \"uint16\",\n },\n ],\n name: \"UaReceiveVersionSet\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"ua\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"version\",\n type: \"uint16\",\n },\n ],\n name: \"UaSendVersionSet\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"BLOCK_VERSION\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"DEFAULT_VERSION\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"chainId\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"defaultReceiveLibraryAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"defaultReceiveVersion\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"defaultSendLibrary\",\n outputs: [\n {\n internalType: \"contract ILayerZeroMessagingLibrary\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"defaultSendVersion\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n {\n internalType: \"bool\",\n name: \"_payInZRO\",\n type: \"bool\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"estimateFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"nativeFee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"zroFee\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_srcAddress\",\n type: \"bytes\",\n },\n ],\n name: \"forceResumeReceive\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getChainId\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_version\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_configType\",\n type: \"uint256\",\n },\n ],\n name: \"getConfig\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_srcAddress\",\n type: \"bytes\",\n },\n ],\n name: \"getInboundNonce\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"getOutboundNonce\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"pure\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n ],\n name: \"getReceiveLibraryAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"receiveLibraryAddress\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n ],\n name: \"getReceiveVersion\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n ],\n name: \"getSendLibraryAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"sendLibraryAddress\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n ],\n name: \"getSendVersion\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_srcAddress\",\n type: \"bytes\",\n },\n ],\n name: \"hasStoredPayload\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n name: \"inboundNonce\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"isReceivingPayload\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"isSendingPayload\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"latestVersion\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"libraryLookup\",\n outputs: [\n {\n internalType: \"contract ILayerZeroMessagingLibrary\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_newLayerZeroLibraryAddress\",\n type: \"address\",\n },\n ],\n name: \"newVersion\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"address\",\n name: \"_dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"uint64\",\n name: \"_nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"uint256\",\n name: \"_gasLimit\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n ],\n name: \"receivePayload\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_srcAddress\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n ],\n name: \"retryPayload\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_destination\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n {\n internalType: \"address payable\",\n name: \"_refundAddress\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_zroPaymentAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"send\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_version\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint256\",\n name: \"_configType\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_config\",\n type: \"bytes\",\n },\n ],\n name: \"setConfig\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_newDefaultReceiveVersion\",\n type: \"uint16\",\n },\n ],\n name: \"setDefaultReceiveVersion\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_newDefaultSendVersion\",\n type: \"uint16\",\n },\n ],\n name: \"setDefaultSendVersion\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_newVersion\",\n type: \"uint16\",\n },\n ],\n name: \"setReceiveVersion\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_newVersion\",\n type: \"uint16\",\n },\n ],\n name: \"setSendVersion\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n name: \"storedPayload\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"payloadLength\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes32\",\n name: \"payloadHash\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"uaConfigLookup\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"sendVersion\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"receiveVersion\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"receiveLibraryAddress\",\n type: \"address\",\n },\n {\n internalType: \"contract ILayerZeroMessagingLibrary\",\n name: \"sendLibrary\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x60a06040526007805461ff001960ff19909116600117166101001790553480156200002957600080fd5b50604051620036d7380380620036d7833981810160405260208110156200004f57600080fd5b505160006200005d620000bd565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060f01b6001600160f01b031916608052620000c1565b3390565b60805160f01c6135f3620000e46000398061162d5280611c0252506135f36000f3fe60806040526004361061026a5760003560e01c80639a8a059211610153578063ca066b35116100cb578063f2fde38b1161007f578063f5ecbdbc11610064578063f5ecbdbc14610dfc578063faee093f14610ebe578063fdc07c7014610ed35761026a565b8063f2fde38b14610d60578063f4abee4b14610d935761026a565b8063da1a7c9a116100b0578063da1a7c9a14610d03578063e97a448a14610d36578063ebfea6e014610d4b5761026a565b8063ca066b3514610c56578063cbed8b9c14610c6b5761026a565b8063bd42a71311610122578063c2fa481311610107578063c2fa4813146109f1578063c580310014610af0578063c7e3711714610c285761026a565b8063bd42a713146109ae578063c07f47d4146109dc5761026a565b80639a8a0592146108775780639c729da11461088c578063a91606df146108bf578063aaff5f16146108d45761026a565b806342d65a8d116101e657806371ba2fd6116101b55780637a1457481161019a5780637a1457481461074a5780638da5cb5b146107a45780639924d33b146107b95761026a565b806371ba2fd61461062857806376a386dc1461065b5761026a565b806342d65a8d146105455780634afb422b146105cd5780635d9ef01a146105fe578063715018a6146106135761026a565b806310ddb1371161023d57806324ba3f2c1161022257806324ba3f2c146104145780633408e4701461042957806340a7bb101461043e5761026a565b806310ddb137146103b3578063158c81ad146103e15761026a565b806307e0db171461026f578063096568f61461029f5780630b837bb5146102e95780630eaf6ea614610317575b600080fd5b34801561027b57600080fd5b5061029d6004803603602081101561029257600080fd5b503561ffff16610f5b565b005b3480156102ab57600080fd5b506102d2600480360360208110156102c257600080fd5b50356001600160a01b0316611092565b6040805161ffff9092168252519081900360200190f35b3480156102f557600080fd5b5061029d6004803603602081101561030c57600080fd5b503561ffff166110d1565b34801561032357600080fd5b5061039f6004803603604081101561033a57600080fd5b61ffff823516919081019060408101602082013564010000000081111561036057600080fd5b82018360208201111561037257600080fd5b8035906020019184600183028401116401000000008311171561039457600080fd5b5090925090506112b1565b604080519115158252519081900360200190f35b3480156103bf57600080fd5b5061029d600480360360208110156103d657600080fd5b503561ffff166112fd565b3480156103ed57600080fd5b5061029d6004803603602081101561040457600080fd5b50356001600160a01b031661143d565b34801561042057600080fd5b506102d2611626565b34801561043557600080fd5b506102d261162b565b34801561044a57600080fd5b5061052c600480360360a081101561046157600080fd5b61ffff823516916001600160a01b036020820135169181019060608101604082013564010000000081111561049557600080fd5b8201836020820111156104a757600080fd5b803590602001918460018302840111640100000000831117156104c957600080fd5b9193909282351515926040810190602001356401000000008111156104ed57600080fd5b8201836020820111156104ff57600080fd5b8035906020019184600183028401116401000000008311171561052157600080fd5b50909250905061164f565b6040805192835260208301919091528051918290030190f35b34801561055157600080fd5b5061029d6004803603604081101561056857600080fd5b61ffff823516919081019060408101602082013564010000000081111561058e57600080fd5b8201836020820111156105a057600080fd5b803590602001918460018302840111640100000000831117156105c257600080fd5b5090925090506117a8565b3480156105d957600080fd5b506105e2611948565b604080516001600160a01b039092168252519081900360200190f35b34801561060a57600080fd5b506102d261195f565b34801561061f57600080fd5b5061029d611969565b34801561063457600080fd5b506105e26004803603602081101561064b57600080fd5b50356001600160a01b0316611a3f565b34801561066757600080fd5b506107196004803603604081101561067e57600080fd5b61ffff82351691908101906040810160208201356401000000008111156106a457600080fd5b8201836020820111156106b657600080fd5b803590602001918460018302840111640100000000831117156106d857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611b29945050505050565b6040805167ffffffffffffffff90941684526001600160a01b03909216602084015282820152519081900360600190f35b34801561075657600080fd5b506107876004803603604081101561076d57600080fd5b50803561ffff1690602001356001600160a01b0316611b80565b6040805167ffffffffffffffff9092168252519081900360200190f35b3480156107b057600080fd5b506105e2611bb9565b3480156107c557600080fd5b50610787600480360360408110156107dc57600080fd5b61ffff823516919081019060408101602082013564010000000081111561080257600080fd5b82018360208201111561081457600080fd5b8035906020019184600183028401116401000000008311171561083657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611bc8945050505050565b34801561088357600080fd5b506102d2611c00565b34801561089857600080fd5b506105e2600480360360208110156108af57600080fd5b50356001600160a01b0316611c24565b3480156108cb57600080fd5b506102d2611d01565b3480156108e057600080fd5b5061029d600480360360608110156108f757600080fd5b61ffff823516919081019060408101602082013564010000000081111561091d57600080fd5b82018360208201111561092f57600080fd5b8035906020019184600183028401116401000000008311171561095157600080fd5b91939092909160208101903564010000000081111561096f57600080fd5b82018360208201111561098157600080fd5b803590602001918460018302840111640100000000831117156109a357600080fd5b509092509050611d07565b3480156109ba57600080fd5b5061029d600480360360208110156109d157600080fd5b503561ffff166120ec565b3480156109e857600080fd5b506102d26122d2565b3480156109fd57600080fd5b5061029d600480360360c0811015610a1457600080fd5b61ffff8235169190810190604081016020820135640100000000811115610a3a57600080fd5b820183602082011115610a4c57600080fd5b80359060200191846001830284011164010000000083111715610a6e57600080fd5b919390926001600160a01b038335169267ffffffffffffffff602082013516926040820135929091608081019060600135640100000000811115610ab157600080fd5b820183602082011115610ac357600080fd5b80359060200191846001830284011164010000000083111715610ae557600080fd5b5090925090506122f4565b61029d600480360360c0811015610b0657600080fd5b61ffff8235169190810190604081016020820135640100000000811115610b2c57600080fd5b820183602082011115610b3e57600080fd5b80359060200191846001830284011164010000000083111715610b6057600080fd5b919390929091602081019035640100000000811115610b7e57600080fd5b820183602082011115610b9057600080fd5b80359060200191846001830284011164010000000083111715610bb257600080fd5b919390926001600160a01b0383358116936020810135909116929190606081019060400135640100000000811115610be957600080fd5b820183602082011115610bfb57600080fd5b80359060200191846001830284011164010000000083111715610c1d57600080fd5b509092509050612917565b348015610c3457600080fd5b506105e260048036036020811015610c4b57600080fd5b503561ffff16612b15565b348015610c6257600080fd5b5061039f612b30565b348015610c7757600080fd5b5061029d60048036036080811015610c8e57600080fd5b61ffff823581169260208101359091169160408201359190810190608081016060820135640100000000811115610cc457600080fd5b820183602082011115610cd657600080fd5b80359060200191846001830284011164010000000083111715610cf857600080fd5b509092509050612b41565b348015610d0f57600080fd5b506102d260048036036020811015610d2657600080fd5b50356001600160a01b0316612d37565b348015610d4257600080fd5b5061039f612d85565b348015610d5757600080fd5b506105e2612d91565b348015610d6c57600080fd5b5061029d60048036036020811015610d8357600080fd5b50356001600160a01b0316612da0565b348015610d9f57600080fd5b50610dc660048036036020811015610db657600080fd5b50356001600160a01b0316612ecc565b6040805161ffff95861681529390941660208401526001600160a01b039182168385015216606082015290519081900360800190f35b348015610e0857600080fd5b50610e4960048036036080811015610e1f57600080fd5b5061ffff81358116916020810135909116906001600160a01b036040820135169060600135612f0b565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610e83578181015183820152602001610e6b565b50505050905090810190601f168015610eb05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610eca57600080fd5b506102d261319b565b348015610edf57600080fd5b5061078760048036036040811015610ef657600080fd5b61ffff8235169190810190604081016020820135640100000000811115610f1c57600080fd5b820183602082011115610f2e57600080fd5b80359060200191846001830284011164010000000083111715610f5057600080fd5b5090925090506131ab565b600054819061ffff740100000000000000000000000000000000000000009091048116908216111580610f91575061ffff818116145b610fcc5760405162461bcd60e51b815260040180806020018281038252602c8152602001806132d9602c913960400191505060405180910390fd5b336000818152600460209081526040808320805461ffff88167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909116811782558085526001808552948390205494820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039690961695909517909455815194855291840192909252815190927ff2bc255571446a2f9b7cb2f0c75fd6a279bdb469f515d5a5c9910f713aeb32ca92908290030190a1505050565b6001600160a01b0381166000908152600460205260408120805461ffff16156110c057805461ffff166110c8565b60025461ffff165b9150505b919050565b6110d96131f8565b6001600160a01b03166110ea611bb9565b6001600160a01b031614611145576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600054819061ffff74010000000000000000000000000000000000000000909104811690821611158061117b575061ffff818116145b6111b65760405162461bcd60e51b815260040180806020018281038252602c8152602001806132d9602c913960400191505060405180910390fd5b61ffff82166111f65760405162461bcd60e51b81526004018080602001828103825260288152602001806135146028913960400191505060405180910390fd5b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff848116918217808455908116600090815260016020908152604091829020547fffffffffffffffff0000000000000000000000000000000000000000ffffffff9093166001600160a01b039093166401000000000292909217909355825191825291517feb685c087d38029bbde35299b748c6b80f099c7e5c3f9fe2dbb3ace1099e3b07929181900390910190a15050565b61ffff8316600090815260066020526040808220905182919085908590808383808284379190910194855250506040519283900360200190922060010154151593505050509392505050565b600054819061ffff740100000000000000000000000000000000000000009091048116908216111580611333575061ffff818116145b61136e5760405162461bcd60e51b815260040180806020018281038252602c8152602001806132d9602c913960400191505060405180910390fd5b33600081815260046020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff166201000061ffff8916908102919091178083558186526001855294839020547fffffffffffffffff0000000000000000000000000000000000000000ffffffff9095166001600160a01b0390951664010000000002949094178155815194855291840192909252815190927f9c199418af68d1547d7b99c71ee6a9eb18b27990dfcfb38982f3e3fb8c7b6bef92908290030190a1505050565b6114456131f8565b6001600160a01b0316611456611bb9565b6001600160a01b0316146114b1576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166114f65760405162461bcd60e51b815260040180806020018281038252602d81526020018061346a602d913960400191505060405180910390fd5b60005461ffff740100000000000000000000000000000000000000009091048116106115535760405162461bcd60e51b815260040180806020018281038252602c81526020018061343e602c913960400191505060405180910390fd5b60008054600161ffff7401000000000000000000000000000000000000000080840482168301821681027fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff90941693909317808555839004811684526020918252604080852080546001600160a01b0388167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790559354845193900416825291517f18c7402e58a1bec57f4eb75af242f65ababbbe09d9db383e0542f00635e5b8c5929181900390910190a150565b600081565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b03861660009081526004602052604081208054829190829061ffff161561168a5760018201546001600160a01b031661169f565b60025464010000000090046001600160a01b03165b9050806001600160a01b03166340a7bb108c8c8c8c8c8c8c6040518863ffffffff1660e01b8152600401808861ffff168152602001876001600160a01b03168152602001806020018515158152602001806020018381038352888882818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509950505050505050505050604080518083038186803b15801561176357600080fd5b505afa158015611777573d6000803e3d6000fd5b505050506040513d604081101561178d57600080fd5b508051602090910151909c909b509950505050505050505050565b61ffff8316600090815260066020526040808220905184908490808383808284379190910194855250506040519283900360200190922060018101549093501515915061183e9050576040805162461bcd60e51b815260206004820152601c60248201527f4c617965725a65726f3a206e6f2073746f726564207061796c6f616400000000604482015290519081900360640190fd5b80546801000000000000000090046001600160a01b031633146118a8576040805162461bcd60e51b815260206004820152601960248201527f4c617965725a65726f3a20696e76616c69642063616c6c657200000000000000604482015290519081900360640190fd5b80547fffffffff00000000000000000000000000000000000000000000000000000000168155600060018201556040805161ffff86168152602081018281529181018490527f23d2684f396e92a6e2ff2d16f98e6fea00d50cb27a64b531bc0748f730211f98918691869186919060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a150505050565b60025464010000000090046001600160a01b031681565b60025461ffff1681565b6119716131f8565b6001600160a01b0316611982611bb9565b6001600160a01b0316146119dd576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6001600160a01b0381166000908152600460205260408120805461ffff62010000909104811690811415611aa45760405162461bcd60e51b815260040180806020018281038252602b81526020018061356b602b913960400191505060405180910390fd5b61ffff8116611b0c5760025462010000900461ffff9081161415611af95760405162461bcd60e51b81526004018080602001828103825260358152602001806133056035913960400191505060405180910390fd5b6003546001600160a01b03169250611b22565b815464010000000090046001600160a01b031692505b5050919050565b600660209081526000928352604090922081518083018401805192815290840192909301919091209152805460019091015467ffffffffffffffff8216916801000000000000000090046001600160a01b03169083565b600060405162461bcd60e51b81526004018080602001828103825260288152602001806135966028913960400191505060405180910390fd5b6000546001600160a01b031690565b6005602090815260009283526040909220815180830184018051928152908401929093019190912091525467ffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b0381166000908152600460205260408120805461ffff90811690811415611c835760405162461bcd60e51b81526004018080602001828103825260288152602001806134166028913960400191505060405180910390fd5b61ffff8116611ced5760025461ffff9081161415611cd25760405162461bcd60e51b81526004018080602001828103825260328152602001806133ae6032913960400191505060405180910390fd5b60025464010000000090046001600160a01b03169250611b22565b50600101546001600160a01b031692915050565b61ffff81565b600754610100900460ff16600114611d66576040805162461bcd60e51b815260206004820181905260248201527f4c617965725a65726f3a206e6f2072656365697665207265656e7472616e6379604482015290519081900360640190fd5b600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661020017905561ffff85166000908152600660205260408082209051869086908083838082843791909101948552505060405192839003602001909220600181015490935015159150611e289050576040805162461bcd60e51b815260206004820152601c60248201527f4c617965725a65726f3a206e6f2073746f726564207061796c6f616400000000604482015290519081900360640190fd5b805467ffffffffffffffff1682148015611e635750806001015483836040518083838082843780830192505050925050506040518091039020145b611eb4576040805162461bcd60e51b815260206004820152601a60248201527f4c617965725a65726f3a20696e76616c6964207061796c6f6164000000000000604482015290519081900360640190fd5b80547fffffffff000000000000000000000000000000000000000000000000000000008116825560006001830181905561ffff88168152600560205260408082209051680100000000000000009093046001600160a01b0316928890889080838380828437919091019485525050604051928390036020018320547e1d356700000000000000000000000000000000000000000000000000000000845261ffff8c166004850190815267ffffffffffffffff90911660448501819052608060248601908152608486018c90529095506001600160a01b03871694621d356794508d93508c928c9288928d928d929091606481019060a401888880828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b15801561200f57600080fd5b505af1158015612023573d6000803e3d6000fd5b505050507f612434f39581c8e7d99746c9c20c6eb0ce8c0eb99f007c5719d620841370957d8888888486604051808661ffff168152602001806020018467ffffffffffffffff168152602001836001600160a01b031681526020018281038252868682818152602001925080828437600083820152604051601f909101601f19169092018290039850909650505050505050a15050600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055505050505050565b6120f46131f8565b6001600160a01b0316612105611bb9565b6001600160a01b031614612160576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600054819061ffff740100000000000000000000000000000000000000009091048116908216111580612196575061ffff818116145b6121d15760405162461bcd60e51b815260040180806020018281038252602c8152602001806132d9602c913960400191505060405180910390fd5b61ffff82166122115760405162461bcd60e51b815260040180806020018281038252602b8152602001806134c6602b913960400191505060405180910390fd5b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff166201000061ffff8581168281029390931793849055920490911660009081526001602090815260409182902054600380546001600160a01b039092167fffffffffffffffffffffffff0000000000000000000000000000000000000000909216919091179055815192835290517f96874dbe70c8a59e7996847475489a70a1b5096ed92cdc858b63ebabd071f8199281900390910190a15050565b60005474010000000000000000000000000000000000000000900461ffff1681565b600754610100900460ff16600114612353576040805162461bcd60e51b815260206004820181905260248201527f4c617965725a65726f3a206e6f2072656365697665207265656e7472616e6379604482015290519081900360640190fd5b600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661020017905561ffff8816600090815260056020526040908190209051889088908083838082843791909101948552505060405192839003602001909220805467ffffffffffffffff80821660010181167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909216821790925590871614915061244c9050576040805162461bcd60e51b815260206004820152601660248201527f4c617965725a65726f3a2077726f6e67206e6f6e636500000000000000000000604482015290519081900360640190fd5b6001600160a01b0385166000908152600460205260409020805462010000900461ffff166124c2576003546001600160a01b031633146124bd5760405162461bcd60e51b815260040180806020018281038252602281526020018061333a6022913960400191505060405180910390fd5b612528565b805464010000000090046001600160a01b03163314612528576040805162461bcd60e51b815260206004820152601a60248201527f4c617965725a65726f3a20696e76616c6964206c696272617279000000000000604482015290519081900360640190fd5b61ffff891660009081526006602052604080822090518a908a90808383808284379190910194855250506040519283900360200190922060018101549093501591506125bd9050576040805162461bcd60e51b815260206004820152601e60248201527f4c617965725a65726f3a20696e206d65737361676520626c6f636b696e670000604482015290519081900360640190fd5b866001600160a01b0316621d3567868c8c8c8b8a8a6040518863ffffffff1660e01b8152600401808761ffff168152602001806020018567ffffffffffffffff168152602001806020018381038352888882818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600088803b15801561267957600080fd5b5087f19350505050801561268b575060015b6128df573d8080156126b9576040519150601f19603f3d011682016040523d82523d6000602084013e6126be565b606091505b5060405180606001604052808686905067ffffffffffffffff168152602001896001600160a01b0316815260200186866040518083838082843780830192505050925050506040518091039020815250600660008d61ffff1661ffff1681526020019081526020016000208b8b604051808383808284378083019250505092505050908152602001604051809103902060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a8154816001600160a01b0302191690836001600160a01b03160217905550604082015181600101559050507f0f9e4d95b62f08222d612b5ab92039cd8fbbbea550a95e8df9f927436bbdf5db8b8b8b8b8b8a8a88604051808961ffff16815260200180602001876001600160a01b031681526020018667ffffffffffffffff168152602001806020018060200184810384528b8b82818152602001925080828437600083820152601f01601f1916909101858103845287815260200190508787808284376000838201819052601f909101601f191690920186810384528751815287516020918201939189019250908190849084905b8381101561289a578181015183820152602001612882565b50505050905090810190601f1680156128c75780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390a1505b5050600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555050505050505050565b60075460ff16600114612971576040805162461bcd60e51b815260206004820152601d60248201527f4c617965725a65726f3a206e6f2073656e64207265656e7472616e6379000000604482015290519081900360640190fd5b600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660021790553360009081526004602052604090206129b4816131fc565b6001600160a01b0316634d3a0f7c343360008e8e8e8e8e8e8e8e8e6040518d63ffffffff1660e01b8152600401808c6001600160a01b031681526020018b81526020018a61ffff1681526020018060200180602001876001600160a01b03168152602001866001600160a01b031681526020018060200184810384528c8c82818152602001925080828437600083820152601f01601f191690910185810384528a815260200190508a8a80828437600083820152601f01601f191690910185810383528681526020019050868680828437600081840152601f19601f8201169050808301925050509e5050505050505050505050505050506000604051808303818588803b158015612ac557600080fd5b505af1158015612ad9573d6000803e3d6000fd5b5050600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550505050505050505050505050565b6001602052600090815260409020546001600160a01b031681565b600754610100900460ff1660021490565b600054859061ffff740100000000000000000000000000000000000000009091048116908216111580612b77575061ffff818116145b612bb25760405162461bcd60e51b815260040180806020018281038252602c8152602001806132d9602c913960400191505060405180910390fd5b61ffff8616612c125760025461ffff808216620100009092041614612c085760405162461bcd60e51b81526004018080602001828103825260368152602001806133e06036913960400191505060405180910390fd5b60025461ffff1695505b61ffff8681161415612c555760405162461bcd60e51b815260040180806020018281038252602f81526020018061353c602f913960400191505060405180910390fd5b61ffff808716600090815260016020526040908190205490517ff8e1734c00000000000000000000000000000000000000000000000000000000815291871660048301908152336024840181905260448401889052608060648501908152608485018790526001600160a01b039093169363f8e1734c938a938a928a928a929160a401848480828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612d1757600080fd5b505af1158015612d2b573d6000803e3d6000fd5b50505050505050505050565b6001600160a01b0381166000908152600460205260408120805462010000900461ffff1615612d7157805462010000900461ffff166110c8565b505060025462010000900461ffff16919050565b60075460ff1660021490565b6003546001600160a01b031681565b612da86131f8565b6001600160a01b0316612db9611bb9565b6001600160a01b031614612e14576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116612e595760405162461bcd60e51b815260040180806020018281038252602681526020018061335c6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6004602052600090815260409020805460019091015461ffff80831692620100008104909116916001600160a01b036401000000009092048216911684565b600054606090859061ffff740100000000000000000000000000000000000000009091048116908216111580612f44575061ffff818116145b612f7f5760405162461bcd60e51b815260040180806020018281038252602c8152602001806132d9602c913960400191505060405180910390fd5b61ffff8616612fdf5760025461ffff808216620100009092041614612fd55760405162461bcd60e51b815260040180806020018281038252602c815260200180613382602c913960400191505060405180910390fd5b60025461ffff1695505b61ffff86811614156130225760405162461bcd60e51b815260040180806020018281038252602f815260200180613497602f913960400191505060405180910390fd5b61ffff8087166000908152600160205260408082205481517f52d2871f00000000000000000000000000000000000000000000000000000000815293891660048501526001600160a01b0388811660248601526044850188905291519116926352d2871f926064808301939192829003018186803b1580156130a357600080fd5b505afa1580156130b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156130e057600080fd5b810190808051604051939291908464010000000082111561310057600080fd5b90830190602082018581111561311557600080fd5b825164010000000081118282018810171561312f57600080fd5b82525081516020918201929091019080838360005b8381101561315c578181015183820152602001613144565b50505050905090810190601f1680156131895780820380516001836020036101000a031916815260200191505b50604052505050915050949350505050565b60025462010000900461ffff1681565b61ffff831660009081526005602052604080822090518490849080838380828437919091019485525050604051928390036020019092205467ffffffffffffffff16925050509392505050565b3390565b805460009061ffff166132695760025461ffff908116141561324f5760405162461bcd60e51b81526004018080602001828103825260238152602001806134f16023913960400191505060405180910390fd5b5060025464010000000090046001600160a01b03166110cc565b815461ffff90811614156132c4576040805162461bcd60e51b815260206004820152601b60248201527f4c617965725a65726f3a20696e20424c4f434b5f56455253494f4e0000000000604482015290519081900360640190fd5b5060018101546001600160a01b03166110cc56fe4c617965725a65726f3a20696e76616c6964206d6573736167696e67206c6962726172792076657273696f6e4c617965725a65726f3a20726563656976652076657273696f6e202864656661756c742920697320424c4f434b5f56455253494f4e4c617965725a65726f3a20696e76616c69642064656661756c74206c6962726172794f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734c617965725a65726f3a206e6f2044454641554c5420636f6e666967207768696c65206d6967726174696f6e4c617965725a65726f3a2073656e642076657273696f6e202864656661756c742920697320424c4f434b5f56455253494f4e4c617965725a65726f3a2063616e206e6f742073657420436f6e66696720647572696e672044454641554c54206d6967726174696f6e4c617965725a65726f3a2073656e642076657273696f6e20697320424c4f434b5f56455253494f4e4c617965725a65726f3a2063616e206e6f7420616464206e6577206d6573736167696e67206c6962726172794c617965725a65726f3a206e65772076657273696f6e2063616e6e6f74206265207a65726f20616464726573734c617965725a65726f3a2063616e206e6f742067657420636f6e66696720666f7220424c4f434b5f56455253494f4e4c617965725a65726f3a2064656661756c7420726563656976652076657273696f6e206d757374203e20304c617965725a65726f3a2064656661756c7420696e20424c4f434b5f56455253494f4e4c617965725a65726f3a2064656661756c742073656e642076657273696f6e206d757374203e20304c617965725a65726f3a2063616e206e6f742073657420636f6e66696720666f7220424c4f434b5f56455253494f4e4c617965725a65726f3a20726563656976652076657273696f6e20697320424c4f434b5f56455253494f4e4c617965725a65726f3a206e6f206f7574626f756e64206e6f6e636520617420656e64706f696e74a26469706673582212203239e766bced84ae650fab906366d915bf5a5ded8b671bc72406e94f0af7773664736f6c63430007060033\";\n\ntype EndpointLiteConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: EndpointLiteConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class EndpointLite__factory extends ContractFactory {\n constructor(...args: EndpointLiteConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n _chainId: PromiseOrValue<BigNumberish>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<EndpointLite> {\n return super.deploy(_chainId, overrides || {}) as Promise<EndpointLite>;\n }\n override getDeployTransaction(\n _chainId: PromiseOrValue<BigNumberish>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(_chainId, overrides || {});\n }\n override attach(address: string): EndpointLite {\n return super.attach(address) as EndpointLite;\n }\n override connect(signer: Signer): EndpointLite__factory {\n return super.connect(signer) as EndpointLite__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): EndpointLiteInterface {\n return new utils.Interface(_abi) as EndpointLiteInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): EndpointLite {\n return new Contract(address, _abi, signerOrProvider) as EndpointLite;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../common\";\nimport type { FeeHandler, FeeHandlerInterface } from \"../FeeHandler\";\n\nconst _abi = [\n {\n inputs: [],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_uln\",\n type: \"address\",\n },\n ],\n name: \"approve\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"approved\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address[]\",\n name: \"_receivers\",\n type: \"address[]\",\n },\n {\n internalType: \"uint256[]\",\n name: \"_amounts\",\n type: \"uint256[]\",\n },\n {\n internalType: \"address\",\n name: \"_refundAddress\",\n type: \"address\",\n },\n ],\n name: \"creditFee\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"feeToken\",\n outputs: [\n {\n internalType: \"contract IERC20\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_feeToken\",\n type: \"address\",\n },\n ],\n name: \"setFeeToken\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b610da38061007d6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146101d3578063d8b964e6146101db578063daea85c514610222578063f2fde38b1461025557610088565b806315cce2241461008d578063647846a5146100c25780636c52b469146100f3578063715018a6146101cb575b600080fd5b6100c0600480360360208110156100a357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610288565b005b6100ca6103c8565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100c06004803603606081101561010957600080fd5b81019060208101813564010000000081111561012457600080fd5b82018360208201111561013657600080fd5b8035906020019184602083028401116401000000008311171561015857600080fd5b91939092909160208101903564010000000081111561017657600080fd5b82018360208201111561018857600080fd5b803590602001918460208302840111640100000000831117156101aa57600080fd5b91935091503573ffffffffffffffffffffffffffffffffffffffff166103e4565b6100c06105e2565b6100ca6106df565b61020e600480360360208110156101f157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106fb565b604080519115158252519081900360200190f35b6100c06004803603602081101561023857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610710565b6100c06004803603602081101561026b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107ed565b61029061095a565b73ffffffffffffffffffffffffffffffffffffffff166102ae6106df565b73ffffffffffffffffffffffffffffffffffffffff1614610316576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60015473ffffffffffffffffffffffffffffffffffffffff1615610381576040805162461bcd60e51b815260206004820181905260248201527f46656548616e646c65723a20666565546f6b656e20616c726561647920736574604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b838214610438576040805162461bcd60e51b815260206004820152601e60248201527f46656548616e646c65723a20696e76616c696420706172616d65746572730000604482015290519081900360640190fd5b3360009081526002602052604090205460ff1661049c576040805162461bcd60e51b815260206004820152601860248201527f46656548616e646c65723a206e6f7420617070726f7665640000000000000000604482015290519081900360640190fd5b60005b84811015610510576105088686838181106104b657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168585848181106104df57fe5b60015473ffffffffffffffffffffffffffffffffffffffff16939260209091020135905061095e565b60010161049f565b50600154604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561058257600080fd5b505afa158015610596573d6000803e3d6000fd5b505050506040513d60208110156105ac57600080fd5b5051905080156105da576001546105da9073ffffffffffffffffffffffffffffffffffffffff16838361095e565b505050505050565b6105ea61095a565b73ffffffffffffffffffffffffffffffffffffffff166106086106df565b73ffffffffffffffffffffffffffffffffffffffff1614610670576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60026020526000908152604090205460ff1681565b61071861095a565b73ffffffffffffffffffffffffffffffffffffffff166107366106df565b73ffffffffffffffffffffffffffffffffffffffff161461079e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6107f561095a565b73ffffffffffffffffffffffffffffffffffffffff166108136106df565b73ffffffffffffffffffffffffffffffffffffffff161461087b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166108cd5760405162461bcd60e51b8152600401808060200182810382526026815260200180610cf86026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3390565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526109eb9084906109f0565b505050565b6000610a52826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610aae9092919063ffffffff16565b8051909150156109eb57808060200190516020811015610a7157600080fd5b50516109eb5760405162461bcd60e51b815260040180806020018281038252602a815260200180610d44602a913960400191505060405180910390fd5b6060610abd8484600085610ac7565b90505b9392505050565b606082471015610b085760405162461bcd60e51b8152600401808060200182810382526026815260200180610d1e6026913960400191505060405180910390fd5b610b1185610c4d565b610b62576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310610bcb57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b8e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610c2d576040519150601f19603f3d011682016040523d82523d6000602084013e610c32565b606091505b5091509150610c42828286610c53565b979650505050505050565b3b151590565b60608315610c62575081610ac0565b825115610c725782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610cbc578181015183820152602001610ca4565b50505050905090810190601f168015610ce95780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220864845ab94f002a59a72286b80287eb0695225a7876f8314f1381973dc22ab6f64736f6c63430007060033\";\n\ntype FeeHandlerConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: FeeHandlerConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class FeeHandler__factory extends ContractFactory {\n constructor(...args: FeeHandlerConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<FeeHandler> {\n return super.deploy(overrides || {}) as Promise<FeeHandler>;\n }\n override getDeployTransaction(\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(overrides || {});\n }\n override attach(address: string): FeeHandler {\n return super.attach(address) as FeeHandler;\n }\n override connect(signer: Signer): FeeHandler__factory {\n return super.connect(signer) as FeeHandler__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): FeeHandlerInterface {\n return new utils.Interface(_abi) as FeeHandlerInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): FeeHandler {\n return new Contract(address, _abi, signerOrProvider) as FeeHandler;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../common\";\nimport type { NonceContract, NonceContractInterface } from \"../NonceContract\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_endpoint\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n inputs: [],\n name: \"endpoint\",\n outputs: [\n {\n internalType: \"contract ILayerZeroEndpoint\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_ua\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_path\",\n type: \"bytes\",\n },\n ],\n name: \"increment\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n name: \"outboundNonce\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x60a060405234801561001057600080fd5b506040516104c53803806104c58339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b031661045961006c600039806101dd528061021a52506104596000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80635e280f11146100465780636fe7b67314610077578063c533338f1461012a575b600080fd5b61004e6101db565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61010d6004803603606081101561008d57600080fd5b61ffff8235169173ffffffffffffffffffffffffffffffffffffffff602082013516918101906060810160408201356401000000008111156100ce57600080fd5b8201836020820111156100e057600080fd5b8035906020019184600183028401116401000000008311171561010257600080fd5b5090925090506101ff565b6040805167ffffffffffffffff9092168252519081900360200190f35b61010d6004803603604081101561014057600080fd5b61ffff823516919081019060408101602082013564010000000081111561016657600080fd5b82018360208201111561017857600080fd5b8035906020019184600183028401116401000000008311171561019a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506103bc945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60003373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639c729da1866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561029f57600080fd5b505afa1580156102b3573d6000803e3d6000fd5b505050506040513d60208110156102c957600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614610337576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806103f26032913960400191505060405180910390fd5b6000808661ffff1661ffff1681526020019081526020016000208383604051808383808284379190910194855250506040516020938190039390930190922080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008116600167ffffffffffffffff9283160191821617909155979650505050505050565b6000602081815292815260409020815180830184018051928152908401929093019190912091525467ffffffffffffffff168156fe4e6f6e6365436f6e74726163743a206d73672e73656e646572206973206e6f742076616c69642073656e646c696272617279a2646970667358221220c1bfb2490cbea6bde5984d565ddc2a5410b5e6cba68523297196b3324e05319f64736f6c63430007060033\";\n\ntype NonceContractConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: NonceContractConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class NonceContract__factory extends ContractFactory {\n constructor(...args: NonceContractConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n _endpoint: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<NonceContract> {\n return super.deploy(_endpoint, overrides || {}) as Promise<NonceContract>;\n }\n override getDeployTransaction(\n _endpoint: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(_endpoint, overrides || {});\n }\n override attach(address: string): NonceContract {\n return super.attach(address) as NonceContract;\n }\n override connect(signer: Signer): NonceContract__factory {\n return super.connect(signer) as NonceContract__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): NonceContractInterface {\n return new utils.Interface(_abi) as NonceContractInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): NonceContract {\n return new Contract(address, _abi, signerOrProvider) as NonceContract;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../common\";\nimport type {\n NonceContractRadar,\n NonceContractRadarInterface,\n} from \"../NonceContractRadar\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_endpoint\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_ulnv2Radar\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n inputs: [],\n name: \"endpoint\",\n outputs: [\n {\n internalType: \"contract ILayerZeroEndpoint\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_ua\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_path\",\n type: \"bytes\",\n },\n ],\n name: \"increment\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_path\",\n type: \"bytes\",\n },\n {\n internalType: \"uint64\",\n name: \"_nonce\",\n type: \"uint64\",\n },\n ],\n name: \"initRadarOutboundNonce\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n name: \"outboundNonce\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"ulnv2Radar\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x60c060405234801561001057600080fd5b506040516106dd3803806106dd8339818101604052604081101561003357600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c6106556100886000398061029252806102cc5250806103d9528061041652506106556000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635e280f11116100505780635e280f11146101245780636fe7b6731461012c578063c533338f146101df57610067565b8063184e49e11461006c5780633461ff561461009d575b600080fd5b610074610290565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610122600480360360608110156100b357600080fd5b61ffff82351691908101906040810160208201356401000000008111156100d957600080fd5b8201836020820111156100eb57600080fd5b8035906020019184600183028401116401000000008311171561010d57600080fd5b91935091503567ffffffffffffffff166102b4565b005b6100746103d7565b6101c26004803603606081101561014257600080fd5b61ffff8235169173ffffffffffffffffffffffffffffffffffffffff6020820135169181019060608101604082013564010000000081111561018357600080fd5b82018360208201111561019557600080fd5b803590602001918460018302840111640100000000831117156101b757600080fd5b5090925090506103fb565b6040805167ffffffffffffffff9092168252519081900360200190f35b6101c2600480360360408110156101f557600080fd5b61ffff823516919081019060408101602082013564010000000081111561021b57600080fd5b82018360208201111561022d57600080fd5b8035906020019184600183028401116401000000008311171561024f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506105b8945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461035857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4e6f6e6365436f6e74726163743a206f6e6c7920756c6e763252616461720000604482015290519081900360640190fd5b806000808661ffff1661ffff16815260200190815260200160002084846040518083838082843791909101948552505060405192839003602001909220805467ffffffffffffffff949094167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090941693909317909255505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60003373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639c729da1866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561049b57600080fd5b505afa1580156104af573d6000803e3d6000fd5b505050506040513d60208110156104c557600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614610533576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806105ee6032913960400191505060405180910390fd5b6000808661ffff1661ffff1681526020019081526020016000208383604051808383808284379190910194855250506040516020938190039390930190922080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008116600167ffffffffffffffff9283160191821617909155979650505050505050565b6000602081815292815260409020815180830184018051928152908401929093019190912091525467ffffffffffffffff168156fe4e6f6e6365436f6e74726163743a206d73672e73656e646572206973206e6f742076616c69642073656e646c696272617279a26469706673582212204f7496cb391823a098895bb07da67de439d310e60e41f5fda8a0cbabc0e8681764736f6c63430007060033\";\n\ntype NonceContractRadarConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: NonceContractRadarConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class NonceContractRadar__factory extends ContractFactory {\n constructor(...args: NonceContractRadarConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n _endpoint: PromiseOrValue<string>,\n _ulnv2Radar: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<NonceContractRadar> {\n return super.deploy(\n _endpoint,\n _ulnv2Radar,\n overrides || {}\n ) as Promise<NonceContractRadar>;\n }\n override getDeployTransaction(\n _endpoint: PromiseOrValue<string>,\n _ulnv2Radar: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(_endpoint, _ulnv2Radar, overrides || {});\n }\n override attach(address: string): NonceContractRadar {\n return super.attach(address) as NonceContractRadar;\n }\n override connect(signer: Signer): NonceContractRadar__factory {\n return super.connect(signer) as NonceContractRadar__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): NonceContractRadarInterface {\n return new utils.Interface(_abi) as NonceContractRadarInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): NonceContractRadar {\n return new Contract(address, _abi, signerOrProvider) as NonceContractRadar;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../common\";\nimport type { PriceFeed, PriceFeedInterface } from \"../PriceFeed\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"ARBITRUM_COMPRESSION_PERCENT\",\n outputs: [\n {\n internalType: \"uint128\",\n name: \"\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"PRICE_RATIO_DENOMINATOR\",\n outputs: [\n {\n internalType: \"uint128\",\n name: \"\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"arbitrumPriceExt\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"gasPerL2Tx\",\n type: \"uint64\",\n },\n {\n internalType: \"uint32\",\n name: \"gasPerL1CallDataByte\",\n type: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"defaultModelPrice\",\n outputs: [\n {\n internalType: \"uint128\",\n name: \"priceRatio\",\n type: \"uint128\",\n },\n {\n internalType: \"uint64\",\n name: \"gasPriceInUnit\",\n type: \"uint64\",\n },\n {\n internalType: \"uint32\",\n name: \"gasPerByte\",\n type: \"uint32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint256\",\n name: \"_callDataSize\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"_gas\",\n type: \"uint256\",\n },\n ],\n name: \"estimateFeeByChain\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"fee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint128\",\n name: \"priceRatio\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint256\",\n name: \"_callDataSize\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"_gas\",\n type: \"uint256\",\n },\n ],\n name: \"estimateFeeWithArbitrumModel\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"fee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint128\",\n name: \"priceRatio\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint256\",\n name: \"_callDataSize\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"_gas\",\n type: \"uint256\",\n },\n ],\n name: \"estimateFeeWithDefaultModel\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"fee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint128\",\n name: \"priceRatio\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint256\",\n name: \"_callDataSize\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"_gas\",\n type: \"uint256\",\n },\n ],\n name: \"estimateFeeWithOptimismModel\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"fee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint128\",\n name: \"priceRatio\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n ],\n name: \"getPrice\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint128\",\n name: \"priceRatio\",\n type: \"uint128\",\n },\n {\n internalType: \"uint64\",\n name: \"gasPriceInUnit\",\n type: \"uint64\",\n },\n {\n internalType: \"uint32\",\n name: \"gasPerByte\",\n type: \"uint32\",\n },\n ],\n internalType: \"struct ILayerZeroPriceFeed.Price\",\n name: \"price\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getPriceRatioDenominator\",\n outputs: [\n {\n internalType: \"uint128\",\n name: \"\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_priceUpdater\",\n type: \"address\",\n },\n ],\n name: \"initialize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"nativeTokenPriceUSD\",\n outputs: [\n {\n internalType: \"uint128\",\n name: \"\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"onUpgrade\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"priceUpdater\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint128\",\n name: \"_compressionPercent\",\n type: \"uint128\",\n },\n ],\n name: \"setArbitrumCompressionPercent\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint128\",\n name: \"_nativeTokenPriceUSD\",\n type: \"uint128\",\n },\n ],\n name: \"setNativeTokenPriceUSD\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n components: [\n {\n internalType: \"uint128\",\n name: \"priceRatio\",\n type: \"uint128\",\n },\n {\n internalType: \"uint64\",\n name: \"gasPriceInUnit\",\n type: \"uint64\",\n },\n {\n internalType: \"uint32\",\n name: \"gasPerByte\",\n type: \"uint32\",\n },\n ],\n internalType: \"struct ILayerZeroPriceFeed.Price\",\n name: \"price\",\n type: \"tuple\",\n },\n ],\n internalType: \"struct ILayerZeroPriceFeed.UpdatePrice[]\",\n name: \"_price\",\n type: \"tuple[]\",\n },\n ],\n name: \"setPrice\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n components: [\n {\n internalType: \"uint128\",\n name: \"priceRatio\",\n type: \"uint128\",\n },\n {\n internalType: \"uint64\",\n name: \"gasPriceInUnit\",\n type: \"uint64\",\n },\n {\n internalType: \"uint32\",\n name: \"gasPerByte\",\n type: \"uint32\",\n },\n ],\n internalType: \"struct ILayerZeroPriceFeed.Price\",\n name: \"price\",\n type: \"tuple\",\n },\n {\n components: [\n {\n internalType: \"uint64\",\n name: \"gasPerL2Tx\",\n type: \"uint64\",\n },\n {\n internalType: \"uint32\",\n name: \"gasPerL1CallDataByte\",\n type: \"uint32\",\n },\n ],\n internalType: \"struct ILayerZeroPriceFeed.ArbitrumPriceExt\",\n name: \"extend\",\n type: \"tuple\",\n },\n ],\n internalType: \"struct ILayerZeroPriceFeed.UpdatePriceExt[]\",\n name: \"_price\",\n type: \"tuple[]\",\n },\n ],\n name: \"setPriceForArbitrum\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint128\",\n name: \"_denominator\",\n type: \"uint128\",\n },\n ],\n name: \"setPriceRatioDenominator\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_addr\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"_active\",\n type: \"bool\",\n },\n ],\n name: \"setPriceUpdater\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x608060405234801561001057600080fd5b50611d88806100206000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80638da5cb5b116100e3578063cd68b79b1161008c578063e15d16e811610066578063e15d16e814610320578063f2fde38b14610333578063ff37b496146103465761018d565b8063cd68b79b146102e5578063d350ad25146102ed578063e0ad121a146103005761018d565b8063ab1518ab116100bd578063ab1518ab146102b7578063c1840327146102ca578063c4d66de8146102d25761018d565b80638da5cb5b146102785780638f7002d21461028d57806392807f58146102af5761018d565b806352a7251011610145578063715018a61161011f578063715018a61461022f5780637bc3c9ab146102375780638ca2fb08146102585761018d565b806352a72510146101f65780635d6d7ccb14610209578063711746e21461021c5761018d565b80632f7cb0b4116101765780632f7cb0b4146101af57806336a5beba146101c25780633c04741e146101e15761018d565b806315527af6146101925780631824a46b146101a7575b600080fd5b6101a56101a036600461199c565b610359565b005b6101a56104a8565b6101a56101bd366004611acf565b61058c565b6101ca61064f565b6040516101d8929190611cbd565b60405180910390f35b6101e9610673565b6040516101d89190611c46565b6101a5610204366004611962565b61068b565b6101a5610217366004611acf565b610751565b6101a561022a366004611a0c565b6107e7565b6101a5610876565b61024a610245366004611b03565b610973565b6040516101d8929190611c9d565b61026b610266366004611941565b610a02565b6040516101d89190611b8a565b610280610a17565b6040516101d89190611b69565b6102a061029b366004611ae9565b610a33565b6040516101d893929190611c63565b6101e9610a9a565b61024a6102c5366004611b03565b610ab2565b6101e9610c6c565b6101a56102e0366004611941565b610c84565b6101e9610e41565b6101a56102fb366004611acf565b610e6d565b61031361030e366004611ae9565b610f3e565b6040516101d89190611c03565b61024a61032e366004611b03565b610fce565b6101a5610341366004611941565b61109e565b61024a610354366004611b03565b61120c565b33610362610a17565b73ffffffffffffffffffffffffffffffffffffffff16146103b5573360009081526066602052604090205460ff166103b55760405162461bcd60e51b81526004016103ac90611b95565b60405180910390fd5b60005b818110156104a357368383838181106103cd57fe5b60c0029190910191506103ff90506103e86020830183611ae9565b6103fa36849003840160208501611a6a565b61134e565b600061041160a0830160808401611b4f565b9050600061042560c0840160a08501611b35565b6068805463ffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff67ffffffffffffffff9095167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090931692909217939093161790915550506001016103b8565b505050565b60006104b261146a565b905073ffffffffffffffffffffffffffffffffffffffff811661050b5773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035561052d565b3373ffffffffffffffffffffffffffffffffffffffff82161461052d57600080fd5b50606580546402540be4007fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116179055606980546fffffffffffffffffffffffffffffffff16702f00000000000000000000000000000000179055565b61059461148f565b73ffffffffffffffffffffffffffffffffffffffff166105b2610a17565b73ffffffffffffffffffffffffffffffffffffffff161461061a576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b606980546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055565b60685467ffffffffffffffff81169068010000000000000000900463ffffffff1682565b6065546fffffffffffffffffffffffffffffffff1681565b61069361148f565b73ffffffffffffffffffffffffffffffffffffffff166106b1610a17565b73ffffffffffffffffffffffffffffffffffffffff1614610719576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff919091166000908152606660205260409020805460ff1916911515919091179055565b3361075a610a17565b73ffffffffffffffffffffffffffffffffffffffff16146107a4573360009081526066602052604090205460ff166107a45760405162461bcd60e51b81526004016103ac90611b95565b606980547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b336107f0610a17565b73ffffffffffffffffffffffffffffffffffffffff161461083a573360009081526066602052604090205460ff1661083a5760405162461bcd60e51b81526004016103ac90611b95565b60005b818110156104a3573683838381811061085257fe5b60800291909101915061086d90506103e86020830183611ae9565b5060010161083d565b61087e61148f565b73ffffffffffffffffffffffffffffffffffffffff1661089c610a17565b73ffffffffffffffffffffffffffffffffffffffff1614610904576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60335460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000808461ffff16606e148061098e57508461ffff1661279f145b8061099e57508461ffff16614eaf145b156109b7576109ae85858561120c565b915091506109fa565b8461ffff16606f14806109cf57508461ffff16612794145b806109df57508461ffff16614ea4145b156109ef576109ae858585610ab2565b6109ae858585610fce565b935093915050565b60666020526000908152604090205460ff1681565b60335473ffffffffffffffffffffffffffffffffffffffff1690565b6067602052600090815260409020546fffffffffffffffffffffffffffffffff811690700100000000000000000000000000000000810467ffffffffffffffff16907801000000000000000000000000000000000000000000000000900463ffffffff1683565b6069546fffffffffffffffffffffffffffffffff1681565b6000806000610ac086611493565b61ffff81166000908152606760205260408120805492935091610b1890610c7490610b12908a9063ffffffff78010000000000000000000000000000000000000000000000009091048116906114f516565b90611557565b8254909150600090610b49908390700100000000000000000000000000000000900467ffffffffffffffff166114f5565b61ffff8a166000908152606760205260408120805492935091610b93908b9063ffffffff78010000000000000000000000000000000000000000000000009091048116906114f516565b8254909150600090610bcd90700100000000000000000000000000000000900467ffffffffffffffff16610bc7848d611557565b906114f5565b6065548754919250600091610c03916fffffffffffffffffffffffffffffffff90811691610bfd918991166114f5565b906115b1565b6065548554919250600091610c33916fffffffffffffffffffffffffffffffff90811691610bfd918791166114f5565b90506000610c418383611557565b9554959f6fffffffffffffffffffffffffffffffff9096169e50949c50505050505050505050505050565b6065546fffffffffffffffffffffffffffffffff1690565b6000610c8e61146a565b905073ffffffffffffffffffffffffffffffffffffffff8116610ce75773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355610d09565b3373ffffffffffffffffffffffffffffffffffffffff821614610d0957600080fd5b600054610100900460ff1680610d225750610d22611618565b80610d30575060005460ff16155b610d6b5760405162461bcd60e51b815260040180806020018281038252602e815260200180611d04602e913960400191505060405180910390fd5b600054610100900460ff16158015610d96576000805460ff1961ff0019909116610100171660011790555b610d9e611629565b73ffffffffffffffffffffffffffffffffffffffff83166000908152606660205260409020805460ff19166001179055606580547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166402540be40017905560698054702f000000000000000000000000000000006fffffffffffffffffffffffffffffffff9190911617905580156104a3576000805461ff0019169055505050565b60695470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b610e7561148f565b73ffffffffffffffffffffffffffffffffffffffff16610e93610a17565b73ffffffffffffffffffffffffffffffffffffffff1614610efb576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b606580547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b610f4661189f565b5061ffff16600090815260676020908152604091829020825160608101845290546fffffffffffffffffffffffffffffffff81168252700100000000000000000000000000000000810467ffffffffffffffff1692820192909252780100000000000000000000000000000000000000000000000090910463ffffffff169181019190915290565b61ffff831660009081526067602052604081208054829190829061101990879063ffffffff78010000000000000000000000000000000000000000000000009091048116906114f516565b825490915060009061104d90700100000000000000000000000000000000900467ffffffffffffffff16610bc78489611557565b606554845491925061107a916fffffffffffffffffffffffffffffffff91821691610bfd918591166114f5565b925492986fffffffffffffffffffffffffffffffff90931697509195505050505050565b6110a661148f565b73ffffffffffffffffffffffffffffffffffffffff166110c4610a17565b73ffffffffffffffffffffffffffffffffffffffff161461112c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661117e5760405162461bcd60e51b8152600401808060200182810382526026815260200180611cde6026913960400191505060405180910390fd5b60335460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61ffff83166000908152606760205260408120606854606954839291839161127d9168010000000000000000900463ffffffff90811691610bc791606491610bfd918c9170010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16906114f516565b82549091506000906112b690889063ffffffff78010000000000000000000000000000000000000000000000009091048116906114f516565b83546068549192506000916112fc9167ffffffffffffffff700100000000000000000000000000000000909104811691610bc7918691610b1291899183918f9116611557565b6065548554919250611329916fffffffffffffffffffffffffffffffff91821691610bfd918591166114f5565b935493996fffffffffffffffffffffffffffffffff9094169850929650505050505050565b805160208083015160409384015184516060810186526fffffffffffffffffffffffffffffffff948516815267ffffffffffffffff92831681850190815263ffffffff92831682880190815261ffff909816600090815260679095529590932092518354955196519091167801000000000000000000000000000000000000000000000000027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff96909216700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff919094167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090951694909417939093169190911792909216179055565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b3390565b60008161ffff16606f14156114aa575060656114f0565b8161ffff1661279414156114c157506127896114f0565b8161ffff16614ea414156114d85750614e996114f0565b60405162461bcd60e51b81526004016103ac90611bcc565b919050565b60008261150457506000611551565b8282028284828161151157fe5b041461154e5760405162461bcd60e51b8152600401808060200182810382526021815260200180611d326021913960400191505060405180910390fd5b90505b92915050565b60008282018381101561154e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000808211611607576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161161057fe5b049392505050565b6000611623306116db565b15905090565b600054610100900460ff16806116425750611642611618565b80611650575060005460ff16155b61168b5760405162461bcd60e51b815260040180806020018281038252602e815260200180611d04602e913960400191505060405180910390fd5b600054610100900460ff161580156116b6576000805460ff1961ff0019909116610100171660011790555b6116be6116e1565b6116c6611781565b80156116d8576000805461ff00191690555b50565b3b151590565b600054610100900460ff16806116fa57506116fa611618565b80611708575060005460ff16155b6117435760405162461bcd60e51b815260040180806020018281038252602e815260200180611d04602e913960400191505060405180910390fd5b600054610100900460ff161580156116c6576000805460ff1961ff00199091166101001716600117905580156116d8576000805461ff001916905550565b600054610100900460ff168061179a575061179a611618565b806117a8575060005460ff16155b6117e35760405162461bcd60e51b815260040180806020018281038252602e815260200180611d04602e913960400191505060405180910390fd5b600054610100900460ff1615801561180e576000805460ff1961ff0019909116610100171660011790555b600061181861148f565b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35080156116d8576000805461ff001916905550565b604080516060810182526000808252602082018190529181019190915290565b803573ffffffffffffffffffffffffffffffffffffffff811681146114f057600080fd5b80356fffffffffffffffffffffffffffffffff811681146114f057600080fd5b803561ffff811681146114f057600080fd5b803563ffffffff811681146114f057600080fd5b803567ffffffffffffffff811681146114f057600080fd5b600060208284031215611952578081fd5b61195b826118bf565b9392505050565b60008060408385031215611974578081fd5b61197d836118bf565b915060208301358015158114611991578182fd5b809150509250929050565b600080602083850312156119ae578182fd5b823567ffffffffffffffff808211156119c5578384fd5b818501915085601f8301126119d8578384fd5b8135818111156119e6578485fd5b86602060c0830285010111156119fa578485fd5b60209290920196919550909350505050565b60008060208385031215611a1e578182fd5b823567ffffffffffffffff80821115611a35578384fd5b818501915085601f830112611a48578384fd5b813581811115611a56578485fd5b8660206080830285010111156119fa578485fd5b600060608284031215611a7b578081fd5b6040516060810181811067ffffffffffffffff82111715611a9857fe5b604052611aa4836118e3565b8152611ab260208401611929565b6020820152611ac360408401611915565b60408201529392505050565b600060208284031215611ae0578081fd5b61195b826118e3565b600060208284031215611afa578081fd5b61195b82611903565b600080600060608486031215611b17578081fd5b611b2084611903565b95602085013595506040909401359392505050565b600060208284031215611b46578081fd5b61195b82611915565b600060208284031215611b60578081fd5b61195b82611929565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b901515815260200190565b6020808252601c908201527f5072696365466565643a206e6f74207072696365207570646174657200000000604082015260600190565b6020808252601e908201527f5072696365466565643a20756e6b6e6f776e206c3220636861696e2069640000604082015260600190565b81516fffffffffffffffffffffffffffffffff16815260208083015167ffffffffffffffff169082015260409182015163ffffffff169181019190915260600190565b6fffffffffffffffffffffffffffffffff91909116815260200190565b6fffffffffffffffffffffffffffffffff93909316835267ffffffffffffffff91909116602083015263ffffffff16604082015260600190565b9182526fffffffffffffffffffffffffffffffff16602082015260400190565b67ffffffffffffffff92909216825263ffffffff1660208201526040019056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122084d19d33e46396ac413d8a3748b5f0e89c0cc00faac0761f74a448ad28c3daa964736f6c63430007060033\";\n\ntype PriceFeedConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: PriceFeedConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class PriceFeed__factory extends ContractFactory {\n constructor(...args: PriceFeedConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<PriceFeed> {\n return super.deploy(overrides || {}) as Promise<PriceFeed>;\n }\n override getDeployTransaction(\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(overrides || {});\n }\n override attach(address: string): PriceFeed {\n return super.attach(address) as PriceFeed;\n }\n override connect(signer: Signer): PriceFeed__factory {\n return super.connect(signer) as PriceFeed__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): PriceFeedInterface {\n return new utils.Interface(_abi) as PriceFeedInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): PriceFeed {\n return new Contract(address, _abi, signerOrProvider) as PriceFeed;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../common\";\nimport type { Relayer, RelayerInterface } from \"../Relayer\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"addr\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApproveAddress\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"dstChainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"userApplication\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"totalFee\",\n type: \"uint256\",\n },\n ],\n name: \"AssignJob\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"payloadSize\",\n type: \"uint256\",\n },\n ],\n name: \"InvalidPayloadSize\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"ulnv2\",\n type: \"address\",\n },\n ],\n name: \"Ulnv2Set\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"quantity\",\n type: \"uint256\",\n },\n ],\n name: \"ValueTransferFailed\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"Withdraw\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"token\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"WithdrawTokens\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"approvedAddresses\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"dstConfigLookup\",\n outputs: [\n {\n internalType: \"uint128\",\n name: \"dstNativeAmtCap\",\n type: \"uint128\",\n },\n {\n internalType: \"uint64\",\n name: \"baseGas\",\n type: \"uint64\",\n },\n {\n internalType: \"uint64\",\n name: \"gasPerByte\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"dstPriceLookup\",\n outputs: [\n {\n internalType: \"uint128\",\n name: \"dstPriceRatio\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"dstGasPriceInWei\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"payloadSize\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"getPrice\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_uln\",\n type: \"address\",\n },\n ],\n name: \"initialize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_relayerAddress\",\n type: \"address\",\n },\n ],\n name: \"isApproved\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"notifyRelayer\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"paused\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_relayerAddress\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"_approve\",\n type: \"bool\",\n },\n ],\n name: \"setApprovedAddress\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint128\",\n name: \"_dstNativeAmtCap\",\n type: \"uint128\",\n },\n {\n internalType: \"uint64\",\n name: \"_baseGas\",\n type: \"uint64\",\n },\n {\n internalType: \"uint64\",\n name: \"_gasPerByte\",\n type: \"uint64\",\n },\n ],\n name: \"setDstConfig\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint128\",\n name: \"_dstPriceRatio\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"_dstGasPriceInWei\",\n type: \"uint128\",\n },\n ],\n name: \"setDstPrice\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"_paused\",\n type: \"bool\",\n },\n ],\n name: \"setPause\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"stargateBridgeAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"uln\",\n outputs: [\n {\n internalType: \"contract ILayerZeroUltraLightNodeV1\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_gasLimit\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"_blockHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"_transactionProof\",\n type: \"bytes\",\n },\n ],\n name: \"validateTransactionProofV1\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_gasLimit\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"_blockHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"_transactionProof\",\n type: \"bytes\",\n },\n {\n internalType: \"address payable\",\n name: \"_to\",\n type: \"address\",\n },\n ],\n name: \"validateTransactionProofV2\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address payable\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawQuotedFromULN\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x608060405234801561001057600080fd5b50600160005561202c806100256000396000f3fe60806040526004361061015f5760003560e01c80638da5cb5b116100c0578063e54a221511610074578063f136a87411610059578063f136a874146106e2578063f2fde38b14610722578063fdf69784146107625761015f565b8063e54a2215146105d7578063ea4fa6bf1461069c5761015f565b8063b8f8bad4116100a5578063b8f8bad41461051d578063bedb86fb1461056b578063c4d66de8146105975761015f565b80638da5cb5b14610459578063ac16d6ac1461046e5761015f565b80636348d269116101175780636c473aff116100fc5780636c473aff146103c0578063715018a6146103d5578063765a8a54146103ea5761015f565b80636348d26914610342578063673448dd146103805761015f565b80633f103487116101485780633f10348714610269578063575765e2146102d15780635c975abb146103195761015f565b806323161ff8146101645780633a5fb82a146101d6575b600080fd5b34801561017057600080fd5b5061019a6004803603604081101561018757600080fd5b5061ffff8135811691602001351661081a565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff9283166020850152911682820152519081900360600190f35b3480156101e257600080fd5b50610267600480360360608110156101f957600080fd5b61ffff823581169260208101359091169181019060608101604082013564010000000081111561022857600080fd5b82018360208201111561023a57600080fd5b8035906020019184600183028401116401000000008311171561025c57600080fd5b509092509050610888565b005b34801561027557600080fd5b50610267600480360360a081101561028c57600080fd5b5061ffff81358116916020810135909116906fffffffffffffffffffffffffffffffff6040820135169067ffffffffffffffff6060820135811691608001351661088e565b3480156102dd57600080fd5b50610267600480360360408110156102f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610a16565b34801561032557600080fd5b5061032e610b33565b604080519115158252519081900360200190f35b34801561034e57600080fd5b50610357610b54565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561038c57600080fd5b5061032e600480360360208110156103a357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610b70565b3480156103cc57600080fd5b50610357610b9b565b3480156103e157600080fd5b50610267610bb7565b3480156103f657600080fd5b506104186004803603602081101561040d57600080fd5b503561ffff16610cb4565b60405180836fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b34801561046557600080fd5b50610357610cf0565b34801561047a57600080fd5b50610267600480360360a081101561049157600080fd5b61ffff8235169173ffffffffffffffffffffffffffffffffffffffff6020820135169160408201359160608101359181019060a0810160808201356401000000008111156104de57600080fd5b8201836020820111156104f057600080fd5b8035906020019184600183028401116401000000008311171561051257600080fd5b509092509050610d0c565b34801561052957600080fd5b506102676004803603606081101561054057600080fd5b5061ffff813516906fffffffffffffffffffffffffffffffff60208201358116916040013516610ed4565b34801561057757600080fd5b506102676004803603602081101561058e57600080fd5b50351515610fde565b3480156105a357600080fd5b50610267600480360360208110156105ba57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166110b6565b3480156105e357600080fd5b5061068a600480360360a08110156105fa57600080fd5b61ffff823581169260208101359091169173ffffffffffffffffffffffffffffffffffffffff6040830135169160608101359181019060a08101608082013564010000000081111561064b57600080fd5b82018360208201111561065d57600080fd5b8035906020019184600183028401116401000000008311171561067f57600080fd5b50909250905061124f565b60408051918252519081900360200190f35b3480156106a857600080fd5b50610267600480360360408110156106bf57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356112bc565b3480156106ee57600080fd5b5061032e6004803603602081101561070557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113dc565b34801561072e57600080fd5b506102676004803603602081101561074557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113f1565b610267600480360360c081101561077857600080fd5b61ffff8235169173ffffffffffffffffffffffffffffffffffffffff6020820135169160408201359160608101359181019060a0810160808201356401000000008111156107c557600080fd5b8201836020820111156107d757600080fd5b803590602001918460018302840111640100000000831117156107f957600080fd5b91935091503573ffffffffffffffffffffffffffffffffffffffff1661155f565b60686020908152600092835260408084209091529082529020546fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b50505050565b33610897610cf0565b73ffffffffffffffffffffffffffffffffffffffff161461090c576108bb33610b70565b61090c576040805162461bcd60e51b815260206004820152601660248201527f52656c617965723a206e6f7420617070726f7665642000000000000000000000604482015290519081900360640190fd5b604080516060810182526fffffffffffffffffffffffffffffffff948516815267ffffffffffffffff938416602080830191825293851682840190815261ffff98891660009081526068865284812098909916895296909352952094518554915194517fffffffffffffffffffffffffffffffff000000000000000000000000000000009092169316929092177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff16700100000000000000000000000000000000938216939093029290921777ffffffffffffffffffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000009190921602179055565b610a1e6117d2565b73ffffffffffffffffffffffffffffffffffffffff16610a3c610cf0565b73ffffffffffffffffffffffffffffffffffffffff1614610aa4576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821660008181526069602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915582519384529083015280517fb10786d0bfa68fb1aa29552d9203e5f545f7c073ff0784da1de1d800986f10239281900390910190a15050565b606a5474010000000000000000000000000000000000000000900460ff1681565b606a5473ffffffffffffffffffffffffffffffffffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff1660009081526069602052604090205460ff1690565b60665473ffffffffffffffffffffffffffffffffffffffff1681565b610bbf6117d2565b73ffffffffffffffffffffffffffffffffffffffff16610bdd610cf0565b73ffffffffffffffffffffffffffffffffffffffff1614610c45576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60345460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6067602052600090815260409020546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b60345473ffffffffffffffffffffffffffffffffffffffff1690565b33610d15610cf0565b73ffffffffffffffffffffffffffffffffffffffff1614610d8a57610d3933610b70565b610d8a576040805162461bcd60e51b815260206004820152601660248201527f52656c617965723a206e6f7420617070726f7665642000000000000000000000604482015290519081900360640190fd5b60026000541415610de2576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000556066546040517f5c01153100000000000000000000000000000000000000000000000000000000815261ffff88166004820190815273ffffffffffffffffffffffffffffffffffffffff8881166024840152604483018890526064830187905260a06084840190815260a48401869052931692635c011531928a928a928a928a928a928a9260c401848480828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015610eaf57600080fd5b505af1158015610ec3573d6000803e3d6000fd5b505060016000555050505050505050565b33610edd610cf0565b73ffffffffffffffffffffffffffffffffffffffff1614610f5257610f0133610b70565b610f52576040805162461bcd60e51b815260206004820152601660248201527f52656c617965723a206e6f7420617070726f7665642000000000000000000000604482015290519081900360640190fd5b6040805180820182526fffffffffffffffffffffffffffffffff9384168152918316602080840191825261ffff959095166000908152606790955293209051815493517fffffffffffffffffffffffffffffffff000000000000000000000000000000009094169083161782167001000000000000000000000000000000009390921692909202179055565b610fe66117d2565b73ffffffffffffffffffffffffffffffffffffffff16611004610cf0565b73ffffffffffffffffffffffffffffffffffffffff161461106c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b606a805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60006110c06117d6565b905073ffffffffffffffffffffffffffffffffffffffff81166111195773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035561113b565b3373ffffffffffffffffffffffffffffffffffffffff82161461113b57600080fd5b600154610100900460ff168061115457506111546117fb565b80611162575060015460ff16155b61119d5760405162461bcd60e51b815260040180806020018281038252602e815260200180611fa8602e913960400191505060405180910390fd5b600154610100900460ff161580156111e557600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0061ff00199091166101001716811790555b6111ed61180c565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8516179055611238306001610a16565b801561124a576001805461ff00191690555b505050565b600080600061129689898988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118db92505050565b90925090506112af6112a88783611c3a565b8390611c9c565b9998505050505050505050565b336112c5610cf0565b73ffffffffffffffffffffffffffffffffffffffff161461133a576112e933610b70565b61133a576040805162461bcd60e51b815260206004820152601660248201527f52656c617965723a206e6f7420617070726f7665642000000000000000000000604482015290519081900360640190fd5b606654604080517f22c107760000000000000000000000000000000000000000000000000000000081526002600482015260006024820181905273ffffffffffffffffffffffffffffffffffffffff868116604484015260648301869052925192909316926322c107769260848084019382900301818387803b1580156113c057600080fd5b505af11580156113d4573d6000803e3d6000fd5b505050505050565b60696020526000908152604090205460ff1681565b6113f96117d2565b73ffffffffffffffffffffffffffffffffffffffff16611417610cf0565b73ffffffffffffffffffffffffffffffffffffffff161461147f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166114d15760405162461bcd60e51b8152600401808060200182810382526026815260200180611f826026913960400191505060405180910390fd5b60345460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b33611568610cf0565b73ffffffffffffffffffffffffffffffffffffffff16146115dd5761158c33610b70565b6115dd576040805162461bcd60e51b815260206004820152601660248201527f52656c617965723a206e6f7420617070726f7665642000000000000000000000604482015290519081900360640190fd5b60026000541415611635576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600090815560405173ffffffffffffffffffffffffffffffffffffffff83169034908381818185875af1925050503d8060008114611691576040519150601f19603f3d011682016040523d82523d6000602084013e611696565b606091505b50509050806116e357604051349073ffffffffffffffffffffffffffffffffffffffff8416907f2c7a964ca3de5ec1d42d9822f9bbd0eb142a59cc9f855e9d93813b773192c7a390600090a35b6066546040517f5c01153100000000000000000000000000000000000000000000000000000000815261ffff8a166004820190815273ffffffffffffffffffffffffffffffffffffffff8a81166024840152604483018a90526064830189905260a06084840190815260a48401889052931692635c011531928c928c928c928c928c928c9260c401848480828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b1580156117ab57600080fd5b505af11580156117bf573d6000803e3d6000fd5b5050600160005550505050505050505050565b3390565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b600061180630611cf6565b15905090565b600154610100900460ff168061182557506118256117fb565b80611833575060015460ff16155b61186e5760405162461bcd60e51b815260040180806020018281038252602e815260200180611fa8602e913960400191505060405180910390fd5b600154610100900460ff161580156118b657600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0061ff00199091166101001716811790555b6118be611cfc565b6118c6611db9565b80156118d8576001805461ff00191690555b50565b606a54600090819074010000000000000000000000000000000000000000900460ff1615611950576040805162461bcd60e51b815260206004820152600d60248201527f41646d696e3a2070617573656400000000000000000000000000000000000000604482015290519081900360640190fd5b825160221480611961575060428351115b61199c5760405162461bcd60e51b8152600401808060200182810382526026815260200180611f5c6026913960400191505060405180910390fd5b60028301516022840151806119f8576040805162461bcd60e51b815260206004820152601460248201527f52656c617965723a2067617320746f6f206c6f77000000000000000000000000604482015290519081900360640190fd5b8161ffff1660011480611a0f57508161ffff166002145b611a60576040805162461bcd60e51b815260206004820152601b60248201527f52656c617965723a20756e737570706f72746564207478547970650000000000604482015290519081900360640190fd5b61ffff8881166000908152606760209081526040808320606883528184208c8616855290925282209092909190851660021415611b1257604288015182546fffffffffffffffffffffffffffffffff16811115611b04576040805162461bcd60e51b815260206004820181905260248201527f52656c617965723a206473744e6174697665416d7420746f6f206c6172676520604482015290519081900360640190fd5b611b0e8282611c9c565b9150505b8154600090611b7190611b4390700100000000000000000000000000000000900467ffffffffffffffff1687611c9c565b855470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1690611c3a565b9050611b7d8282611c9c565b8454909250611bb0906402540be40090611baa9085906fffffffffffffffffffffffffffffffff16611c3a565b90611ef4565b84548454919950611c29916402540be40091611baa916fffffffffffffffffffffffffffffffff80831692611c2392700100000000000000000000000000000000909104909116907801000000000000000000000000000000000000000000000000900467ffffffffffffffff16611c3a565b90611c3a565b965050505050505094509492505050565b600082611c4957506000611c96565b82820282848281611c5657fe5b0414611c935760405162461bcd60e51b8152600401808060200182810382526021815260200180611fd66021913960400191505060405180910390fd5b90505b92915050565b600082820183811015611c93576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3b151590565b600154610100900460ff1680611d155750611d156117fb565b80611d23575060015460ff16155b611d5e5760405162461bcd60e51b815260040180806020018281038252602e815260200180611fa8602e913960400191505060405180910390fd5b600154610100900460ff161580156118c657600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0061ff001990911661010017168117905580156118d8576001805461ff001916905550565b600154610100900460ff1680611dd25750611dd26117fb565b80611de0575060015460ff16155b611e1b5760405162461bcd60e51b815260040180806020018281038252602e815260200180611fa8602e913960400191505060405180910390fd5b600154610100900460ff16158015611e6357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0061ff00199091166101001716811790555b6000611e6d6117d2565b603480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35080156118d8576001805461ff001916905550565b6000808211611f4a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611f5357fe5b04939250505056fe52656c617965723a2077726f6e67205f61646170746572506172616d65746572732073697a654f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122010f4fc4d5cc13a09882c6598477622a98bad718de38e650af57f1eb493084f6964736f6c63430007060033\";\n\ntype RelayerConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: RelayerConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class Relayer__factory extends ContractFactory {\n constructor(...args: RelayerConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<Relayer> {\n return super.deploy(overrides || {}) as Promise<Relayer>;\n }\n override getDeployTransaction(\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(overrides || {});\n }\n override attach(address: string): Relayer {\n return super.attach(address) as Relayer;\n }\n override connect(signer: Signer): Relayer__factory {\n return super.connect(signer) as Relayer__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): RelayerInterface {\n return new utils.Interface(_abi) as RelayerInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): Relayer {\n return new Contract(address, _abi, signerOrProvider) as Relayer;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../common\";\nimport type { RelayerV2, RelayerV2Interface } from \"../RelayerV2\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"addr\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApproveAddress\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"totalFee\",\n type: \"uint256\",\n },\n ],\n name: \"AssignJob\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint128\",\n name: \"dstNativeAmtCap\",\n type: \"uint128\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"baseGas\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"gasPerByte\",\n type: \"uint64\",\n },\n ],\n name: \"SetDstConfig\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint128\",\n name: \"dstPriceRatio\",\n type: \"uint128\",\n },\n {\n indexed: false,\n internalType: \"uint128\",\n name: \"dstGasPriceInWei\",\n type: \"uint128\",\n },\n ],\n name: \"SetDstPrice\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"priceConfigUpdater\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"allow\",\n type: \"bool\",\n },\n ],\n name: \"SetPriceConfigUpdater\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"quantity\",\n type: \"uint256\",\n },\n ],\n name: \"ValueTransferFailed\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"Withdraw\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"AIRDROP_GAS_LIMIT\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"approvedAddresses\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_payloadSize\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"assignJob\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"fee\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"dstConfigLookup\",\n outputs: [\n {\n internalType: \"uint128\",\n name: \"dstNativeAmtCap\",\n type: \"uint128\",\n },\n {\n internalType: \"uint64\",\n name: \"baseGas\",\n type: \"uint64\",\n },\n {\n internalType: \"uint64\",\n name: \"gasPerByte\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"dstFloorMarginsUSD\",\n outputs: [\n {\n internalType: \"uint128\",\n name: \"\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"dstMultipliers\",\n outputs: [\n {\n internalType: \"uint128\",\n name: \"\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n ],\n name: \"dstPriceLookup\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint128\",\n name: \"dstPriceRatio\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"dstGasPriceInWei\",\n type: \"uint128\",\n },\n ],\n internalType: \"struct RelayerV2.DstPrice\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"dstPriceLookupOld\",\n outputs: [\n {\n internalType: \"uint128\",\n name: \"dstPriceRatio\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"dstGasPriceInWei\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"fpBytes\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_payloadSize\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"getFee\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_uln\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_priceFeed\",\n type: \"address\",\n },\n ],\n name: \"initialize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_relayerAddress\",\n type: \"address\",\n },\n ],\n name: \"isApproved\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"mptOverhead\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"multiplierBps\",\n outputs: [\n {\n internalType: \"uint128\",\n name: \"\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_priceFeed\",\n type: \"address\",\n },\n ],\n name: \"onUpgrade\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"paused\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"priceConfigUpdaters\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"priceFeed\",\n outputs: [\n {\n internalType: \"contract ILayerZeroPriceFeedV2\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_relayerAddress\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"_approve\",\n type: \"bool\",\n },\n ],\n name: \"setApprovedAddress\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint128\",\n name: \"_dstNativeAmtCap\",\n type: \"uint128\",\n },\n {\n internalType: \"uint64\",\n name: \"_baseGas\",\n type: \"uint64\",\n },\n {\n internalType: \"uint64\",\n name: \"_gasPerByte\",\n type: \"uint64\",\n },\n ],\n name: \"setDstConfig\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint128\",\n name: \"floorMargin\",\n type: \"uint128\",\n },\n ],\n internalType: \"struct RelayerV2.DstFloorMargin[]\",\n name: \"_margins\",\n type: \"tuple[]\",\n },\n ],\n name: \"setDstFloorMarginsUSD\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint128\",\n name: \"_dstPriceRatio\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"_dstGasPriceInWei\",\n type: \"uint128\",\n },\n ],\n name: \"setDstPrice\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint128\",\n name: \"multiplier\",\n type: \"uint128\",\n },\n ],\n internalType: \"struct RelayerV2.DstMultiplier[]\",\n name: \"_multipliers\",\n type: \"tuple[]\",\n },\n ],\n name: \"setDstPriceMultipliers\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"_paused\",\n type: \"bool\",\n },\n ],\n name: \"setPause\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_priceConfigUpdater\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"_allow\",\n type: \"bool\",\n },\n ],\n name: \"setPriceConfigUpdater\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_priceFeed\",\n type: \"address\",\n },\n ],\n name: \"setPriceFeed\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint128\",\n name: \"_multiplierBps\",\n type: \"uint128\",\n },\n ],\n name: \"setPriceMultiplierBps\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_stargateAddress\",\n type: \"address\",\n },\n ],\n name: \"setStargateAddress\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"stargateBridgeAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"uln\",\n outputs: [\n {\n internalType: \"contract ILayerZeroUltraLightNodeV2\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"validateProofBytes\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_gasLimit\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"_blockHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"_data\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"_transactionProof\",\n type: \"bytes\",\n },\n ],\n name: \"validateTransactionProofV1\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_gasLimit\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"_blockHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"_data\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"_transactionProof\",\n type: \"bytes\",\n },\n {\n internalType: \"address payable\",\n name: \"_to\",\n type: \"address\",\n },\n ],\n name: \"validateTransactionProofV2\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address payable\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawFee\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_token\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawToken\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x608060405234801561001057600080fd5b506001600055613497806100256000396000f3fe6080604052600436106102855760003560e01c8063741bef1a11610153578063b8f8bad4116100cb578063d5f8b0141161007f578063f2fde38b11610064578063f2fde38b146106da578063fa34c84e146106fa578063fd9be5221461071a57610285565b8063d5f8b0141461069a578063f136a874146106ba57610285565b8063bf4dab51116100b0578063bf4dab511461063a578063c03f15291461065a578063c3b04e7f1461067a57610285565b8063b8f8bad4146105fa578063bedb86fb1461061a57610285565b80638576db67116101225780638da5cb5b116101075780638da5cb5b146105bb57806398dabd50146105d0578063ac353e04146105e557610285565b80638576db671461056d5780638644c5781461058d57610285565b8063741bef1a146104f6578063765a8a541461050b578063801db1fe1461053857806381ba209a1461055857610285565b806355b3524911610201578063673448dd116101b55780636c473aff1161019a5780636c473aff146104ac578063715018a6146104c1578063724e78da146104d657610285565b8063673448dd1461046a57806369cf4e3a1461048a57610285565b80635886ea65116101e65780635886ea65146104065780635c975abb146104265780636348d2691461044857610285565b806355b35249146103c6578063575765e2146103e657610285565b8063252f7b011161025857806343b9a0c41161023d57806343b9a0c414610357578063485cc955146103795780634eeba2501461039957610285565b8063252f7b01146103175780633f1034871461033757610285565b806301e336671461028a57806303343f54146102ac5780630508941e146102cc57806323161ff8146102df575b600080fd5b34801561029657600080fd5b506102aa6102a5366004612a9c565b61073a565b005b3480156102b857600080fd5b506102aa6102c7366004612a1d565b610853565b6102aa6102da366004612c95565b6108c9565b3480156102eb57600080fd5b506102ff6102fa366004612d72565b610a9b565b60405161030e93929190613224565b60405180910390f35b34801561032357600080fd5b506102aa610332366004612c13565b610b09565b34801561034357600080fd5b506102aa610352366004612e1a565b610c37565b34801561036357600080fd5b5061036c610dc2565b60405161030e919061334a565b34801561038557600080fd5b506102aa610394366004612a64565b610dc8565b3480156103a557600080fd5b506103b96103b4366004612bf9565b61101a565b60405161030e91906131e4565b3480156103d257600080fd5b506103b96103e1366004612bf9565b61103e565b3480156103f257600080fd5b506102aa610401366004612adc565b611062565b34801561041257600080fd5b5061036c610421366004612d9b565b611138565b34801561043257600080fd5b5061043b61120d565b60405161030e9190612f3d565b34801561045457600080fd5b5061045d611216565b60405161030e9190612ef5565b34801561047657600080fd5b5061043b610485366004612a1d565b611225565b34801561049657600080fd5b5061049f611247565b60405161030e9190613258565b3480156104b857600080fd5b5061045d611267565b3480156104cd57600080fd5b506102aa611276565b3480156104e257600080fd5b506102aa6104f1366004612a1d565b61134c565b34801561050257600080fd5b5061045d6113c7565b34801561051757600080fd5b5061052b610526366004612bf9565b6113db565b60405161030e91906131b8565b34801561054457600080fd5b506102aa610553366004612adc565b6114c0565b34801561056457600080fd5b5061049f61158a565b34801561057957600080fd5b5061043b610588366004612a1d565b6115ac565b34801561059957600080fd5b506105ad6105a8366004612bf9565b6115c1565b60405161030e929190613201565b3480156105c757600080fd5b5061045d6115fd565b3480156105dc57600080fd5b5061049f61160c565b3480156105f157600080fd5b506103b961162a565b34801561060657600080fd5b506102aa610615366004612d2a565b611642565b34801561062657600080fd5b506102aa610635366004612b50565b611683565b34801561064657600080fd5b506102aa610655366004612b10565b61170a565b34801561066657600080fd5b5061036c610675366004612d9b565b61180e565b34801561068657600080fd5b506102aa610695366004612bdd565b611880565b3480156106a657600080fd5b506102aa6106b5366004612b10565b6118ff565b3480156106c657600080fd5b5061043b6106d5366004612a1d565b611a03565b3480156106e657600080fd5b506102aa6106f5366004612a1d565b611a18565b34801561070657600080fd5b506102aa610715366004612a1d565b611b45565b34801561072657600080fd5b506102aa610735366004612a39565b611cbd565b336107436115fd565b6001600160a01b03161461077f5761075a33611225565b61077f5760405162461bcd60e51b815260040161077690612f48565b60405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038516906370a08231906107c7903090600401612ef5565b60206040518083038186803b1580156107df57600080fd5b505afa1580156107f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108179190612e86565b9050808211156108395760405162461bcd60e51b81526004016107769061307f565b61084d6001600160a01b0385168484611e37565b50505050565b3361085c6115fd565b6001600160a01b03161461088f5761087333611225565b61088f5760405162461bcd60e51b815260040161077690612f48565b606780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b336108d26115fd565b6001600160a01b031614610905576108e933611225565b6109055760405162461bcd60e51b815260040161077690612f48565b6002600054141561095d576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000819055506000816001600160a01b03166127103460405161098190612ef2565b600060405180830381858888f193505050503d80600081146109bf576040519150601f19603f3d011682016040523d82523d6000602084013e6109c4565b606091505b5050905080610a045760405134906001600160a01b038416907f2c7a964ca3de5ec1d42d9822f9bbd0eb142a59cc9f855e9d93813b773192c7a390600090a35b6066546040517f987fa2d50000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063987fa2d590610a59908c908c908c908c908c908c908c90600401613267565b600060405180830381600087803b158015610a7357600080fd5b505af1158015610a87573d6000803e3d6000fd5b505060016000555050505050505050505050565b60696020908152600092835260408084209091529082529020546fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b33610b126115fd565b6001600160a01b031614610b4557610b2933611225565b610b455760405162461bcd60e51b815260040161077690612f48565b60026000541415610b9d576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000556066546040517f987fa2d50000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063987fa2d590610bf7908a908a908a908a908a908a908a90600401613267565b600060405180830381600087803b158015610c1157600080fd5b505af1158015610c25573d6000803e3d6000fd5b50506001600055505050505050505050565b33610c406115fd565b6001600160a01b031614610c7357610c5733611225565b610c735760405162461bcd60e51b815260040161077690612f48565b604080516060810182526fffffffffffffffffffffffffffffffff858116825267ffffffffffffffff858116602080850191825286831685870190815261ffff8c8116600090815260698452888120918d16815292529086902094518554925191517fffffffffffffffffffffffffffffffff000000000000000000000000000000009093169416939093177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff16700100000000000000000000000000000000938316939093029290921777ffffffffffffffffffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000009290911691909102179055517fd053e021dda81c7c2794ff89e320caea5379962d49ed383a3bd0a54ffc4b932f90610db390879087908790879087906132e4565b60405180910390a15050505050565b61271081565b6000610dd2611eb7565b90506001600160a01b038116610e11576001600160a01b037fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355610e26565b336001600160a01b03821614610e2657600080fd5b600154610100900460ff1680610e3f5750610e3f611edc565b80610e4d575060015460ff16155b610e885760405162461bcd60e51b815260040180806020018281038252602e8152602001806133e9602e913960400191505060405180910390fd5b600154610100900460ff16158015610eb2576001805460ff1961ff00199091166101001716811790555b610eba611eed565b606680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038616179055610ef8306001611062565b606c8054606b80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03881602179055612ee07fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116177fffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff1670a400000000000000000000000000000000177fffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff1672a0000000000000000000000000000000000000177fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055801561084d576001805461ff001916905550505050565b606d602052600090815260409020546fffffffffffffffffffffffffffffffff1681565b606e602052600090815260409020546fffffffffffffffffffffffffffffffff1681565b61106a611f9e565b6001600160a01b031661107b6115fd565b6001600160a01b0316146110d6576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0382166000908152606a602052604090819020805460ff1916831515179055517fb10786d0bfa68fb1aa29552d9203e5f545f7c073ff0784da1de1d800986f10239061112c9084908490612f22565b60405180910390a15050565b6066546000906001600160a01b031633146111655760405162461bcd60e51b8152600401610776906130dc565b6127108411156111875760405162461bcd60e51b815260040161077690612f7f565b6111ca8787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611fa292505050565b90507fdf21c415b78ed2552cc9971249e32a053abce6087a0ae0fbf3f78db5174a3493816040516111fb919061334a565b60405180910390a19695505050505050565b606b5460ff1681565b6067546001600160a01b031681565b6001600160a01b0381166000908152606a602052604090205460ff165b919050565b606c547201000000000000000000000000000000000000900461ffff1681565b6066546001600160a01b031681565b61127e611f9e565b6001600160a01b031661128f6115fd565b6001600160a01b0316146112ea576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6034546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b336113556115fd565b6001600160a01b0316146113885761136c33611225565b6113885760405162461bcd60e51b815260040161077690612f48565b606b80546001600160a01b03909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b606b5461010090046001600160a01b031681565b6113e361295a565b606b546040517fda26663a00000000000000000000000000000000000000000000000000000000815260009161010090046001600160a01b03169063da26663a90611432908690600401613258565b60606040518083038186803b15801561144a57600080fd5b505afa15801561145e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114829190612b6a565b6040805180820190915281516fffffffffffffffffffffffffffffffff16815260209182015167ffffffffffffffff16918101919091529392505050565b6114c8611f9e565b6001600160a01b03166114d96115fd565b6001600160a01b031614611534576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0382166000908152606f602052604090819020805460ff1916831515179055517fde6b048d6c4e63d85fde37ccbe03f4380c6d12cb2a1e9ce9268bbf47a1ef68789061112c9084908490612f22565b606c5474010000000000000000000000000000000000000000900461ffff1681565b606f6020526000908152604090205460ff1681565b6068602052600090815260409020546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b6034546001600160a01b031690565b606c54700100000000000000000000000000000000900461ffff1681565b606c546fffffffffffffffffffffffffffffffff1681565b3361164b6115fd565b6001600160a01b03161461167e5761166233611225565b61167e5760405162461bcd60e51b815260040161077690612f48565b505050565b61168b611f9e565b6001600160a01b031661169c6115fd565b6001600160a01b0316146116f7576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b606b805460ff1916911515919091179055565b336117136115fd565b6001600160a01b03161415801561173a5750336000908152606a602052604090205460ff16155b1561176e57336000908152606f602052604090205460ff1661176e5760405162461bcd60e51b815260040161077690613048565b60005b8181101561167e573683838381811061178657fe5b90506040020190508060200160208101906117a19190612bdd565b606d60006117b26020850185612bf9565b61ffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9290921691909117905550600101611771565b60006127108411156118325760405162461bcd60e51b815260040161077690612f7f565b6118758787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611fa292505050565b979650505050505050565b336118896115fd565b6001600160a01b0316146118bc576118a033611225565b6118bc5760405162461bcd60e51b815260040161077690612f48565b606c80547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b336119086115fd565b6001600160a01b03161415801561192f5750336000908152606a602052604090205460ff16155b1561196357336000908152606f602052604090205460ff166119635760405162461bcd60e51b815260040161077690613048565b60005b8181101561167e573683838381811061197b57fe5b90506040020190508060200160208101906119969190612bdd565b606e60006119a76020850185612bf9565b61ffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9290921691909117905550600101611966565b606a6020526000908152604090205460ff1681565b611a20611f9e565b6001600160a01b0316611a316115fd565b6001600160a01b031614611a8c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116611ad15760405162461bcd60e51b815260040180806020018281038252602681526020018061339d6026913960400191505060405180910390fd5b6034546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000611b4f611eb7565b90506001600160a01b038116611b8e576001600160a01b037fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355611ba3565b336001600160a01b03821614611ba357600080fd5b50606c8054606b80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03959095169490940293909317909255612ee07fffffffffffffffffffffffffffffffff00000000000000000000000000000000909216919091177fffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff1670a400000000000000000000000000000000177fffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff1672a0000000000000000000000000000000000000177fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055565b33611cc66115fd565b6001600160a01b031614611cf957611cdd33611225565b611cf95760405162461bcd60e51b815260040161077690612f48565b6066546040517f69412bfa0000000000000000000000000000000000000000000000000000000081526000916001600160a01b0316906369412bfa90611d43903090600401612ef5565b60206040518083038186803b158015611d5b57600080fd5b505afa158015611d6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d939190612e86565b905080821115611db55760405162461bcd60e51b81526004016107769061307f565b6066546040517f07b18bde0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906307b18bde90611e009086908690600401612f09565b600060405180830381600087803b158015611e1a57600080fd5b505af1158015611e2e573d6000803e3d6000fd5b50505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261167e9084906122b8565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6000611ee730612369565b15905090565b600154610100900460ff1680611f065750611f06611edc565b80611f14575060015460ff16155b611f4f5760405162461bcd60e51b815260040180806020018281038252602e8152602001806133e9602e913960400191505060405180910390fd5b600154610100900460ff16158015611f79576001805460ff1961ff00199091166101001716811790555b611f8161236f565b611f8961240e565b8015611f9b576001805461ff00191690555b50565b3390565b606b5460009060ff1615611fc85760405162461bcd60e51b815260040161077690613113565b815160221480611fd9575060428251115b611ff55760405162461bcd60e51b815260040161077690612fb4565b600282015160228301518061201c5760405162461bcd60e51b81526004016107769061314a565b8161ffff166001148061203357508161ffff166002145b61204f5760405162461bcd60e51b815260040161077690613011565b61ffff88811660009081526069602090815260408083208b85168452909152812091841660021461209a57606c54700100000000000000000000000000000000900461ffff166120c0565b606c546120c090700100000000000000000000000000000000900461ffff16602061251e565b905060008961ffff166002146120ff57606c546120fa90899074010000000000000000000000000000000000000000900461ffff1661251e565b612127565b606c546121279089907201000000000000000000000000000000000000900461ffff1661251e565b606b549091508b9060009081908190819061010090046001600160a01b03166388a4124c866121568a8a61251e565b8b5461218090700100000000000000000000000000000000900467ffffffffffffffff168e61251e565b6040518463ffffffff1660e01b815260040161219e9392919061332e565b60806040518083038186803b1580156121b657600080fd5b505afa1580156121ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ee9190612e9e565b935093509350935060008a61ffff166002141561223e575060428c015188546fffffffffffffffffffffffffffffffff1681111561223e5760405162461bcd60e51b815260040161077690613181565b6000811561228c57606c54612289906127109061227d906fffffffffffffffffffffffffffffffff908116906122839089811690849089908d16612581565b906125da565b90612581565b90505b6122a18161229b898987612641565b9061251e565b9c5050505050505050505050505095945050505050565b600061230d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127369092919063ffffffff16565b80519091501561167e5780806020019051602081101561232c57600080fd5b505161167e5760405162461bcd60e51b815260040180806020018281038252602a815260200180613438602a913960400191505060405180910390fd5b3b151590565b600154610100900460ff16806123885750612388611edc565b80612396575060015460ff16155b6123d15760405162461bcd60e51b815260040180806020018281038252602e8152602001806133e9602e913960400191505060405180910390fd5b600154610100900460ff16158015611f89576001805460ff1961ff00199091166101001716811790558015611f9b576001805461ff001916905550565b600154610100900460ff16806124275750612427611edc565b80612435575060015460ff16155b6124705760405162461bcd60e51b815260040180806020018281038252602e8152602001806133e9602e913960400191505060405180910390fd5b600154610100900460ff1615801561249a576001805460ff1961ff00199091166101001716811790555b60006124a4611f9e565b603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015611f9b576001805461ff001916905550565b600082820183811015612578576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000826125905750600061257b565b8282028284828161259d57fe5b04146125785760405162461bcd60e51b81526004018080602001828103825260218152602001806134176021913960400191505060405180910390fd5b6000808211612630576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161263957fe5b049392505050565b61ffff83166000908152606d60205260408120546fffffffffffffffffffffffffffffffff16806126835750606c546fffffffffffffffffffffffffffffffff165b60006126a761271061227d876fffffffffffffffffffffffffffffffff8616612581565b90506fffffffffffffffffffffffffffffffff84166126c957915061272f9050565b61ffff86166000908152606e6020526040812054670de0b6b3a7640000919061271790612710906fffffffffffffffffffffffffffffffff808a169161227d911686612581565b889061251e565b90508281116127265782612728565b805b9450505050505b9392505050565b6060612745848460008561274d565b949350505050565b60608247101561278e5760405162461bcd60e51b81526004018080602001828103825260268152602001806133c36026913960400191505060405180910390fd5b61279785612369565b6127e8576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b6020831061284457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612807565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146128a6576040519150601f19603f3d011682016040523d82523d6000602084013e6128ab565b606091505b5091509150611875828286606083156128c557508161272f565b8251156128d55782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561291f578181015183820152602001612907565b50505050905090810190601f16801561294c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b604080518082019091526000808252602082015290565b60008083601f840112612982578182fd5b50813567ffffffffffffffff811115612999578182fd5b6020830191508360206040830285010111156129b457600080fd5b9250929050565b8035801515811461124257600080fd5b60008083601f8401126129dc578182fd5b50813567ffffffffffffffff8111156129f3578182fd5b6020830191508360208285010111156129b457600080fd5b803561ffff8116811461124257600080fd5b600060208284031215612a2e578081fd5b813561257881613353565b60008060408385031215612a4b578081fd5b8235612a5681613353565b946020939093013593505050565b60008060408385031215612a76578182fd5b8235612a8181613353565b91506020830135612a9181613353565b809150509250929050565b600080600060608486031215612ab0578081fd5b8335612abb81613353565b92506020840135612acb81613353565b929592945050506040919091013590565b60008060408385031215612aee578182fd5b8235612af981613353565b9150612b07602084016129bb565b90509250929050565b60008060208385031215612b22578182fd5b823567ffffffffffffffff811115612b38578283fd5b612b4485828601612971565b90969095509350505050565b600060208284031215612b61578081fd5b61272f826129bb565b600060608284031215612b7b578081fd5b6040516060810181811067ffffffffffffffff82111715612b9857fe5b6040528251612ba681613368565b81526020830151612bb681613386565b6020820152604083015163ffffffff81168114612bd1578283fd5b60408201529392505050565b600060208284031215612bee578081fd5b813561257881613368565b600060208284031215612c0a578081fd5b61272f82612a0b565b600080600080600080600060c0888a031215612c2d578485fd5b612c3688612a0b565b96506020880135612c4681613353565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff811115612c76578283fd5b612c828a828b016129cb565b989b979a50959850939692959293505050565b60008060008060008060008060e0898b031215612cb0578182fd5b612cb989612a0b565b97506020890135612cc981613353565b965060408901359550606089013594506080890135935060a089013567ffffffffffffffff811115612cf9578283fd5b612d058b828c016129cb565b90945092505060c0890135612d1981613353565b809150509295985092959890939650565b600080600060608486031215612d3e578081fd5b612d4784612a0b565b92506020840135612d5781613368565b91506040840135612d6781613368565b809150509250925092565b60008060408385031215612d84578182fd5b612d8d83612a0b565b9150612b0760208401612a0b565b60008060008060008060a08789031215612db3578384fd5b612dbc87612a0b565b9550612dca60208801612a0b565b94506040870135612dda81613353565b935060608701359250608087013567ffffffffffffffff811115612dfc578283fd5b612e0889828a016129cb565b979a9699509497509295939492505050565b600080600080600060a08688031215612e31578283fd5b612e3a86612a0b565b9450612e4860208701612a0b565b93506040860135612e5881613368565b92506060860135612e6881613386565b91506080860135612e7881613386565b809150509295509295909350565b600060208284031215612e97578081fd5b5051919050565b60008060008060808587031215612eb3578182fd5b845193506020850151612ec581613368565b6040860151909350612ed681613368565b6060860151909250612ee781613368565b939692955090935050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039290921682521515602082015260400190565b901515815260200190565b60208082526015908201527f52656c617965723a206e6f7420617070726f7665640000000000000000000000604082015260600190565b6020808252818101527f52656c617965723a205f7061796c6f616453697a6520746f6f6f6f6f20626967604082015260600190565b60208082526026908201527f52656c617965723a2077726f6e67205f61646170746572506172616d6574657260408201527f732073697a650000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f52656c617965723a20756e737570706f72746564207478547970650000000000604082015260600190565b60208082526014908201527f52656c617965723a206e6f742075706461746572000000000000000000000000604082015260600190565b60208082526026908201527f52656c617965723a206e6f7420656e6f7567682066656520666f72207769746860408201527f64726177616c0000000000000000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f52656c617965723a20696e76616c696420756c6e000000000000000000000000604082015260600190565b6020808252600d908201527f41646d696e3a2070617573656400000000000000000000000000000000000000604082015260600190565b60208082526014908201527f52656c617965723a2067617320746f6f206c6f77000000000000000000000000604082015260600190565b6020808252601f908201527f52656c617965723a206473744e6174697665416d7420746f6f206c6172676500604082015260600190565b81516fffffffffffffffffffffffffffffffff9081168252602092830151169181019190915260400190565b6fffffffffffffffffffffffffffffffff91909116815260200190565b6fffffffffffffffffffffffffffffffff92831681529116602082015260400190565b6fffffffffffffffffffffffffffffffff93909316835267ffffffffffffffff918216602084015216604082015260600190565b61ffff91909116815260200190565b600061ffff891682526001600160a01b038816602083015286604083015285606083015284608083015260c060a08301528260c0830152828460e084013781830160e090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601019695505050505050565b61ffff95861681529390941660208401526fffffffffffffffffffffffffffffffff91909116604083015267ffffffffffffffff9081166060830152909116608082015260a00190565b61ffff9390931683526020830191909152604082015260600190565b90815260200190565b6001600160a01b0381168114611f9b57600080fd5b6fffffffffffffffffffffffffffffffff81168114611f9b57600080fd5b67ffffffffffffffff81168114611f9b57600080fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212206e049973a8018635560d2ae382431ef5a97c93af9d3bf02df9291cb611b14d8064736f6c63430007060033\";\n\ntype RelayerV2ConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: RelayerV2ConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class RelayerV2__factory extends ContractFactory {\n constructor(...args: RelayerV2ConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<RelayerV2> {\n return super.deploy(overrides || {}) as Promise<RelayerV2>;\n }\n override getDeployTransaction(\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(overrides || {});\n }\n override attach(address: string): RelayerV2 {\n return super.attach(address) as RelayerV2;\n }\n override connect(signer: Signer): RelayerV2__factory {\n return super.connect(signer) as RelayerV2__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): RelayerV2Interface {\n return new utils.Interface(_abi) as RelayerV2Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): RelayerV2 {\n return new Contract(address, _abi, signerOrProvider) as RelayerV2;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../common\";\nimport type {\n RelayerV2Radar,\n RelayerV2RadarInterface,\n} from \"../RelayerV2Radar\";\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"addr\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"approved\",\n type: \"bool\",\n },\n ],\n name: \"ApproveAddress\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"totalFee\",\n type: \"uint256\",\n },\n ],\n name: \"AssignJob\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint128\",\n name: \"dstNativeAmtCap\",\n type: \"uint128\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"baseGas\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"gasPerByte\",\n type: \"uint64\",\n },\n ],\n name: \"SetDstConfig\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint128\",\n name: \"dstPriceRatio\",\n type: \"uint128\",\n },\n {\n indexed: false,\n internalType: \"uint128\",\n name: \"dstGasPriceInWei\",\n type: \"uint128\",\n },\n ],\n name: \"SetDstPrice\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"quantity\",\n type: \"uint256\",\n },\n ],\n name: \"ValueTransferFailed\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"Withdraw\",\n type: \"event\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"approvedAddresses\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_payloadSize\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"assignJob\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_legacyChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundProofType\",\n type: \"uint16\",\n },\n ],\n name: \"dstConfigLookup\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint128\",\n name: \"dstNativeAmtCap\",\n type: \"uint128\",\n },\n {\n internalType: \"uint64\",\n name: \"baseGas\",\n type: \"uint64\",\n },\n {\n internalType: \"uint64\",\n name: \"gasPerByte\",\n type: \"uint64\",\n },\n ],\n internalType: \"struct ILayerZeroRelayerV2PriceData.DstConfig\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_legacyChainId\",\n type: \"uint16\",\n },\n ],\n name: \"dstPriceLookup\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint128\",\n name: \"dstPriceRatio\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"dstGasPriceInWei\",\n type: \"uint128\",\n },\n ],\n internalType: \"struct ILayerZeroRelayerV2PriceData.DstPrice\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"fpBytes\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_userApplication\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_payloadSize\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"getFee\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_legacyChainId\",\n type: \"uint16\",\n },\n ],\n name: \"getV2ChainId\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_ulnRadar\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_relayerV2\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_priceFeed\",\n type: \"address\",\n },\n ],\n name: \"initialize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_relayerAddress\",\n type: \"address\",\n },\n ],\n name: \"isApproved\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"legacyToV2ChainId\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"mptOverhead\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"multiplierBps\",\n outputs: [\n {\n internalType: \"uint128\",\n name: \"\",\n type: \"uint128\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_priceFeed\",\n type: \"address\",\n },\n ],\n name: \"onUpgrade\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"paused\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"priceFeed\",\n outputs: [\n {\n internalType: \"contract ILayerZeroPriceFeed\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"relayerV2\",\n outputs: [\n {\n internalType: \"contract ILayerZeroRelayerV2PriceData\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_relayerAddress\",\n type: \"address\",\n },\n {\n internalType: \"bool\",\n name: \"_approve\",\n type: \"bool\",\n },\n ],\n name: \"setApprovedAddress\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint128\",\n name: \"_dstNativeAmtCap\",\n type: \"uint128\",\n },\n {\n internalType: \"uint64\",\n name: \"_baseGas\",\n type: \"uint64\",\n },\n {\n internalType: \"uint64\",\n name: \"_gasPerByte\",\n type: \"uint64\",\n },\n ],\n name: \"setDstConfig\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint128\",\n name: \"_dstPriceRatio\",\n type: \"uint128\",\n },\n {\n internalType: \"uint128\",\n name: \"_dstGasPriceInWei\",\n type: \"uint128\",\n },\n ],\n name: \"setDstPrice\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"_paused\",\n type: \"bool\",\n },\n ],\n name: \"setPause\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_priceFeed\",\n type: \"address\",\n },\n ],\n name: \"setPriceFeed\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint128\",\n name: \"_multiplierBps\",\n type: \"uint128\",\n },\n ],\n name: \"setPriceMultiplierBps\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_stargateAddress\",\n type: \"address\",\n },\n ],\n name: \"setStargateAddress\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"stargateBridgeAddress\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"uln\",\n outputs: [\n {\n internalType: \"contract ILayerZeroUltraLightNodeV2\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"validateProofBytes\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_gasLimit\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"_blockHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"_data\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"_transactionProof\",\n type: \"bytes\",\n },\n ],\n name: \"validateTransactionProofV1\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_gasLimit\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"_blockHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"_data\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"_transactionProof\",\n type: \"bytes\",\n },\n {\n internalType: \"address payable\",\n name: \"_to\",\n type: \"address\",\n },\n ],\n name: \"validateTransactionProofV2\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address payable\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawFee\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x608060405234801561001057600080fd5b5060016000556128c7806100256000396000f3fe6080604052600436106101e35760003560e01c8063741bef1a11610102578063bedb86fb11610095578063f136a87411610064578063f136a87414610548578063f2fde38b14610568578063fa34c84e14610588578063fd9be522146105a8576101e3565b8063bedb86fb146104c8578063c03f1529146104e8578063c0c53b8b14610508578063c3b04e7f14610528576101e3565b806398dabd50116100d157806398dabd501461045c578063ac353e0414610471578063b0f2c52c14610493578063b8f8bad4146104a8576101e3565b8063741bef1a146103f0578063765a8a541461040557806381ba209a146104325780638da5cb5b14610447576101e3565b80635c975abb1161017a5780636c473aff116101495780636c473aff1461038657806370d355801461039b578063715018a6146103bb578063724e78da146103d0576101e3565b80635c975abb1461030d5780636348d2691461032f578063673448dd1461035157806369cf4e3a14610371576101e3565b8063252f7b01116101b6578063252f7b01146102805780633f103487146102a0578063575765e2146102c05780635886ea65146102e0576101e3565b806303343f54146101e85780630508941e1461020a578063205569391461021d57806323161ff814610253575b600080fd5b3480156101f457600080fd5b50610208610203366004611f0e565b6105c8565b005b610208610218366004612168565b610647565b34801561022957600080fd5b5061023d6102383660046120cc565b610815565b60405161024a919061270d565b60405180910390f35b34801561025f57600080fd5b5061027361026e36600461223a565b610866565b60405161024a9190612681565b34801561028c57600080fd5b5061020861029b3660046120e6565b6108ff565b3480156102ac57600080fd5b506102086102bb3660046122e2565b610a2d565b3480156102cc57600080fd5b506102086102db366004611f9f565b610a70565b3480156102ec57600080fd5b506103006102fb366004612263565b610b46565b60405161024a91906127ca565b34801561031957600080fd5b50610322610c1e565b60405161024a91906123e0565b34801561033b57600080fd5b50610344610c27565b60405161024a9190612398565b34801561035d57600080fd5b5061032261036c366004611f0e565b610c36565b34801561037d57600080fd5b5061023d610c54565b34801561039257600080fd5b50610344610c74565b3480156103a757600080fd5b5061023d6103b63660046120cc565b610c83565b3480156103c757600080fd5b50610208610c99565b3480156103dc57600080fd5b506102086103eb366004611f0e565b610d6f565b3480156103fc57600080fd5b50610344610de5565b34801561041157600080fd5b506104256104203660046120cc565b610df4565b60405161024a91906126c4565b34801561043e57600080fd5b5061023d610e81565b34801561045357600080fd5b50610344610ea3565b34801561046857600080fd5b5061023d610eb2565b34801561047d57600080fd5b50610486610ed0565b60405161024a91906126f0565b34801561049f57600080fd5b50610344610ee8565b3480156104b457600080fd5b506102086104c33660046121fd565b610ef7565b3480156104d457600080fd5b506102086104e3366004611fd3565b610f38565b3480156104f457600080fd5b50610300610503366004612263565b610fbf565b34801561051457600080fd5b50610208610523366004611f55565b611031565b34801561053457600080fd5b506102086105433660046120b0565b61131e565b34801561055457600080fd5b50610322610563366004611f0e565b61139d565b34801561057457600080fd5b50610208610583366004611f0e565b6113b2565b34801561059457600080fd5b506102086105a3366004611f0e565b6114df565b3480156105b457600080fd5b506102086105c3366004611f2a565b611650565b336105d1610ea3565b6001600160a01b03161461060d576105e833610c36565b61060d5760405162461bcd60e51b8152600401610604906123eb565b60405180910390fd5b606880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b33610650610ea3565b6001600160a01b0316146106835761066733610c36565b6106835760405162461bcd60e51b8152600401610604906123eb565b600260005414156106db576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000819055506000816001600160a01b0316346040516106fc90612395565b60006040518083038185875af1925050503d8060008114610739576040519150601f19603f3d011682016040523d82523d6000602084013e61073e565b606091505b505090508061077e5760405134906001600160a01b038416907f2c7a964ca3de5ec1d42d9822f9bbd0eb142a59cc9f855e9d93813b773192c7a390600090a35b6066546040517f987fa2d50000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063987fa2d5906107d3908c908c908c908c908c908c908c9060040161271c565b600060405180830381600087803b1580156107ed57600080fd5b505af1158015610801573d6000803e3d6000fd5b505060016000555050505050505050505050565b61ffff8082166000908152606b60205260408120549091166108495760405162461bcd60e51b8152600401610604906124eb565b5061ffff8082166000908152606b6020526040902054165b919050565b61086e611e6e565b6067546001600160a01b03166323161ff861088885610815565b846040518363ffffffff1660e01b81526004016108a6929190612799565b60606040518083038186803b1580156108be57600080fd5b505afa1580156108d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f69190611fed565b90505b92915050565b33610908610ea3565b6001600160a01b03161461093b5761091f33610c36565b61093b5760405162461bcd60e51b8152600401610604906123eb565b60026000541415610993576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000556066546040517f987fa2d50000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063987fa2d5906109ed908a908a908a908a908a908a908a9060040161271c565b600060405180830381600087803b158015610a0757600080fd5b505af1158015610a1b573d6000803e3d6000fd5b50506001600055505050505050505050565b33610a36610ea3565b6001600160a01b031614610a6957610a4d33610c36565b610a695760405162461bcd60e51b8152600401610604906123eb565b5050505050565b610a786117ca565b6001600160a01b0316610a89610ea3565b6001600160a01b031614610ae4576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03821660009081526069602052604090819020805460ff1916831515179055517fb10786d0bfa68fb1aa29552d9203e5f545f7c073ff0784da1de1d800986f102390610b3a90849084906123c5565b60405180910390a15050565b6066546000906001600160a01b03163314610b735760405162461bcd60e51b8152600401610604906125a5565b612710841115610b955760405162461bcd60e51b815260040161060490612422565b6000610bda8888888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117ce92505050565b90507fdf21c415b78ed2552cc9971249e32a053abce6087a0ae0fbf3f78db5174a349381604051610c0b91906127ca565b60405180910390a1979650505050505050565b606a5460ff1681565b6068546001600160a01b031681565b6001600160a01b031660009081526069602052604090205460ff1690565b606d547201000000000000000000000000000000000000900461ffff1681565b6066546001600160a01b031681565b606b6020526000908152604090205461ffff1681565b610ca16117ca565b6001600160a01b0316610cb2610ea3565b6001600160a01b031614610d0d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6034546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b33610d78610ea3565b6001600160a01b031614610dab57610d8f33610c36565b610dab5760405162461bcd60e51b8152600401610604906123eb565b606c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b606c546001600160a01b031681565b610dfc611e8e565b6067546001600160a01b031663765a8a54610e1684610815565b6040518263ffffffff1660e01b8152600401610e32919061270d565b604080518083038186803b158015610e4957600080fd5b505afa158015610e5d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f99190612058565b606d5474010000000000000000000000000000000000000000900461ffff1681565b6034546001600160a01b031690565b606d54700100000000000000000000000000000000900461ffff1681565b606d546fffffffffffffffffffffffffffffffff1681565b6067546001600160a01b031681565b33610f00610ea3565b6001600160a01b031614610f3357610f1733610c36565b610f335760405162461bcd60e51b8152600401610604906123eb565b505050565b610f406117ca565b6001600160a01b0316610f51610ea3565b6001600160a01b031614610fac576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b606a805460ff1916911515919091179055565b6000612710841115610fe35760405162461bcd60e51b815260040161060490612422565b6110268787878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117ce92505050565b979650505050505050565b600061103b611ab8565b90506001600160a01b03811661107a576001600160a01b037fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035561108f565b336001600160a01b0382161461108f57600080fd5b600154610100900460ff16806110a857506110a8611add565b806110b6575060015460ff16155b6110f15760405162461bcd60e51b815260040180806020018281038252602e815260200180612843602e913960400191505060405180910390fd5b600154610100900460ff1615801561111b576001805460ff1961ff00199091166101001716811790555b611123611aee565b606680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038716179055611161306001610a70565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b0387811691909117909255606b6020527fa775687211c2b3346a0f5a2a0e7590e6c1838453e3785e6dd2a8efd6265ddf15805460657fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000918216179091557fb507b92927105c30ff6e8afc661972d5ba73e86e28bafa70cb531ddda52bdf0480546066908316179055600c6000527f7cb4feddbcc8df84643f757126b63c4a4c8d049712222ca86464abd7231ed284805460709216919091179055606c8054909116918516919091179055606d80547fffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff1670a400000000000000000000000000000000177fffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff1672a0000000000000000000000000000000000000177fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167501f400000000000000000000000000000000000000001790558015610a69576001805461ff00191690555050505050565b33611327610ea3565b6001600160a01b03161461135a5761133e33610c36565b61135a5760405162461bcd60e51b8152600401610604906123eb565b606d80547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b60696020526000908152604090205460ff1681565b6113ba6117ca565b6001600160a01b03166113cb610ea3565b6001600160a01b031614611426576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03811661146b5760405162461bcd60e51b815260040180806020018281038252602681526020018061281d6026913960400191505060405180910390fd5b6034546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60006114e9611ab8565b90506001600160a01b038116611528576001600160a01b037fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035561153d565b336001600160a01b0382161461153d57600080fd5b50606d8054606c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039490941693909317909255612ee07fffffffffffffffffffffffffffffffff00000000000000000000000000000000909216919091177fffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff1670a400000000000000000000000000000000177fffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffff1672a0000000000000000000000000000000000000177fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055565b33611659610ea3565b6001600160a01b03161461168c5761167033610c36565b61168c5760405162461bcd60e51b8152600401610604906123eb565b6066546040517f69412bfa0000000000000000000000000000000000000000000000000000000081526000916001600160a01b0316906369412bfa906116d6903090600401612398565b60206040518083038186803b1580156116ee57600080fd5b505afa158015611702573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611726919061234e565b9050808211156117485760405162461bcd60e51b815260040161060490612548565b6066546040517f07b18bde0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906307b18bde9061179390869086906004016123ac565b600060405180830381600087803b1580156117ad57600080fd5b505af11580156117c1573d6000803e3d6000fd5b50505050505050565b3390565b606a5460009060ff16156117f45760405162461bcd60e51b8152600401610604906125dc565b815160221480611805575060428251115b6118215760405162461bcd60e51b815260040161060490612457565b60028201516022830151806118485760405162461bcd60e51b815260040161060490612613565b8161ffff166001148061185f57508161ffff166002145b61187b5760405162461bcd60e51b8152600401610604906124b4565b60006118878989610866565b905060008361ffff16600214156118d15750604285015181516fffffffffffffffffffffffffffffffff168111156118d15760405162461bcd60e51b81526004016106049061264a565b60008461ffff166002146118ff57606d54700100000000000000000000000000000000900461ffff16611925565b606d5461192590700100000000000000000000000000000000900461ffff166020611b9f565b905060008a61ffff1660021461196457606d5461195f908a9074010000000000000000000000000000000000000000900461ffff16611b9f565b611982565b606d547201000000000000000000000000000000000000900461ffff165b905060006119908383611b9f565b606c549091508d9060009081906001600160a01b0316637bc3c9ab6119b485610815565b60208b015187906119cf9067ffffffffffffffff168e611b9f565b6040518463ffffffff1660e01b81526004016119ed939291906127ae565b604080518083038186803b158015611a0457600080fd5b505afa158015611a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3c9190612366565b90925090506000611a6e6402540be400611a688a6fffffffffffffffffffffffffffffffff8616611bf9565b90611c52565b606d54909150611aa29061271090611a68906fffffffffffffffffffffffffffffffff16611a9c8786611b9f565b90611bf9565b9b50505050505050505050505095945050505050565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6000611ae830611cb9565b15905090565b600154610100900460ff1680611b075750611b07611add565b80611b15575060015460ff16155b611b505760405162461bcd60e51b815260040180806020018281038252602e815260200180612843602e913960400191505060405180910390fd5b600154610100900460ff16158015611b7a576001805460ff1961ff00199091166101001716811790555b611b82611cbf565b611b8a611d5e565b8015611b9c576001805461ff00191690555b50565b6000828201838110156108f6576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600082611c08575060006108f9565b82820282848281611c1557fe5b04146108f65760405162461bcd60e51b81526004018080602001828103825260218152602001806128716021913960400191505060405180910390fd5b6000808211611ca8576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611cb157fe5b049392505050565b3b151590565b600154610100900460ff1680611cd85750611cd8611add565b80611ce6575060015460ff16155b611d215760405162461bcd60e51b815260040180806020018281038252602e815260200180612843602e913960400191505060405180910390fd5b600154610100900460ff16158015611b8a576001805460ff1961ff00199091166101001716811790558015611b9c576001805461ff001916905550565b600154610100900460ff1680611d775750611d77611add565b80611d85575060015460ff16155b611dc05760405162461bcd60e51b815260040180806020018281038252602e815260200180612843602e913960400191505060405180910390fd5b600154610100900460ff16158015611dea576001805460ff1961ff00199091166101001716811790555b6000611df46117ca565b603480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015611b9c576001805461ff001916905550565b604080516060810182526000808252602082018190529181019190915290565b604080518082019091526000808252602082015290565b8035801515811461086157600080fd5b60008083601f840112611ec6578182fd5b50813567ffffffffffffffff811115611edd578182fd5b602083019150836020828501011115611ef557600080fd5b9250929050565b803561ffff8116811461086157600080fd5b600060208284031215611f1f578081fd5b81356108f6816127d3565b60008060408385031215611f3c578081fd5b8235611f47816127d3565b946020939093013593505050565b600080600060608486031215611f69578081fd5b8335611f74816127d3565b92506020840135611f84816127d3565b91506040840135611f94816127d3565b809150509250925092565b60008060408385031215611fb1578182fd5b8235611fbc816127d3565b9150611fca60208401611ea5565b90509250929050565b600060208284031215611fe4578081fd5b6108f682611ea5565b600060608284031215611ffe578081fd5b6040516060810181811067ffffffffffffffff8211171561201b57fe5b6040528251612029816127e8565b8152602083015161203981612806565b6020820152604083015161204c81612806565b60408201529392505050565b600060408284031215612069578081fd5b6040516040810181811067ffffffffffffffff8211171561208657fe5b6040528251612094816127e8565b815260208301516120a4816127e8565b60208201529392505050565b6000602082840312156120c1578081fd5b81356108f6816127e8565b6000602082840312156120dd578081fd5b6108f682611efc565b600080600080600080600060c0888a031215612100578283fd5b61210988611efc565b96506020880135612119816127d3565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff811115612149578283fd5b6121558a828b01611eb5565b989b979a50959850939692959293505050565b60008060008060008060008060e0898b031215612183578182fd5b61218c89611efc565b9750602089013561219c816127d3565b965060408901359550606089013594506080890135935060a089013567ffffffffffffffff8111156121cc578283fd5b6121d88b828c01611eb5565b90945092505060c08901356121ec816127d3565b809150509295985092959890939650565b600080600060608486031215612211578081fd5b61221a84611efc565b9250602084013561222a816127e8565b91506040840135611f94816127e8565b6000806040838503121561224c578182fd5b61225583611efc565b9150611fca60208401611efc565b60008060008060008060a0878903121561227b578384fd5b61228487611efc565b955061229260208801611efc565b945060408701356122a2816127d3565b935060608701359250608087013567ffffffffffffffff8111156122c4578283fd5b6122d089828a01611eb5565b979a9699509497509295939492505050565b600080600080600060a086880312156122f9578283fd5b61230286611efc565b945061231060208701611efc565b93506040860135612320816127e8565b9250606086013561233081612806565b9150608086013561234081612806565b809150509295509295909350565b60006020828403121561235f578081fd5b5051919050565b60008060408385031215612378578182fd5b82519150602083015161238a816127e8565b809150509250929050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039290921682521515602082015260400190565b901515815260200190565b60208082526015908201527f52656c617965723a206e6f7420617070726f7665640000000000000000000000604082015260600190565b6020808252818101527f52656c617965723a205f7061796c6f616453697a6520746f6f6f6f6f20626967604082015260600190565b60208082526026908201527f52656c617965723a2077726f6e67205f61646170746572506172616d6574657260408201527f732073697a650000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f52656c617965723a20756e737570706f72746564207478547970650000000000604082015260600190565b60208082526024908201527f6765744c6567616379436861696e496428293a206c6f6f6b7570206e6f74206660408201527f6f756e6400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f52656c617965723a206e6f7420656e6f7567682066656520666f72207769746860408201527f64726177616c0000000000000000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f52656c617965723a20696e76616c696420756c6e000000000000000000000000604082015260600190565b6020808252600d908201527f41646d696e3a2070617573656400000000000000000000000000000000000000604082015260600190565b60208082526014908201527f52656c617965723a2067617320746f6f206c6f77000000000000000000000000604082015260600190565b6020808252601f908201527f52656c617965723a206473744e6174697665416d7420746f6f206c6172676500604082015260600190565b81516fffffffffffffffffffffffffffffffff16815260208083015167ffffffffffffffff90811691830191909152604092830151169181019190915260600190565b81516fffffffffffffffffffffffffffffffff9081168252602092830151169181019190915260400190565b6fffffffffffffffffffffffffffffffff91909116815260200190565b61ffff91909116815260200190565b600061ffff891682526001600160a01b038816602083015286604083015285606083015284608083015260c060a08301528260c0830152828460e084013781830160e090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601019695505050505050565b61ffff92831681529116602082015260400190565b61ffff9390931683526020830191909152604082015260600190565b90815260200190565b6001600160a01b0381168114611b9c57600080fd5b6fffffffffffffffffffffffffffffffff81168114611b9c57600080fd5b67ffffffffffffffff81168114611b9c57600080fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212203fcdf5ef09b7efcf6d0979730a9ea50582930eec715399be2f094f18d3e4366c64736f6c63430007060033\";\n\ntype RelayerV2RadarConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: RelayerV2RadarConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class RelayerV2Radar__factory extends ContractFactory {\n constructor(...args: RelayerV2RadarConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<RelayerV2Radar> {\n return super.deploy(overrides || {}) as Promise<RelayerV2Radar>;\n }\n override getDeployTransaction(\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(overrides || {});\n }\n override attach(address: string): RelayerV2Radar {\n return super.attach(address) as RelayerV2Radar;\n }\n override connect(signer: Signer): RelayerV2Radar__factory {\n return super.connect(signer) as RelayerV2Radar__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): RelayerV2RadarInterface {\n return new utils.Interface(_abi) as RelayerV2RadarInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): RelayerV2Radar {\n return new Contract(address, _abi, signerOrProvider) as RelayerV2Radar;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../common\";\nimport type { Treasury, TreasuryInterface } from \"../Treasury\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_uln\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"bool\",\n name: \"feeEnabled\",\n type: \"bool\",\n },\n ],\n name: \"FeeEnabled\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"bp\",\n type: \"uint256\",\n },\n ],\n name: \"NativeBP\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"bool\",\n name: \"zroEnabled\",\n type: \"bool\",\n },\n ],\n name: \"ZroEnabled\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"zroFee\",\n type: \"uint256\",\n },\n ],\n name: \"ZroFee\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"feeEnabled\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"payInZro\",\n type: \"bool\",\n },\n {\n internalType: \"uint256\",\n name: \"relayerFee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"oracleFee\",\n type: \"uint256\",\n },\n ],\n name: \"getFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"nativeBP\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"_feeEnabled\",\n type: \"bool\",\n },\n ],\n name: \"setFeeEnabled\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_nativeBP\",\n type: \"uint256\",\n },\n ],\n name: \"setNativeBP\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"_zroEnabled\",\n type: \"bool\",\n },\n ],\n name: \"setZroEnabled\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_zroFee\",\n type: \"uint256\",\n },\n ],\n name: \"setZroFee\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"uln\",\n outputs: [\n {\n internalType: \"contract ILayerZeroUltraLightNodeV1\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address payable\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawNativeFromULN\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawZROFromULN\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"zroEnabled\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"zroFee\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x60a060405234801561001057600080fd5b50604051610ea8380380610ea88339818101604052602081101561003357600080fd5b5051600061003f61009e565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060601b6001600160601b0319166080526100a2565b3390565b60805160601c610ddf6100c9600039806104ab52806105c5528061083d5250610ddf6000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063baead4cc11610066578063baead4cc14610254578063d684b25314610271578063d935d12314610290578063f2fde38b14610298576100f5565b80638da5cb5b1461022057806396a141a014610228578063a771ebc714610230578063af406aa51461024c576100f5565b80636c473aff116100d35780636c473aff14610191578063715018a6146101c25780637ba20ccf146101ca5780638c616397146101e7576100f5565b80630db474fa146100fa5780633c5ac8f71461011b5780635cbbbd7514610154575b600080fd5b6101196004803603602081101561011057600080fd5b503515156102cb565b005b6101196004803603604081101561013157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103be565b61017f6004803603606081101561016a57600080fd5b5080351515906020810135906040013561050d565b60408051918252519081900360200190f35b6101996105c3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101196105e7565b610119600480360360208110156101e057600080fd5b50356106e4565b610119600480360360408110156101fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107ad565b6101996108cc565b61017f6108e8565b6102386108ee565b604080519115158252519081900360200190f35b61017f6108f7565b6101196004803603602081101561026a57600080fd5b50356108fd565b6101196004803603602081101561028757600080fd5b503515156109c6565b610238610ac0565b610119600480360360208110156102ae57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610ace565b6102d3610c3b565b73ffffffffffffffffffffffffffffffffffffffff166102f16108cc565b73ffffffffffffffffffffffffffffffffffffffff1614610359576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600380548215157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116811790915560408051918252517fe97fa32ceb811a18d1b14115b17ae0034db328b2e2ca987d9922cbf47b03fad69181900360200190a150565b6103c6610c3b565b73ffffffffffffffffffffffffffffffffffffffff166103e46108cc565b73ffffffffffffffffffffffffffffffffffffffff161461044c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b604080517f22c107760000000000000000000000000000000000000000000000000000000081526000600482018190526024820181905273ffffffffffffffffffffffffffffffffffffffff85811660448401526064830185905292517f0000000000000000000000000000000000000000000000000000000000000000909316926322c1077692608480820193929182900301818387803b1580156104f157600080fd5b505af1158015610505573d6000803e3d6000fd5b505050505050565b60035460009060ff16156105b857831561058657600354610100900460ff1661057d576040805162461bcd60e51b815260206004820152601d60248201527f4c617965725a65726f3a205a524f206973206e6f7420656e61626c6564000000604482015290519081900360640190fd5b506002546105bc565b6105b16127106105ab6001546105a58688610c3f90919063ffffffff16565b90610ca2565b90610cfb565b90506105bc565b5060005b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6105ef610c3b565b73ffffffffffffffffffffffffffffffffffffffff1661060d6108cc565b73ffffffffffffffffffffffffffffffffffffffff1614610675576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6106ec610c3b565b73ffffffffffffffffffffffffffffffffffffffff1661070a6108cc565b73ffffffffffffffffffffffffffffffffffffffff1614610772576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60028190556040805182815290517f804d99c2291bc4a6be11ff016f65cfc644f8d488ef55a5318d0217a1fdc4e9fd9181900360200190a150565b6107b5610c3b565b73ffffffffffffffffffffffffffffffffffffffff166107d36108cc565b73ffffffffffffffffffffffffffffffffffffffff161461083b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638525b71183836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156104f157600080fd5b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60015481565b60035460ff1681565b60025481565b610905610c3b565b73ffffffffffffffffffffffffffffffffffffffff166109236108cc565b73ffffffffffffffffffffffffffffffffffffffff161461098b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60018190556040805182815290517ff2a316ed322d32481373e7ed416bc6c1ec2afcfa3bf2f1df9eb4300e1a9620e39181900360200190a150565b6109ce610c3b565b73ffffffffffffffffffffffffffffffffffffffff166109ec6108cc565b73ffffffffffffffffffffffffffffffffffffffff1614610a54576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6003805482151561010081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff9092169190911790915560408051918252517f279d3ec34d7b325d10d4b9d6c63464877a6fe6ac3997f7508bdb3b9d2d5050b39181900360200190a150565b600354610100900460ff1681565b610ad6610c3b565b73ffffffffffffffffffffffffffffffffffffffff16610af46108cc565b73ffffffffffffffffffffffffffffffffffffffff1614610b5c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610bae5760405162461bcd60e51b8152600401808060200182810382526026815260200180610d636026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3390565b600082820183811015610c99576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b600082610cb157506000610c9c565b82820282848281610cbe57fe5b0414610c995760405162461bcd60e51b8152600401808060200182810382526021815260200180610d896021913960400191505060405180910390fd5b6000808211610d51576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610d5a57fe5b04939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212200cc3d56ebfafbb0feeb049ee7e321ea13dad4e96f9692ed224dd9fba3ebf066f64736f6c63430007060033\";\n\ntype TreasuryConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: TreasuryConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class Treasury__factory extends ContractFactory {\n constructor(...args: TreasuryConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n _uln: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<Treasury> {\n return super.deploy(_uln, overrides || {}) as Promise<Treasury>;\n }\n override getDeployTransaction(\n _uln: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(_uln, overrides || {});\n }\n override attach(address: string): Treasury {\n return super.attach(address) as Treasury;\n }\n override connect(signer: Signer): Treasury__factory {\n return super.connect(signer) as Treasury__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): TreasuryInterface {\n return new utils.Interface(_abi) as TreasuryInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): Treasury {\n return new Contract(address, _abi, signerOrProvider) as Treasury;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../common\";\nimport type { TreasuryV2, TreasuryV2Interface } from \"../TreasuryV2\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_ulnv2\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"bool\",\n name: \"feeEnabled\",\n type: \"bool\",\n },\n ],\n name: \"FeeEnabled\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"bp\",\n type: \"uint256\",\n },\n ],\n name: \"NativeBP\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"bool\",\n name: \"zroEnabled\",\n type: \"bool\",\n },\n ],\n name: \"ZroEnabled\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"zroFee\",\n type: \"uint256\",\n },\n ],\n name: \"ZroFee\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"feeEnabled\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"payInZro\",\n type: \"bool\",\n },\n {\n internalType: \"uint256\",\n name: \"relayerFee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"oracleFee\",\n type: \"uint256\",\n },\n ],\n name: \"getFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"nativeBP\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"_feeEnabled\",\n type: \"bool\",\n },\n ],\n name: \"setFeeEnabled\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_nativeBP\",\n type: \"uint256\",\n },\n ],\n name: \"setNativeBP\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"_zroEnabled\",\n type: \"bool\",\n },\n ],\n name: \"setZroEnabled\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_zroFee\",\n type: \"uint256\",\n },\n ],\n name: \"setZroFee\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"uln\",\n outputs: [\n {\n internalType: \"contract ILayerZeroUltraLightNodeV2\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address payable\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawNativeFromULN\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_token\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawToken\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawZROFromULN\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"zroEnabled\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"zroFee\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x608060405234801561001057600080fd5b506040516113583803806113588339818101604052602081101561003357600080fd5b5051600061003f6100b6565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600380546001600160a01b03909216620100000262010000600160b01b03199092169190911790556100ba565b3390565b61128f806100c96000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063baead4cc11610066578063baead4cc146102a2578063d684b253146102bf578063d935d123146102de578063f2fde38b146102e657610100565b80638da5cb5b1461026e57806396a141a014610276578063a771ebc71461027e578063af406aa51461029a57610100565b80636c473aff116100d35780636c473aff146101df578063715018a6146102105780637ba20ccf146102185780638c6163971461023557610100565b806301e33667146101055780630db474fa1461014a5780633c5ac8f7146101695780635cbbbd75146101a2575b600080fd5b6101486004803603606081101561011b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610319565b005b6101486004803603602081101561016057600080fd5b503515156103cd565b6101486004803603604081101561017f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104c0565b6101cd600480360360608110156101b857600080fd5b508035151590602081013590604001356105ec565b60408051918252519081900360200190f35b6101e76106a2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101486106c4565b6101486004803603602081101561022e57600080fd5b50356107c1565b6101486004803603604081101561024b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561088a565b6101e761099a565b6101cd6109b6565b6102866109bc565b604080519115158252519081900360200190f35b6101cd6109c5565b610148600480360360208110156102b857600080fd5b50356109cb565b610148600480360360208110156102d557600080fd5b50351515610a94565b610286610b8e565b610148600480360360208110156102fc57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610b9c565b610321610d09565b73ffffffffffffffffffffffffffffffffffffffff1661033f61099a565b73ffffffffffffffffffffffffffffffffffffffff16146103a7576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6103c873ffffffffffffffffffffffffffffffffffffffff84168383610d0d565b505050565b6103d5610d09565b73ffffffffffffffffffffffffffffffffffffffff166103f361099a565b73ffffffffffffffffffffffffffffffffffffffff161461045b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600380548215157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116811790915560408051918252517fe97fa32ceb811a18d1b14115b17ae0034db328b2e2ca987d9922cbf47b03fad69181900360200190a150565b6104c8610d09565b73ffffffffffffffffffffffffffffffffffffffff166104e661099a565b73ffffffffffffffffffffffffffffffffffffffff161461054e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600354604080517f07b18bde00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052915162010000909304909116916307b18bde9160448082019260009290919082900301818387803b1580156105d057600080fd5b505af11580156105e4573d6000803e3d6000fd5b505050505050565b60035460009060ff161561069757831561066557600354610100900460ff1661065c576040805162461bcd60e51b815260206004820152601d60248201527f4c617965725a65726f3a205a524f206973206e6f7420656e61626c6564000000604482015290519081900360640190fd5b5060025461069b565b61069061271061068a6001546106848688610d9a90919063ffffffff16565b90610dfd565b90610e56565b905061069b565b5060005b9392505050565b60035462010000900473ffffffffffffffffffffffffffffffffffffffff1681565b6106cc610d09565b73ffffffffffffffffffffffffffffffffffffffff166106ea61099a565b73ffffffffffffffffffffffffffffffffffffffff1614610752576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6107c9610d09565b73ffffffffffffffffffffffffffffffffffffffff166107e761099a565b73ffffffffffffffffffffffffffffffffffffffff161461084f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60028190556040805182815290517f804d99c2291bc4a6be11ff016f65cfc644f8d488ef55a5318d0217a1fdc4e9fd9181900360200190a150565b610892610d09565b73ffffffffffffffffffffffffffffffffffffffff166108b061099a565b73ffffffffffffffffffffffffffffffffffffffff1614610918576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600354604080517f8525b71100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526024820185905291516201000090930490911691638525b7119160448082019260009290919082900301818387803b1580156105d057600080fd5b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60015481565b60035460ff1681565b60025481565b6109d3610d09565b73ffffffffffffffffffffffffffffffffffffffff166109f161099a565b73ffffffffffffffffffffffffffffffffffffffff1614610a59576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60018190556040805182815290517ff2a316ed322d32481373e7ed416bc6c1ec2afcfa3bf2f1df9eb4300e1a9620e39181900360200190a150565b610a9c610d09565b73ffffffffffffffffffffffffffffffffffffffff16610aba61099a565b73ffffffffffffffffffffffffffffffffffffffff1614610b22576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6003805482151561010081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff9092169190911790915560408051918252517f279d3ec34d7b325d10d4b9d6c63464877a6fe6ac3997f7508bdb3b9d2d5050b39181900360200190a150565b600354610100900460ff1681565b610ba4610d09565b73ffffffffffffffffffffffffffffffffffffffff16610bc261099a565b73ffffffffffffffffffffffffffffffffffffffff1614610c2a576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610c7c5760405162461bcd60e51b81526004018080602001828103825260268152602001806111c36026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3390565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526103c8908490610ebd565b600082820183811015610df4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b600082610e0c57506000610df7565b82820282848281610e1957fe5b0414610df45760405162461bcd60e51b815260040180806020018281038252602181526020018061120f6021913960400191505060405180910390fd5b6000808211610eac576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610eb557fe5b049392505050565b6000610f1f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610f7b9092919063ffffffff16565b8051909150156103c857808060200190516020811015610f3e57600080fd5b50516103c85760405162461bcd60e51b815260040180806020018281038252602a815260200180611230602a913960400191505060405180910390fd5b6060610f8a8484600085610f92565b949350505050565b606082471015610fd35760405162461bcd60e51b81526004018080602001828103825260268152602001806111e96026913960400191505060405180910390fd5b610fdc85611118565b61102d576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831061109657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611059565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146110f8576040519150601f19603f3d011682016040523d82523d6000602084013e6110fd565b606091505b509150915061110d82828661111e565b979650505050505050565b3b151590565b6060831561112d57508161069b565b82511561113d5782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561118757818101518382015260200161116f565b50505050905090810190601f1680156111b45780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212206101b8edc08c7f76f710d9fbe01f6df28e375bae4cab7e38622762250d46a05a64736f6c63430007060033\";\n\ntype TreasuryV2ConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: TreasuryV2ConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class TreasuryV2__factory extends ContractFactory {\n constructor(...args: TreasuryV2ConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n _ulnv2: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<TreasuryV2> {\n return super.deploy(_ulnv2, overrides || {}) as Promise<TreasuryV2>;\n }\n override getDeployTransaction(\n _ulnv2: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(_ulnv2, overrides || {});\n }\n override attach(address: string): TreasuryV2 {\n return super.attach(address) as TreasuryV2;\n }\n override connect(signer: Signer): TreasuryV2__factory {\n return super.connect(signer) as TreasuryV2__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): TreasuryV2Interface {\n return new utils.Interface(_abi) as TreasuryV2Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): TreasuryV2 {\n return new Contract(address, _abi, signerOrProvider) as TreasuryV2;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../common\";\nimport type {\n TreasuryV2Radar,\n TreasuryV2RadarInterface,\n} from \"../TreasuryV2Radar\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_ulnv2\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"bool\",\n name: \"feeEnabled\",\n type: \"bool\",\n },\n ],\n name: \"FeeEnabled\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"bp\",\n type: \"uint256\",\n },\n ],\n name: \"NativeBP\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"bool\",\n name: \"zroEnabled\",\n type: \"bool\",\n },\n ],\n name: \"ZroEnabled\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"zroFee\",\n type: \"uint256\",\n },\n ],\n name: \"ZroFee\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"feeEnabled\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"payInZro\",\n type: \"bool\",\n },\n {\n internalType: \"uint256\",\n name: \"relayerFee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"oracleFee\",\n type: \"uint256\",\n },\n ],\n name: \"getFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"nativeBP\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"_feeEnabled\",\n type: \"bool\",\n },\n ],\n name: \"setFeeEnabled\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_nativeBP\",\n type: \"uint256\",\n },\n ],\n name: \"setNativeBP\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"bool\",\n name: \"_zroEnabled\",\n type: \"bool\",\n },\n ],\n name: \"setZroEnabled\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint256\",\n name: \"_zroFee\",\n type: \"uint256\",\n },\n ],\n name: \"setZroFee\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"uln\",\n outputs: [\n {\n internalType: \"contract ILayerZeroUltraLightNodeV2\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address payable\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawNativeFromULN\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawZROFromULN\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"zroEnabled\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"zroFee\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x608060405234801561001057600080fd5b50604051610e74380380610e748339818101604052602081101561003357600080fd5b5051600061003f6100b6565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600380546001600160a01b03909216620100000262010000600160b01b03199092169190911790556100ba565b3390565b610dab806100c96000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063baead4cc11610066578063baead4cc14610254578063d684b25314610271578063d935d12314610290578063f2fde38b14610298576100f5565b80638da5cb5b1461022057806396a141a014610228578063a771ebc714610230578063af406aa51461024c576100f5565b80636c473aff116100d35780636c473aff14610191578063715018a6146101c25780637ba20ccf146101ca5780638c616397146101e7576100f5565b80630db474fa146100fa5780633c5ac8f71461011b5780635cbbbd7514610154575b600080fd5b6101196004803603602081101561011057600080fd5b503515156102cb565b005b6101196004803603604081101561013157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103be565b61017f6004803603606081101561016a57600080fd5b508035151590602081013590604001356104ea565b60408051918252519081900360200190f35b6101996105a0565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101196105c2565b610119600480360360208110156101e057600080fd5b50356106bf565b610119600480360360408110156101fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610788565b610199610898565b61017f6108b4565b6102386108ba565b604080519115158252519081900360200190f35b61017f6108c3565b6101196004803603602081101561026a57600080fd5b50356108c9565b6101196004803603602081101561028757600080fd5b50351515610992565b610238610a8c565b610119600480360360208110156102ae57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a9a565b6102d3610c07565b73ffffffffffffffffffffffffffffffffffffffff166102f1610898565b73ffffffffffffffffffffffffffffffffffffffff1614610359576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600380548215157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116811790915560408051918252517fe97fa32ceb811a18d1b14115b17ae0034db328b2e2ca987d9922cbf47b03fad69181900360200190a150565b6103c6610c07565b73ffffffffffffffffffffffffffffffffffffffff166103e4610898565b73ffffffffffffffffffffffffffffffffffffffff161461044c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600354604080517f07b18bde00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052915162010000909304909116916307b18bde9160448082019260009290919082900301818387803b1580156104ce57600080fd5b505af11580156104e2573d6000803e3d6000fd5b505050505050565b60035460009060ff161561059557831561056357600354610100900460ff1661055a576040805162461bcd60e51b815260206004820152601d60248201527f4c617965725a65726f3a205a524f206973206e6f7420656e61626c6564000000604482015290519081900360640190fd5b50600254610599565b61058e6127106105886001546105828688610c0b90919063ffffffff16565b90610c6e565b90610cc7565b9050610599565b5060005b9392505050565b60035462010000900473ffffffffffffffffffffffffffffffffffffffff1681565b6105ca610c07565b73ffffffffffffffffffffffffffffffffffffffff166105e8610898565b73ffffffffffffffffffffffffffffffffffffffff1614610650576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6106c7610c07565b73ffffffffffffffffffffffffffffffffffffffff166106e5610898565b73ffffffffffffffffffffffffffffffffffffffff161461074d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60028190556040805182815290517f804d99c2291bc4a6be11ff016f65cfc644f8d488ef55a5318d0217a1fdc4e9fd9181900360200190a150565b610790610c07565b73ffffffffffffffffffffffffffffffffffffffff166107ae610898565b73ffffffffffffffffffffffffffffffffffffffff1614610816576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600354604080517f8525b71100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526024820185905291516201000090930490911691638525b7119160448082019260009290919082900301818387803b1580156104ce57600080fd5b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60015481565b60035460ff1681565b60025481565b6108d1610c07565b73ffffffffffffffffffffffffffffffffffffffff166108ef610898565b73ffffffffffffffffffffffffffffffffffffffff1614610957576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60018190556040805182815290517ff2a316ed322d32481373e7ed416bc6c1ec2afcfa3bf2f1df9eb4300e1a9620e39181900360200190a150565b61099a610c07565b73ffffffffffffffffffffffffffffffffffffffff166109b8610898565b73ffffffffffffffffffffffffffffffffffffffff1614610a20576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6003805482151561010081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff9092169190911790915560408051918252517f279d3ec34d7b325d10d4b9d6c63464877a6fe6ac3997f7508bdb3b9d2d5050b39181900360200190a150565b600354610100900460ff1681565b610aa2610c07565b73ffffffffffffffffffffffffffffffffffffffff16610ac0610898565b73ffffffffffffffffffffffffffffffffffffffff1614610b28576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b7a5760405162461bcd60e51b8152600401808060200182810382526026815260200180610d2f6026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3390565b600082820183811015610c65576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b600082610c7d57506000610c68565b82820282848281610c8a57fe5b0414610c655760405162461bcd60e51b8152600401808060200182810382526021815260200180610d556021913960400191505060405180910390fd5b6000808211610d1d576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610d2657fe5b04939250505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122094d744cce324429d38691eced215c968a1bbe9aa8967976432f982781de97e0d64736f6c63430007060033\";\n\ntype TreasuryV2RadarConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: TreasuryV2RadarConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class TreasuryV2Radar__factory extends ContractFactory {\n constructor(...args: TreasuryV2RadarConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n _ulnv2: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<TreasuryV2Radar> {\n return super.deploy(_ulnv2, overrides || {}) as Promise<TreasuryV2Radar>;\n }\n override getDeployTransaction(\n _ulnv2: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(_ulnv2, overrides || {});\n }\n override attach(address: string): TreasuryV2Radar {\n return super.attach(address) as TreasuryV2Radar;\n }\n override connect(signer: Signer): TreasuryV2Radar__factory {\n return super.connect(signer) as TreasuryV2Radar__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): TreasuryV2RadarInterface {\n return new utils.Interface(_abi) as TreasuryV2RadarInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): TreasuryV2Radar {\n return new Contract(address, _abi, signerOrProvider) as TreasuryV2Radar;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport { Signer, utils, Contract, ContractFactory, Overrides } from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../common\";\nimport type {\n UltraLightNode,\n UltraLightNodeInterface,\n} from \"../UltraLightNode\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_endpoint\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"lib\",\n type: \"address\",\n },\n ],\n name: \"AddInboundProofLibraryForChain\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"userApplication\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"configType\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"newConfig\",\n type: \"bytes\",\n },\n ],\n name: \"AppConfigUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"proofType\",\n type: \"uint16\",\n },\n ],\n name: \"EnableSupportedOutboundProof\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"confirmations\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"blockhash\",\n type: \"bytes32\",\n },\n ],\n name: \"HashReceived\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n name: \"Packet\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"RelayerParams\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"size\",\n type: \"uint256\",\n },\n ],\n name: \"SetChainAddressSize\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"proofType\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"SetDefaultAdapterParamsForChainId\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"inboundProofLib\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"inboundBlockConfirm\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"relayer\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"outboundBlockConfirm\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n ],\n name: \"SetDefaultConfigForChainId\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"tokenAddress\",\n type: \"address\",\n },\n ],\n name: \"SetLayerZeroToken\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"relayerFeeContract\",\n type: \"address\",\n },\n ],\n name: \"SetRelayerFeeContract\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"uln\",\n type: \"bytes32\",\n },\n ],\n name: \"SetRemoteUln\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"treasuryAddress\",\n type: \"address\",\n },\n ],\n name: \"SetTreasury\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"uint8\",\n name: \"_type\",\n type: \"uint8\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"_owner\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"_msgSender\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"_to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"WithdrawNative\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"_msgSender\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"_to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"WithdrawZRO\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"BP_DENOMINATOR\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_INBOUND_BLOCK_CONFIRMATIONS\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_INBOUND_PROOF_LIBRARY_VERSION\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_ORACLE\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_OUTBOUND_BLOCK_CONFIRMATIONS\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_OUTBOUND_PROOF_TYPE\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_RELAYER\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"WITHDRAW_TYPE_ORACLE_QUOTED_FEES\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"WITHDRAW_TYPE_RELAYER_QUOTED_FEES\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"WITHDRAW_TYPE_TREASURY_PROTOCOL_FEES\",\n outputs: [\n {\n internalType: \"uint8\",\n name: \"\",\n type: \"uint8\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_library\",\n type: \"address\",\n },\n ],\n name: \"addInboundProofLibraryForChain\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"appConfig\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"inboundProofLibraryVersion\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"inboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"relayer\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"outboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"chainAddressSizeMap\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"defaultAdapterParams\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"defaultAppConfig\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"inboundProofLibraryVersion\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"inboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"relayer\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"outboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_proofType\",\n type: \"uint16\",\n },\n ],\n name: \"enableSupportedOutboundProof\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"endpoint\",\n outputs: [\n {\n internalType: \"contract ILayerZeroEndpoint\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_ua\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n {\n internalType: \"bool\",\n name: \"_payInZRO\",\n type: \"bool\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"estimateFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"nativeFee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"zroFee\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"userApplicationAddress\",\n type: \"address\",\n },\n ],\n name: \"getAppConfig\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"inboundProofLibraryVersion\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"inboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"relayer\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"outboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n ],\n internalType: \"struct UltraLightNode.ApplicationConfiguration\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_oracle\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"_remoteChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"_lookupHash\",\n type: \"bytes32\",\n },\n ],\n name: \"getBlockHeaderData\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint256\",\n name: \"confirmations\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"data\",\n type: \"bytes32\",\n },\n ],\n internalType: \"struct UltraLightNode.BlockData\",\n name: \"blockData\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"userApplicationAddress\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_configType\",\n type: \"uint256\",\n },\n ],\n name: \"getConfig\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n name: \"hashLookup\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"confirmations\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"data\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"inboundProofLibrary\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"layerZeroToken\",\n outputs: [\n {\n internalType: \"contract IERC20\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"maxInboundProofLibrary\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_oracle\",\n type: \"address\",\n },\n ],\n name: \"oracleQuotedAmount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"oracleQuotedFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_relayer\",\n type: \"address\",\n },\n ],\n name: \"relayerQuotedAmount\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"relayerQuotedFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_ua\",\n type: \"address\",\n },\n {\n internalType: \"uint64\",\n name: \"_nonce\",\n type: \"uint64\",\n },\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_destination\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n {\n internalType: \"address payable\",\n name: \"_refundAddress\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_zroPaymentAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"send\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint256\",\n name: \"_size\",\n type: \"uint256\",\n },\n ],\n name: \"setChainAddressSize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_ua\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_configType\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_config\",\n type: \"bytes\",\n },\n ],\n name: \"setConfig\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_proofType\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"setDefaultAdapterParamsForChainId\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_inboundProofLibraryVersion\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"_inboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"_relayer\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundBlockConfirmations\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_oracle\",\n type: \"address\",\n },\n ],\n name: \"setDefaultConfigForChainId\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_layerZeroToken\",\n type: \"address\",\n },\n ],\n name: \"setLayerZeroToken\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_remoteChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"_remoteUln\",\n type: \"bytes32\",\n },\n ],\n name: \"setRemoteUln\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_treasury\",\n type: \"address\",\n },\n ],\n name: \"setTreasury\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"supportedOutboundProof\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"treasuryContract\",\n outputs: [\n {\n internalType: \"contract ILayerZeroTreasury\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"treasuryNativeFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"treasuryZROFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"ulnLookup\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"_lookupHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256\",\n name: \"_confirmations\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"_data\",\n type: \"bytes32\",\n },\n ],\n name: \"updateHash\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_gasLimit\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"_lookupHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"_transactionProof\",\n type: \"bytes\",\n },\n ],\n name: \"validateTransactionProof\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint8\",\n name: \"_type\",\n type: \"uint8\",\n },\n {\n internalType: \"address\",\n name: \"_owner\",\n type: \"address\",\n },\n {\n internalType: \"address payable\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawNative\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawZRO\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x60a06040523480156200001157600080fd5b5060405162005306380380620053068339810160408190526200003491620000df565b6001600090815562000045620000db565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b038116620000c55760405162461bcd60e51b8152600401620000bc906200010f565b60405180910390fd5b60601b6001600160601b03191660805262000159565b3390565b600060208284031215620000f1578081fd5b81516001600160a01b038116811462000108578182fd5b9392505050565b6020808252602a908201527f4c617965725a65726f3a20656e64706f696e742063616e6e6f74206265207a65604082015269726f206164647265737360b01b606082015260800190565b60805160601c61518062000186600039806113c852806122b9528061233352806130ee52506151806000f3fe60806040526004361061031e5760003560e01c80638317814a116101a5578063d56bc64b116100ec578063ebfa08e911610095578063f2fde38b1161006f578063f2fde38b146108a4578063f47a5feb146108c4578063f8e1734c146108d9578063f9dd8e0f146108f95761031e565b8063ebfa08e914610837578063ed28580a14610864578063f0f44260146108845761031e565b8063e6108a82116100c6578063e6108a82146107d7578063ea216c21146107f7578063eb0d4c31146108175761031e565b8063d56bc64b14610777578063db00719b14610797578063ddfdef5a146107b75761031e565b8063a183608c1161014e578063b77d22ad11610128578063b77d22ad14610708578063b8e7e3e01461071d578063d543c7741461074a5761031e565b8063a183608c146106a6578063a4662222146106c6578063abe685cd146106f35761031e565b80638da5cb5b1161017f5780638da5cb5b1461065c578063904d3b8d14610671578063959f5943146106865761031e565b80638317814a146105fc5780638525b7111461061c57806387078f9f1461063c5761031e565b80634d0ca1b4116102695780635e280f1111610212578063715018a6116101ec578063715018a6146105b25780638140666e146105c75780638207f79d146105dc5761031e565b80635e280f111461055d57806361aa19da14610572578063704316e5146105925761031e565b806352d3b5001161024357806352d3b500146105085780635b5a2678146105285780635c0115311461053d5761031e565b80634d0ca1b4146104c05780634d3a0f7c146104d557806352d2871f146104e85761031e565b80632cfacb06116102cb57806331bd2430116102a557806331bd24301461046857806340a7bb101461047d57806349148c37146104ab5761031e565b80632cfacb06146103ff5780632e9959ec146104145780632f813464146104365761031e565b806318da0011116102fc57806318da00111461039d57806322c10776146103b25780632a819bbf146103d25761031e565b806302e72c631461032357806307b9ca7c14610359578063096607f81461037b575b600080fd5b34801561032f57600080fd5b5061034361033e366004613b51565b61090e565b6040516103509190614380565b60405180910390f35b34801561036557600080fd5b5061036e610920565b60405161035091906142f2565b34801561038757600080fd5b5061039b6103963660046140c1565b61092f565b005b3480156103a957600080fd5b5061036e610c95565b3480156103be57600080fd5b5061039b6103cd36600461418a565b610ca4565b3480156103de57600080fd5b506103f26103ed366004614041565b610e9d565b60405161035091906143b4565b34801561040b57600080fd5b50610343610f5f565b34801561042057600080fd5b50610429610f64565b6040516103509190615005565b34801561044257600080fd5b50610456610451366004613ddc565b610f69565b60405161035096959493929190614f61565b34801561047457600080fd5b50610343610fed565b34801561048957600080fd5b5061049d610498366004613e25565b610ff2565b604051610350929190614fe2565b3480156104b757600080fd5b506103436113bc565b3480156104cc57600080fd5b506104296113c1565b61039b6104e3366004613c10565b6113c6565b3480156104f457600080fd5b506103f2610503366004613ed0565b611be7565b34801561051457600080fd5b5061039b610523366004613b51565b611f4f565b34801561053457600080fd5b50610343612057565b34801561054957600080fd5b5061039b610558366004613eff565b61205d565b34801561056957600080fd5b5061036e612331565b34801561057e57600080fd5b5061034361058d366004613b51565b612355565b34801561059e57600080fd5b5061039b6105ad366004614007565b612374565b3480156105be57600080fd5b5061039b612409565b3480156105d357600080fd5b506103436124df565b3480156105e857600080fd5b5061039b6105f7366004613df8565b6124e4565b34801561060857600080fd5b5061039b61061736600461405e565b61267c565b34801561062857600080fd5b5061039b610637366004613be5565b61275f565b34801561064857600080fd5b5061039b610657366004613fea565b612851565b34801561066857600080fd5b5061036e61293e565b34801561067d57600080fd5b5061034361294d565b34801561069257600080fd5b506103436106a1366004613ddc565b612952565b3480156106b257600080fd5b506103436106c1366004613b51565b612964565b3480156106d257600080fd5b506106e66106e1366004613df8565b612976565b6040516103509190614c8c565b3480156106ff57600080fd5b50610343612b44565b34801561071457600080fd5b50610343610f64565b34801561072957600080fd5b5061073d610738366004613ddc565b612b4a565b6040516103509190614d0f565b34801561075657600080fd5b5061076a610765366004614041565b612b60565b604051610350919061435d565b34801561078357600080fd5b5061049d610792366004613ba5565b612b80565b3480156107a357600080fd5b5061036e6107b2366004614041565b612baa565b3480156107c357600080fd5b506104566107d2366004613b6d565b612bd0565b3480156107e357600080fd5b506103436107f2366004613b51565b612c5f565b34801561080357600080fd5b50610343610812366004613ddc565b612c7a565b34801561082357600080fd5b5061039b610832366004614041565b612c8c565b34801561084357600080fd5b50610857610852366004613ba5565b612d7b565b6040516103509190614cf8565b34801561087057600080fd5b5061039b61087f366004613fea565b612dcf565b34801561089057600080fd5b5061039b61089f366004613b51565b612ebc565b3480156108b057600080fd5b5061039b6108bf366004613b51565b612fb9565b3480156108d057600080fd5b506103436130e6565b3480156108e557600080fd5b5061039b6108f4366004613f79565b6130ec565b34801561090557600080fd5b506104296113bc565b60056020526000908152604090205481565b6002546001600160a01b031681565b61093761344c565b6001600160a01b031661094861293e565b6001600160a01b0316146109a3576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61ffff8088166000908152600c60205260409020548116908716118015906109cf575060008661ffff16115b6109f45760405162461bcd60e51b81526004016109eb906148b3565b60405180910390fd5b60008567ffffffffffffffff1611610a1e5760405162461bcd60e51b81526004016109eb90614bd2565b6001600160a01b038416610a445760405162461bcd60e51b81526004016109eb90614583565b61ffff8088166000908152600d602090815260408083209387168352929052205460ff16610a845760405162461bcd60e51b81526004016109eb906143c7565b60008261ffff1611610aa85760405162461bcd60e51b81526004016109eb90614a5e565b6001600160a01b038116610ace5760405162461bcd60e51b81526004016109eb906146d1565b6040518060c001604052808761ffff1681526020018667ffffffffffffffff168152602001856001600160a01b031681526020018461ffff1681526020018361ffff1667ffffffffffffffff168152602001826001600160a01b0316815250600960008961ffff1661ffff16815260200190815260200160002060008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600a6101000a8154816001600160a01b0302191690836001600160a01b03160217905550606082015181600001601e6101000a81548161ffff021916908361ffff16021790555060808201518160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060a08201518160010160086101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507f45bb8a2b6b05457ff80b84be5bf06f2d05069fa8099fcb9d8e34149654b4d5c287878787878787604051610c849796959493929190614f11565b60405180910390a150505050505050565b6003546001600160a01b031681565b60026000541415610cfc576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260005560ff8416610d48576003546001600160a01b03163314610d335760405162461bcd60e51b81526004016109eb9061487c565b600654610d409082613450565b600655610dd6565b60ff841660011415610d835733600090815260046020526040902054610d6e9082613450565b33600090815260046020526040902055610dd6565b60ff841660021415610dbe5733600090815260056020526040902054610da99082613450565b33600090815260056020526040902055610dd6565b60405162461bcd60e51b81526004016109eb90614abb565b6000826001600160a01b031682604051610def90614271565b60006040518083038185875af1925050503d8060008114610e2c576040519150601f19603f3d011682016040523d82523d6000602084013e610e31565b606091505b5050905080610e525760405162461bcd60e51b81526004016109eb90614492565b7f163adce0473e267e1db8ecb524c0fcdceda62c3e6f231966bbb252e0104325378585338686604051610e89959493929190615013565b60405180910390a150506001600055505050565b600a6020908152600092835260408084208252918352918190208054825160026001831615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190921691909104601f810185900485028201850190935282815292909190830182828015610f575780601f10610f2c57610100808354040283529160200191610f57565b820191906000526020600020905b815481529060010190602001808311610f3a57829003601f168201915b505050505081565b600381565b600181565b6009602052600090815260409020805460019091015461ffff8083169267ffffffffffffffff6201000082048116936001600160a01b036a010000000000000000000084048116947e010000000000000000000000000000000000000000000000000000000000009094049093169291811691680100000000000000009091041686565b600681565b604080516020601f840181900481028201810190925282815260009182918a918a918991859190899089908190840183828082843760009201829052509394506110429250879150869050612976565b905060008251600014156111b25761ffff8681166000908152600a60209081526040808320606087015190941683529281528282208054845160026001831615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190921691909104601f8101849004840282018401909552848152929390918301828280156111175780601f106110ec57610100808354040283529160200191611117565b820191906000526020600020905b8154815290600101906020018083116110fa57829003601f168201915b5050505050905082604001516001600160a01b031663e54a22158885606001518989866040518663ffffffff1660e01b815260040161115a959493929190614e55565b60206040518083038186803b15801561117257600080fd5b505afa158015611186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111aa9190614156565b915050611241565b81604001516001600160a01b031663e54a22158784606001518888886040518663ffffffff1660e01b81526004016111ee959493929190614e55565b60206040518083038186803b15801561120657600080fd5b505afa15801561121a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123e9190614156565b90505b60a082015160608301516040517f0b4d51070000000000000000000000000000000000000000000000000000000081526000926001600160a01b031691630b4d510791611292918b91600401614df7565b60206040518083038186803b1580156112aa57600080fd5b505afa1580156112be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e29190614156565b90506000600360009054906101000a90046001600160a01b03166001600160a01b0316635cbbbd758e85856040518463ffffffff1660e01b815260040161132b93929190614368565b60206040518083038186803b15801561134357600080fd5b505afa158015611357573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137b9190614156565b90508c61138b5780995089611390565b809850885b506113a79050816113a18b856134ad565b906134ad565b98505050505050505097509795505050505050565b600281565b600081565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331461140e5760405162461bcd60e51b81526004016109eb90614a27565b600061141a8a8d612976565b61ffff8b166000908152601060205260409020549091508c908c908c906114535760405162461bcd60e51b81526004016109eb90614674565b6000808560a001516001600160a01b0316630b4d51078488606001516040518363ffffffff1660e01b815260040161148c929190614df7565b60206040518083038186803b1580156114a457600080fd5b505afa1580156114b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114dc9190614156565b60a08701516001600160a01b031660009081526004602052604090205490915061150690826134ad565b60a08701516001600160a01b031660009081526004602052604090819020919091558601518b90886117295761ffff8581166000908152600a6020908152604080832060608d015190941683529281528282208054845160026001831615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190921691909104601f8101849004840282018401909552848152929390918301828280156115f95780601f106115ce576101008083540402835291602001916115f9565b820191906000526020600020905b8154815290600101906020018083116115dc57829003601f168201915b5050505060608b01516040517fe54a22150000000000000000000000000000000000000000000000000000000081529293506001600160a01b0385169263e54a22159250611651918a918d9089908890600401614e55565b60206040518083038186803b15801561166957600080fd5b505afa15801561167d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a19190614156565b60608a01516040517f3a5fb82a0000000000000000000000000000000000000000000000000000000081529196506001600160a01b03841691633a5fb82a916116f1918a91908690600401614eb9565b600060405180830381600087803b15801561170b57600080fd5b505af115801561171f573d6000803e3d6000fd5b5050505050611838565b806001600160a01b031663e54a2215868a606001518a868f8f6040518763ffffffff1660e01b815260040161176396959493929190614e0c565b60206040518083038186803b15801561177b57600080fd5b505afa15801561178f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b39190614156565b60608901516040517f3a5fb82a0000000000000000000000000000000000000000000000000000000081529195506001600160a01b03831691633a5fb82a91611805918991908f908f90600401614e91565b600060405180830381600087803b15801561181f57600080fd5b505af1158015611833573d6000803e3d6000fd5b505050505b6040808901516001600160a01b031660009081526005602052205461185d90856134ad565b6040808a01516001600160a01b03166000908152600560205281902091909155606089015190517fb8a7262132db1f61626604a31c3de81dc1a5bb0f1511dfa70d626ab1b88b52c2916118b79188918a918f908f90614faa565b60405180910390a150600090506001600160a01b038a1615806118e357506002546001600160a01b0316155b6003546040517f5cbbbd750000000000000000000000000000000000000000000000000000000081529192506000916001600160a01b0390911690635cbbbd75906119379085159088908890600401614368565b60206040518083038186803b15801561194f57600080fd5b505afa158015611963573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119879190614156565b90508015611a235781156119b6576006546119a290826134ad565b6006556119af84826134ad565b9350611a23565b866001600160a01b03168b6001600160a01b031614806119de57506001600160a01b038b1632145b6119fa5760405162461bcd60e51b81526004016109eb90614617565b600254611a12906001600160a01b03168c3084613507565b600754611a1f90826134ad565b6007555b50611a30905082826134ad565b915050600083858f8f8f8f604051602001611a5096959493929190614274565b60405160208183030381529060405290507fe8d23d927749ec8e512eb885679c2977d57068839d8cca1a85685dbbea0648f68382604051611a92929190614d79565b60405180910390a160a0860151606087015160808801516040517f665305790000000000000000000000000000000000000000000000000000000081526001600160a01b0390931692636653057992611aef928892600401614ee9565b600060405180830381600087803b158015611b0957600080fd5b505af1158015611b1d573d6000803e3d6000fd5b505050505034811115611b425760405162461bcd60e51b81526004016109eb906144c9565b6000611b4e3483613450565b90508015611bd45760008a6001600160a01b031682604051611b6f90614271565b60006040518083038185875af1925050503d8060008114611bac576040519150601f19603f3d011682016040523d82523d6000602084013e611bb1565b606091505b5050905080611bd25760405162461bcd60e51b81526004016109eb906145e0565b505b5050505050505050505050505050505050565b6001600160a01b038216600090815260086020908152604080832061ffff8716845290915290206060906001831415611c7b57805461ffff16611c655761ffff808616600090815260096020908152604091829020549151611c4e93929092169101614d0f565b604051602081830303815290604052915050611f48565b8054604051611c4e9161ffff1690602001614d0f565b6002831415611cf157805462010000900467ffffffffffffffff16611ccf5761ffff8516600090815260096020908152604091829020549151611c4e9262010000900467ffffffffffffffff169101614ff0565b8054604051611c4e9162010000900467ffffffffffffffff1690602001614ff0565b6003831415611d7c5780546a010000000000000000000090046001600160a01b0316611d535761ffff8516600090815260096020908152604091829020549151611c4e926a010000000000000000000090046001600160a01b031691016142f2565b8054604051611c4e916a010000000000000000000090046001600160a01b0316906020016142f2565b6004831415611e355780547e01000000000000000000000000000000000000000000000000000000000000900461ffff16611dfd5761ffff808616600090815260096020908152604091829020549151611c4e937e010000000000000000000000000000000000000000000000000000000000009093049092169101614d0f565b8054604051611c4e917e01000000000000000000000000000000000000000000000000000000000000900461ffff1690602001614d0f565b6005831415611ea257600181015467ffffffffffffffff16611e835761ffff8516600090815260096020908152604091829020600101549151611c4e9267ffffffffffffffff169101614ff0565b6001810154604051611c4e9167ffffffffffffffff1690602001614ff0565b6006831415611f305760018101546801000000000000000090046001600160a01b0316611f065761ffff8516600090815260096020908152604091829020600101549151611c4e926801000000000000000090046001600160a01b031691016142f2565b6001810154604051611c4e916801000000000000000090046001600160a01b0316906020016142f2565b60405162461bcd60e51b81526004016109eb9061445b565b9392505050565b611f5761344c565b6001600160a01b0316611f6861293e565b6001600160a01b031614611fc3576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116611fe95760405162461bcd60e51b81526004016109eb90614526565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556040517f33d644987381deff4408951d55afa136f124e22a7810b163b2aaa3ebef770f649061204c9083906142f2565b60405180910390a150565b60065481565b60006120698787612976565b60408101519091506001600160a01b031633146120985760405162461bcd60e51b81526004016109eb90614765565b6120a0613905565b61ffff8089166000818152600b60209081526040808320875190951683529381528382205460a08701516001600160a01b039081168452600f83528584209484529382528483208a84528252939091209085015181549290931692909167ffffffffffffffff90911611156121275760405162461bcd60e51b81526004016109eb90614c2f565b61ffff8a166000908152600e60205260409081902054600183015491517fb71e0f7100000000000000000000000000000000000000000000000000000000815290916001600160a01b0385169163b71e0f719161218c918b908b908790600401614389565b600060405180830381600087803b1580156121a657600080fd5b505af11580156121ba573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526122009190810190613d00565b60a081015161ffff8d1660009081526010602052604090205491955014925061223e9150505760405162461bcd60e51b81526004016109eb90614b18565b866001600160a01b031681606001516001600160a01b0316146122735760405162461bcd60e51b81526004016109eb9061472e565b80516080820151606083015160408085015160c086015191517fc2fa48130000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169563c2fa4813956122f5959194909391928e9190600401614d96565b600060405180830381600087803b15801561230f57600080fd5b505af1158015612323573d6000803e3d6000fd5b505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b0381166000908152600460205260409020545b919050565b336000908152600f6020908152604080832061ffff8816845282528083208684529091529020805483116123ba5760405162461bcd60e51b81526004016109eb906147f9565b828155600181018290556040517fc5e97f049604c4d8626704341240f021a22cee0d8b66ec306a45344be67733a0906123fa908790339087908990614d3b565b60405180910390a15050505050565b61241161344c565b6001600160a01b031661242261293e565b6001600160a01b03161461247d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600481565b6124ec61344c565b6001600160a01b03166124fd61293e565b6001600160a01b031614612558576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03811661257e5760405162461bcd60e51b81526004016109eb9061479c565b61ffff8281166000908152600c60205260409020548116106125b25760405162461bcd60e51b81526004016109eb906149ca565b61ffff8083166000908152600c60209081526040808320805480861660010186167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009091161790819055600b83528184209416835292905281902080546001600160a01b0384167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116179055517f802d55279d51813cb7a9a98e8fd2d7bec5346cb830901c11b85d1650cb857e9a906126709084908490614d1e565b60405180910390a15050565b61268461344c565b6001600160a01b031661269561293e565b6001600160a01b0316146126f0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61ffff8085166000908152600a6020908152604080832093871683529290522061271b908383613943565b507f4a5695eee2a74d548d5f5c485a3de99ace99e3b664c8e30a90f49be6ebb54932848484846040516127519493929190614e91565b60405180910390a150505050565b600260005414156127b7576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000556003546001600160a01b031633146127e65760405162461bcd60e51b81526004016109eb90614424565b6007546127f39082613450565b60075560025461280d906001600160a01b03168383613595565b7f3a20c8c3cd1848485ae8261a52398bb9b26f195b717306b3cf7f058e62c095d533838360405161284093929190614306565b60405180910390a150506001600055565b61285961344c565b6001600160a01b031661286a61293e565b6001600160a01b0316146128c5576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61ffff82166000908152600e6020526040902054156128f65760405162461bcd60e51b81526004016109eb90614b75565b61ffff82166000908152600e602052604090819020829055517f0611bb2107e385b79ec826fff8ecc1c1248a7aae3c875c96668f8cfbf1734220906126709084908490614d65565b6001546001600160a01b031690565b600581565b600e6020526000908152604090205481565b60046020526000908152604090205481565b61297e6139ed565b6001600160a01b03808316600090815260086020908152604080832061ffff808916808652918452828520835160c0810185528154808416825267ffffffffffffffff6201000082048116838901526a010000000000000000000082048a16838801527e010000000000000000000000000000000000000000000000000000000000009091048416606083015260019092015491821660808201526801000000000000000090910490961660a087015290845260099092529091208251909116612a4b57805461ffff1682525b602082015167ffffffffffffffff16612a7657805462010000900467ffffffffffffffff1660208301525b60408201516001600160a01b0316612aa75780546a010000000000000000000090046001600160a01b031660408301525b606082015161ffff16612ae25780547e01000000000000000000000000000000000000000000000000000000000000900461ffff1660608301525b608082015167ffffffffffffffff16612b0a57600181015467ffffffffffffffff1660808301525b60a08201516001600160a01b0316612b3c5760018101546801000000000000000090046001600160a01b031660a08301525b509392505050565b61271081565b600c6020526000908152604090205461ffff1681565b600d60209081526000928352604080842090915290825290205460ff1681565b600f6020908152600093845260408085208252928452828420905282529020805460019091015482565b600b6020908152600092835260408084209091529082529020546001600160a01b031681565b60086020908152600092835260408084209091529082529020805460019091015461ffff8083169267ffffffffffffffff6201000082048116936001600160a01b036a010000000000000000000084048116947e010000000000000000000000000000000000000000000000000000000000009094049093169291811691680100000000000000009091041686565b6001600160a01b031660009081526005602052604090205490565b60106020526000908152604090205481565b612c9461344c565b6001600160a01b0316612ca561293e565b6001600160a01b031614612d00576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61ffff8083166000908152600d60209081526040808320938516835292905281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517fec23bee6f88cfecebb09d6aaaed66f0ce110debc1f61117c8270a7116597df9a906126709084908490614df7565b612d83613a22565b506001600160a01b0383166000908152600f6020908152604080832061ffff86168452825280832084845282529182902082518084019093528054835260010154908201529392505050565b612dd761344c565b6001600160a01b0316612de861293e565b6001600160a01b031614612e43576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61ffff821660009081526010602052604090205415612e745760405162461bcd60e51b81526004016109eb9061496d565b61ffff821660009081526010602052604090819020829055517f0dad975e1d2fbe771c95cdcc7be9a1e61181de7173abe0a32b8f8f83140873e5906126709084908490614d65565b612ec461344c565b6001600160a01b0316612ed561293e565b6001600160a01b031614612f30576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116612f565760405162461bcd60e51b81526004016109eb90614910565b600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790556040517fcb7ef3e545f5cdb893f5c568ba710fe08f336375a2d9fd66e161033f8fc09ef39061204c9083906142f2565b612fc161344c565b6001600160a01b0316612fd261293e565b6001600160a01b03161461302d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166130725760405162461bcd60e51b81526004018080602001828103825260268152602001806150d56026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60075481565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146131345760405162461bcd60e51b81526004016109eb90614a27565b6001600160a01b038416600090815260086020908152604080832061ffff89168452909152902060018414156131e157600061317283850185613ddc565b61ffff8089166000908152600c602052604090205491925090811690821611156131ae5760405162461bcd60e51b81526004016109eb906148b3565b81547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff91909116178155613407565b60028414156132385760006131f88385018561416e565b825467ffffffffffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffff90911617825550613407565b600384141561329657600061324f83850185613b51565b82546001600160a01b039091166a0100000000000000000000027fffff0000000000000000000000000000000000000000ffffffffffffffffffff90911617825550613407565b60048414156133505760006132ad83850185613ddc565b61ffff8089166000908152600d602090815260408083209385168352929052205490915060ff16806132e1575061ffff8116155b6132fd5760405162461bcd60e51b81526004016109eb906143c7565b815461ffff9091167e01000000000000000000000000000000000000000000000000000000000000027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909116178155613407565b60058414156133a85760006133678385018561416e565b6001830180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9290921691909117905550613407565b6006841415611f305760006133bf83850185613b51565b6001830180546001600160a01b0390921668010000000000000000027fffffffff0000000000000000000000000000000000000000ffffffffffffffff909216919091179055505b7ffc01bf86212a14151d51d1be5c2ac64d67d5ec823dfc6f53298d7ce3f3d3d2528585858560405161343c949392919061432a565b60405180910390a1505050505050565b3390565b6000828211156134a7576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015611f48576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261358f90859061361a565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261361590849061361a565b505050565b600061366f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166136cb9092919063ffffffff16565b8051909150156136155780806020019051602081101561368e57600080fd5b50516136155760405162461bcd60e51b815260040180806020018281038252602a815260200180615121602a913960400191505060405180910390fd5b60606136da84846000856136e2565b949350505050565b6060824710156137235760405162461bcd60e51b81526004018080602001828103825260268152602001806150fb6026913960400191505060405180910390fd5b61372c8561385b565b61377d576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106137d957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161379c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461383b576040519150601f19603f3d011682016040523d82523d6000602084013e613840565b606091505b5091509150613850828286613861565b979650505050505050565b3b151590565b60608315613870575081611f48565b8251156138805782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156138ca5781810151838201526020016138b2565b50505050905090810190601f1680156138f75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040805160e08101825260008082526020820181905291810182905260608082018390526080820181905260a082019290925260c081019190915290565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261397957600085556139dd565b82601f106139b0578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008235161785556139dd565b828001600101855582156139dd579182015b828111156139dd5782358255916020019190600101906139c2565b506139e9929150613a39565b5090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b604080518082019091526000808252602082015290565b5b808211156139e95760008155600101613a3a565b803561236f81615096565b805161236f81615096565b60008083601f840112613a75578182fd5b50813567ffffffffffffffff811115613a8c578182fd5b602083019150836020828501011115613aa457600080fd5b9250929050565b600082601f830112613abb578081fd5b815167ffffffffffffffff811115613acf57fe5b613b0060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601615046565b818152846020838601011115613b14578283fd5b6136da82602083016020870161506a565b803561236f816150ae565b805161236f816150ae565b803561236f816150be565b805161236f816150be565b600060208284031215613b62578081fd5b8135611f4881615096565b60008060408385031215613b7f578081fd5b8235613b8a81615096565b91506020830135613b9a816150ae565b809150509250929050565b600080600060608486031215613bb9578081fd5b8335613bc481615096565b92506020840135613bd4816150ae565b929592945050506040919091013590565b60008060408385031215613bf7578182fd5b8235613c0281615096565b946020939093013593505050565b60008060008060008060008060008060006101008c8e031215613c31578687fd5b613c3a8c613a4e565b9a50613c4860208d01613b3b565b9950613c5660408d01613b25565b985067ffffffffffffffff8060608e01351115613c71578788fd5b613c818e60608f01358f01613a64565b909950975060808d0135811015613c96578687fd5b613ca68e60808f01358f01613a64565b9097509550613cb760a08e01613a4e565b9450613cc560c08e01613a4e565b93508060e08e01351115613cd7578283fd5b50613ce88d60e08e01358e01613a64565b81935080925050509295989b509295989b9093969950565b600060208284031215613d11578081fd5b815167ffffffffffffffff80821115613d28578283fd5b9083019060e08286031215613d3b578283fd5b613d4560e0615046565b613d4e83613b30565b8152613d5c60208401613b30565b6020820152613d6d60408401613b46565b6040820152613d7e60608401613a59565b6060820152608083015182811115613d94578485fd5b613da087828601613aab565b60808301525060a083015160a082015260c083015182811115613dc1578485fd5b613dcd87828601613aab565b60c08301525095945050505050565b600060208284031215613ded578081fd5b8135611f48816150ae565b60008060408385031215613e0a578182fd5b8235613e15816150ae565b91506020830135613b9a81615096565b600080600080600080600060a0888a031215613e3f578081fd5b8735613e4a816150ae565b96506020880135613e5a81615096565b9550604088013567ffffffffffffffff80821115613e76578283fd5b613e828b838c01613a64565b909750955060608a013591508115158214613e9b578283fd5b90935060808901359080821115613eb0578283fd5b50613ebd8a828b01613a64565b989b979a50959850939692959293505050565b600080600060608486031215613ee4578081fd5b8335613eef816150ae565b92506020840135613bd481615096565b60008060008060008060a08789031215613f17578384fd5b8635613f22816150ae565b95506020870135613f3281615096565b94506040870135935060608701359250608087013567ffffffffffffffff811115613f5b578283fd5b613f6789828a01613a64565b979a9699509497509295939492505050565b600080600080600060808688031215613f90578283fd5b8535613f9b816150ae565b94506020860135613fab81615096565b935060408601359250606086013567ffffffffffffffff811115613fcd578182fd5b613fd988828901613a64565b969995985093965092949392505050565b60008060408385031215613ffc578182fd5b8235613c02816150ae565b6000806000806080858703121561401c578182fd5b8435614027816150ae565b966020860135965060408601359560600135945092505050565b60008060408385031215614053578182fd5b8235613b8a816150ae565b60008060008060608587031215614073578182fd5b843561407e816150ae565b9350602085013561408e816150ae565b9250604085013567ffffffffffffffff8111156140a9578283fd5b6140b587828801613a64565b95989497509550505050565b600080600080600080600060e0888a0312156140db578081fd5b87356140e6816150ae565b965060208801356140f6816150ae565b95506040880135614106816150be565b9450606088013561411681615096565b93506080880135614126816150ae565b925060a0880135614136816150ae565b915060c088013561414681615096565b8091505092959891949750929550565b600060208284031215614167578081fd5b5051919050565b60006020828403121561417f578081fd5b8135611f48816150be565b6000806000806080858703121561419f578182fd5b843560ff811681146141af578283fd5b935060208501356141bf81615096565b925060408501356141cf81615096565b9396929550929360600135925050565b600082845282826020860137806020848601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011685010190509392505050565b6000815180845261423f81602086016020860161506a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b90565b60007fffffffffffffffff0000000000000000000000000000000000000000000000008860c01b1682527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008760601b1660088301528486601c840137848201601c81018281528486823750909201601c019182525095945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60006001600160a01b0386168252846020830152606060408301526143536060830184866141df565b9695505050505050565b901515815260200190565b92151583526020830191909152604082015260600190565b90815260200190565b6000858252606060208301526143a36060830185876141df565b905082604083015295945050505050565b600060208252611f486020830184614227565b60208082526026908201527f4c617965725a65726f3a20696e76616c6964206f7574626f756e642070726f6f60408201527f6620747970650000000000000000000000000000000000000000000000000000606082015260800190565b60208082526018908201527f4c617965725a65726f3a206f6e6c792074726561737572790000000000000000604082015260600190565b6020808252601e908201527f4c617965725a65726f3a20496e76616c696420636f6e66696720747970650000604082015260600190565b6020808252601a908201527f4c617965725a65726f3a207769746864726177206661696c6564000000000000604082015260600190565b60208082526025908201527f4c617965725a65726f3a206e6f7420656e6f756768206e617469766520666f7260408201527f2066656573000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526031908201527f4c617965725a65726f3a205f6c617965725a65726f546f6b656e2063616e6e6f60408201527f74206265207a65726f2061646472657373000000000000000000000000000000606082015260800190565b60208082526022908201527f4c617965725a65726f3a20696e76616c69642072656c6179657220616464726560408201527f7373000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f4c617965725a65726f3a206661696c656420746f20726566756e640000000000604082015260600190565b6020808252602b908201527f4c617965725a65726f3a206d75737420626520706169642062792073656e646560408201527f72206f72206f726967696e000000000000000000000000000000000000000000606082015260800190565b60208082526021908201527f4c617965725a65726f3a20636861696e496420646f6573206e6f74206578697360408201527f7400000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526021908201527f4c617965725a65726f3a20696e76616c6964206f7261636c652061646472657360408201527f7300000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601e908201527f4c617965725a65726f3a20696e76616c69642064737420616464726573730000604082015260600190565b6020808252601a908201527f4c617965725a65726f3a20696e76616c69642072656c61796572000000000000604082015260600190565b60208082526029908201527f4c617965725a65726f3a206c6962726172792063616e6e6f74206265207a657260408201527f6f20616464726573730000000000000000000000000000000000000000000000606082015260800190565b60208082526043908201527f4c617965725a65726f3a206f7261636c6520646174612063616e206f6e6c792060408201527f75706461746520696620697420686173206d6f726520636f6e6669726d61746960608201527f6f6e730000000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526017908201527f4c617965725a65726f3a6f6e6c79207472656173757279000000000000000000604082015260600190565b60208082526030908201527f4c617965725a65726f3a20696e76616c696420696e626f756e642070726f6f6660408201527f206c6962726172792076657273696f6e00000000000000000000000000000000606082015260800190565b6020808252602a908201527f4c617965725a65726f3a2074726561737572792063616e6e6f74206265207a6560408201527f726f206164647265737300000000000000000000000000000000000000000000606082015260800190565b60208082526021908201527f4c617965725a65726f3a2072656d6f746520756c6e20616c726561647920736560408201527f7400000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f4c617965725a65726f3a2063616e206e6f7420616464206e6577206c6962726160408201527f7279000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526018908201527f4c617965725a65726f3a206f6e6c7920656e64706f696e740000000000000000604082015260600190565b6020808252602e908201527f4c617965725a65726f3a20696e76616c6964206f7574626f756e6420626c6f6360408201527f6b20636f6e6669726d6174696f6e000000000000000000000000000000000000606082015260800190565b60208082526024908201527f4c617965725a65726f3a20756e737570706f727465642077697468647261772060408201527f7479706500000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526028908201527f4c617965725a65726f3a205f7061636b65742e756c6e4164647265737320697360408201527f20696e76616c6964000000000000000000000000000000000000000000000000606082015260800190565b60208082526030908201527f4c617965725a65726f3a2072656d6f746520636861696e20616464726573732060408201527f73697a6520616c72656164792073657400000000000000000000000000000000606082015260800190565b6020808252602d908201527f4c617965725a65726f3a20696e76616c696420696e626f756e6420626c6f636b60408201527f20636f6e6669726d6174696f6e00000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4c617965725a65726f3a206e6f7420656e6f75676820626c6f636b20636f6e6660408201527f69726d6174696f6e730000000000000000000000000000000000000000000000606082015260800190565b600060c08201905061ffff808451168352602084015167ffffffffffffffff8082166020860152604086015191506001600160a01b0380831660408701528360608801511660608701528160808801511660808701528060a08801511660a08701525050505092915050565b815181526020918201519181019190915260400190565b61ffff91909116815260200190565b61ffff9290921682526001600160a01b0316602082015260400190565b61ffff9490941684526001600160a01b039290921660208401526040830152606082015260800190565b61ffff929092168252602082015260400190565b600061ffff84168252604060208301526136da6040830184614227565b600061ffff8816825260c06020830152614db360c0830188614227565b6001600160a01b038716604084015267ffffffffffffffff8616606084015284608084015282810360a0840152614dea8185614227565b9998505050505050505050565b61ffff92831681529116602082015260400190565b600061ffff80891683528088166020840152506001600160a01b038616604083015284606083015260a06080830152614e4960a0830184866141df565b98975050505050505050565b600061ffff80881683528087166020840152506001600160a01b038516604083015283606083015260a0608083015261385060a0830184614227565b600061ffff8087168352808616602084015250606060408301526143536060830184866141df565b600061ffff808616835280851660208401525060606040830152614ee06060830184614227565b95945050505050565b61ffff938416815291909216602082015267ffffffffffffffff909116604082015260600190565b61ffff9788168152958716602087015267ffffffffffffffff9490941660408601526001600160a01b039283166060860152908516608085015290931660a083015290911660c082015260e00190565b61ffff968716815267ffffffffffffffff95861660208201526001600160a01b03948516604082015292909516606083015290921660808301529190911660a082015260c00190565b600061ffff808816835267ffffffffffffffff87166020840152808616604084015250608060608301526138506080830184866141df565b918252602082015260400190565b67ffffffffffffffff91909116815260200190565b60ff91909116815260200190565b60ff9590951685526001600160a01b03938416602086015291831660408501529091166060830152608082015260a00190565b60405181810167ffffffffffffffff8111828210171561506257fe5b604052919050565b60005b8381101561508557818101518382015260200161506d565b8381111561358f5750506000910152565b6001600160a01b03811681146150ab57600080fd5b50565b61ffff811681146150ab57600080fd5b67ffffffffffffffff811681146150ab57600080fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220e17d259a389652c35621600dfb3202de3541da2766e0ab74bef94fe8b06a386b64736f6c63430007060033\";\n\ntype UltraLightNodeConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: UltraLightNodeConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class UltraLightNode__factory extends ContractFactory {\n constructor(...args: UltraLightNodeConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n _endpoint: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<UltraLightNode> {\n return super.deploy(_endpoint, overrides || {}) as Promise<UltraLightNode>;\n }\n override getDeployTransaction(\n _endpoint: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(_endpoint, overrides || {});\n }\n override attach(address: string): UltraLightNode {\n return super.attach(address) as UltraLightNode;\n }\n override connect(signer: Signer): UltraLightNode__factory {\n return super.connect(signer) as UltraLightNode__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): UltraLightNodeInterface {\n return new utils.Interface(_abi) as UltraLightNodeInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): UltraLightNode {\n return new Contract(address, _abi, signerOrProvider) as UltraLightNode;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n BigNumberish,\n Overrides,\n} from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../common\";\nimport type {\n UltraLightNodeV2,\n UltraLightNodeV2Interface,\n} from \"../UltraLightNodeV2\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_endpoint\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_nonceContract\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"_localChainId\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"lib\",\n type: \"address\",\n },\n ],\n name: \"AddInboundProofLibraryForChain\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"userApplication\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"configType\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"newConfig\",\n type: \"bytes\",\n },\n ],\n name: \"AppConfigUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"proofType\",\n type: \"uint16\",\n },\n ],\n name: \"EnableSupportedOutboundProof\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"lookupHash\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"blockData\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"confirmations\",\n type: \"uint256\",\n },\n ],\n name: \"HashReceived\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"payloadHash\",\n type: \"bytes32\",\n },\n ],\n name: \"InvalidDst\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n name: \"Packet\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"payloadHash\",\n type: \"bytes32\",\n },\n ],\n name: \"PacketReceived\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"adapterParams\",\n type: \"bytes\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n ],\n name: \"RelayerParams\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"size\",\n type: \"uint256\",\n },\n ],\n name: \"SetChainAddressSize\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"proofType\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"SetDefaultAdapterParamsForChainId\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"inboundProofLib\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"inboundBlockConfirm\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"relayer\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"outboundBlockConfirm\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n ],\n name: \"SetDefaultConfigForChainId\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"tokenAddress\",\n type: \"address\",\n },\n ],\n name: \"SetLayerZeroToken\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"uln\",\n type: \"bytes32\",\n },\n ],\n name: \"SetRemoteUln\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"treasuryAddress\",\n type: \"address\",\n },\n ],\n name: \"SetTreasury\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"msgSender\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"WithdrawNative\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"msgSender\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"WithdrawZRO\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_INBOUND_BLOCK_CONFIRMATIONS\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_INBOUND_PROOF_LIBRARY_VERSION\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_ORACLE\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_OUTBOUND_BLOCK_CONFIRMATIONS\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_OUTBOUND_PROOF_TYPE\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_RELAYER\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_address\",\n type: \"address\",\n },\n ],\n name: \"accruedNativeFee\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_library\",\n type: \"address\",\n },\n ],\n name: \"addInboundProofLibraryForChain\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"appConfig\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"inboundProofLibraryVersion\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"inboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"relayer\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"outboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"chainAddressSizeMap\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"defaultAdapterParams\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"defaultAppConfig\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"inboundProofLibraryVersion\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"inboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"relayer\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"outboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_proofType\",\n type: \"uint16\",\n },\n ],\n name: \"enableSupportedOutboundProof\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"endpoint\",\n outputs: [\n {\n internalType: \"contract ILayerZeroEndpoint\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_ua\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n {\n internalType: \"bool\",\n name: \"_payInZRO\",\n type: \"bool\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"estimateFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"nativeFee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"zroFee\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_remoteChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_ua\",\n type: \"address\",\n },\n ],\n name: \"getAppConfig\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"inboundProofLibraryVersion\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"inboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"relayer\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"outboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n ],\n internalType:\n \"struct ILayerZeroUltraLightNodeV2.ApplicationConfiguration\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_remoteChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_ua\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_configType\",\n type: \"uint256\",\n },\n ],\n name: \"getConfig\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_path\",\n type: \"bytes\",\n },\n ],\n name: \"getOutboundNonce\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n name: \"hashLookup\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"inboundProofLibrary\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"layerZeroToken\",\n outputs: [\n {\n internalType: \"contract IERC20\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"localChainId\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"maxInboundProofLibrary\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"nativeFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"nonceContract\",\n outputs: [\n {\n internalType: \"contract NonceContract\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_ua\",\n type: \"address\",\n },\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_path\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n {\n internalType: \"address payable\",\n name: \"_refundAddress\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_zroPaymentAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"send\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint256\",\n name: \"_size\",\n type: \"uint256\",\n },\n ],\n name: \"setChainAddressSize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_remoteChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_ua\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_configType\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_config\",\n type: \"bytes\",\n },\n ],\n name: \"setConfig\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_proofType\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"setDefaultAdapterParamsForChainId\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_inboundProofLibraryVersion\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"_inboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"_relayer\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"_outboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"_oracle\",\n type: \"address\",\n },\n ],\n name: \"setDefaultConfigForChainId\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_layerZeroToken\",\n type: \"address\",\n },\n ],\n name: \"setLayerZeroToken\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_remoteChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"_remoteUln\",\n type: \"bytes32\",\n },\n ],\n name: \"setRemoteUln\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_treasury\",\n type: \"address\",\n },\n ],\n name: \"setTreasury\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"supportedOutboundProof\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"treasuryContract\",\n outputs: [\n {\n internalType: \"contract ILayerZeroTreasury\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"treasuryZROFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"ulnLookup\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"_lookupHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256\",\n name: \"_confirmations\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"_blockData\",\n type: \"bytes32\",\n },\n ],\n name: \"updateHash\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_gasLimit\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"_lookupHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"_blockData\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"_transactionProof\",\n type: \"bytes\",\n },\n ],\n name: \"validateTransactionProof\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address payable\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawNative\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawZRO\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x60e06040523480156200001157600080fd5b50604051620055423803806200554283398101604081905262000034916200013f565b60016000908155620000456200011e565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b038316620000c55760405162461bcd60e51b8152600401620000bc9062000191565b60405180910390fd5b6001600160a01b038216620000ee5760405162461bcd60e51b8152600401620000bc90620001db565b60f01b6001600160f01b03191660a052606091821b6001600160601b0319908116608052911b1660c0526200022a565b3390565b80516001600160a01b03811681146200013a57600080fd5b919050565b60008060006060848603121562000154578283fd5b6200015f8462000122565b92506200016f6020850162000122565b9150604084015161ffff8116811462000186578182fd5b809150509250925092565b6020808252602a908201527f4c617965725a65726f3a20656e64706f696e742063616e6e6f74206265207a65604082015269726f206164647265737360b01b606082015260800190565b6020808252602f908201527f4c617965725a65726f3a206e6f6e6365436f6e74726163742063616e6e6f742060408201526e6265207a65726f206164647265737360881b606082015260800190565b60805160601c60a05160f01c60c05160601c6152bf620002836000398061084d5280611045528061267852508061124f528061175052806123ef525080610e9e5280611774528061257c5280612c0c52506152bf6000f3fe6080604052600436106102e75760003560e01c80638317814a11610184578063d543c774116100d6578063ed28580a1161008a578063f47a5feb11610064578063f47a5feb146107f6578063f58589a21461080b578063f8e1734c1461082b576102e7565b8063ed28580a14610796578063f0f44260146107b6578063f2fde38b146107d6576102e7565b8063ddfdef5a116100bb578063ddfdef5a14610736578063ea216c2114610756578063eb0d4c3114610776576102e7565b8063d543c774146106e9578063db00719b14610716576102e7565b8063959f594311610138578063b77d22ad11610112578063b77d22ad14610687578063b8e7e3e01461069c578063b9a99bed146106bc576102e7565b8063959f59431461061a578063987fa2d51461063a578063a46622221461065a576102e7565b806387078f9f1161016957806387078f9f146105d05780638da5cb5b146105f0578063904d3b8d14610605576102e7565b80638317814a146105905780638525b711146105b0576102e7565b806352d2871f1161023d5780636a14ac82116101f1578063759c5b3b116101cb578063759c5b3b1461053b5780638140666e1461055b5780638207f79d14610570576102e7565b80636a14ac82146104e6578063704316e514610506578063715018a614610526576102e7565b80635b056da5116102225780635b056da51461048f5780635e280f11146104b157806369412bfa146104c6576102e7565b806352d2871f1461044f57806352d3b5001461046f576102e7565b80632cfacb061161029f57806340a7bb101161027957806340a7bb10146103f957806349148c37146104275780634d3a0f7c1461043c576102e7565b80632cfacb06146103905780632f813464146103b257806331bd2430146103e4576102e7565b806307b9ca7c116102d057806307b9ca7c1461033957806318da00111461034e5780632a819bbf14610363576102e7565b806302bd9743146102ec57806307b18bde14610317575b600080fd5b3480156102f857600080fd5b5061030161084b565b60405161030e919061448c565b60405180910390f35b34801561032357600080fd5b50610337610332366004613c3a565b61086f565b005b34801561034557600080fd5b506103016109f9565b34801561035a57600080fd5b50610301610a08565b34801561036f57600080fd5b5061038361037e366004614180565b610a17565b60405161030e9190614521565b34801561039c57600080fd5b506103a5610ad9565b60405161030e91906144c3565b3480156103be57600080fd5b506103d26103cd366004613ec0565b610ade565b60405161030e96959493929190615117565b3480156103f057600080fd5b506103a5610b62565b34801561040557600080fd5b50610419610414366004613f09565b610b67565b60405161030e929190615160565b34801561043357600080fd5b506103a5610e97565b61033761044a366004613cf4565b610e9c565b34801561045b57600080fd5b5061038361046a366004613fb4565b6112e8565b34801561047b57600080fd5b5061033761048a366004613c1e565b611652565b34801561049b57600080fd5b506104a461174e565b60405161030e9190614fe2565b3480156104bd57600080fd5b50610301611772565b3480156104d257600080fd5b506103a56104e1366004613c1e565b611796565b3480156104f257600080fd5b50610337610501366004614200565b6117b5565b34801561051257600080fd5b506103376105213660046140f3565b611b17565b34801561053257600080fd5b50610337611bdc565b34801561054757600080fd5b506103a5610556366004613c9d565b611cb2565b34801561056757600080fd5b506103a5611cde565b34801561057c57600080fd5b5061033761058b366004613edc565b611ce3565b34801561059c57600080fd5b506103376105ab36600461419d565b611e7c565b3480156105bc57600080fd5b506103376105cb366004613ce2565b611f65565b3480156105dc57600080fd5b506103376105eb3660046140d6565b612067565b3480156105fc57600080fd5b5061030161215e565b34801561061157600080fd5b506103a561216d565b34801561062657600080fd5b506103a5610635366004613ec0565b612172565b34801561064657600080fd5b50610337610655366004613ff4565b612184565b34801561066657600080fd5b5061067a610675366004613edc565b612618565b60405161030e9190614f76565b34801561069357600080fd5b506103a561262a565b3480156106a857600080fd5b506104a46106b7366004613ec0565b61262f565b3480156106c857600080fd5b506106dc6106d736600461412d565b612645565b60405161030e919061516e565b3480156106f557600080fd5b50610709610704366004614180565b612709565b60405161030e91906144a0565b34801561072257600080fd5b50610301610731366004614180565b612729565b34801561074257600080fd5b506103d2610751366004613c65565b61274f565b34801561076257600080fd5b506103a5610771366004613ec0565b6127de565b34801561078257600080fd5b50610337610791366004614180565b6127f0565b3480156107a257600080fd5b506103376107b13660046140d6565b6128de565b3480156107c257600080fd5b506103376107d1366004613c1e565b6129c9565b3480156107e257600080fd5b506103376107f1366004613c1e565b612ac5565b34801561080257600080fd5b506103a5612bf2565b34801561081757600080fd5b506103a5610826366004613c1e565b612bf8565b34801561083757600080fd5b50610337610846366004614065565b612c0a565b7f000000000000000000000000000000000000000000000000000000000000000081565b600260005414156108c7576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000556001600160a01b0382166108fb5760405162461bcd60e51b81526004016108f290614745565b60405180910390fd5b336000908152600460205260409020546109159082612f71565b336000908152600460205260408082209290925590516001600160a01b038416908390610941906143c1565b60006040518083038185875af1925050503d806000811461097e576040519150601f19603f3d011682016040523d82523d6000602084013e610983565b606091505b50509050806109a45760405162461bcd60e51b81526004016108f2906146b1565b826001600160a01b0316336001600160a01b03167f3bfd26201736b5cb14a562ab3cfc2bef76901726e3a78483d6288af47131e1d9846040516109e791906144c3565b60405180910390a35050600160005550565b6002546001600160a01b031681565b6003546001600160a01b031681565b60086020908152600092835260408084208252918352918190208054825160026001831615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190921691909104601f810185900485028201850190935282815292909190830182828015610ad15780601f10610aa657610100808354040283529160200191610ad1565b820191906000526020600020905b815481529060010190602001808311610ab457829003601f168201915b505050505081565b600381565b6007602052600090815260409020805460019091015461ffff8083169267ffffffffffffffff6201000082048116936001600160a01b036a010000000000000000000084048116947e010000000000000000000000000000000000000000000000000000000000009094049093169291811691680100000000000000009091041686565b600681565b6000806000610b768a8a612fce565b905060608415610bbf5785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929350610c8e92505050565b61ffff808c166000908152600860209081526040808320606087015190941683529281529082902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018616150201909316929092049182018490048402810184019094528084529091830182828015610c865780601f10610c5b57610100808354040283529160200191610c86565b820191906000526020600020905b815481529060010190602001808311610c6957829003601f168201915b505050505090505b600082604001516001600160a01b031663c03f15298d85606001518e8e8e9050876040518663ffffffff1660e01b8152600401610ccf9594939291906150a5565b60206040518083038186803b158015610ce757600080fd5b505afa158015610cfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1f9190614295565b905060008b905060008460a001516001600160a01b0316635553fb8e8f87606001518860800151866040518563ffffffff1660e01b8152600401610d6694939291906150e1565b60206040518083038186803b158015610d7e57600080fd5b505afa158015610d92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db69190614295565b6003546040517f5cbbbd750000000000000000000000000000000000000000000000000000000081529192506000916001600160a01b0390911690635cbbbd7590610e09908e90889087906004016144ab565b60206040518083038186803b158015610e2157600080fd5b505afa158015610e35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e599190614295565b90508a610e695780975087610e6e565b809650865b50610e8382610e7d8a87613199565b90613199565b975050505050505097509795505050505050565b600281565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610ee45760405162461bcd60e51b81526004016108f290614d6e565b61ffff89166000908152600e60205260409020548b908a90610f185760405162461bcd60e51b81526004016108f2906145e6565b61ffff81166000908152600c6020526040812054606091908015801590610f415750601481018c145b610f5d5760405162461bcd60e51b81526004016108f290614e02565b6000808e8e8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505083810160140151925090506001600160a01b0387811690831614610fcc5760405162461bcd60e51b81526004016108f290614a4f565b8e8e6000908592610fdf939291906151a7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040517f6fe7b673000000000000000000000000000000000000000000000000000000008152929750506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691636fe7b673915061107f9089908b908690600401614ff1565b602060405180830381600087803b15801561109957600080fd5b505af11580156110ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d191906142c9565b935050505060008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093945061111d9250879150889050612fce565b9050600061116586838986518d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506131f392505050565b9050600061117487848a6133cd565b9050600061118483838b8f613487565b9050600061119682610e7d8686613199565b9050348111156111b85760405162461bcd60e51b81526004016108f2906146e8565b60006111c43483612f71565b9050801561124a5760008f6001600160a01b0316826040516111e5906143c1565b60006040518083038185875af1925050503d8060008114611222576040519150601f19603f3d011682016040523d82523d6000602084013e611227565b606091505b50509050806112485760405162461bcd60e51b81526004016108f29061485c565b505b6000887f00000000000000000000000000000000000000000000000000000000000000008d8d8d8c604051602001611287969594939291906143c4565b60405160208183030381529060405290507fe9bded5f24a4168e4f3bf44e00298c993b22376aad8c58c7dda9718a54cbea82816040516112c79190614521565b60405180910390a15050505050505050505050505050505050505050505050565b6001600160a01b038216600090815260066020908152604080832061ffff871684529091529020606090600183141561137c57805461ffff166113665761ffff80861660009081526007602090815260409182902054915161134f93929092169101614fe2565b60405160208183030381529060405291505061164b565b805460405161134f9161ffff1690602001614fe2565b60028314156113f257805462010000900467ffffffffffffffff166113d05761ffff851660009081526007602090815260409182902054915161134f9262010000900467ffffffffffffffff16910161516e565b805460405161134f9162010000900467ffffffffffffffff169060200161516e565b600383141561147d5780546a010000000000000000000090046001600160a01b03166114545761ffff851660009081526007602090815260409182902054915161134f926a010000000000000000000090046001600160a01b0316910161448c565b805460405161134f916a010000000000000000000090046001600160a01b03169060200161448c565b60048314156115365780547e01000000000000000000000000000000000000000000000000000000000000900461ffff166114fe5761ffff80861660009081526007602090815260409182902054915161134f937e010000000000000000000000000000000000000000000000000000000000009093049092169101614fe2565b805460405161134f917e01000000000000000000000000000000000000000000000000000000000000900461ffff1690602001614fe2565b60058314156115a357600181015467ffffffffffffffff166115845761ffff851660009081526007602090815260409182902060010154915161134f9267ffffffffffffffff16910161516e565b600181015460405161134f9167ffffffffffffffff169060200161516e565b60068314156116315760018101546801000000000000000090046001600160a01b03166116075761ffff851660009081526007602090815260409182902060010154915161134f926801000000000000000090046001600160a01b0316910161448c565b600181015460405161134f916801000000000000000090046001600160a01b03169060200161448c565b60405162461bcd60e51b81526004016108f29061467a565b505b9392505050565b61165a6135f1565b6001600160a01b031661166b61215e565b6001600160a01b0316146116c6576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166116ec5760405162461bcd60e51b81526004016108f2906147a2565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517f33d644987381deff4408951d55afa136f124e22a7810b163b2aaa3ebef770f6490600090a250565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b0381166000908152600460205260409020545b919050565b6117bd6135f1565b6001600160a01b03166117ce61215e565b6001600160a01b031614611829576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61ffff8088166000908152600a6020526040902054811690871611801590611855575060008661ffff16115b6118715760405162461bcd60e51b81526004016108f290614b9d565b60008567ffffffffffffffff161161189b5760405162461bcd60e51b81526004016108f290614ebc565b6001600160a01b0384166118c15760405162461bcd60e51b81526004016108f2906147ff565b61ffff8088166000908152600b602090815260408083209387168352929052205460ff166119015760405162461bcd60e51b81526004016108f290614589565b60008267ffffffffffffffff161161192b5760405162461bcd60e51b81526004016108f290614da5565b6001600160a01b0381166119515760405162461bcd60e51b81526004016108f290614927565b6040518060c001604052808761ffff1681526020018667ffffffffffffffff168152602001856001600160a01b031681526020018461ffff1681526020018367ffffffffffffffff168152602001826001600160a01b0316815250600760008961ffff1661ffff16815260200190815260200160002060008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600a6101000a8154816001600160a01b0302191690836001600160a01b03160217905550606082015181600001601e6101000a81548161ffff021916908361ffff16021790555060808201518160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060a08201518160010160086101000a8154816001600160a01b0302191690836001600160a01b031602179055509050508661ffff167f5a76432853a0871c4e780def7f3ffc7912339b53f022ac31127fe5ff84a36fa1878787878787604051611b0696959493929190615117565b60405180910390a250505050505050565b336000908152600d6020908152604080832061ffff8816845282528083208684528252808320848452909152902054828110611b655760405162461bcd60e51b81526004016108f290614ae3565b336000818152600d6020908152604080832061ffff8a1680855290835281842089855283528184208785529092529182902086905590517f74bbc026808dcba59692d6a8bb20596849ca718e10e2432c6cdf48af865bc5d990611bcd908890879089906144cc565b60405180910390a35050505050565b611be46135f1565b6001600160a01b0316611bf561215e565b6001600160a01b031614611c50576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600d60209081526000948552604080862082529385528385208152918452828420909152825290205481565b600481565b611ceb6135f1565b6001600160a01b0316611cfc61215e565b6001600160a01b031614611d57576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116611d7d5760405162461bcd60e51b81526004016108f290614a86565b61ffff8083166000908152600a60205260409020548116908110611db35760405162461bcd60e51b81526004016108f290614d11565b61ffff8381166000818152600a6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001660019790970195861696871790556009825280832095835294905283902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03861617905591519091907f802d55279d51813cb7a9a98e8fd2d7bec5346cb830901c11b85d1650cb857e9a90611e6f90859061448c565b60405180910390a2505050565b611e846135f1565b6001600160a01b0316611e9561215e565b6001600160a01b031614611ef0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61ffff8085166000908152600860209081526040808320938716835292905220611f1b9083836139e9565b508261ffff168461ffff167f4a5695eee2a74d548d5f5c485a3de99ace99e3b664c8e30a90f49be6ebb549328484604051611f5792919061450d565b60405180910390a350505050565b60026000541415611fbd576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000556003546001600160a01b03163314611fec5760405162461bcd60e51b81526004016108f290614643565b600554611ff99082612f71565b600555600254612013906001600160a01b031683836135f5565b816001600160a01b0316336001600160a01b03167f3a20c8c3cd1848485ae8261a52398bb9b26f195b717306b3cf7f058e62c095d58360405161205691906144c3565b60405180910390a350506001600055565b61206f6135f1565b6001600160a01b031661208061215e565b6001600160a01b0316146120db576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61ffff82166000908152600c60205260409020541561210c5760405162461bcd60e51b81526004016108f290614e5f565b61ffff82166000818152600c602052604090819020839055517f0611bb2107e385b79ec826fff8ecc1c1248a7aae3c875c96668f8cfbf1734220906121529084906144c3565b60405180910390a25050565b6001546001600160a01b031690565b600581565b600c6020526000908152604090205481565b60006121908888612fce565b60408101519091506001600160a01b031633146121bf5760405162461bcd60e51b81526004016108f290614a18565b6121c7613a93565b61ffff89166000908152600c6020526040902054806121f85760405162461bcd60e51b81526004016108f290614e02565b60a08301516001600160a01b03166000908152600d6020908152604080832061ffff8e16845282528083208a8452825280832089845290915290205480158015906122515750836020015167ffffffffffffffff168110155b61226d5760405162461bcd60e51b81526004016108f290614f19565b61ffff808c166000908152600960209081526040808320885190941683529290528190205490517fb71e0f710000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690819063b71e0f71906122df908b908b908b9089906004016144e2565b600060405180830381600087803b1580156122f957600080fd5b505af115801561230d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526123539190810190613de4565b60a081015161ffff8e166000908152600e6020526040902054919550149150508015612382575060a082015115155b61239e5760405162461bcd60e51b81526004016108f290614984565b8961ffff16826000015161ffff16146123c95760405162461bcd60e51b81526004016108f2906149e1565b80826080015151146123ed5760405162461bcd60e51b81526004016108f290614bfa565b7f000000000000000000000000000000000000000000000000000000000000000061ffff16826020015161ffff16146124385760405162461bcd60e51b81526004016108f290614b66565b886001600160a01b031682606001516001600160a01b03161461246d5760405162461bcd60e51b81526004016108f2906148f0565b6124768961367a565b6124e75781606001516001600160a01b0316826000015161ffff167fa2786598bd84ae4a299103996359e6cb4333404583256079dfc279386baf5832846080015185604001518660c00151805190602001206040516124d79392919061455a565b60405180910390a350505061260f565b600082608001518360600151604051602001612504929190614377565b604051602081830303815290604052905082606001516001600160a01b0316836000015161ffff167f2bd2d8a84b748439fd50d79a49502b4eb5faa25b864da6a9ab5c150704be9a4d856080015186604001518760c00151805190602001206040516125729392919061455a565b60405180910390a37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c2fa48138c838d87604001518e8960c001516040518763ffffffff1660e01b81526004016125d896959493929190615044565b600060405180830381600087803b1580156125f257600080fd5b505af1158015612606573d6000803e3d6000fd5b50505050505050505b50505050505050565b612620613ad1565b61164b8383612fce565b600181565b600a6020526000908152604090205461ffff1681565b6040517fc533338f0000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c533338f906126b190879087908790600401615026565b60206040518083038186803b1580156126c957600080fd5b505afa1580156126dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270191906142c9565b949350505050565b600b60209081526000928352604080842090915290825290205460ff1681565b60096020908152600092835260408084209091529082529020546001600160a01b031681565b60066020908152600092835260408084209091529082529020805460019091015461ffff8083169267ffffffffffffffff6201000082048116936001600160a01b036a010000000000000000000084048116947e010000000000000000000000000000000000000000000000000000000000009094049093169291811691680100000000000000009091041686565b600e6020526000908152604090205481565b6127f86135f1565b6001600160a01b031661280961215e565b6001600160a01b031614612864576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61ffff8083166000818152600b60209081526040808320948616835293905282902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590517fec23bee6f88cfecebb09d6aaaed66f0ce110debc1f61117c8270a7116597df9a90612152908490614fe2565b6128e66135f1565b6001600160a01b03166128f761215e565b6001600160a01b031614612952576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61ffff82166000908152600e6020526040902054156129835760405162461bcd60e51b81526004016108f290614cb4565b61ffff82166000818152600e602052604090819020839055517f0dad975e1d2fbe771c95cdcc7be9a1e61181de7173abe0a32b8f8f83140873e5906121529084906144c3565b6129d16135f1565b6001600160a01b03166129e261215e565b6001600160a01b031614612a3d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116612a635760405162461bcd60e51b81526004016108f290614c57565b600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517fcb7ef3e545f5cdb893f5c568ba710fe08f336375a2d9fd66e161033f8fc09ef390600090a250565b612acd6135f1565b6001600160a01b0316612ade61215e565b6001600160a01b031614612b39576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116612b7e5760405162461bcd60e51b815260040180806020018281038252602681526020018061523a6026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60055481565b60046020526000908152604090205481565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314612c525760405162461bcd60e51b81526004016108f290614d6e565b6001600160a01b038416600090815260066020908152604080832061ffff8916845290915290206001841415612cff576000612c9083850185613ec0565b61ffff8089166000908152600a60205260409020549192509081169082161115612ccc5760405162461bcd60e51b81526004016108f290614b9d565b81547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff91909116178155612f25565b6002841415612d56576000612d16838501856142ad565b825467ffffffffffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffff90911617825550612f25565b6003841415612db4576000612d6d83850185613c1e565b82546001600160a01b039091166a0100000000000000000000027fffff0000000000000000000000000000000000000000ffffffffffffffffffff90911617825550612f25565b6004841415612e6e576000612dcb83850185613ec0565b61ffff8089166000908152600b602090815260408083209385168352929052205490915060ff1680612dff575061ffff8116155b612e1b5760405162461bcd60e51b81526004016108f290614589565b815461ffff9091167e01000000000000000000000000000000000000000000000000000000000000027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909116178155612f25565b6005841415612ec6576000612e85838501856142ad565b6001830180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9290921691909117905550612f25565b6006841415611631576000612edd83850185613c1e565b6001830180546001600160a01b0390921668010000000000000000027fffffffff0000000000000000000000000000000000000000ffffffffffffffff909216919091179055505b83856001600160a01b03167ffc01bf86212a14151d51d1be5c2ac64d67d5ec823dfc6f53298d7ce3f3d3d2528585604051612f6192919061450d565b60405180910390a3505050505050565b600082821115612fc8576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b612fd6613ad1565b6001600160a01b03808316600090815260066020908152604080832061ffff808916808652918452828520835160c0810185528154808416825267ffffffffffffffff6201000082048116838901526a010000000000000000000082048a16838801527e010000000000000000000000000000000000000000000000000000000000009091048416606083015260019092015491821660808201526801000000000000000090910490961660a0870152908452600790925290912082519091166130a357805461ffff1682525b602082015167ffffffffffffffff166130ce57805462010000900467ffffffffffffffff1660208301525b60408201516001600160a01b03166130ff5780546a010000000000000000000090046001600160a01b031660408301525b606082015161ffff1661313a5780547e01000000000000000000000000000000000000000000000000000000000000900461ffff1660608301525b608082015167ffffffffffffffff1661316257600181015467ffffffffffffffff1660808301525b60a08201516001600160a01b031661164957600101546801000000000000000090046001600160a01b031660a08201529392505050565b60008282018381101561164b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008151600014156132ce5761ffff808716600090815260086020908152604080832060608a015190941683529281529082902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600186161502019093169290920491820184900484028101840190945280845290918301828280156132c65780601f1061329b576101008083540402835291602001916132c6565b820191906000526020600020905b8154815290600101906020018083116132a957829003601f168201915b505050505091505b604080860151606087015191517f5886ea65000000000000000000000000000000000000000000000000000000008152909182916001600160a01b03831691635886ea6591613327918c918b908b908b906004016150a5565b602060405180830381600087803b15801561334157600080fd5b505af1158015613355573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133799190614295565b92506133858284613680565b7fb0c632f55f1e1b3b2c3d82f41ee4716bb4c00f0f5d84cdafc141581bb8757a4f8488606001516040516133ba929190614534565b60405180910390a1505095945050505050565b60a0820151606083015160808401516040517fc5e193cd000000000000000000000000000000000000000000000000000000008152600093926001600160a01b0384169263c5e193cd92613429928a92909189906004016150e1565b602060405180830381600087803b15801561344357600080fd5b505af1158015613457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061347b9190614295565b91506116498183613680565b6000806001600160a01b03831615806134a957506002546001600160a01b0316155b6003546040517f5cbbbd750000000000000000000000000000000000000000000000000000000081529192506000916001600160a01b0390911690635cbbbd75906134fd908515908b908b906004016144ab565b60206040518083038186803b15801561351557600080fd5b505afa158015613529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061354d9190614295565b905080156135e757811561357a576003546001600160a01b03166135718183613680565b819350506135e7565b846001600160a01b0316846001600160a01b031614806135a257506001600160a01b03841632145b6135be5760405162461bcd60e51b81526004016108f290614893565b6002546135d6906001600160a01b03168530846136c3565b6005546135e39082613199565b6005555b5050949350505050565b3390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052613675908490613751565b505050565b3b151590565b6001600160a01b0382166000908152600460205260409020546136a39082613199565b6001600160a01b0390921660009081526004602052604090209190915550565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261374b908590613751565b50505050565b60006137a6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166138029092919063ffffffff16565b805190915015613675578080602001905160208110156137c557600080fd5b50516136755760405162461bcd60e51b815260040180806020018281038252602a815260200180615260602a913960400191505060405180910390fd5b60606127018484600085856138168561367a565b613867576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106138c357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613886565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613925576040519150601f19603f3d011682016040523d82523d6000602084013e61392a565b606091505b509150915061393a828286613945565b979650505050505050565b6060831561395457508161164b565b8251156139645782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156139ae578181015183820152602001613996565b50505050905090810190601f1680156139db5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282613a1f5760008555613a83565b82601f10613a56578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555613a83565b82800160010185558215613a83579182015b82811115613a83578235825591602001919060010190613a68565b50613a8f929150613b06565b5090565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820181905260a082019290925260c081019190915290565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b5b80821115613a8f5760008155600101613b07565b80356117b0816151fb565b80516117b0816151fb565b60008083601f840112613b42578182fd5b50813567ffffffffffffffff811115613b59578182fd5b602083019150836020828501011115613b7157600080fd5b9250929050565b600082601f830112613b88578081fd5b815167ffffffffffffffff811115613b9c57fe5b613bcd60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601615183565b818152846020838601011115613be1578283fd5b6127018260208301602087016151cf565b80356117b081615213565b80516117b081615213565b80356117b081615223565b80516117b081615223565b600060208284031215613c2f578081fd5b813561164b816151fb565b60008060408385031215613c4c578081fd5b8235613c57816151fb565b946020939093013593505050565b60008060408385031215613c77578182fd5b8235613c82816151fb565b91506020830135613c9281615213565b809150509250929050565b60008060008060808587031215613cb2578182fd5b8435613cbd816151fb565b93506020850135613ccd81615213565b93969395505050506040820135916060013590565b60008060408385031215613c4c578182fd5b60008060008060008060008060008060006101008c8e031215613d15578687fd5b613d1e8c613b1b565b9a50613d2c60208d01613c08565b9950613d3a60408d01613bf2565b985067ffffffffffffffff8060608e01351115613d55578788fd5b613d658e60608f01358f01613b31565b909950975060808d0135811015613d7a578687fd5b613d8a8e60808f01358f01613b31565b9097509550613d9b60a08e01613b1b565b9450613da960c08e01613b1b565b93508060e08e01351115613dbb578283fd5b50613dcc8d60e08e01358e01613b31565b81935080925050509295989b509295989b9093969950565b600060208284031215613df5578081fd5b815167ffffffffffffffff80821115613e0c578283fd5b9083019060e08286031215613e1f578283fd5b613e2960e0615183565b613e3283613bfd565b8152613e4060208401613bfd565b6020820152613e5160408401613c13565b6040820152613e6260608401613b26565b6060820152608083015182811115613e78578485fd5b613e8487828601613b78565b60808301525060a083015160a082015260c083015182811115613ea5578485fd5b613eb187828601613b78565b60c08301525095945050505050565b600060208284031215613ed1578081fd5b813561164b81615213565b60008060408385031215613eee578182fd5b8235613ef981615213565b91506020830135613c92816151fb565b600080600080600080600060a0888a031215613f23578081fd5b8735613f2e81615213565b96506020880135613f3e816151fb565b9550604088013567ffffffffffffffff80821115613f5a578283fd5b613f668b838c01613b31565b909750955060608a013591508115158214613f7f578283fd5b90935060808901359080821115613f94578283fd5b50613fa18a828b01613b31565b989b979a50959850939692959293505050565b600080600060608486031215613fc8578081fd5b8335613fd381615213565b92506020840135613fe3816151fb565b929592945050506040919091013590565b600080600080600080600060c0888a03121561400e578081fd5b873561401981615213565b96506020880135614029816151fb565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff811115614059578182fd5b613fa18a828b01613b31565b60008060008060006080868803121561407c578283fd5b853561408781615213565b94506020860135614097816151fb565b935060408601359250606086013567ffffffffffffffff8111156140b9578182fd5b6140c588828901613b31565b969995985093965092949392505050565b600080604083850312156140e8578182fd5b8235613c5781615213565b60008060008060808587031215614108578182fd5b843561411381615213565b966020860135965060408601359560600135945092505050565b600080600060408486031215614141578081fd5b833561414c81615213565b9250602084013567ffffffffffffffff811115614167578182fd5b61417386828701613b31565b9497909650939450505050565b60008060408385031215614192578182fd5b8235613c8281615213565b600080600080606085870312156141b2578182fd5b84356141bd81615213565b935060208501356141cd81615213565b9250604085013567ffffffffffffffff8111156141e8578283fd5b6141f487828801613b31565b95989497509550505050565b600080600080600080600060e0888a03121561421a578081fd5b873561422581615213565b9650602088013561423581615213565b9550604088013561424581615223565b94506060880135614255816151fb565b9350608088013561426581615213565b925060a088013561427581615223565b915060c0880135614285816151fb565b8091505092959891949750929550565b6000602082840312156142a6578081fd5b5051919050565b6000602082840312156142be578081fd5b813561164b81615223565b6000602082840312156142da578081fd5b815161164b81615223565b600082845282826020860137806020848601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011685010190509392505050565b600081518084526143458160208601602086016151cf565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600083516143898184602088016151cf565b60609390931b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190920190815260140192915050565b90565b60007fffffffffffffffff0000000000000000000000000000000000000000000000008860c01b1682527fffff000000000000000000000000000000000000000000000000000000000000808860f01b1660088401527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008760601b16600a840152808660f01b16601e8401525083516144648160208501602088016151cf565b8083019050835161447c8160208401602088016151cf565b0160200198975050505050505050565b6001600160a01b0391909116815260200190565b901515815260200190565b92151583526020830191909152604082015260600190565b90815260200190565b9283526020830191909152604082015260600190565b6000858252606060208301526144fc6060830185876142e5565b905082604083015295945050505050565b6000602082526127016020830184866142e5565b60006020825261164b602083018461432d565b600060408252614547604083018561432d565b905061ffff831660208301529392505050565b60006060825261456d606083018661432d565b67ffffffffffffffff9490941660208301525060400152919050565b60208082526026908201527f4c617965725a65726f3a20696e76616c6964206f7574626f756e642070726f6f60408201527f6620747970650000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f4c617965725a65726f3a20647374436861696e496420646f6573206e6f74206560408201527f7869737400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526018908201527f4c617965725a65726f3a206f6e6c792074726561737572790000000000000000604082015260600190565b6020808252601e908201527f4c617965725a65726f3a20496e76616c696420636f6e66696720747970650000604082015260600190565b6020808252601a908201527f4c617965725a65726f3a207769746864726177206661696c6564000000000000604082015260600190565b60208082526025908201527f4c617965725a65726f3a206e6f7420656e6f756768206e617469766520666f7260408201527f2066656573000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f4c617965725a65726f3a205f746f2063616e6e6f74206265207a65726f20616460408201527f6472657373000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526031908201527f4c617965725a65726f3a205f6c617965725a65726f546f6b656e2063616e6e6f60408201527f74206265207a65726f2061646472657373000000000000000000000000000000606082015260800190565b60208082526022908201527f4c617965725a65726f3a20696e76616c69642072656c6179657220616464726560408201527f7373000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f4c617965725a65726f3a206661696c656420746f20726566756e640000000000604082015260600190565b6020808252602b908201527f4c617965725a65726f3a206d75737420626520706169642062792073656e646560408201527f72206f72206f726967696e000000000000000000000000000000000000000000606082015260800190565b6020808252601d908201527f4c617965725a65726f3a20696e76616c69642064737441646472657373000000604082015260600190565b60208082526021908201527f4c617965725a65726f3a20696e76616c6964206f7261636c652061646472657360408201527f7300000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f4c617965725a65726f3a20696e76616c6964205f7061636b65742e756c6e416460408201527f6472657373000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601e908201527f4c617965725a65726f3a20696e76616c696420737263436861696e2049640000604082015260600190565b6020808252601a908201527f4c617965725a65726f3a20696e76616c69642072656c61796572000000000000604082015260600190565b6020808252601a908201527f4c617965725a65726f3a2077726f6e6720706174682064617461000000000000604082015260600190565b60208082526029908201527f4c617965725a65726f3a206c6962726172792063616e6e6f74206265207a657260408201527f6f20616464726573730000000000000000000000000000000000000000000000606082015260800190565b60208082526043908201527f4c617965725a65726f3a206f7261636c6520646174612063616e206f6e6c792060408201527f75706461746520696620697420686173206d6f726520636f6e6669726d61746960608201527f6f6e730000000000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252601e908201527f4c617965725a65726f3a20696e76616c696420647374436861696e2049640000604082015260600190565b60208082526030908201527f4c617965725a65726f3a20696e76616c696420696e626f756e642070726f6f6660408201527f206c6962726172792076657273696f6e00000000000000000000000000000000606082015260800190565b60208082526022908201527f4c617965725a65726f3a20696e76616c6964207372634164647265737320736960408201527f7a65000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4c617965725a65726f3a2074726561737572792063616e6e6f74206265207a6560408201527f726f206164647265737300000000000000000000000000000000000000000000606082015260800190565b60208082526021908201527f4c617965725a65726f3a2072656d6f746520756c6e20616c726561647920736560408201527f7400000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f4c617965725a65726f3a2063616e206e6f7420616464206e6577206c6962726160408201527f7279000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526018908201527f4c617965725a65726f3a206f6e6c7920656e64706f696e740000000000000000604082015260600190565b6020808252602e908201527f4c617965725a65726f3a20696e76616c6964206f7574626f756e6420626c6f6360408201527f6b20636f6e6669726d6174696f6e000000000000000000000000000000000000606082015260800190565b60208082526028908201527f4c617965725a65726f3a20696e636f72726563742072656d6f7465206164647260408201527f6573732073697a65000000000000000000000000000000000000000000000000606082015260800190565b60208082526030908201527f4c617965725a65726f3a2072656d6f746520636861696e20616464726573732060408201527f73697a6520616c72656164792073657400000000000000000000000000000000606082015260800190565b6020808252602d908201527f4c617965725a65726f3a20696e76616c696420696e626f756e6420626c6f636b60408201527f20636f6e6669726d6174696f6e00000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4c617965725a65726f3a206e6f7420656e6f75676820626c6f636b20636f6e6660408201527f69726d6174696f6e730000000000000000000000000000000000000000000000606082015260800190565b600060c08201905061ffff808451168352602084015167ffffffffffffffff8082166020860152604086015191506001600160a01b0380831660408701528360608801511660608701528160808801511660808701528060a08801511660a08701525050505092915050565b61ffff91909116815260200190565b600061ffff851682526001600160a01b03841660208301526060604083015261501d606083018461432d565b95945050505050565b600061ffff851682526040602083015261501d6040830184866142e5565b600061ffff8816825260c0602083015261506160c083018861432d565b6001600160a01b038716604084015267ffffffffffffffff8616606084015284608084015282810360a0840152615098818561432d565b9998505050505050505050565b600061ffff80881683528087166020840152506001600160a01b038516604083015283606083015260a0608083015261393a60a083018461432d565b61ffff948516815292909316602083015267ffffffffffffffff1660408201526001600160a01b03909116606082015260800190565b61ffff968716815267ffffffffffffffff95861660208201526001600160a01b03948516604082015292909516606083015290921660808301529190911660a082015260c00190565b918252602082015260400190565b67ffffffffffffffff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561519f57fe5b604052919050565b600080858511156151b6578182fd5b838611156151c2578182fd5b5050820193919092039150565b60005b838110156151ea5781810151838201526020016151d2565b8381111561374b5750506000910152565b6001600160a01b038116811461521057600080fd5b50565b61ffff8116811461521057600080fd5b67ffffffffffffffff8116811461521057600080fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220dc6fc63e061b7f8d887a5dcc9daf06630498d5f3c9e5ed30999f3b436f801b0664736f6c63430007060033\";\n\ntype UltraLightNodeV2ConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: UltraLightNodeV2ConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class UltraLightNodeV2__factory extends ContractFactory {\n constructor(...args: UltraLightNodeV2ConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n _endpoint: PromiseOrValue<string>,\n _nonceContract: PromiseOrValue<string>,\n _localChainId: PromiseOrValue<BigNumberish>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<UltraLightNodeV2> {\n return super.deploy(\n _endpoint,\n _nonceContract,\n _localChainId,\n overrides || {}\n ) as Promise<UltraLightNodeV2>;\n }\n override getDeployTransaction(\n _endpoint: PromiseOrValue<string>,\n _nonceContract: PromiseOrValue<string>,\n _localChainId: PromiseOrValue<BigNumberish>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(\n _endpoint,\n _nonceContract,\n _localChainId,\n overrides || {}\n );\n }\n override attach(address: string): UltraLightNodeV2 {\n return super.attach(address) as UltraLightNodeV2;\n }\n override connect(signer: Signer): UltraLightNodeV2__factory {\n return super.connect(signer) as UltraLightNodeV2__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): UltraLightNodeV2Interface {\n return new utils.Interface(_abi) as UltraLightNodeV2Interface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): UltraLightNodeV2 {\n return new Contract(address, _abi, signerOrProvider) as UltraLightNodeV2;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n BigNumberish,\n Overrides,\n} from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../common\";\nimport type {\n UltraLightNodeV2AltToken,\n UltraLightNodeV2AltTokenInterface,\n} from \"../UltraLightNodeV2AltToken\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_endpoint\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_nonceContract\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"_localChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_feeHandler\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"lib\",\n type: \"address\",\n },\n ],\n name: \"AddInboundProofLibraryForChain\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"userApplication\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"configType\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"newConfig\",\n type: \"bytes\",\n },\n ],\n name: \"AppConfigUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"proofType\",\n type: \"uint16\",\n },\n ],\n name: \"EnableSupportedOutboundProof\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"lookupHash\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"blockData\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"confirmations\",\n type: \"uint256\",\n },\n ],\n name: \"HashReceived\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"payloadHash\",\n type: \"bytes32\",\n },\n ],\n name: \"InvalidDst\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n name: \"Packet\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"payloadHash\",\n type: \"bytes32\",\n },\n ],\n name: \"PacketReceived\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"adapterParams\",\n type: \"bytes\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n ],\n name: \"RelayerParams\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"size\",\n type: \"uint256\",\n },\n ],\n name: \"SetChainAddressSize\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"proofType\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"SetDefaultAdapterParamsForChainId\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"inboundProofLib\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"inboundBlockConfirm\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"relayer\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"outboundBlockConfirm\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n ],\n name: \"SetDefaultConfigForChainId\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"tokenAddress\",\n type: \"address\",\n },\n ],\n name: \"SetLayerZeroToken\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"uln\",\n type: \"bytes32\",\n },\n ],\n name: \"SetRemoteUln\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"treasuryAddress\",\n type: \"address\",\n },\n ],\n name: \"SetTreasury\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"msgSender\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"WithdrawNative\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"msgSender\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"WithdrawZRO\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_INBOUND_BLOCK_CONFIRMATIONS\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_INBOUND_PROOF_LIBRARY_VERSION\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_ORACLE\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_OUTBOUND_BLOCK_CONFIRMATIONS\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_OUTBOUND_PROOF_TYPE\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_RELAYER\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_address\",\n type: \"address\",\n },\n ],\n name: \"accruedNativeFee\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_library\",\n type: \"address\",\n },\n ],\n name: \"addInboundProofLibraryForChain\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"appConfig\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"inboundProofLibraryVersion\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"inboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"relayer\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"outboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"chainAddressSizeMap\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"defaultAdapterParams\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"defaultAppConfig\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"inboundProofLibraryVersion\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"inboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"relayer\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"outboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_proofType\",\n type: \"uint16\",\n },\n ],\n name: \"enableSupportedOutboundProof\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"endpoint\",\n outputs: [\n {\n internalType: \"contract ILayerZeroEndpoint\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_ua\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n {\n internalType: \"bool\",\n name: \"_payInZRO\",\n type: \"bool\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"estimateFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"nativeFee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"zroFee\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"feeHandler\",\n outputs: [\n {\n internalType: \"contract FeeHandler\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_remoteChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_ua\",\n type: \"address\",\n },\n ],\n name: \"getAppConfig\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"inboundProofLibraryVersion\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"inboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"relayer\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"outboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n ],\n internalType:\n \"struct ILayerZeroUltraLightNodeV2.ApplicationConfiguration\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_remoteChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_ua\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_configType\",\n type: \"uint256\",\n },\n ],\n name: \"getConfig\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_path\",\n type: \"bytes\",\n },\n ],\n name: \"getOutboundNonce\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n name: \"hashLookup\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"inboundProofLibrary\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"layerZeroToken\",\n outputs: [\n {\n internalType: \"contract IERC20\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"localChainId\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"maxInboundProofLibrary\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"nativeFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"nonceContract\",\n outputs: [\n {\n internalType: \"contract NonceContract\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_ua\",\n type: \"address\",\n },\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_path\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n {\n internalType: \"address payable\",\n name: \"_refundAddress\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_zroPaymentAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"send\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint256\",\n name: \"_size\",\n type: \"uint256\",\n },\n ],\n name: \"setChainAddressSize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_remoteChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_ua\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_configType\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_config\",\n type: \"bytes\",\n },\n ],\n name: \"setConfig\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_proofType\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"setDefaultAdapterParamsForChainId\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_inboundProofLibraryVersion\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"_inboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"_relayer\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"_outboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"_oracle\",\n type: \"address\",\n },\n ],\n name: \"setDefaultConfigForChainId\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_layerZeroToken\",\n type: \"address\",\n },\n ],\n name: \"setLayerZeroToken\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_remoteChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"_remoteUln\",\n type: \"bytes32\",\n },\n ],\n name: \"setRemoteUln\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_treasury\",\n type: \"address\",\n },\n ],\n name: \"setTreasury\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"supportedOutboundProof\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"treasuryContract\",\n outputs: [\n {\n internalType: \"contract ILayerZeroTreasury\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"treasuryZROFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"ulnLookup\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"_lookupHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256\",\n name: \"_confirmations\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"_blockData\",\n type: \"bytes32\",\n },\n ],\n name: \"updateHash\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_gasLimit\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"_lookupHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"_blockData\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"_transactionProof\",\n type: \"bytes\",\n },\n ],\n name: \"validateTransactionProof\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address payable\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawNative\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawZRO\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x6101006040523480156200001257600080fd5b50604051620056ef380380620056ef8339810160408190526200003591620001da565b6001600090815562000046620001a6565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b038416620000c65760405162461bcd60e51b8152600401620000bd906200025a565b60405180910390fd5b6001600160a01b038316620000ef5760405162461bcd60e51b8152600401620000bd90620002a4565b6000849050806001600160a01b0316633408e4706040518163ffffffff1660e01b815260040160206040518083038186803b1580156200012e57600080fd5b505afa15801562000143573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000169919062000236565b5060f09290921b6001600160f01b03191660a052606091821b6001600160601b031990811660805292821b831660c052901b1660e05250620002f3565b3390565b80516001600160a01b0381168114620001c257600080fd5b919050565b805161ffff81168114620001c257600080fd5b60008060008060808587031215620001f0578384fd5b620001fb85620001aa565b93506200020b60208601620001aa565b92506200021b60408601620001c7565b91506200022b60608601620001aa565b905092959194509250565b60006020828403121562000248578081fd5b6200025382620001c7565b9392505050565b6020808252602a908201527f4c617965725a65726f3a20656e64706f696e742063616e6e6f74206265207a65604082015269726f206164647265737360b01b606082015260800190565b6020808252602f908201527f4c617965725a65726f3a206e6f6e6365436f6e74726163742063616e6e6f742060408201526e6265207a65726f206164647265737360881b606082015260800190565b60805160601c60a05160f01c60c05160601c60e05160601c6153926200035d60003980610b89528061130b52508061086d528061108952806127b4525080611390528061188c528061252b525080610ee252806118b052806126b85280612d4852506153926000f3fe6080604052600436106102f25760003560e01c80638207f79d1161018f578063b9a99bed116100e1578063ed28580a1161008a578063f47a5feb11610064578063f47a5feb14610816578063f58589a21461082b578063f8e1734c1461084b576102f2565b8063ed28580a146107b6578063f0f44260146107d6578063f2fde38b146107f6576102f2565b8063ddfdef5a116100bb578063ddfdef5a14610756578063ea216c2114610776578063eb0d4c3114610796576102f2565b8063b9a99bed146106dc578063d543c77414610709578063db00719b14610736576102f2565b8063904d3b8d11610143578063a46622221161011d578063a46622221461067a578063b77d22ad146106a7578063b8e7e3e0146106bc576102f2565b8063904d3b8d14610625578063959f59431461063a578063987fa2d51461065a576102f2565b80638525b711116101745780638525b711146105d057806387078f9f146105f05780638da5cb5b14610610576102f2565b80638207f79d146105905780638317814a146105b0576102f2565b80634d3a0f7c1161024857806369412bfa116101fc578063715018a6116101d6578063715018a614610546578063759c5b3b1461055b5780638140666e1461057b576102f2565b806369412bfa146104e65780636a14ac8214610506578063704316e514610526576102f2565b806352d3b5001161022d57806352d3b5001461048f5780635b056da5146104af5780635e280f11146104d1576102f2565b80634d3a0f7c1461045c57806352d2871f1461046f576102f2565b80632cfacb06116102aa5780633c93adee116102845780633c93adee1461040457806340a7bb101461041957806349148c3714610447576102f2565b80632cfacb061461039b5780632f813464146103bd57806331bd2430146103ef576102f2565b806307b9ca7c116102db57806307b9ca7c1461034457806318da0011146103595780632a819bbf1461036e576102f2565b806302bd9743146102f757806307b18bde14610322575b600080fd5b34801561030357600080fd5b5061030c61086b565b6040516103199190614571565b60405180910390f35b34801561032e57600080fd5b5061034261033d366004613d12565b61088f565b005b34801561035057600080fd5b5061030c610a19565b34801561036557600080fd5b5061030c610a28565b34801561037a57600080fd5b5061038e610389366004614258565b610a37565b6040516103199190614691565b3480156103a757600080fd5b506103b0610af9565b6040516103199190614633565b3480156103c957600080fd5b506103dd6103d8366004613f98565b610afe565b604051610319969594939291906151ea565b3480156103fb57600080fd5b506103b0610b82565b34801561041057600080fd5b5061030c610b87565b34801561042557600080fd5b50610439610434366004613fe1565b610bab565b604051610319929190615233565b34801561045357600080fd5b506103b0610edb565b61034261046a366004613dcc565b610ee0565b34801561047b57600080fd5b5061038e61048a36600461408c565b611426565b34801561049b57600080fd5b506103426104aa366004613cf6565b61178e565b3480156104bb57600080fd5b506104c461188a565b60405161031991906150be565b3480156104dd57600080fd5b5061030c6118ae565b3480156104f257600080fd5b506103b0610501366004613cf6565b6118d2565b34801561051257600080fd5b506103426105213660046142d8565b6118f1565b34801561053257600080fd5b506103426105413660046141cb565b611c53565b34801561055257600080fd5b50610342611d18565b34801561056757600080fd5b506103b0610576366004613d75565b611dee565b34801561058757600080fd5b506103b0611e1a565b34801561059c57600080fd5b506103426105ab366004613fb4565b611e1f565b3480156105bc57600080fd5b506103426105cb366004614275565b611fb8565b3480156105dc57600080fd5b506103426105eb366004613dba565b6120a1565b3480156105fc57600080fd5b5061034261060b3660046141ae565b6121a3565b34801561061c57600080fd5b5061030c61229a565b34801561063157600080fd5b506103b06122a9565b34801561064657600080fd5b506103b0610655366004613f98565b6122ae565b34801561066657600080fd5b506103426106753660046140cc565b6122c0565b34801561068657600080fd5b5061069a610695366004613fb4565b612754565b6040516103199190615052565b3480156106b357600080fd5b506103b0612766565b3480156106c857600080fd5b506104c46106d7366004613f98565b61276b565b3480156106e857600080fd5b506106fc6106f7366004614205565b612781565b6040516103199190615241565b34801561071557600080fd5b50610729610724366004614258565b612845565b6040516103199190614610565b34801561074257600080fd5b5061030c610751366004614258565b612865565b34801561076257600080fd5b506103dd610771366004613d3d565b61288b565b34801561078257600080fd5b506103b0610791366004613f98565b61291a565b3480156107a257600080fd5b506103426107b1366004614258565b61292c565b3480156107c257600080fd5b506103426107d13660046141ae565b612a1a565b3480156107e257600080fd5b506103426107f1366004613cf6565b612b05565b34801561080257600080fd5b50610342610811366004613cf6565b612c01565b34801561082257600080fd5b506103b0612d2e565b34801561083757600080fd5b506103b0610846366004613cf6565b612d34565b34801561085757600080fd5b5061034261086636600461413d565b612d46565b7f000000000000000000000000000000000000000000000000000000000000000081565b600260005414156108e7576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000556001600160a01b03821661091b5760405162461bcd60e51b815260040161091290614858565b60405180910390fd5b3360009081526004602052604090205461093590826130ad565b336000908152600460205260408082209290925590516001600160a01b038416908390610961906144a6565b60006040518083038185875af1925050503d806000811461099e576040519150601f19603f3d011682016040523d82523d6000602084013e6109a3565b606091505b50509050806109c45760405162461bcd60e51b815260040161091290614821565b826001600160a01b0316336001600160a01b03167f3bfd26201736b5cb14a562ab3cfc2bef76901726e3a78483d6288af47131e1d984604051610a079190614633565b60405180910390a35050600160005550565b6002546001600160a01b031681565b6003546001600160a01b031681565b60086020908152600092835260408084208252918352918190208054825160026001831615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190921691909104601f810185900485028201850190935282815292909190830182828015610af15780601f10610ac657610100808354040283529160200191610af1565b820191906000526020600020905b815481529060010190602001808311610ad457829003601f168201915b505050505081565b600381565b6007602052600090815260409020805460019091015461ffff8083169267ffffffffffffffff6201000082048116936001600160a01b036a010000000000000000000084048116947e010000000000000000000000000000000000000000000000000000000000009094049093169291811691680100000000000000009091041686565b600681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000610bba8a8a61310a565b905060608415610c035785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929350610cd292505050565b61ffff808c166000908152600860209081526040808320606087015190941683529281529082902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018616150201909316929092049182018490048402810184019094528084529091830182828015610cca5780601f10610c9f57610100808354040283529160200191610cca565b820191906000526020600020905b815481529060010190602001808311610cad57829003601f168201915b505050505090505b600082604001516001600160a01b031663c03f15298d85606001518e8e8e9050876040518663ffffffff1660e01b8152600401610d13959493929190615178565b60206040518083038186803b158015610d2b57600080fd5b505afa158015610d3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d63919061436d565b905060008b905060008460a001516001600160a01b0316635553fb8e8f87606001518860800151866040518563ffffffff1660e01b8152600401610daa94939291906151b4565b60206040518083038186803b158015610dc257600080fd5b505afa158015610dd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfa919061436d565b6003546040517f5cbbbd750000000000000000000000000000000000000000000000000000000081529192506000916001600160a01b0390911690635cbbbd7590610e4d908e908890879060040161461b565b60206040518083038186803b158015610e6557600080fd5b505afa158015610e79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9d919061436d565b90508a610ead5780975087610eb2565b809650865b50610ec782610ec18a876132d8565b906132d8565b975050505050505097509795505050505050565b600281565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610f285760405162461bcd60e51b815260040161091290614e4a565b61ffff89166000908152600e60205260409020548b908a90610f5c5760405162461bcd60e51b815260040161091290614756565b61ffff81166000908152600c6020526040812054606091908015801590610f855750601481018c145b610fa15760405162461bcd60e51b815260040161091290614ede565b6000808e8e8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505083810160140151925090506001600160a01b03878116908316146110105760405162461bcd60e51b815260040161091290614b2b565b8e8e60009085926110239392919061527a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040517f6fe7b673000000000000000000000000000000000000000000000000000000008152929750506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691636fe7b67391506110c39089908b9086906004016150cd565b602060405180830381600087803b1580156110dd57600080fd5b505af11580156110f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111591906143a1565b935050505060008a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939450611161925087915088905061310a565b6040805160038082526080820190925291925060009190602082016060803683370190505090506111cc86838986518d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061333292505050565b816000815181106111d957fe5b6020026020010181815250506111f0868389613502565b816001815181106111fd57fe5b60200260200101818152505061123d8160008151811061121957fe5b60200260200101518260018151811061122e57fe5b6020026020010151898d6135b9565b8160028151811061124a57fe5b60209081029190910101526040805160038082526080820190925260009181602001602082028036833701905050905082604001518160008151811061128c57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260a00151816001815181106112be57fe5b6001600160a01b0392831660209182029290920101526003548251911690829060029081106112e957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636c52b46982848f6040518463ffffffff1660e01b815260040161135993929190614585565b600060405180830381600087803b15801561137357600080fd5b505af1158015611387573d6000803e3d6000fd5b505050506000857f00000000000000000000000000000000000000000000000000000000000000008a8a8a896040516020016113c8969594939291906144a9565b60405160208183030381529060405290507fe9bded5f24a4168e4f3bf44e00298c993b22376aad8c58c7dda9718a54cbea82816040516114089190614691565b60405180910390a15050505050505050505050505050505050505050565b6001600160a01b038216600090815260066020908152604080832061ffff87168452909152902060609060018314156114ba57805461ffff166114a45761ffff80861660009081526007602090815260409182902054915161148d939290921691016150be565b604051602081830303815290604052915050611787565b805460405161148d9161ffff16906020016150be565b600283141561153057805462010000900467ffffffffffffffff1661150e5761ffff851660009081526007602090815260409182902054915161148d9262010000900467ffffffffffffffff169101615241565b805460405161148d9162010000900467ffffffffffffffff1690602001615241565b60038314156115bb5780546a010000000000000000000090046001600160a01b03166115925761ffff851660009081526007602090815260409182902054915161148d926a010000000000000000000090046001600160a01b03169101614571565b805460405161148d916a010000000000000000000090046001600160a01b031690602001614571565b60048314156116745780547e01000000000000000000000000000000000000000000000000000000000000900461ffff1661163c5761ffff80861660009081526007602090815260409182902054915161148d937e0100000000000000000000000000000000000000000000000000000000000090930490921691016150be565b805460405161148d917e01000000000000000000000000000000000000000000000000000000000000900461ffff16906020016150be565b60058314156116e157600181015467ffffffffffffffff166116c25761ffff851660009081526007602090815260409182902060010154915161148d9267ffffffffffffffff169101615241565b600181015460405161148d9167ffffffffffffffff1690602001615241565b600683141561176f5760018101546801000000000000000090046001600160a01b03166117455761ffff851660009081526007602090815260409182902060010154915161148d926801000000000000000090046001600160a01b03169101614571565b600181015460405161148d916801000000000000000090046001600160a01b031690602001614571565b60405162461bcd60e51b8152600401610912906147ea565b9392505050565b61179661370c565b6001600160a01b03166117a761229a565b6001600160a01b031614611802576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166118285760405162461bcd60e51b8152600401610912906148b5565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517f33d644987381deff4408951d55afa136f124e22a7810b163b2aaa3ebef770f6490600090a250565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b0381166000908152600460205260409020545b919050565b6118f961370c565b6001600160a01b031661190a61229a565b6001600160a01b031614611965576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61ffff8088166000908152600a6020526040902054811690871611801590611991575060008661ffff16115b6119ad5760405162461bcd60e51b815260040161091290614c79565b60008567ffffffffffffffff16116119d75760405162461bcd60e51b815260040161091290614f98565b6001600160a01b0384166119fd5760405162461bcd60e51b815260040161091290614912565b61ffff8088166000908152600b602090815260408083209387168352929052205460ff16611a3d5760405162461bcd60e51b8152600401610912906146f9565b60008267ffffffffffffffff1611611a675760405162461bcd60e51b815260040161091290614e81565b6001600160a01b038116611a8d5760405162461bcd60e51b815260040161091290614a03565b6040518060c001604052808761ffff1681526020018667ffffffffffffffff168152602001856001600160a01b031681526020018461ffff1681526020018367ffffffffffffffff168152602001826001600160a01b0316815250600760008961ffff1661ffff16815260200190815260200160002060008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600a6101000a8154816001600160a01b0302191690836001600160a01b03160217905550606082015181600001601e6101000a81548161ffff021916908361ffff16021790555060808201518160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060a08201518160010160086101000a8154816001600160a01b0302191690836001600160a01b031602179055509050508661ffff167f5a76432853a0871c4e780def7f3ffc7912339b53f022ac31127fe5ff84a36fa1878787878787604051611c42969594939291906151ea565b60405180910390a250505050505050565b336000908152600d6020908152604080832061ffff8816845282528083208684528252808320848452909152902054828110611ca15760405162461bcd60e51b815260040161091290614bbf565b336000818152600d6020908152604080832061ffff8a1680855290835281842089855283528184208785529092529182902086905590517f74bbc026808dcba59692d6a8bb20596849ca718e10e2432c6cdf48af865bc5d990611d099088908790899061463c565b60405180910390a35050505050565b611d2061370c565b6001600160a01b0316611d3161229a565b6001600160a01b031614611d8c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600d60209081526000948552604080862082529385528385208152918452828420909152825290205481565b600481565b611e2761370c565b6001600160a01b0316611e3861229a565b6001600160a01b031614611e93576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116611eb95760405162461bcd60e51b815260040161091290614b62565b61ffff8083166000908152600a60205260409020548116908110611eef5760405162461bcd60e51b815260040161091290614ded565b61ffff8381166000818152600a6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001660019790970195861696871790556009825280832095835294905283902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03861617905591519091907f802d55279d51813cb7a9a98e8fd2d7bec5346cb830901c11b85d1650cb857e9a90611fab908590614571565b60405180910390a2505050565b611fc061370c565b6001600160a01b0316611fd161229a565b6001600160a01b03161461202c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61ffff8085166000908152600860209081526040808320938716835292905220612057908383613ac1565b508261ffff168461ffff167f4a5695eee2a74d548d5f5c485a3de99ace99e3b664c8e30a90f49be6ebb54932848460405161209392919061467d565b60405180910390a350505050565b600260005414156120f9576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000556003546001600160a01b031633146121285760405162461bcd60e51b8152600401610912906147b3565b60055461213590826130ad565b60055560025461214f906001600160a01b03168383613710565b816001600160a01b0316336001600160a01b03167f3a20c8c3cd1848485ae8261a52398bb9b26f195b717306b3cf7f058e62c095d5836040516121929190614633565b60405180910390a350506001600055565b6121ab61370c565b6001600160a01b03166121bc61229a565b6001600160a01b031614612217576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61ffff82166000908152600c6020526040902054156122485760405162461bcd60e51b815260040161091290614f3b565b61ffff82166000818152600c602052604090819020839055517f0611bb2107e385b79ec826fff8ecc1c1248a7aae3c875c96668f8cfbf17342209061228e908490614633565b60405180910390a25050565b6001546001600160a01b031690565b600581565b600c6020526000908152604090205481565b60006122cc888861310a565b60408101519091506001600160a01b031633146122fb5760405162461bcd60e51b815260040161091290614af4565b612303613b6b565b61ffff89166000908152600c6020526040902054806123345760405162461bcd60e51b815260040161091290614ede565b60a08301516001600160a01b03166000908152600d6020908152604080832061ffff8e16845282528083208a84528252808320898452909152902054801580159061238d5750836020015167ffffffffffffffff168110155b6123a95760405162461bcd60e51b815260040161091290614ff5565b61ffff808c166000908152600960209081526040808320885190941683529290528190205490517fb71e0f710000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690819063b71e0f719061241b908b908b908b908990600401614652565b600060405180830381600087803b15801561243557600080fd5b505af1158015612449573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261248f9190810190613ebc565b60a081015161ffff8e166000908152600e60205260409020549195501491505080156124be575060a082015115155b6124da5760405162461bcd60e51b815260040161091290614a60565b8961ffff16826000015161ffff16146125055760405162461bcd60e51b815260040161091290614abd565b80826080015151146125295760405162461bcd60e51b815260040161091290614cd6565b7f000000000000000000000000000000000000000000000000000000000000000061ffff16826020015161ffff16146125745760405162461bcd60e51b815260040161091290614c42565b886001600160a01b031682606001516001600160a01b0316146125a95760405162461bcd60e51b8152600401610912906149cc565b6125b289613795565b6126235781606001516001600160a01b0316826000015161ffff167fa2786598bd84ae4a299103996359e6cb4333404583256079dfc279386baf5832846080015185604001518660c0015180519060200120604051612613939291906146ca565b60405180910390a350505061274b565b60008260800151836060015160405160200161264092919061445c565b604051602081830303815290604052905082606001516001600160a01b0316836000015161ffff167f2bd2d8a84b748439fd50d79a49502b4eb5faa25b864da6a9ab5c150704be9a4d856080015186604001518760c00151805190602001206040516126ae939291906146ca565b60405180910390a37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c2fa48138c838d87604001518e8960c001516040518763ffffffff1660e01b815260040161271496959493929190615117565b600060405180830381600087803b15801561272e57600080fd5b505af1158015612742573d6000803e3d6000fd5b50505050505050505b50505050505050565b61275c613ba9565b611787838361310a565b600181565b600a6020526000908152604090205461ffff1681565b6040517fc533338f0000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c533338f906127ed908790879087906004016150f9565b60206040518083038186803b15801561280557600080fd5b505afa158015612819573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283d91906143a1565b949350505050565b600b60209081526000928352604080842090915290825290205460ff1681565b60096020908152600092835260408084209091529082529020546001600160a01b031681565b60066020908152600092835260408084209091529082529020805460019091015461ffff8083169267ffffffffffffffff6201000082048116936001600160a01b036a010000000000000000000084048116947e010000000000000000000000000000000000000000000000000000000000009094049093169291811691680100000000000000009091041686565b600e6020526000908152604090205481565b61293461370c565b6001600160a01b031661294561229a565b6001600160a01b0316146129a0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61ffff8083166000818152600b60209081526040808320948616835293905282902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590517fec23bee6f88cfecebb09d6aaaed66f0ce110debc1f61117c8270a7116597df9a9061228e9084906150be565b612a2261370c565b6001600160a01b0316612a3361229a565b6001600160a01b031614612a8e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61ffff82166000908152600e602052604090205415612abf5760405162461bcd60e51b815260040161091290614d90565b61ffff82166000818152600e602052604090819020839055517f0dad975e1d2fbe771c95cdcc7be9a1e61181de7173abe0a32b8f8f83140873e59061228e908490614633565b612b0d61370c565b6001600160a01b0316612b1e61229a565b6001600160a01b031614612b79576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116612b9f5760405162461bcd60e51b815260040161091290614d33565b600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517fcb7ef3e545f5cdb893f5c568ba710fe08f336375a2d9fd66e161033f8fc09ef390600090a250565b612c0961370c565b6001600160a01b0316612c1a61229a565b6001600160a01b031614612c75576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116612cba5760405162461bcd60e51b815260040180806020018281038252602681526020018061530d6026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60055481565b60046020526000908152604090205481565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314612d8e5760405162461bcd60e51b815260040161091290614e4a565b6001600160a01b038416600090815260066020908152604080832061ffff8916845290915290206001841415612e3b576000612dcc83850185613f98565b61ffff8089166000908152600a60205260409020549192509081169082161115612e085760405162461bcd60e51b815260040161091290614c79565b81547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff91909116178155613061565b6002841415612e92576000612e5283850185614385565b825467ffffffffffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffff90911617825550613061565b6003841415612ef0576000612ea983850185613cf6565b82546001600160a01b039091166a0100000000000000000000027fffff0000000000000000000000000000000000000000ffffffffffffffffffff90911617825550613061565b6004841415612faa576000612f0783850185613f98565b61ffff8089166000908152600b602090815260408083209385168352929052205490915060ff1680612f3b575061ffff8116155b612f575760405162461bcd60e51b8152600401610912906146f9565b815461ffff9091167e01000000000000000000000000000000000000000000000000000000000000027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909116178155613061565b6005841415613002576000612fc183850185614385565b6001830180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9290921691909117905550613061565b600684141561176f57600061301983850185613cf6565b6001830180546001600160a01b0390921668010000000000000000027fffffffff0000000000000000000000000000000000000000ffffffffffffffff909216919091179055505b83856001600160a01b03167ffc01bf86212a14151d51d1be5c2ac64d67d5ec823dfc6f53298d7ce3f3d3d252858560405161309d92919061467d565b60405180910390a3505050505050565b600082821115613104576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b613112613ba9565b6001600160a01b03808316600090815260066020908152604080832061ffff808916808652918452828520835160c0810185528154808416825267ffffffffffffffff6201000082048116838901526a010000000000000000000082048a16838801527e010000000000000000000000000000000000000000000000000000000000009091048416606083015260019092015491821660808201526801000000000000000090910490961660a0870152908452600790925290912082519091166131df57805461ffff1682525b602082015167ffffffffffffffff1661320a57805462010000900467ffffffffffffffff1660208301525b60408201516001600160a01b031661323b5780546a010000000000000000000090046001600160a01b031660408301525b606082015161ffff166132765780547e01000000000000000000000000000000000000000000000000000000000000900461ffff1660608301525b608082015167ffffffffffffffff1661329e57600181015467ffffffffffffffff1660808301525b60a08201516001600160a01b03166132d05760018101546801000000000000000090046001600160a01b031660a08301525b509392505050565b600082820183811015611787576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081516000141561340d5761ffff808716600090815260086020908152604080832060608a015190941683529281529082902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600186161502019093169290920491820184900484028101840190945280845290918301828280156134055780601f106133da57610100808354040283529160200191613405565b820191906000526020600020905b8154815290600101906020018083116133e857829003601f168201915b505050505091505b604080860151606087015191517f5886ea65000000000000000000000000000000000000000000000000000000008152909182916001600160a01b03831691635886ea6591613466918c918b908b908b90600401615178565b602060405180830381600087803b15801561348057600080fd5b505af1158015613494573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134b8919061436d565b92507fb0c632f55f1e1b3b2c3d82f41ee4716bb4c00f0f5d84cdafc141581bb8757a4f8488606001516040516134ef9291906146a4565b60405180910390a1505095945050505050565b60a0820151606083015160808401516040517fc5e193cd000000000000000000000000000000000000000000000000000000008152600093926001600160a01b0384169263c5e193cd9261355e928a92909189906004016151b4565b602060405180830381600087803b15801561357857600080fd5b505af115801561358c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b0919061436d565b95945050505050565b6000806001600160a01b03831615806135db57506002546001600160a01b0316155b6003546040517f5cbbbd750000000000000000000000000000000000000000000000000000000081529192506000916001600160a01b0390911690635cbbbd759061362f908515908b908b9060040161461b565b60206040518083038186803b15801561364757600080fd5b505afa15801561365b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061367f919061436d565b9050801561370257811561369557915081613702565b846001600160a01b0316846001600160a01b031614806136bd57506001600160a01b03841632145b6136d95760405162461bcd60e51b81526004016109129061496f565b6002546136f1906001600160a01b031685308461379b565b6005546136fe90826132d8565b6005555b5050949350505050565b3390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052613790908490613829565b505050565b3b151590565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052613823908590613829565b50505050565b600061387e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166138da9092919063ffffffff16565b8051909150156137905780806020019051602081101561389d57600080fd5b50516137905760405162461bcd60e51b815260040180806020018281038252602a815260200180615333602a913960400191505060405180910390fd5b606061283d8484600085856138ee85613795565b61393f576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b6020831061399b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161395e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146139fd576040519150601f19603f3d011682016040523d82523d6000602084013e613a02565b606091505b5091509150613a12828286613a1d565b979650505050505050565b60608315613a2c575081611787565b825115613a3c5782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613a86578181015183820152602001613a6e565b50505050905090810190601f168015613ab35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282613af75760008555613b5b565b82601f10613b2e578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555613b5b565b82800160010185558215613b5b579182015b82811115613b5b578235825591602001919060010190613b40565b50613b67929150613bde565b5090565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820181905260a082019290925260c081019190915290565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b5b80821115613b675760008155600101613bdf565b80356118ec816152ce565b80516118ec816152ce565b60008083601f840112613c1a578182fd5b50813567ffffffffffffffff811115613c31578182fd5b602083019150836020828501011115613c4957600080fd5b9250929050565b600082601f830112613c60578081fd5b815167ffffffffffffffff811115613c7457fe5b613ca560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601615256565b818152846020838601011115613cb9578283fd5b61283d8260208301602087016152a2565b80356118ec816152e6565b80516118ec816152e6565b80356118ec816152f6565b80516118ec816152f6565b600060208284031215613d07578081fd5b8135611787816152ce565b60008060408385031215613d24578081fd5b8235613d2f816152ce565b946020939093013593505050565b60008060408385031215613d4f578182fd5b8235613d5a816152ce565b91506020830135613d6a816152e6565b809150509250929050565b60008060008060808587031215613d8a578182fd5b8435613d95816152ce565b93506020850135613da5816152e6565b93969395505050506040820135916060013590565b60008060408385031215613d24578182fd5b60008060008060008060008060008060006101008c8e031215613ded578687fd5b613df68c613bf3565b9a50613e0460208d01613ce0565b9950613e1260408d01613cca565b985067ffffffffffffffff8060608e01351115613e2d578788fd5b613e3d8e60608f01358f01613c09565b909950975060808d0135811015613e52578687fd5b613e628e60808f01358f01613c09565b9097509550613e7360a08e01613bf3565b9450613e8160c08e01613bf3565b93508060e08e01351115613e93578283fd5b50613ea48d60e08e01358e01613c09565b81935080925050509295989b509295989b9093969950565b600060208284031215613ecd578081fd5b815167ffffffffffffffff80821115613ee4578283fd5b9083019060e08286031215613ef7578283fd5b613f0160e0615256565b613f0a83613cd5565b8152613f1860208401613cd5565b6020820152613f2960408401613ceb565b6040820152613f3a60608401613bfe565b6060820152608083015182811115613f50578485fd5b613f5c87828601613c50565b60808301525060a083015160a082015260c083015182811115613f7d578485fd5b613f8987828601613c50565b60c08301525095945050505050565b600060208284031215613fa9578081fd5b8135611787816152e6565b60008060408385031215613fc6578182fd5b8235613fd1816152e6565b91506020830135613d6a816152ce565b600080600080600080600060a0888a031215613ffb578081fd5b8735614006816152e6565b96506020880135614016816152ce565b9550604088013567ffffffffffffffff80821115614032578283fd5b61403e8b838c01613c09565b909750955060608a013591508115158214614057578283fd5b9093506080890135908082111561406c578283fd5b506140798a828b01613c09565b989b979a50959850939692959293505050565b6000806000606084860312156140a0578081fd5b83356140ab816152e6565b925060208401356140bb816152ce565b929592945050506040919091013590565b600080600080600080600060c0888a0312156140e6578081fd5b87356140f1816152e6565b96506020880135614101816152ce565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff811115614131578182fd5b6140798a828b01613c09565b600080600080600060808688031215614154578283fd5b853561415f816152e6565b9450602086013561416f816152ce565b935060408601359250606086013567ffffffffffffffff811115614191578182fd5b61419d88828901613c09565b969995985093965092949392505050565b600080604083850312156141c0578182fd5b8235613d2f816152e6565b600080600080608085870312156141e0578182fd5b84356141eb816152e6565b966020860135965060408601359560600135945092505050565b600080600060408486031215614219578081fd5b8335614224816152e6565b9250602084013567ffffffffffffffff81111561423f578182fd5b61424b86828701613c09565b9497909650939450505050565b6000806040838503121561426a578182fd5b8235613d5a816152e6565b6000806000806060858703121561428a578182fd5b8435614295816152e6565b935060208501356142a5816152e6565b9250604085013567ffffffffffffffff8111156142c0578283fd5b6142cc87828801613c09565b95989497509550505050565b600080600080600080600060e0888a0312156142f2578081fd5b87356142fd816152e6565b9650602088013561430d816152e6565b9550604088013561431d816152f6565b9450606088013561432d816152ce565b9350608088013561433d816152e6565b925060a088013561434d816152f6565b915060c088013561435d816152ce565b8091505092959891949750929550565b60006020828403121561437e578081fd5b5051919050565b600060208284031215614396578081fd5b8135611787816152f6565b6000602082840312156143b2578081fd5b8151611787816152f6565b6001600160a01b03169052565b600082845282826020860137806020848601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011685010190509392505050565b6000815180845261442a8160208601602086016152a2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000835161446e8184602088016152a2565b60609390931b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190920190815260140192915050565b90565b60007fffffffffffffffff0000000000000000000000000000000000000000000000008860c01b1682527fffff000000000000000000000000000000000000000000000000000000000000808860f01b1660088401527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008760601b16600a840152808660f01b16601e8401525083516145498160208501602088016152a2565b808301905083516145618160208401602088016152a2565b0160200198975050505050505050565b6001600160a01b0391909116815260200190565b606080825284519082018190526000906020906080840190828801845b828110156145c75781516001600160a01b0316845292840192908401906001016145a2565b50505083810382850152855180825286830191830190845b818110156145fb578351835292840192918401916001016145df565b505080935050505061283d60408301846143bd565b901515815260200190565b92151583526020830191909152604082015260600190565b90815260200190565b9283526020830191909152604082015260600190565b60008582526060602083015261466c6060830185876143ca565b905082604083015295945050505050565b60006020825261283d6020830184866143ca565b6000602082526117876020830184614412565b6000604082526146b76040830185614412565b905061ffff831660208301529392505050565b6000606082526146dd6060830186614412565b67ffffffffffffffff9490941660208301525060400152919050565b60208082526026908201527f4c617965725a65726f3a20696e76616c6964206f7574626f756e642070726f6f60408201527f6620747970650000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f4c617965725a65726f3a20647374436861696e496420646f6573206e6f74206560408201527f7869737400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526018908201527f4c617965725a65726f3a206f6e6c792074726561737572790000000000000000604082015260600190565b6020808252601e908201527f4c617965725a65726f3a20496e76616c696420636f6e66696720747970650000604082015260600190565b6020808252601a908201527f4c617965725a65726f3a207769746864726177206661696c6564000000000000604082015260600190565b60208082526025908201527f4c617965725a65726f3a205f746f2063616e6e6f74206265207a65726f20616460408201527f6472657373000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526031908201527f4c617965725a65726f3a205f6c617965725a65726f546f6b656e2063616e6e6f60408201527f74206265207a65726f2061646472657373000000000000000000000000000000606082015260800190565b60208082526022908201527f4c617965725a65726f3a20696e76616c69642072656c6179657220616464726560408201527f7373000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602b908201527f4c617965725a65726f3a206d75737420626520706169642062792073656e646560408201527f72206f72206f726967696e000000000000000000000000000000000000000000606082015260800190565b6020808252601d908201527f4c617965725a65726f3a20696e76616c69642064737441646472657373000000604082015260600190565b60208082526021908201527f4c617965725a65726f3a20696e76616c6964206f7261636c652061646472657360408201527f7300000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f4c617965725a65726f3a20696e76616c6964205f7061636b65742e756c6e416460408201527f6472657373000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601e908201527f4c617965725a65726f3a20696e76616c696420737263436861696e2049640000604082015260600190565b6020808252601a908201527f4c617965725a65726f3a20696e76616c69642072656c61796572000000000000604082015260600190565b6020808252601a908201527f4c617965725a65726f3a2077726f6e6720706174682064617461000000000000604082015260600190565b60208082526029908201527f4c617965725a65726f3a206c6962726172792063616e6e6f74206265207a657260408201527f6f20616464726573730000000000000000000000000000000000000000000000606082015260800190565b60208082526043908201527f4c617965725a65726f3a206f7261636c6520646174612063616e206f6e6c792060408201527f75706461746520696620697420686173206d6f726520636f6e6669726d61746960608201527f6f6e730000000000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252601e908201527f4c617965725a65726f3a20696e76616c696420647374436861696e2049640000604082015260600190565b60208082526030908201527f4c617965725a65726f3a20696e76616c696420696e626f756e642070726f6f6660408201527f206c6962726172792076657273696f6e00000000000000000000000000000000606082015260800190565b60208082526022908201527f4c617965725a65726f3a20696e76616c6964207372634164647265737320736960408201527f7a65000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4c617965725a65726f3a2074726561737572792063616e6e6f74206265207a6560408201527f726f206164647265737300000000000000000000000000000000000000000000606082015260800190565b60208082526021908201527f4c617965725a65726f3a2072656d6f746520756c6e20616c726561647920736560408201527f7400000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f4c617965725a65726f3a2063616e206e6f7420616464206e6577206c6962726160408201527f7279000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526018908201527f4c617965725a65726f3a206f6e6c7920656e64706f696e740000000000000000604082015260600190565b6020808252602e908201527f4c617965725a65726f3a20696e76616c6964206f7574626f756e6420626c6f6360408201527f6b20636f6e6669726d6174696f6e000000000000000000000000000000000000606082015260800190565b60208082526028908201527f4c617965725a65726f3a20696e636f72726563742072656d6f7465206164647260408201527f6573732073697a65000000000000000000000000000000000000000000000000606082015260800190565b60208082526030908201527f4c617965725a65726f3a2072656d6f746520636861696e20616464726573732060408201527f73697a6520616c72656164792073657400000000000000000000000000000000606082015260800190565b6020808252602d908201527f4c617965725a65726f3a20696e76616c696420696e626f756e6420626c6f636b60408201527f20636f6e6669726d6174696f6e00000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4c617965725a65726f3a206e6f7420656e6f75676820626c6f636b20636f6e6660408201527f69726d6174696f6e730000000000000000000000000000000000000000000000606082015260800190565b600060c08201905061ffff808451168352602084015167ffffffffffffffff8082166020860152604086015191506001600160a01b0380831660408701528360608801511660608701528160808801511660808701528060a08801511660a08701525050505092915050565b61ffff91909116815260200190565b600061ffff851682526001600160a01b0384166020830152606060408301526135b06060830184614412565b600061ffff85168252604060208301526135b06040830184866143ca565b600061ffff8816825260c0602083015261513460c0830188614412565b6001600160a01b038716604084015267ffffffffffffffff8616606084015284608084015282810360a084015261516b8185614412565b9998505050505050505050565b600061ffff80881683528087166020840152506001600160a01b038516604083015283606083015260a06080830152613a1260a0830184614412565b61ffff948516815292909316602083015267ffffffffffffffff1660408201526001600160a01b03909116606082015260800190565b61ffff968716815267ffffffffffffffff95861660208201526001600160a01b03948516604082015292909516606083015290921660808301529190911660a082015260c00190565b918252602082015260400190565b67ffffffffffffffff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561527257fe5b604052919050565b60008085851115615289578182fd5b83861115615295578182fd5b5050820193919092039150565b60005b838110156152bd5781810151838201526020016152a5565b838111156138235750506000910152565b6001600160a01b03811681146152e357600080fd5b50565b61ffff811681146152e357600080fd5b67ffffffffffffffff811681146152e357600080fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220ad3775c062174b6c724d1efa9795719c7c120bf409bb95c8aa582e2e1acd54be64736f6c63430007060033\";\n\ntype UltraLightNodeV2AltTokenConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: UltraLightNodeV2AltTokenConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class UltraLightNodeV2AltToken__factory extends ContractFactory {\n constructor(...args: UltraLightNodeV2AltTokenConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n _endpoint: PromiseOrValue<string>,\n _nonceContract: PromiseOrValue<string>,\n _localChainId: PromiseOrValue<BigNumberish>,\n _feeHandler: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<UltraLightNodeV2AltToken> {\n return super.deploy(\n _endpoint,\n _nonceContract,\n _localChainId,\n _feeHandler,\n overrides || {}\n ) as Promise<UltraLightNodeV2AltToken>;\n }\n override getDeployTransaction(\n _endpoint: PromiseOrValue<string>,\n _nonceContract: PromiseOrValue<string>,\n _localChainId: PromiseOrValue<BigNumberish>,\n _feeHandler: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(\n _endpoint,\n _nonceContract,\n _localChainId,\n _feeHandler,\n overrides || {}\n );\n }\n override attach(address: string): UltraLightNodeV2AltToken {\n return super.attach(address) as UltraLightNodeV2AltToken;\n }\n override connect(signer: Signer): UltraLightNodeV2AltToken__factory {\n return super.connect(signer) as UltraLightNodeV2AltToken__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): UltraLightNodeV2AltTokenInterface {\n return new utils.Interface(_abi) as UltraLightNodeV2AltTokenInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): UltraLightNodeV2AltToken {\n return new Contract(\n address,\n _abi,\n signerOrProvider\n ) as UltraLightNodeV2AltToken;\n }\n}\n","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\nimport {\n Signer,\n utils,\n Contract,\n ContractFactory,\n BigNumberish,\n Overrides,\n} from \"ethers\";\nimport type { Provider, TransactionRequest } from \"@ethersproject/providers\";\nimport type { PromiseOrValue } from \"../common\";\nimport type {\n UltraLightNodeV2Radar,\n UltraLightNodeV2RadarInterface,\n} from \"../UltraLightNodeV2Radar\";\n\nconst _abi = [\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_endpoint\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_nonceContract\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"_localChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_dappRadar\",\n type: \"address\",\n },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"lib\",\n type: \"address\",\n },\n ],\n name: \"AddInboundProofLibraryForChain\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"userApplication\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"uint256\",\n name: \"configType\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"newConfig\",\n type: \"bytes\",\n },\n ],\n name: \"AppConfigUpdated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"proofType\",\n type: \"uint16\",\n },\n ],\n name: \"EnableSupportedOutboundProof\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"lookupHash\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"blockData\",\n type: \"bytes32\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"confirmations\",\n type: \"uint256\",\n },\n ],\n name: \"HashReceived\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"payloadHash\",\n type: \"bytes32\",\n },\n ],\n name: \"InvalidDst\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"payload\",\n type: \"bytes\",\n },\n ],\n name: \"Packet\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"srcChainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"srcAddress\",\n type: \"bytes\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"dstAddress\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"nonce\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"payloadHash\",\n type: \"bytes32\",\n },\n ],\n name: \"PacketReceived\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"adapterParams\",\n type: \"bytes\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n ],\n name: \"RelayerParams\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"size\",\n type: \"uint256\",\n },\n ],\n name: \"SetChainAddressSize\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"proofType\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes\",\n name: \"adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"SetDefaultAdapterParamsForChainId\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"inboundProofLib\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"inboundBlockConfirm\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"relayer\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"uint64\",\n name: \"outboundBlockConfirm\",\n type: \"uint64\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n ],\n name: \"SetDefaultConfigForChainId\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"tokenAddress\",\n type: \"address\",\n },\n ],\n name: \"SetLayerZeroToken\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"uint16\",\n name: \"chainId\",\n type: \"uint16\",\n },\n {\n indexed: false,\n internalType: \"bytes32\",\n name: \"uln\",\n type: \"bytes32\",\n },\n ],\n name: \"SetRemoteUln\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"treasuryAddress\",\n type: \"address\",\n },\n ],\n name: \"SetTreasury\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"msgSender\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"WithdrawNative\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"msgSender\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"to\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amount\",\n type: \"uint256\",\n },\n ],\n name: \"WithdrawZRO\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_INBOUND_BLOCK_CONFIRMATIONS\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_INBOUND_PROOF_LIBRARY_VERSION\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_ORACLE\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_OUTBOUND_BLOCK_CONFIRMATIONS\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_OUTBOUND_PROOF_TYPE\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"CONFIG_TYPE_RELAYER\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_address\",\n type: \"address\",\n },\n ],\n name: \"accruedNativeFee\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_library\",\n type: \"address\",\n },\n ],\n name: \"addInboundProofLibraryForChain\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"appConfig\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"inboundProofLibraryVersion\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"inboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"relayer\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"outboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"chainAddressSizeMap\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"dappRadar\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"decommission\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"decommissioned\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"defaultAdapterParams\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"defaultAppConfig\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"inboundProofLibraryVersion\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"inboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"relayer\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"outboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_proofType\",\n type: \"uint16\",\n },\n ],\n name: \"enableSupportedOutboundProof\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"endpoint\",\n outputs: [\n {\n internalType: \"contract ILayerZeroEndpoint\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_ua\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n {\n internalType: \"bool\",\n name: \"_payInZRO\",\n type: \"bool\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"estimateFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"nativeFee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"zroFee\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_remoteChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_ua\",\n type: \"address\",\n },\n ],\n name: \"getAppConfig\",\n outputs: [\n {\n components: [\n {\n internalType: \"uint16\",\n name: \"inboundProofLibraryVersion\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"inboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"relayer\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"outboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"oracle\",\n type: \"address\",\n },\n ],\n internalType:\n \"struct ILayerZeroUltraLightNodeV2.ApplicationConfiguration\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_remoteChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_ua\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_configType\",\n type: \"uint256\",\n },\n ],\n name: \"getConfig\",\n outputs: [\n {\n internalType: \"bytes\",\n name: \"\",\n type: \"bytes\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_path\",\n type: \"bytes\",\n },\n ],\n name: \"getOutboundNonce\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n name: \"hashLookup\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"inboundNonceCap\",\n outputs: [\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"inboundProofLibrary\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_srcRadarAddress\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_gasLimitPerCall\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"_steps\",\n type: \"uint256\",\n },\n ],\n name: \"incrementRadarInboundNonce\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_dstRadarAddress\",\n type: \"address\",\n },\n ],\n name: \"initRadarOutboundNonce\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"layerZeroToken\",\n outputs: [\n {\n internalType: \"contract IERC20\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"localChainId\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"maxInboundProofLibrary\",\n outputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"nativeFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"nonceContract\",\n outputs: [\n {\n internalType: \"contract NonceContractRadar\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"outboundNonceSet\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [\n {\n internalType: \"address\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_ua\",\n type: \"address\",\n },\n {\n internalType: \"uint64\",\n name: \"\",\n type: \"uint64\",\n },\n {\n internalType: \"uint16\",\n name: \"_dstChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_path\",\n type: \"bytes\",\n },\n {\n internalType: \"bytes\",\n name: \"_payload\",\n type: \"bytes\",\n },\n {\n internalType: \"address payable\",\n name: \"_refundAddress\",\n type: \"address\",\n },\n {\n internalType: \"address\",\n name: \"_zroPaymentAddress\",\n type: \"address\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"send\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint256\",\n name: \"_size\",\n type: \"uint256\",\n },\n ],\n name: \"setChainAddressSize\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_remoteChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_ua\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_configType\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes\",\n name: \"_config\",\n type: \"bytes\",\n },\n ],\n name: \"setConfig\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_proofType\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes\",\n name: \"_adapterParams\",\n type: \"bytes\",\n },\n ],\n name: \"setDefaultAdapterParamsForChainId\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_chainId\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"_inboundProofLibraryVersion\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"_inboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"_relayer\",\n type: \"address\",\n },\n {\n internalType: \"uint16\",\n name: \"_outboundProofType\",\n type: \"uint16\",\n },\n {\n internalType: \"uint64\",\n name: \"_outboundBlockConfirmations\",\n type: \"uint64\",\n },\n {\n internalType: \"address\",\n name: \"_oracle\",\n type: \"address\",\n },\n ],\n name: \"setDefaultConfigForChainId\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_layerZeroToken\",\n type: \"address\",\n },\n ],\n name: \"setLayerZeroToken\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_remoteChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"_remoteUln\",\n type: \"bytes32\",\n },\n ],\n name: \"setRemoteUln\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_treasury\",\n type: \"address\",\n },\n ],\n name: \"setTreasury\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"supportedOutboundProof\",\n outputs: [\n {\n internalType: \"bool\",\n name: \"\",\n type: \"bool\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"treasuryContract\",\n outputs: [\n {\n internalType: \"contract ILayerZeroTreasury\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"treasuryZROFees\",\n outputs: [\n {\n internalType: \"uint256\",\n name: \"\",\n type: \"uint256\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"\",\n type: \"uint16\",\n },\n ],\n name: \"ulnLookup\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"bytes32\",\n name: \"_lookupHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"uint256\",\n name: \"_confirmations\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"_blockData\",\n type: \"bytes32\",\n },\n ],\n name: \"updateHash\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"uint16\",\n name: \"_srcChainId\",\n type: \"uint16\",\n },\n {\n internalType: \"address\",\n name: \"_dstAddress\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_gasLimit\",\n type: \"uint256\",\n },\n {\n internalType: \"bytes32\",\n name: \"_lookupHash\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes32\",\n name: \"_blockData\",\n type: \"bytes32\",\n },\n {\n internalType: \"bytes\",\n name: \"_transactionProof\",\n type: \"bytes\",\n },\n ],\n name: \"validateTransactionProof\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address payable\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawNative\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_to\",\n type: \"address\",\n },\n {\n internalType: \"uint256\",\n name: \"_amount\",\n type: \"uint256\",\n },\n ],\n name: \"withdrawZRO\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const;\n\nconst _bytecode =\n \"0x6101006040523480156200001257600080fd5b50604051620060d8380380620060d883398101604081905262000035916200014c565b60016000908155620000466200012b565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b038416620000c65760405162461bcd60e51b8152600401620000bd90620001af565b60405180910390fd5b6001600160a01b038316620000ef5760405162461bcd60e51b8152600401620000bd90620001f9565b60f09190911b6001600160f01b03191660a052606092831b6001600160601b031990811660805291831b821660c05290911b1660e05262000248565b3390565b80516001600160a01b03811681146200014757600080fd5b919050565b6000806000806080858703121562000162578384fd5b6200016d856200012f565b93506200017d602086016200012f565b9250604085015161ffff8116811462000194578283fd5b9150620001a4606086016200012f565b905092959194509250565b6020808252602a908201527f4c617965725a65726f3a20656e64706f696e742063616e6e6f74206265207a65604082015269726f206164647265737360b01b606082015260800190565b6020808252602f908201527f4c617965725a65726f3a206e6f6e6365436f6e74726163742063616e6e6f742060408201526e6265207a65726f206164647265737360881b606082015260800190565b60805160601c60a05160f01c60c05160601c60e05160601c615df4620002e460003980610cef5280610ea952806113fb52806120d352806123c6528061248b5280612aaa52508061095952806115ce52806124f15280612ff25250806117d85280611d0a5280612d69525080610bb35280610d625280610e7852806113b35280611d2e52806123975280612ef652806135865250615df46000f3fe6080604052600436106103345760003560e01c80637f068c0f116101b0578063b8e7e3e0116100ec578063eb0d4c3111610095578063f2fde38b1161006f578063f2fde38b146108e2578063f47a5feb14610902578063f58589a214610917578063f8e1734c1461093757610334565b8063eb0d4c3114610882578063ed28580a146108a2578063f0f44260146108c257610334565b8063db00719b116100c6578063db00719b14610822578063ddfdef5a14610842578063ea216c211461086257610334565b8063b8e7e3e0146107c2578063b9a99bed146107e2578063d543c7741461080257610334565b80638da5cb5b11610159578063959f594311610133578063959f594314610740578063987fa2d514610760578063a466222214610780578063b77d22ad146107ad57610334565b80638da5cb5b14610701578063904d3b8d1461071657806394e17ef91461072b57610334565b80638317814a1161018a5780638317814a146106a15780638525b711146106c157806387078f9f146106e157610334565b80637f068c0f146106575780638140666e1461066c5780638207f79d1461068157610334565b806352d2871f1161027f57806369412bfa11610228578063704316e511610202578063704316e5146105e2578063715018a614610602578063759c5b3b14610617578063775453731461063757610334565b806369412bfa1461058d5780636a14ac82146105ad5780636d510126146105cd57610334565b80635af7956c116102595780635af7956c146105295780635b056da5146105565780635e280f111461057857610334565b806352d2871f146104bc57806352d3b500146104dc57806357983548146104fc57610334565b80632cfacb06116102e157806340a7bb10116102bb57806340a7bb101461046657806349148c37146104945780634d3a0f7c146104a957610334565b80632cfacb06146103fd5780632f8134641461041f57806331bd24301461045157610334565b80630fcbae37116103125780630fcbae371461039b57806318da0011146103bb5780632a819bbf146103d057610334565b806302bd97431461033957806307b18bde1461036457806307b9ca7c14610386575b600080fd5b34801561034557600080fd5b5061034e610957565b60405161035b9190614e28565b60405180910390f35b34801561037057600080fd5b5061038461037f366004614578565b61097b565b005b34801561039257600080fd5b5061034e610b05565b3480156103a757600080fd5b506103846103b6366004614a14565b610b14565b3480156103c757600080fd5b5061034e610f1d565b3480156103dc57600080fd5b506103f06103eb366004614aee565b610f2c565b60405161035b9190614ebd565b34801561040957600080fd5b50610412610fee565b60405161035b9190614e5f565b34801561042b57600080fd5b5061043f61043a3660046147fe565b610ff3565b60405161035b96959493929190615c4c565b34801561045d57600080fd5b50610412611077565b34801561047257600080fd5b50610486610481366004614847565b61107c565b60405161035b929190615c95565b3480156104a057600080fd5b506104126113ac565b6103846104b7366004614632565b6113b1565b3480156104c857600080fd5b506103f06104d73660046148f2565b611871565b3480156104e857600080fd5b506103846104f736600461455c565b611bdb565b34801561050857600080fd5b5061051c61051736600461455c565b611cd7565b60405161035b9190615ca3565b34801561053557600080fd5b506105496105443660046147fe565b611cf3565b60405161035b9190614e3c565b34801561056257600080fd5b5061056b611d08565b60405161035b9190615aa6565b34801561058457600080fd5b5061034e611d2c565b34801561059957600080fd5b506104126105a836600461455c565b611d50565b3480156105b957600080fd5b506103846105c8366004614b6e565b611d6f565b3480156105d957600080fd5b5061034e6120d1565b3480156105ee57600080fd5b506103846105fd366004614a61565b6120f5565b34801561060e57600080fd5b506103846121ba565b34801561062357600080fd5b506104126106323660046145db565b612290565b34801561064357600080fd5b5061038461065236600461481a565b6122bc565b34801561066357600080fd5b50610384612558565b34801561067857600080fd5b506104126125f9565b34801561068d57600080fd5b5061038461069c36600461481a565b6125fe565b3480156106ad57600080fd5b506103846106bc366004614b0b565b612797565b3480156106cd57600080fd5b506103846106dc366004614620565b612880565b3480156106ed57600080fd5b506103846106fc366004614a44565b612982565b34801561070d57600080fd5b5061034e612a79565b34801561072257600080fd5b50610412612a88565b34801561073757600080fd5b50610549612a8d565b34801561074c57600080fd5b5061041261075b3660046147fe565b612a96565b34801561076c57600080fd5b5061038461077b366004614932565b612aa8565b34801561078c57600080fd5b506107a061079b36600461481a565b612f92565b60405161035b9190615a3a565b3480156107b957600080fd5b50610412612fa4565b3480156107ce57600080fd5b5061056b6107dd3660046147fe565b612fa9565b3480156107ee57600080fd5b5061051c6107fd366004614a9b565b612fbf565b34801561080e57600080fd5b5061054961081d366004614aee565b613083565b34801561082e57600080fd5b5061034e61083d366004614aee565b6130a3565b34801561084e57600080fd5b5061043f61085d3660046145a3565b6130c9565b34801561086e57600080fd5b5061041261087d3660046147fe565b613158565b34801561088e57600080fd5b5061038461089d366004614aee565b61316a565b3480156108ae57600080fd5b506103846108bd366004614a44565b613258565b3480156108ce57600080fd5b506103846108dd36600461455c565b613343565b3480156108ee57600080fd5b506103846108fd36600461455c565b61343f565b34801561090e57600080fd5b5061041261356c565b34801561092357600080fd5b5061041261093236600461455c565b613572565b34801561094357600080fd5b506103846109523660046149a3565b613584565b7f000000000000000000000000000000000000000000000000000000000000000081565b600260005414156109d3576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000556001600160a01b038216610a075760405162461bcd60e51b81526004016109fe906150e1565b60405180910390fd5b33600090815260046020526040902054610a2190826138eb565b336000908152600460205260408082209290925590516001600160a01b038416908390610a4d90614d5d565b60006040518083038185875af1925050503d8060008114610a8a576040519150601f19603f3d011682016040523d82523d6000602084013e610a8f565b606091505b5050905080610ab05760405162461bcd60e51b81526004016109fe9061504d565b826001600160a01b0316336001600160a01b03167f3bfd26201736b5cb14a562ab3cfc2bef76901726e3a78483d6288af47131e1d984604051610af39190614e5f565b60405180910390a35050600160005550565b6002546001600160a01b031681565b610b1c613948565b6001600160a01b0316610b2d612a79565b6001600160a01b031614610b88576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03831660009081526011602052604090205467ffffffffffffffff16610cea5760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fdc07c708686604051602001610bf29190614ca9565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610c1e929190615b25565b60206040518083038186803b158015610c3657600080fd5b505afa158015610c4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6e9190614c37565b905060008167ffffffffffffffff1611610c9a5760405162461bcd60e51b81526004016109fe906156ad565b6001600160a01b038416600090815260116020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff929092169190911790555b6000837f0000000000000000000000000000000000000000000000000000000000000000604051602001610d1f929190614cd9565b60408051601f19818403018152908290527ffdc07c7000000000000000000000000000000000000000000000000000000000825291506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fdc07c7090610d999089908690600401615b25565b60206040518083038186803b158015610db157600080fd5b505afa158015610dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de99190614c37565b6001600160a01b03861660009081526011602052604081205491925067ffffffffffffffff909116905b84811015610f135760019092019167ffffffffffffffff8083169084161115610e3b57610f13565b604080516020810182526000815290517fc2fa48130000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163c2fa481391610ed5918c9189917f0000000000000000000000000000000000000000000000000000000000000000918a918e91600401615b42565b600060405180830381600087803b158015610eef57600080fd5b505af1158015610f03573d6000803e3d6000fd5b505060019092019150610e139050565b5050505050505050565b6003546001600160a01b031681565b60086020908152600092835260408084208252918352918190208054825160026001831615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190921691909104601f810185900485028201850190935282815292909190830182828015610fe65780601f10610fbb57610100808354040283529160200191610fe6565b820191906000526020600020905b815481529060010190602001808311610fc957829003601f168201915b505050505081565b600381565b6007602052600090815260409020805460019091015461ffff8083169267ffffffffffffffff6201000082048116936001600160a01b036a010000000000000000000084048116947e010000000000000000000000000000000000000000000000000000000000009094049093169291811691680100000000000000009091041686565b600681565b600080600061108b8a8a61394c565b9050606084156110d45785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293506111a392505050565b61ffff808c166000908152600860209081526040808320606087015190941683529281529082902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001861615020190931692909204918201849004840281018401909452808452909183018282801561119b5780601f106111705761010080835404028352916020019161119b565b820191906000526020600020905b81548152906001019060200180831161117e57829003601f168201915b505050505090505b600082604001516001600160a01b031663c03f15298d85606001518e8e8e9050876040518663ffffffff1660e01b81526004016111e4959493929190615bda565b60206040518083038186803b1580156111fc57600080fd5b505afa158015611210573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112349190614c03565b905060008b905060008460a001516001600160a01b0316635553fb8e8f87606001518860800151866040518563ffffffff1660e01b815260040161127b9493929190615c16565b60206040518083038186803b15801561129357600080fd5b505afa1580156112a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cb9190614c03565b6003546040517f5cbbbd750000000000000000000000000000000000000000000000000000000081529192506000916001600160a01b0390911690635cbbbd759061131e908e9088908790600401614e47565b60206040518083038186803b15801561133657600080fd5b505afa15801561134a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136e9190614c03565b90508a61137e5780975087611383565b809650865b50611398826113928a87613b17565b90613b17565b975050505050505097509795505050505050565b600281565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146113f95760405162461bcd60e51b81526004016109fe906157fb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168b6001600160a01b03161461144a5760405162461bcd60e51b81526004016109fe906158ec565b600f5460ff161561146d5760405162461bcd60e51b81526004016109fe906157c4565b61ffff89166000908152600e60205260409020548b908a906114a15760405162461bcd60e51b81526004016109fe90614f82565b61ffff81166000908152600c60205260408120546060919080158015906114ca5750601481018c145b6114e65760405162461bcd60e51b81526004016109fe9061588f565b6000808e8e8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505083810160140151925090506001600160a01b03878116908316146115555760405162461bcd60e51b81526004016109fe906153eb565b8e8e600090859261156893929190615cdc565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040517f6fe7b673000000000000000000000000000000000000000000000000000000008152929750506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691636fe7b67391506116089089908b908690600401615ad2565b602060405180830381600087803b15801561162257600080fd5b505af1158015611636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165a9190614c37565b935050505060008a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509394506116a6925087915088905061394c565b905060006116ee86838986518d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613b7192505050565b905060006116fd87848a613d4b565b9050600061170d83838b8f613e05565b9050600061171f826113928686613b17565b9050348111156117415760405162461bcd60e51b81526004016109fe90615084565b600061174d34836138eb565b905080156117d35760008f6001600160a01b03168260405161176e90614d5d565b60006040518083038185875af1925050503d80600081146117ab576040519150601f19603f3d011682016040523d82523d6000602084013e6117b0565b606091505b50509050806117d15760405162461bcd60e51b81526004016109fe906151f8565b505b6000887f00000000000000000000000000000000000000000000000000000000000000008d8d8d8c60405160200161181096959493929190614d60565b60405160208183030381529060405290507fe9bded5f24a4168e4f3bf44e00298c993b22376aad8c58c7dda9718a54cbea82816040516118509190614ebd565b60405180910390a15050505050505050505050505050505050505050505050565b6001600160a01b038216600090815260066020908152604080832061ffff871684529091529020606090600183141561190557805461ffff166118ef5761ffff8086166000908152600760209081526040918290205491516118d893929092169101615aa6565b604051602081830303815290604052915050611bd4565b80546040516118d89161ffff1690602001615aa6565b600283141561197b57805462010000900467ffffffffffffffff166119595761ffff85166000908152600760209081526040918290205491516118d89262010000900467ffffffffffffffff169101615ca3565b80546040516118d89162010000900467ffffffffffffffff1690602001615ca3565b6003831415611a065780546a010000000000000000000090046001600160a01b03166119dd5761ffff85166000908152600760209081526040918290205491516118d8926a010000000000000000000090046001600160a01b03169101614e28565b80546040516118d8916a010000000000000000000090046001600160a01b031690602001614e28565b6004831415611abf5780547e01000000000000000000000000000000000000000000000000000000000000900461ffff16611a875761ffff8086166000908152600760209081526040918290205491516118d8937e010000000000000000000000000000000000000000000000000000000000009093049092169101615aa6565b80546040516118d8917e01000000000000000000000000000000000000000000000000000000000000900461ffff1690602001615aa6565b6005831415611b2c57600181015467ffffffffffffffff16611b0d5761ffff85166000908152600760209081526040918290206001015491516118d89267ffffffffffffffff169101615ca3565b60018101546040516118d89167ffffffffffffffff1690602001615ca3565b6006831415611bba5760018101546801000000000000000090046001600160a01b0316611b905761ffff85166000908152600760209081526040918290206001015491516118d8926801000000000000000090046001600160a01b03169101614e28565b60018101546040516118d8916801000000000000000090046001600160a01b031690602001614e28565b60405162461bcd60e51b81526004016109fe90615016565b505b9392505050565b611be3613948565b6001600160a01b0316611bf4612a79565b6001600160a01b031614611c4f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116611c755760405162461bcd60e51b81526004016109fe9061513e565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517f33d644987381deff4408951d55afa136f124e22a7810b163b2aaa3ebef770f6490600090a250565b60116020526000908152604090205467ffffffffffffffff1681565b60106020526000908152604090205460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b0381166000908152600460205260409020545b919050565b611d77613948565b6001600160a01b0316611d88612a79565b6001600160a01b031614611de3576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61ffff8088166000908152600a6020526040902054811690871611801590611e0f575060008661ffff16115b611e2b5760405162461bcd60e51b81526004016109fe90615596565b60008567ffffffffffffffff1611611e555760405162461bcd60e51b81526004016109fe90615980565b6001600160a01b038416611e7b5760405162461bcd60e51b81526004016109fe9061519b565b61ffff8088166000908152600b602090815260408083209387168352929052205460ff16611ebb5760405162461bcd60e51b81526004016109fe90614f25565b60008267ffffffffffffffff1611611ee55760405162461bcd60e51b81526004016109fe90615832565b6001600160a01b038116611f0b5760405162461bcd60e51b81526004016109fe906152c3565b6040518060c001604052808761ffff1681526020018667ffffffffffffffff168152602001856001600160a01b031681526020018461ffff1681526020018367ffffffffffffffff168152602001826001600160a01b0316815250600760008961ffff1661ffff16815260200190815260200160002060008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550604082015181600001600a6101000a8154816001600160a01b0302191690836001600160a01b03160217905550606082015181600001601e6101000a81548161ffff021916908361ffff16021790555060808201518160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060a08201518160010160086101000a8154816001600160a01b0302191690836001600160a01b031602179055509050508661ffff167f5a76432853a0871c4e780def7f3ffc7912339b53f022ac31127fe5ff84a36fa18787878787876040516120c096959493929190615c4c565b60405180910390a250505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b336000908152600d6020908152604080832061ffff88168452825280832086845282528083208484529091529020548281106121435760405162461bcd60e51b81526004016109fe906154dc565b336000818152600d6020908152604080832061ffff8a1680855290835281842089855283528184208785529092529182902086905590517f74bbc026808dcba59692d6a8bb20596849ca718e10e2432c6cdf48af865bc5d9906121ab90889087908990614e68565b60405180910390a35050505050565b6121c2613948565b6001600160a01b03166121d3612a79565b6001600160a01b03161461222e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600d60209081526000948552604080862082529385528385208152918452828420909152825290205481565b6122c4613948565b6001600160a01b03166122d5612a79565b6001600160a01b031614612330576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61ffff821660009081526010602052604090205460ff16156123645760405162461bcd60e51b81526004016109fe90615422565b6040517f7a1457480000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637a145748906123ee9086907f000000000000000000000000000000000000000000000000000000000000000090600401615ab5565b60206040518083038186803b15801561240657600080fd5b505afa15801561241a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243e9190614c37565b61ffff8416600090815260106020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555192935090916124b19185917f00000000000000000000000000000000000000000000000000000000000000009101614cd9565b60408051601f19818403018152908290527f3461ff5600000000000000000000000000000000000000000000000000000000825291506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633461ff569061252a90879085908790600401615ba3565b600060405180830381600087803b15801561254457600080fd5b505af1158015610f13573d6000803e3d6000fd5b612560613948565b6001600160a01b0316612571612a79565b6001600160a01b0316146125cc576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600481565b612606613948565b6001600160a01b0316612617612a79565b6001600160a01b031614612672576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166126985760405162461bcd60e51b81526004016109fe9061547f565b61ffff8083166000908152600a602052604090205481169081106126ce5760405162461bcd60e51b81526004016109fe90615767565b61ffff8381166000818152600a6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001660019790970195861696871790556009825280832095835294905283902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03861617905591519091907f802d55279d51813cb7a9a98e8fd2d7bec5346cb830901c11b85d1650cb857e9a9061278a908590614e28565b60405180910390a2505050565b61279f613948565b6001600160a01b03166127b0612a79565b6001600160a01b03161461280b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61ffff8085166000908152600860209081526040808320938716835292905220612836908383614345565b508261ffff168461ffff167f4a5695eee2a74d548d5f5c485a3de99ace99e3b664c8e30a90f49be6ebb549328484604051612872929190614ea9565b60405180910390a350505050565b600260005414156128d8576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000556003546001600160a01b031633146129075760405162461bcd60e51b81526004016109fe90614fdf565b60055461291490826138eb565b60055560025461292e906001600160a01b03168383613f6f565b816001600160a01b0316336001600160a01b03167f3a20c8c3cd1848485ae8261a52398bb9b26f195b717306b3cf7f058e62c095d5836040516129719190614e5f565b60405180910390a350506001600055565b61298a613948565b6001600160a01b031661299b612a79565b6001600160a01b0316146129f6576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61ffff82166000908152600c602052604090205415612a275760405162461bcd60e51b81526004016109fe90615923565b61ffff82166000818152600c602052604090819020839055517f0611bb2107e385b79ec826fff8ecc1c1248a7aae3c875c96668f8cfbf173422090612a6d908490614e5f565b60405180910390a25050565b6001546001600160a01b031690565b600581565b600f5460ff1681565b600c6020526000908152604090205481565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031614612af95760405162461bcd60e51b81526004016109fe906158ec565b600f5460ff1615612b1c5760405162461bcd60e51b81526004016109fe906157c4565b6000612b28888861394c565b60408101519091506001600160a01b03163314612b575760405162461bcd60e51b81526004016109fe906153b4565b612b5f6143ef565b61ffff89166000908152600c602052604090205480612b905760405162461bcd60e51b81526004016109fe9061588f565b60a08301516001600160a01b03166000908152600d6020908152604080832061ffff8e16845282528083208a845282528083208984529091529020548015801590612be95750836020015167ffffffffffffffff168110155b612c055760405162461bcd60e51b81526004016109fe906159dd565b61ffff808c166000908152600960209081526040808320885190941683529290528190205490517fb71e0f710000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690819063b71e0f7190612c77908b908b908b908990600401614e7e565b600060405180830381600087803b158015612c9157600080fd5b505af1158015612ca5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612ccd9190810190614722565b60a081015161ffff8e166000908152600e6020526040902054919550149150508015612cfc575060a082015115155b612d185760405162461bcd60e51b81526004016109fe90615320565b8961ffff16826000015161ffff1614612d435760405162461bcd60e51b81526004016109fe9061537d565b8082608001515114612d675760405162461bcd60e51b81526004016109fe906155f3565b7f000000000000000000000000000000000000000000000000000000000000000061ffff16826020015161ffff1614612db25760405162461bcd60e51b81526004016109fe9061555f565b886001600160a01b031682606001516001600160a01b031614612de75760405162461bcd60e51b81526004016109fe9061528c565b612df089613ff4565b612e615781606001516001600160a01b0316826000015161ffff167fa2786598bd84ae4a299103996359e6cb4333404583256079dfc279386baf5832846080015185604001518660c0015180519060200120604051612e5193929190614ef6565b60405180910390a3505050612f89565b600082608001518360600151604051602001612e7e929190614d13565b604051602081830303815290604052905082606001516001600160a01b0316836000015161ffff167f2bd2d8a84b748439fd50d79a49502b4eb5faa25b864da6a9ab5c150704be9a4d856080015186604001518760c0015180519060200120604051612eec93929190614ef6565b60405180910390a37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c2fa48138c838d87604001518e8960c001516040518763ffffffff1660e01b8152600401612f5296959493929190615b42565b600060405180830381600087803b158015612f6c57600080fd5b505af1158015612f80573d6000803e3d6000fd5b50505050505050505b50505050505050565b612f9a61442d565b611bd4838361394c565b600181565b600a6020526000908152604090205461ffff1681565b6040517fc533338f0000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c533338f9061302b90879087908790600401615b07565b60206040518083038186803b15801561304357600080fd5b505afa158015613057573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307b9190614c37565b949350505050565b600b60209081526000928352604080842090915290825290205460ff1681565b60096020908152600092835260408084209091529082529020546001600160a01b031681565b60066020908152600092835260408084209091529082529020805460019091015461ffff8083169267ffffffffffffffff6201000082048116936001600160a01b036a010000000000000000000084048116947e010000000000000000000000000000000000000000000000000000000000009094049093169291811691680100000000000000009091041686565b600e6020526000908152604090205481565b613172613948565b6001600160a01b0316613183612a79565b6001600160a01b0316146131de576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61ffff8083166000818152600b60209081526040808320948616835293905282902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590517fec23bee6f88cfecebb09d6aaaed66f0ce110debc1f61117c8270a7116597df9a90612a6d908490615aa6565b613260613948565b6001600160a01b0316613271612a79565b6001600160a01b0316146132cc576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61ffff82166000908152600e6020526040902054156132fd5760405162461bcd60e51b81526004016109fe9061570a565b61ffff82166000818152600e602052604090819020839055517f0dad975e1d2fbe771c95cdcc7be9a1e61181de7173abe0a32b8f8f83140873e590612a6d908490614e5f565b61334b613948565b6001600160a01b031661335c612a79565b6001600160a01b0316146133b7576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166133dd5760405162461bcd60e51b81526004016109fe90615650565b600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517fcb7ef3e545f5cdb893f5c568ba710fe08f336375a2d9fd66e161033f8fc09ef390600090a250565b613447613948565b6001600160a01b0316613458612a79565b6001600160a01b0316146134b3576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166134f85760405162461bcd60e51b8152600401808060200182810382526026815260200180615d6f6026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60055481565b60046020526000908152604090205481565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146135cc5760405162461bcd60e51b81526004016109fe906157fb565b6001600160a01b038416600090815260066020908152604080832061ffff891684529091529020600184141561367957600061360a838501856147fe565b61ffff8089166000908152600a602052604090205491925090811690821611156136465760405162461bcd60e51b81526004016109fe90615596565b81547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff9190911617815561389f565b60028414156136d057600061369083850185614c1b565b825467ffffffffffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffff9091161782555061389f565b600384141561372e5760006136e78385018561455c565b82546001600160a01b039091166a0100000000000000000000027fffff0000000000000000000000000000000000000000ffffffffffffffffffff9091161782555061389f565b60048414156137e8576000613745838501856147fe565b61ffff8089166000908152600b602090815260408083209385168352929052205490915060ff1680613779575061ffff8116155b6137955760405162461bcd60e51b81526004016109fe90614f25565b815461ffff9091167e01000000000000000000000000000000000000000000000000000000000000027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911617815561389f565b60058414156138405760006137ff83850185614c1b565b6001830180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff929092169190911790555061389f565b6006841415611bba5760006138578385018561455c565b6001830180546001600160a01b0390921668010000000000000000027fffffffff0000000000000000000000000000000000000000ffffffffffffffff909216919091179055505b83856001600160a01b03167ffc01bf86212a14151d51d1be5c2ac64d67d5ec823dfc6f53298d7ce3f3d3d25285856040516138db929190614ea9565b60405180910390a3505050505050565b600082821115613942576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b3390565b61395461442d565b6001600160a01b03808316600090815260066020908152604080832061ffff808916808652918452828520835160c0810185528154808416825267ffffffffffffffff6201000082048116838901526a010000000000000000000082048a16838801527e010000000000000000000000000000000000000000000000000000000000009091048416606083015260019092015491821660808201526801000000000000000090910490961660a087015290845260079092529091208251909116613a2157805461ffff1682525b602082015167ffffffffffffffff16613a4c57805462010000900467ffffffffffffffff1660208301525b60408201516001600160a01b0316613a7d5780546a010000000000000000000090046001600160a01b031660408301525b606082015161ffff16613ab85780547e01000000000000000000000000000000000000000000000000000000000000900461ffff1660608301525b608082015167ffffffffffffffff16613ae057600181015467ffffffffffffffff1660808301525b60a08201516001600160a01b0316611bd257600101546801000000000000000090046001600160a01b031660a08201529392505050565b600082820183811015611bd4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000815160001415613c4c5761ffff808716600090815260086020908152604080832060608a015190941683529281529082902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018616150201909316929092049182018490048402810184019094528084529091830182828015613c445780601f10613c1957610100808354040283529160200191613c44565b820191906000526020600020905b815481529060010190602001808311613c2757829003601f168201915b505050505091505b604080860151606087015191517f5886ea65000000000000000000000000000000000000000000000000000000008152909182916001600160a01b03831691635886ea6591613ca5918c918b908b908b90600401615bda565b602060405180830381600087803b158015613cbf57600080fd5b505af1158015613cd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cf79190614c03565b9250613d038284613ffa565b7fb0c632f55f1e1b3b2c3d82f41ee4716bb4c00f0f5d84cdafc141581bb8757a4f848860600151604051613d38929190614ed0565b60405180910390a1505095945050505050565b60a0820151606083015160808401516040517fc5e193cd000000000000000000000000000000000000000000000000000000008152600093926001600160a01b0384169263c5e193cd92613da7928a9290918990600401615c16565b602060405180830381600087803b158015613dc157600080fd5b505af1158015613dd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df99190614c03565b9150611bd28183613ffa565b6000806001600160a01b0383161580613e2757506002546001600160a01b0316155b6003546040517f5cbbbd750000000000000000000000000000000000000000000000000000000081529192506000916001600160a01b0390911690635cbbbd7590613e7b908515908b908b90600401614e47565b60206040518083038186803b158015613e9357600080fd5b505afa158015613ea7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ecb9190614c03565b90508015613f65578115613ef8576003546001600160a01b0316613eef8183613ffa565b81935050613f65565b846001600160a01b0316846001600160a01b03161480613f2057506001600160a01b03841632145b613f3c5760405162461bcd60e51b81526004016109fe9061522f565b600254613f54906001600160a01b031685308461403d565b600554613f619082613b17565b6005555b5050949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052613fef9084906140cb565b505050565b3b151590565b6001600160a01b03821660009081526004602052604090205461401d9082613b17565b6001600160a01b0390921660009081526004602052604090209190915550565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526140c59085906140cb565b50505050565b6000614120826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661417c9092919063ffffffff16565b805190915015613fef5780806020019051602081101561413f57600080fd5b5051613fef5760405162461bcd60e51b815260040180806020018281038252602a815260200180615d95602a913960400191505060405180910390fd5b606061307b84846000858561419085613ff4565b6141e1576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b6020831061421f5780518252601f199092019160209182019101614200565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614281576040519150601f19603f3d011682016040523d82523d6000602084013e614286565b606091505b50915091506142968282866142a1565b979650505050505050565b606083156142b0575081611bd4565b8251156142c05782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561430a5781810151838201526020016142f2565b50505050905090810190601f1680156143375780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261437b57600085556143df565b82601f106143b2578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008235161785556143df565b828001600101855582156143df579182015b828111156143df5782358255916020019190600101906143c4565b506143eb929150614462565b5090565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820181905260a082019290925260c081019190915290565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b5b808211156143eb5760008155600101614463565b8035611d6a81615d30565b8051611d6a81615d30565b60008083601f84011261449e578182fd5b50813567ffffffffffffffff8111156144b5578182fd5b6020830191508360208285010111156144cd57600080fd5b9250929050565b600082601f8301126144e4578081fd5b815167ffffffffffffffff8111156144f857fe5b61450b6020601f19601f84011601615cb8565b81815284602083860101111561451f578283fd5b61307b826020830160208701615d04565b8035611d6a81615d48565b8051611d6a81615d48565b8035611d6a81615d58565b8051611d6a81615d58565b60006020828403121561456d578081fd5b8135611bd481615d30565b6000806040838503121561458a578081fd5b823561459581615d30565b946020939093013593505050565b600080604083850312156145b5578182fd5b82356145c081615d30565b915060208301356145d081615d48565b809150509250929050565b600080600080608085870312156145f0578182fd5b84356145fb81615d30565b9350602085013561460b81615d48565b93969395505050506040820135916060013590565b6000806040838503121561458a578182fd5b60008060008060008060008060008060006101008c8e031215614653578687fd5b61465c8c614477565b9a5061466a60208d01614546565b995061467860408d01614530565b985067ffffffffffffffff8060608e01351115614693578788fd5b6146a38e60608f01358f0161448d565b909950975060808d01358110156146b8578687fd5b6146c88e60808f01358f0161448d565b90975095506146d960a08e01614477565b94506146e760c08e01614477565b93508060e08e013511156146f9578283fd5b5061470a8d60e08e01358e0161448d565b81935080925050509295989b509295989b9093969950565b600060208284031215614733578081fd5b815167ffffffffffffffff8082111561474a578283fd5b9083019060e0828603121561475d578283fd5b61476760e0615cb8565b6147708361453b565b815261477e6020840161453b565b602082015261478f60408401614551565b60408201526147a060608401614482565b60608201526080830151828111156147b6578485fd5b6147c2878286016144d4565b60808301525060a083015160a082015260c0830151828111156147e3578485fd5b6147ef878286016144d4565b60c08301525095945050505050565b60006020828403121561480f578081fd5b8135611bd481615d48565b6000806040838503121561482c578182fd5b823561483781615d48565b915060208301356145d081615d30565b600080600080600080600060a0888a031215614861578081fd5b873561486c81615d48565b9650602088013561487c81615d30565b9550604088013567ffffffffffffffff80821115614898578283fd5b6148a48b838c0161448d565b909750955060608a0135915081151582146148bd578283fd5b909350608089013590808211156148d2578283fd5b506148df8a828b0161448d565b989b979a50959850939692959293505050565b600080600060608486031215614906578081fd5b833561491181615d48565b9250602084013561492181615d30565b929592945050506040919091013590565b600080600080600080600060c0888a03121561494c578081fd5b873561495781615d48565b9650602088013561496781615d30565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff811115614997578182fd5b6148df8a828b0161448d565b6000806000806000608086880312156149ba578283fd5b85356149c581615d48565b945060208601356149d581615d30565b935060408601359250606086013567ffffffffffffffff8111156149f7578182fd5b614a038882890161448d565b969995985093965092949392505050565b60008060008060808587031215614a29578182fd5b8435614a3481615d48565b9350602085013561460b81615d30565b60008060408385031215614a56578182fd5b823561459581615d48565b60008060008060808587031215614a76578182fd5b8435614a8181615d48565b966020860135965060408601359560600135945092505050565b600080600060408486031215614aaf578081fd5b8335614aba81615d48565b9250602084013567ffffffffffffffff811115614ad5578182fd5b614ae18682870161448d565b9497909650939450505050565b60008060408385031215614b00578182fd5b82356145c081615d48565b60008060008060608587031215614b20578182fd5b8435614b2b81615d48565b93506020850135614b3b81615d48565b9250604085013567ffffffffffffffff811115614b56578283fd5b614b628782880161448d565b95989497509550505050565b600080600080600080600060e0888a031215614b88578081fd5b8735614b9381615d48565b96506020880135614ba381615d48565b95506040880135614bb381615d58565b94506060880135614bc381615d30565b93506080880135614bd381615d48565b925060a0880135614be381615d58565b915060c0880135614bf381615d30565b8091505092959891949750929550565b600060208284031215614c14578081fd5b5051919050565b600060208284031215614c2c578081fd5b8135611bd481615d58565b600060208284031215614c48578081fd5b8151611bd481615d58565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452614c95816020860160208601615d04565b601f01601f19169290920160200192915050565b60609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008351614d25818460208801615d04565b60609390931b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190920190815260140192915050565b90565b60007fffffffffffffffff0000000000000000000000000000000000000000000000008860c01b1682527fffff000000000000000000000000000000000000000000000000000000000000808860f01b1660088401527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008760601b16600a840152808660f01b16601e840152508351614e00816020850160208801615d04565b80830190508351614e18816020840160208801615d04565b0160200198975050505050505050565b6001600160a01b0391909116815260200190565b901515815260200190565b92151583526020830191909152604082015260600190565b90815260200190565b9283526020830191909152604082015260600190565b600085825260606020830152614e98606083018587614c53565b905082604083015295945050505050565b60006020825261307b602083018486614c53565b600060208252611bd46020830184614c7d565b600060408252614ee36040830185614c7d565b905061ffff831660208301529392505050565b600060608252614f096060830186614c7d565b67ffffffffffffffff9490941660208301525060400152919050565b60208082526026908201527f4c617965725a65726f3a20696e76616c6964206f7574626f756e642070726f6f60408201527f6620747970650000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f4c617965725a65726f3a20647374436861696e496420646f6573206e6f74206560408201527f7869737400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526018908201527f4c617965725a65726f3a206f6e6c792074726561737572790000000000000000604082015260600190565b6020808252601e908201527f4c617965725a65726f3a20496e76616c696420636f6e66696720747970650000604082015260600190565b6020808252601a908201527f4c617965725a65726f3a207769746864726177206661696c6564000000000000604082015260600190565b60208082526025908201527f4c617965725a65726f3a206e6f7420656e6f756768206e617469766520666f7260408201527f2066656573000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f4c617965725a65726f3a205f746f2063616e6e6f74206265207a65726f20616460408201527f6472657373000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526031908201527f4c617965725a65726f3a205f6c617965725a65726f546f6b656e2063616e6e6f60408201527f74206265207a65726f2061646472657373000000000000000000000000000000606082015260800190565b60208082526022908201527f4c617965725a65726f3a20696e76616c69642072656c6179657220616464726560408201527f7373000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f4c617965725a65726f3a206661696c656420746f20726566756e640000000000604082015260600190565b6020808252602b908201527f4c617965725a65726f3a206d75737420626520706169642062792073656e646560408201527f72206f72206f726967696e000000000000000000000000000000000000000000606082015260800190565b6020808252601d908201527f4c617965725a65726f3a20696e76616c69642064737441646472657373000000604082015260600190565b60208082526021908201527f4c617965725a65726f3a20696e76616c6964206f7261636c652061646472657360408201527f7300000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f4c617965725a65726f3a20696e76616c6964205f7061636b65742e756c6e416460408201527f6472657373000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601e908201527f4c617965725a65726f3a20696e76616c696420737263436861696e2049640000604082015260600190565b6020808252601a908201527f4c617965725a65726f3a20696e76616c69642072656c61796572000000000000604082015260600190565b6020808252601a908201527f4c617965725a65726f3a2077726f6e6720706174682064617461000000000000604082015260600190565b60208082526026908201527f4c617965725a65726f3a20646170705261646172206e6f6e636520616c72656160408201527f6479207365740000000000000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4c617965725a65726f3a206c6962726172792063616e6e6f74206265207a657260408201527f6f20616464726573730000000000000000000000000000000000000000000000606082015260800190565b60208082526043908201527f4c617965725a65726f3a206f7261636c6520646174612063616e206f6e6c792060408201527f75706461746520696620697420686173206d6f726520636f6e6669726d61746960608201527f6f6e730000000000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252601e908201527f4c617965725a65726f3a20696e76616c696420647374436861696e2049640000604082015260600190565b60208082526030908201527f4c617965725a65726f3a20696e76616c696420696e626f756e642070726f6f6660408201527f206c6962726172792076657273696f6e00000000000000000000000000000000606082015260800190565b60208082526022908201527f4c617965725a65726f3a20696e76616c6964207372634164647265737320736960408201527f7a65000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4c617965725a65726f3a2074726561737572792063616e6e6f74206265207a6560408201527f726f206164647265737300000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f4c617965725a65726f3a206e6f74206c6567616379207261646172206164647260408201527f6573730000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526021908201527f4c617965725a65726f3a2072656d6f746520756c6e20616c726561647920736560408201527f7400000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f4c617965725a65726f3a2063616e206e6f7420616464206e6577206c6962726160408201527f7279000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f4c617965725a65726f3a206465636f6d6d697373696f6e656400000000000000604082015260600190565b60208082526018908201527f4c617965725a65726f3a206f6e6c7920656e64706f696e740000000000000000604082015260600190565b6020808252602e908201527f4c617965725a65726f3a20696e76616c6964206f7574626f756e6420626c6f6360408201527f6b20636f6e6669726d6174696f6e000000000000000000000000000000000000606082015260800190565b60208082526028908201527f4c617965725a65726f3a20696e636f72726563742072656d6f7465206164647260408201527f6573732073697a65000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f4c617965725a65726f3a206f6e6c792064617070526164617200000000000000604082015260600190565b60208082526030908201527f4c617965725a65726f3a2072656d6f746520636861696e20616464726573732060408201527f73697a6520616c72656164792073657400000000000000000000000000000000606082015260800190565b6020808252602d908201527f4c617965725a65726f3a20696e76616c696420696e626f756e6420626c6f636b60408201527f20636f6e6669726d6174696f6e00000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4c617965725a65726f3a206e6f7420656e6f75676820626c6f636b20636f6e6660408201527f69726d6174696f6e730000000000000000000000000000000000000000000000606082015260800190565b600060c08201905061ffff808451168352602084015167ffffffffffffffff8082166020860152604086015191506001600160a01b0380831660408701528360608801511660608701528160808801511660808701528060a08801511660a08701525050505092915050565b61ffff91909116815260200190565b61ffff9290921682526001600160a01b0316602082015260400190565b600061ffff851682526001600160a01b038416602083015260606040830152615afe6060830184614c7d565b95945050505050565b600061ffff8516825260406020830152615afe604083018486614c53565b600061ffff841682526040602083015261307b6040830184614c7d565b600061ffff8816825260c06020830152615b5f60c0830188614c7d565b6001600160a01b038716604084015267ffffffffffffffff8616606084015284608084015282810360a0840152615b968185614c7d565b9998505050505050505050565b600061ffff8516825260606020830152615bc06060830185614c7d565b905067ffffffffffffffff83166040830152949350505050565b600061ffff80881683528087166020840152506001600160a01b038516604083015283606083015260a0608083015261429660a0830184614c7d565b61ffff948516815292909316602083015267ffffffffffffffff1660408201526001600160a01b03909116606082015260800190565b61ffff968716815267ffffffffffffffff95861660208201526001600160a01b03948516604082015292909516606083015290921660808301529190911660a082015260c00190565b918252602082015260400190565b67ffffffffffffffff91909116815260200190565b60405181810167ffffffffffffffff81118282101715615cd457fe5b604052919050565b60008085851115615ceb578182fd5b83861115615cf7578182fd5b5050820193919092039150565b60005b83811015615d1f578181015183820152602001615d07565b838111156140c55750506000910152565b6001600160a01b0381168114615d4557600080fd5b50565b61ffff81168114615d4557600080fd5b67ffffffffffffffff81168114615d4557600080fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212207ebb07bc803d4777652f3cefdfaba993ec251527e30600f1f8ff41fd8ef2905164736f6c63430007060033\";\n\ntype UltraLightNodeV2RadarConstructorParams =\n | [signer?: Signer]\n | ConstructorParameters<typeof ContractFactory>;\n\nconst isSuperArgs = (\n xs: UltraLightNodeV2RadarConstructorParams\n): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;\n\nexport class UltraLightNodeV2Radar__factory extends ContractFactory {\n constructor(...args: UltraLightNodeV2RadarConstructorParams) {\n if (isSuperArgs(args)) {\n super(...args);\n } else {\n super(_abi, _bytecode, args[0]);\n }\n }\n\n override deploy(\n _endpoint: PromiseOrValue<string>,\n _nonceContract: PromiseOrValue<string>,\n _localChainId: PromiseOrValue<BigNumberish>,\n _dappRadar: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): Promise<UltraLightNodeV2Radar> {\n return super.deploy(\n _endpoint,\n _nonceContract,\n _localChainId,\n _dappRadar,\n overrides || {}\n ) as Promise<UltraLightNodeV2Radar>;\n }\n override getDeployTransaction(\n _endpoint: PromiseOrValue<string>,\n _nonceContract: PromiseOrValue<string>,\n _localChainId: PromiseOrValue<BigNumberish>,\n _dappRadar: PromiseOrValue<string>,\n overrides?: Overrides & { from?: PromiseOrValue<string> }\n ): TransactionRequest {\n return super.getDeployTransaction(\n _endpoint,\n _nonceContract,\n _localChainId,\n _dappRadar,\n overrides || {}\n );\n }\n override attach(address: string): UltraLightNodeV2Radar {\n return super.attach(address) as UltraLightNodeV2Radar;\n }\n override connect(signer: Signer): UltraLightNodeV2Radar__factory {\n return super.connect(signer) as UltraLightNodeV2Radar__factory;\n }\n\n static readonly bytecode = _bytecode;\n static readonly abi = _abi;\n static createInterface(): UltraLightNodeV2RadarInterface {\n return new utils.Interface(_abi) as UltraLightNodeV2RadarInterface;\n }\n static connect(\n address: string,\n signerOrProvider: Signer | Provider\n ): UltraLightNodeV2Radar {\n return new Contract(\n address,\n _abi,\n signerOrProvider\n ) as UltraLightNodeV2Radar;\n }\n}\n"]}