@hyperlane-xyz/core 3.11.0-beta-0 → 3.20.0-beta0

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 (238) hide show
  1. package/contracts/client/MailboxClient.sol +39 -0
  2. package/contracts/hooks/warp-route/RateLimitedHook.sol +58 -0
  3. package/contracts/interfaces/hooks/IPostDispatchHook.sol +2 -1
  4. package/contracts/isms/TrustedRelayerIsm.sol +27 -0
  5. package/contracts/isms/warp-route/RateLimitedIsm.sol +53 -0
  6. package/contracts/libs/RateLimited.sol +107 -0
  7. package/contracts/test/TestPostDispatchHook.sol +11 -7
  8. package/contracts/token/HypNative.sol +9 -1
  9. package/contracts/token/extensions/HypNativeScaled.sol +8 -1
  10. package/contracts/token/libs/TokenRouter.sol +63 -7
  11. package/dist/buildArtifact.d.ts +1 -0
  12. package/dist/buildArtifact.js +2 -0
  13. package/{buildArtifact.json → dist/buildArtifact.json} +1 -1
  14. package/dist/contracts/hooks/index.d.ts +2 -0
  15. package/dist/contracts/hooks/index.d.ts.map +1 -1
  16. package/dist/contracts/hooks/warp-route/RateLimitedHook.d.ts +521 -0
  17. package/dist/contracts/hooks/warp-route/RateLimitedHook.d.ts.map +1 -0
  18. package/dist/contracts/hooks/warp-route/RateLimitedHook.js +2 -0
  19. package/dist/contracts/hooks/warp-route/RateLimitedHook.js.map +1 -0
  20. package/dist/contracts/hooks/warp-route/index.d.ts +2 -0
  21. package/dist/contracts/hooks/warp-route/index.d.ts.map +1 -0
  22. package/dist/contracts/hooks/warp-route/index.js +2 -0
  23. package/dist/contracts/hooks/warp-route/index.js.map +1 -0
  24. package/dist/contracts/isms/TrustedRelayerIsm.d.ts +95 -0
  25. package/dist/contracts/isms/TrustedRelayerIsm.d.ts.map +1 -0
  26. package/dist/contracts/isms/TrustedRelayerIsm.js +2 -0
  27. package/dist/contracts/isms/TrustedRelayerIsm.js.map +1 -0
  28. package/dist/contracts/isms/index.d.ts +3 -0
  29. package/dist/contracts/isms/index.d.ts.map +1 -1
  30. package/dist/contracts/isms/warp-route/RateLimitedIsm.d.ts +491 -0
  31. package/dist/contracts/isms/warp-route/RateLimitedIsm.d.ts.map +1 -0
  32. package/dist/contracts/isms/warp-route/RateLimitedIsm.js +2 -0
  33. package/dist/contracts/isms/warp-route/RateLimitedIsm.js.map +1 -0
  34. package/dist/contracts/isms/warp-route/index.d.ts +2 -0
  35. package/dist/contracts/isms/warp-route/index.d.ts.map +1 -0
  36. package/dist/contracts/isms/warp-route/index.js +2 -0
  37. package/dist/contracts/isms/warp-route/index.js.map +1 -0
  38. package/dist/contracts/libs/RateLimited.d.ts +304 -0
  39. package/dist/contracts/libs/RateLimited.d.ts.map +1 -0
  40. package/dist/contracts/libs/RateLimited.js +2 -0
  41. package/dist/contracts/libs/RateLimited.js.map +1 -0
  42. package/dist/contracts/libs/index.d.ts +1 -0
  43. package/dist/contracts/libs/index.d.ts.map +1 -1
  44. package/dist/contracts/test/TestPostDispatchHook.d.ts +20 -1
  45. package/dist/contracts/test/TestPostDispatchHook.d.ts.map +1 -1
  46. package/dist/contracts/token/HypERC20.d.ts +9 -8
  47. package/dist/contracts/token/HypERC20.d.ts.map +1 -1
  48. package/dist/contracts/token/HypERC20Collateral.d.ts +9 -8
  49. package/dist/contracts/token/HypERC20Collateral.d.ts.map +1 -1
  50. package/dist/contracts/token/HypERC20CollateralVaultDeposit.d.ts +9 -8
  51. package/dist/contracts/token/HypERC20CollateralVaultDeposit.d.ts.map +1 -1
  52. package/dist/contracts/token/HypERC721.d.ts +9 -8
  53. package/dist/contracts/token/HypERC721.d.ts.map +1 -1
  54. package/dist/contracts/token/HypERC721Collateral.d.ts +9 -8
  55. package/dist/contracts/token/HypERC721Collateral.d.ts.map +1 -1
  56. package/dist/contracts/token/HypNative.d.ts +9 -8
  57. package/dist/contracts/token/HypNative.d.ts.map +1 -1
  58. package/dist/contracts/token/extensions/FastHypERC20.d.ts +9 -8
  59. package/dist/contracts/token/extensions/FastHypERC20.d.ts.map +1 -1
  60. package/dist/contracts/token/extensions/FastHypERC20Collateral.d.ts +9 -8
  61. package/dist/contracts/token/extensions/FastHypERC20Collateral.d.ts.map +1 -1
  62. package/dist/contracts/token/extensions/HypERC721URICollateral.d.ts +9 -8
  63. package/dist/contracts/token/extensions/HypERC721URICollateral.d.ts.map +1 -1
  64. package/dist/contracts/token/extensions/HypERC721URIStorage.d.ts +9 -8
  65. package/dist/contracts/token/extensions/HypERC721URIStorage.d.ts.map +1 -1
  66. package/dist/contracts/token/extensions/HypNativeScaled.d.ts +9 -8
  67. package/dist/contracts/token/extensions/HypNativeScaled.d.ts.map +1 -1
  68. package/dist/contracts/token/libs/FastTokenRouter.d.ts +9 -8
  69. package/dist/contracts/token/libs/FastTokenRouter.d.ts.map +1 -1
  70. package/dist/contracts/token/libs/TokenRouter.d.ts +9 -8
  71. package/dist/contracts/token/libs/TokenRouter.d.ts.map +1 -1
  72. package/dist/factories/contracts/Mailbox__factory.d.ts +1 -1
  73. package/dist/factories/contracts/Mailbox__factory.js +1 -1
  74. package/dist/factories/contracts/hooks/MerkleTreeHook__factory.d.ts +1 -1
  75. package/dist/factories/contracts/hooks/MerkleTreeHook__factory.js +1 -1
  76. package/dist/factories/contracts/hooks/OPStackHook__factory.d.ts +1 -1
  77. package/dist/factories/contracts/hooks/OPStackHook__factory.js +1 -1
  78. package/dist/factories/contracts/hooks/PausableHook__factory.d.ts +1 -1
  79. package/dist/factories/contracts/hooks/PausableHook__factory.js +1 -1
  80. package/dist/factories/contracts/hooks/ProtocolFee__factory.d.ts +1 -1
  81. package/dist/factories/contracts/hooks/ProtocolFee__factory.js +1 -1
  82. package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.d.ts +1 -1
  83. package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.js +1 -1
  84. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHookFactory__factory.d.ts +1 -1
  85. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHookFactory__factory.js +1 -1
  86. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHook__factory.d.ts +1 -1
  87. package/dist/factories/contracts/hooks/aggregation/StaticAggregationHook__factory.js +1 -1
  88. package/dist/factories/contracts/hooks/igp/InterchainGasPaymaster__factory.d.ts +1 -1
  89. package/dist/factories/contracts/hooks/igp/InterchainGasPaymaster__factory.js +1 -1
  90. package/dist/factories/contracts/hooks/index.d.ts +1 -0
  91. package/dist/factories/contracts/hooks/index.d.ts.map +1 -1
  92. package/dist/factories/contracts/hooks/index.js +1 -0
  93. package/dist/factories/contracts/hooks/index.js.map +1 -1
  94. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.d.ts +1 -1
  95. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.js +1 -1
  96. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.d.ts +1 -1
  97. package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.js +1 -1
  98. package/dist/factories/contracts/hooks/routing/DestinationRecipientRoutingHook__factory.d.ts +1 -1
  99. package/dist/factories/contracts/hooks/routing/DestinationRecipientRoutingHook__factory.js +1 -1
  100. package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.d.ts +1 -1
  101. package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.js +1 -1
  102. package/dist/factories/contracts/hooks/routing/FallbackDomainRoutingHook__factory.d.ts +1 -1
  103. package/dist/factories/contracts/hooks/routing/FallbackDomainRoutingHook__factory.js +1 -1
  104. package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.d.ts +329 -0
  105. package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.d.ts.map +1 -0
  106. package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.js +442 -0
  107. package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.js.map +1 -0
  108. package/dist/factories/contracts/hooks/warp-route/index.d.ts +2 -0
  109. package/dist/factories/contracts/hooks/warp-route/index.d.ts.map +1 -0
  110. package/dist/factories/contracts/hooks/warp-route/index.js +5 -0
  111. package/dist/factories/contracts/hooks/warp-route/index.js.map +1 -0
  112. package/dist/factories/contracts/isms/TrustedRelayerIsm__factory.d.ts +81 -0
  113. package/dist/factories/contracts/isms/TrustedRelayerIsm__factory.d.ts.map +1 -0
  114. package/dist/factories/contracts/isms/TrustedRelayerIsm__factory.js +118 -0
  115. package/dist/factories/contracts/isms/TrustedRelayerIsm__factory.js.map +1 -0
  116. package/dist/factories/contracts/isms/index.d.ts +2 -0
  117. package/dist/factories/contracts/isms/index.d.ts.map +1 -1
  118. package/dist/factories/contracts/isms/index.js +2 -0
  119. package/dist/factories/contracts/isms/index.js.map +1 -1
  120. package/dist/factories/contracts/isms/multisig/ValidatorAnnounce__factory.d.ts +1 -1
  121. package/dist/factories/contracts/isms/multisig/ValidatorAnnounce__factory.js +1 -1
  122. package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.d.ts +1 -1
  123. package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.js +1 -1
  124. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.d.ts +1 -1
  125. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.js +1 -1
  126. package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.d.ts +1 -1
  127. package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.js +1 -1
  128. package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.d.ts +301 -0
  129. package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.d.ts.map +1 -0
  130. package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.js +405 -0
  131. package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.js.map +1 -0
  132. package/dist/factories/contracts/isms/warp-route/index.d.ts +2 -0
  133. package/dist/factories/contracts/isms/warp-route/index.d.ts.map +1 -0
  134. package/dist/factories/contracts/isms/warp-route/index.js +5 -0
  135. package/dist/factories/contracts/isms/warp-route/index.js.map +1 -0
  136. package/dist/factories/contracts/libs/RateLimited__factory.d.ts +195 -0
  137. package/dist/factories/contracts/libs/RateLimited__factory.d.ts.map +1 -0
  138. package/dist/factories/contracts/libs/RateLimited__factory.js +266 -0
  139. package/dist/factories/contracts/libs/RateLimited__factory.js.map +1 -0
  140. package/dist/factories/contracts/libs/index.d.ts +1 -0
  141. package/dist/factories/contracts/libs/index.d.ts.map +1 -1
  142. package/dist/factories/contracts/libs/index.js +1 -0
  143. package/dist/factories/contracts/libs/index.js.map +1 -1
  144. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts +1 -1
  145. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js +1 -1
  146. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts +1 -1
  147. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js +1 -1
  148. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts +1 -1
  149. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js +1 -1
  150. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.d.ts +1 -1
  151. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js +1 -1
  152. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.d.ts +1 -1
  153. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.js +1 -1
  154. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts +1 -1
  155. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts.map +1 -1
  156. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js +1 -1
  157. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js.map +1 -1
  158. package/dist/factories/contracts/mock/MockMailbox__factory.d.ts +1 -1
  159. package/dist/factories/contracts/mock/MockMailbox__factory.d.ts.map +1 -1
  160. package/dist/factories/contracts/mock/MockMailbox__factory.js +1 -1
  161. package/dist/factories/contracts/mock/MockMailbox__factory.js.map +1 -1
  162. package/dist/factories/contracts/test/TestGasRouter__factory.d.ts +1 -1
  163. package/dist/factories/contracts/test/TestGasRouter__factory.js +1 -1
  164. package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.d.ts +1 -1
  165. package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.js +1 -1
  166. package/dist/factories/contracts/test/TestMailbox__factory.d.ts +1 -1
  167. package/dist/factories/contracts/test/TestMailbox__factory.js +1 -1
  168. package/dist/factories/contracts/test/TestMerkleTreeHook__factory.d.ts +1 -1
  169. package/dist/factories/contracts/test/TestMerkleTreeHook__factory.js +1 -1
  170. package/dist/factories/contracts/test/TestPostDispatchHook__factory.d.ts +15 -1
  171. package/dist/factories/contracts/test/TestPostDispatchHook__factory.d.ts.map +1 -1
  172. package/dist/factories/contracts/test/TestPostDispatchHook__factory.js +20 -1
  173. package/dist/factories/contracts/test/TestPostDispatchHook__factory.js.map +1 -1
  174. package/dist/factories/contracts/test/TestQuerySender__factory.d.ts +1 -1
  175. package/dist/factories/contracts/test/TestQuerySender__factory.js +1 -1
  176. package/dist/factories/contracts/test/TestQuery__factory.d.ts +1 -1
  177. package/dist/factories/contracts/test/TestQuery__factory.js +1 -1
  178. package/dist/factories/contracts/test/TestRouter__factory.d.ts +1 -1
  179. package/dist/factories/contracts/test/TestRouter__factory.js +1 -1
  180. package/dist/factories/contracts/test/TestSendReceiver__factory.d.ts +1 -1
  181. package/dist/factories/contracts/test/TestSendReceiver__factory.js +1 -1
  182. package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.d.ts +31 -1
  183. package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.d.ts.map +1 -1
  184. package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.js +40 -1
  185. package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.js.map +1 -1
  186. package/dist/factories/contracts/token/HypERC20Collateral__factory.d.ts +31 -1
  187. package/dist/factories/contracts/token/HypERC20Collateral__factory.d.ts.map +1 -1
  188. package/dist/factories/contracts/token/HypERC20Collateral__factory.js +40 -1
  189. package/dist/factories/contracts/token/HypERC20Collateral__factory.js.map +1 -1
  190. package/dist/factories/contracts/token/HypERC20__factory.d.ts +31 -1
  191. package/dist/factories/contracts/token/HypERC20__factory.d.ts.map +1 -1
  192. package/dist/factories/contracts/token/HypERC20__factory.js +40 -1
  193. package/dist/factories/contracts/token/HypERC20__factory.js.map +1 -1
  194. package/dist/factories/contracts/token/HypERC721Collateral__factory.d.ts +31 -1
  195. package/dist/factories/contracts/token/HypERC721Collateral__factory.d.ts.map +1 -1
  196. package/dist/factories/contracts/token/HypERC721Collateral__factory.js +40 -1
  197. package/dist/factories/contracts/token/HypERC721Collateral__factory.js.map +1 -1
  198. package/dist/factories/contracts/token/HypERC721__factory.d.ts +31 -1
  199. package/dist/factories/contracts/token/HypERC721__factory.d.ts.map +1 -1
  200. package/dist/factories/contracts/token/HypERC721__factory.js +40 -1
  201. package/dist/factories/contracts/token/HypERC721__factory.js.map +1 -1
  202. package/dist/factories/contracts/token/HypNative__factory.d.ts +31 -1
  203. package/dist/factories/contracts/token/HypNative__factory.d.ts.map +1 -1
  204. package/dist/factories/contracts/token/HypNative__factory.js +40 -1
  205. package/dist/factories/contracts/token/HypNative__factory.js.map +1 -1
  206. package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.d.ts +31 -1
  207. package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.d.ts.map +1 -1
  208. package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.js +40 -1
  209. package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.js.map +1 -1
  210. package/dist/factories/contracts/token/extensions/FastHypERC20__factory.d.ts +31 -1
  211. package/dist/factories/contracts/token/extensions/FastHypERC20__factory.d.ts.map +1 -1
  212. package/dist/factories/contracts/token/extensions/FastHypERC20__factory.js +40 -1
  213. package/dist/factories/contracts/token/extensions/FastHypERC20__factory.js.map +1 -1
  214. package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.d.ts +31 -1
  215. package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.d.ts.map +1 -1
  216. package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.js +40 -1
  217. package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.js.map +1 -1
  218. package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.d.ts +31 -1
  219. package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.d.ts.map +1 -1
  220. package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.js +40 -1
  221. package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.js.map +1 -1
  222. package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.d.ts +31 -1
  223. package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.d.ts.map +1 -1
  224. package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.js +40 -1
  225. package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.js.map +1 -1
  226. package/dist/factories/contracts/token/libs/FastTokenRouter__factory.d.ts +30 -0
  227. package/dist/factories/contracts/token/libs/FastTokenRouter__factory.d.ts.map +1 -1
  228. package/dist/factories/contracts/token/libs/FastTokenRouter__factory.js +39 -0
  229. package/dist/factories/contracts/token/libs/FastTokenRouter__factory.js.map +1 -1
  230. package/dist/factories/contracts/token/libs/TokenRouter__factory.d.ts +30 -0
  231. package/dist/factories/contracts/token/libs/TokenRouter__factory.d.ts.map +1 -1
  232. package/dist/factories/contracts/token/libs/TokenRouter__factory.js +39 -0
  233. package/dist/factories/contracts/token/libs/TokenRouter__factory.js.map +1 -1
  234. package/dist/index.d.ts +8 -0
  235. package/dist/index.d.ts.map +1 -1
  236. package/dist/index.js +4 -0
  237. package/dist/index.js.map +1 -1
  238. package/package.json +6 -6
@@ -0,0 +1,266 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ import { utils, Contract, ContractFactory, } from "ethers";
5
+ const _abi = [
6
+ {
7
+ inputs: [
8
+ {
9
+ internalType: "uint256",
10
+ name: "_capacity",
11
+ type: "uint256",
12
+ },
13
+ ],
14
+ stateMutability: "nonpayable",
15
+ type: "constructor",
16
+ },
17
+ {
18
+ inputs: [
19
+ {
20
+ internalType: "uint256",
21
+ name: "newLimit",
22
+ type: "uint256",
23
+ },
24
+ {
25
+ internalType: "uint256",
26
+ name: "targetLimit",
27
+ type: "uint256",
28
+ },
29
+ ],
30
+ name: "RateLimitExceeded",
31
+ type: "error",
32
+ },
33
+ {
34
+ anonymous: false,
35
+ inputs: [
36
+ {
37
+ indexed: false,
38
+ internalType: "uint8",
39
+ name: "version",
40
+ type: "uint8",
41
+ },
42
+ ],
43
+ name: "Initialized",
44
+ type: "event",
45
+ },
46
+ {
47
+ anonymous: false,
48
+ inputs: [
49
+ {
50
+ indexed: true,
51
+ internalType: "address",
52
+ name: "previousOwner",
53
+ type: "address",
54
+ },
55
+ {
56
+ indexed: true,
57
+ internalType: "address",
58
+ name: "newOwner",
59
+ type: "address",
60
+ },
61
+ ],
62
+ name: "OwnershipTransferred",
63
+ type: "event",
64
+ },
65
+ {
66
+ anonymous: false,
67
+ inputs: [
68
+ {
69
+ indexed: false,
70
+ internalType: "uint256",
71
+ name: "_oldCapacity",
72
+ type: "uint256",
73
+ },
74
+ {
75
+ indexed: false,
76
+ internalType: "uint256",
77
+ name: "_newCapacity",
78
+ type: "uint256",
79
+ },
80
+ ],
81
+ name: "RateLimitSet",
82
+ type: "event",
83
+ },
84
+ {
85
+ inputs: [],
86
+ name: "DURATION",
87
+ outputs: [
88
+ {
89
+ internalType: "uint256",
90
+ name: "",
91
+ type: "uint256",
92
+ },
93
+ ],
94
+ stateMutability: "view",
95
+ type: "function",
96
+ },
97
+ {
98
+ inputs: [],
99
+ name: "calculateCurrentLevel",
100
+ outputs: [
101
+ {
102
+ internalType: "uint256",
103
+ name: "",
104
+ type: "uint256",
105
+ },
106
+ ],
107
+ stateMutability: "view",
108
+ type: "function",
109
+ },
110
+ {
111
+ inputs: [],
112
+ name: "filledLevel",
113
+ outputs: [
114
+ {
115
+ internalType: "uint256",
116
+ name: "",
117
+ type: "uint256",
118
+ },
119
+ ],
120
+ stateMutability: "view",
121
+ type: "function",
122
+ },
123
+ {
124
+ inputs: [],
125
+ name: "lastUpdated",
126
+ outputs: [
127
+ {
128
+ internalType: "uint256",
129
+ name: "",
130
+ type: "uint256",
131
+ },
132
+ ],
133
+ stateMutability: "view",
134
+ type: "function",
135
+ },
136
+ {
137
+ inputs: [],
138
+ name: "maxCapacity",
139
+ outputs: [
140
+ {
141
+ internalType: "uint256",
142
+ name: "",
143
+ type: "uint256",
144
+ },
145
+ ],
146
+ stateMutability: "view",
147
+ type: "function",
148
+ },
149
+ {
150
+ inputs: [],
151
+ name: "owner",
152
+ outputs: [
153
+ {
154
+ internalType: "address",
155
+ name: "",
156
+ type: "address",
157
+ },
158
+ ],
159
+ stateMutability: "view",
160
+ type: "function",
161
+ },
162
+ {
163
+ inputs: [],
164
+ name: "refillRate",
165
+ outputs: [
166
+ {
167
+ internalType: "uint256",
168
+ name: "",
169
+ type: "uint256",
170
+ },
171
+ ],
172
+ stateMutability: "view",
173
+ type: "function",
174
+ },
175
+ {
176
+ inputs: [],
177
+ name: "renounceOwnership",
178
+ outputs: [],
179
+ stateMutability: "nonpayable",
180
+ type: "function",
181
+ },
182
+ {
183
+ inputs: [
184
+ {
185
+ internalType: "uint256",
186
+ name: "_capacity",
187
+ type: "uint256",
188
+ },
189
+ ],
190
+ name: "setRefillRate",
191
+ outputs: [
192
+ {
193
+ internalType: "uint256",
194
+ name: "",
195
+ type: "uint256",
196
+ },
197
+ ],
198
+ stateMutability: "nonpayable",
199
+ type: "function",
200
+ },
201
+ {
202
+ inputs: [
203
+ {
204
+ internalType: "address",
205
+ name: "newOwner",
206
+ type: "address",
207
+ },
208
+ ],
209
+ name: "transferOwnership",
210
+ outputs: [],
211
+ stateMutability: "nonpayable",
212
+ type: "function",
213
+ },
214
+ {
215
+ inputs: [
216
+ {
217
+ internalType: "uint256",
218
+ name: "_newAmount",
219
+ type: "uint256",
220
+ },
221
+ ],
222
+ name: "validateAndConsumeFilledLevel",
223
+ outputs: [
224
+ {
225
+ internalType: "uint256",
226
+ name: "",
227
+ type: "uint256",
228
+ },
229
+ ],
230
+ stateMutability: "nonpayable",
231
+ type: "function",
232
+ },
233
+ ];
234
+ const _bytecode = "0x608060405234801561001057600080fd5b5060405161082638038061082683398101604081905261002f91610160565b6100383361004a565b6100418161009c565b5060655561019b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006100a6610100565b60665460006100b86201518085610179565b606681905560408051848152602081018390529192507f120d3d0ec313528ff2b46390b335f973cae83e92345e3431ded6795864543c16910160405180910390a19392505050565b6033546001600160a01b0316331461015e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b60006020828403121561017257600080fd5b5051919050565b60008261019657634e487b7160e01b600052601260045260246000fd5b500490565b61067c806101aa6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806380f264ee11610081578063c0bc6d841161005b578063c0bc6d841461015d578063d0b06f5d14610165578063f2fde38b1461016e57600080fd5b806380f264ee1461010f5780638da5cb5b14610122578063a66352fa1461014a57600080fd5b806349a3e3d0116100b257806349a3e3d0146100f457806359b6a0c9146100fd578063715018a61461010557600080fd5b80631be05289146100ce578063435635a1146100eb575b600080fd5b6100d86201518081565b6040519081526020015b60405180910390f35b6100d860665481565b6100d860655481565b6100d8610181565b61010d610199565b005b6100d861011d366004610543565b6101ad565b60335460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e2565b6100d8610158366004610543565b610211565b6100d86102aa565b6100d860675481565b61010d61017c36600461055c565b61036d565b60006201518060665461019491906105c8565b905090565b6101a1610424565b6101ab60006104a5565b565b60006101b7610424565b60665460006101c962015180856105e5565b606681905560408051848152602081018390529192507f120d3d0ec313528ff2b46390b335f973cae83e92345e3431ded6795864543c16910160405180910390a19392505050565b60008061021c6102aa565b90508083111561028d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f526174654c696d6974457863656564656400000000000000000000000000000060448201526064015b60405180910390fd5b60006102998483610620565b606581905542606755949350505050565b6000806102b5610181565b905060008111610321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f526174654c696d69744e6f7453657400000000000000000000000000000000006044820152606401610284565b620151806067546103329190610633565b42111561033e57919050565b600061034861051c565b6065546103559190610633565b90508181116103645780610366565b815b9250505090565b610375610424565b73ffffffffffffffffffffffffffffffffffffffff8116610418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610284565b610421816104a5565b50565b60335473ffffffffffffffffffffffffffffffffffffffff1633146101ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610284565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000806067544261052d9190610620565b90506066548161053d91906105c8565b91505090565b60006020828403121561055557600080fd5b5035919050565b60006020828403121561056e57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461059257600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176105df576105df610599565b92915050565b60008261061b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b818103818111156105df576105df610599565b808201808211156105df576105df61059956fea2646970667358221220b4af4270deebea871ecf91da933348fab356768fd23c0c7602ee0f12f8b278a664736f6c63430008130033";
235
+ const isSuperArgs = (xs) => xs.length > 1;
236
+ export class RateLimited__factory extends ContractFactory {
237
+ constructor(...args) {
238
+ if (isSuperArgs(args)) {
239
+ super(...args);
240
+ }
241
+ else {
242
+ super(_abi, _bytecode, args[0]);
243
+ }
244
+ }
245
+ deploy(_capacity, overrides) {
246
+ return super.deploy(_capacity, overrides || {});
247
+ }
248
+ getDeployTransaction(_capacity, overrides) {
249
+ return super.getDeployTransaction(_capacity, overrides || {});
250
+ }
251
+ attach(address) {
252
+ return super.attach(address);
253
+ }
254
+ connect(signer) {
255
+ return super.connect(signer);
256
+ }
257
+ static bytecode = _bytecode;
258
+ static abi = _abi;
259
+ static createInterface() {
260
+ return new utils.Interface(_abi);
261
+ }
262
+ static connect(address, signerOrProvider) {
263
+ return new Contract(address, _abi, signerOrProvider);
264
+ }
265
+ }
266
+ //# sourceMappingURL=RateLimited__factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RateLimited__factory.js","sourceRoot":"","sources":["../../../../types/factories/contracts/libs/RateLimited__factory.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export * as staticAddressSetFactorySol from "./StaticAddressSetFactory.sol/index.js";
2
2
  export { Indexed__factory } from "./Indexed__factory.js";
3
+ export { RateLimited__factory } from "./RateLimited__factory.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../types/factories/contracts/libs/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,0BAA0B,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../types/factories/contracts/libs/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,0BAA0B,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -3,4 +3,5 @@
3
3
  /* eslint-disable */
4
4
  export * as staticAddressSetFactorySol from "./StaticAddressSetFactory.sol/index.js";
5
5
  export { Indexed__factory } from "./Indexed__factory.js";
6
+ export { RateLimited__factory } from "./RateLimited__factory.js";
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../types/factories/contracts/libs/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,oBAAoB;AACpB,oBAAoB;AACpB,OAAO,KAAK,0BAA0B,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../types/factories/contracts/libs/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,oBAAoB;AACpB,oBAAoB;AACpB,OAAO,KAAK,0BAA0B,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -12,7 +12,7 @@ export declare class InterchainAccountRouter__factory extends ContractFactory {
12
12
  }): TransactionRequest;
13
13
  attach(address: string): InterchainAccountRouter;
14
14
  connect(signer: Signer): InterchainAccountRouter__factory;
15
- static readonly bytecode = "0x60c06040523480156200001157600080fd5b506040516200471238038062004712833981016040819052620000349162000174565b8080806001600160a01b0381163b620000935760405162461bcd60e51b815260206004820152601e60248201527f4d61696c626f78436c69656e743a20696e76616c6964206d61696c626f780000604482015260640160405180910390fd5b6001600160a01b03821660808190526040805163234d8e3d60e21b81529051638d3638f4916004808201926020929091908290030181865afa158015620000de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001049190620001a6565b63ffffffff1660a052620001183362000122565b50505050620001ce565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200018757600080fd5b81516001600160a01b03811681146200019f57600080fd5b9392505050565b600060208284031215620001b957600080fd5b815163ffffffff811681146200019f57600080fd5b60805160a0516144f46200021e6000396000818161051201526117d301526000818161068e01528181610a6801528181610c8801528181611a9a01528181612392015261274e01526144f46000f3fe608060405260043610620002625760003560e01c80638da5cb5b1162000151578063dd91cc8711620000be578063eab4eaa41162000089578063efae508a116200006c578063efae508a146200076e578063f2ed8c531462000793578063f2fde38b14620007b857600080fd5b8063eab4eaa41462000732578063ef96bb4b146200074957600080fd5b8063dd91cc8714620006b0578063de523cf314620006c7578063e9198bf914620006f6578063e9a0796c146200071b57600080fd5b80639662e8ac116200011c578063b49c53a711620000ff578063b49c53a71462000630578063c0c53b8b1462000655578063d5438eae146200067a57600080fd5b80639662e8ac14620005e6578063a5da3611146200060b57600080fd5b80638da5cb5b146200054a5780638e45f8fc14620005775780638f8625aa146200059c578063940c14dd14620005c157600080fd5b80632ead72f611620001f05780635a007b7e11620001bb57806371a15b38116200019e57806371a15b3814620004aa5780637f5a7c7b14620004cf5780638d3638f414620004fe57600080fd5b80635a007b7e1462000461578063715018a6146200049257600080fd5b80632ead72f614620003d95780633dfd387314620003fe578063440df4f4146200042357806356d5d475146200044a57600080fd5b80631ddce51411620002315780631ddce51414620003285780631f3dbe0d146200033f57806325350f08146200035657806326064c9914620003b457600080fd5b8063061197d5146200026757806309643ff714620002915780630e25828514620002b85780630e72cc061462000303575b600080fd5b6200027e6200027836600462002d36565b620007dd565b6040519081526020015b60405180910390f35b3480156200029e57600080fd5b50620002b6620002b036600462002da4565b62000809565b005b348015620002c557600080fd5b50620002dd620002d736600462002dff565b62000825565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200162000288565b3480156200031057600080fd5b50620002b66200032236600462002e37565b6200086b565b6200027e6200033936600462002f97565b6200098a565b6200027e620003503660046200304c565b620009dc565b3480156200036357600080fd5b50620003976200037536600462002e37565b60cd602052600090815260409020805460019091015463ffffffff9091169082565b6040805163ffffffff909316835260208301919091520162000288565b348015620003c157600080fd5b506200027e620003d3366004620030c5565b62000a56565b348015620003e657600080fd5b506200027e620003f836600462003125565b62000b21565b3480156200040b57600080fd5b50620002b66200041d36600462002e37565b62000b42565b3480156200043057600080fd5b506200043b62000c5d565b60405162000288919062003143565b620002b66200045b3660046200318f565b62000c70565b3480156200046e57600080fd5b506200027e6200048036600462003125565b60cc6020526000908152604090205481565b3480156200049f57600080fd5b50620002b662000df4565b348015620004b757600080fd5b50620002b6620004c9366004620031ef565b62000e0c565b348015620004dc57600080fd5b50606554620002dd9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156200050b57600080fd5b50620005347f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200162000288565b3480156200055757600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff16620002dd565b3480156200058457600080fd5b50620002dd6200059636600462003235565b62000e74565b348015620005a957600080fd5b50620002b6620005bb36600462003292565b62000eb9565b348015620005ce57600080fd5b50620002dd620005e036600462003336565b62000fd2565b348015620005f357600080fd5b50620002dd6200060536600462003235565b62001173565b3480156200061857600080fd5b50620002dd6200062a36600462003336565b620011aa565b3480156200063d57600080fd5b50620002b66200064f36600462003376565b62001231565b3480156200066257600080fd5b50620002b662000674366004620033a3565b6200124b565b3480156200068757600080fd5b50620002dd7f000000000000000000000000000000000000000000000000000000000000000081565b6200027e620006c1366004620033ed565b62001493565b348015620006d457600080fd5b50606654620002dd9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156200070357600080fd5b50620002b66200071536600462003446565b620014e5565b6200027e6200072c366004620034ad565b620015d6565b6200027e6200074336600462003547565b6200162a565b3480156200075657600080fd5b50620002dd62000768366004620033a3565b6200164c565b3480156200077b57600080fd5b50620002b66200078d36600462003125565b62001874565b348015620007a057600080fd5b506200027e620007b236600462003125565b6200188c565b348015620007c557600080fd5b50620002b6620007d736600462002e37565b620018a9565b600080620007ee3386868662001963565b9050620007fe8787878462001989565b979650505050505050565b6200081362001b1d565b6200082083838362001ba0565b505050565b6000806200083a620008378562000b21565b90565b63ffffffff8516600090815260cc6020526040902054909150620008608483836200164c565b925050505b92915050565b8073ffffffffffffffffffffffffffffffffffffffff81163b151580620008a6575073ffffffffffffffffffffffffffffffffffffffff8116155b62000938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d61696c626f78436c69656e743a20696e76616c696420636f6e74726163742060448201527f73657474696e670000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6200094262001b1d565b50606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600080620009988662000b21565b63ffffffff8716600090815260cc6020526040812054919250620009c0338389898962001c74565b9050620009d08884848462001989565b98975050505050505050565b600080620009ea8762000b21565b9050600060cc60008963ffffffff1663ffffffff168152602001908152602001600020549050620009d08883838a8a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200162a92505050565b60008062000a648662001d3e565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f7ccd3218783888862000ab18962001dab565b6040518663ffffffff1660e01b815260040162000ad395949392919062003697565b602060405180830381865afa15801562000af1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b179190620036d3565b9695505050505050565b60008062000b3a609763ffffffff8086169062001dcb16565b949350505050565b8073ffffffffffffffffffffffffffffffffffffffff81163b15158062000b7d575073ffffffffffffffffffffffffffffffffffffffff8116155b62000c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d61696c626f78436c69656e743a20696e76616c696420636f6e74726163742060448201527f73657474696e670000000000000000000000000000000000000000000000000060648201526084016200092f565b62000c1562001b1d565b50606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b606062000c6b609762001de6565b905090565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161462000d37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4d61696c626f78436c69656e743a2073656e646572206e6f74206d61696c626f60448201527f780000000000000000000000000000000000000000000000000000000000000060648201526084016200092f565b600080600062000d48858562001eb1565b925092509250600062000d5f888589620005e08790565b6040517f65604f8300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906365604f839062000db690859060040162003766565b600060405180830381600087803b15801562000dd157600080fd5b505af115801562000de6573d6000803e3d6000fd5b505050505050505050505050565b62000dfe62001b1d565b62000e0a600062001ed1565b565b62000e1662001b1d565b8060005b8181101562000e6e5762000e5984848381811062000e3c5762000e3c6200377b565b905060200201602081019062000e53919062003125565b62001f48565b62000e66600182620037d9565b905062000e1a565b50505050565b600062000eb08573ffffffffffffffffffffffffffffffffffffffff861673ffffffffffffffffffffffffffffffffffffffff86168562000fd2565b95945050505050565b62000ec362001b1d565b848314801562000ed257508481145b62000f3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6c656e677468206d69736d61746368000000000000000000000000000000000060448201526064016200092f565b60005b8581101562000fc95762000fb487878381811062000f5f5762000f5f6200377b565b905060200201602081019062000f76919062003125565b86868481811062000f8b5762000f8b6200377b565b9050602002013585858581811062000fa75762000fa76200377b565b9050602002013562001ba0565b8062000fc081620037ef565b91505062000f3d565b50505050505050565b6040805160e086901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152602482018690526044820185905273ffffffffffffffffffffffffffffffffffffffff8416606480840191909152835180840390910181526084909201909252805191012060009060006200105b8262001fa4565b905073ffffffffffffffffffffffffffffffffffffffff81163b62000b175760ca54600090620010a19073ffffffffffffffffffffffffffffffffffffffff1662001fb4565b9050620010b1600084836200204a565b60408051808201825263ffffffff8b811680835260208084018d815273ffffffffffffffffffffffffffffffffffffffff878116600081815260cd8552889020965187547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016961695909517865590516001909501949094558451938b1684528301919091529294508992917fee33e8a4a721d99ee890b32b36b48bc5a14d276b7e2510763a52f839d178edf6910160405180910390a3509695505050505050565b600062000eb08573ffffffffffffffffffffffffffffffffffffffff861673ffffffffffffffffffffffffffffffffffffffff8616855b6040805160e086901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152602482018690526044820185905273ffffffffffffffffffffffffffffffffffffffff8416606480840191909152835180840390910181526084909201909252805191012060009062000eb09062001fa4565b6200123b62001b1d565b620012478282620021af565b5050565b600054610100900460ff16158080156200126c5750600054600160ff909116105b80620012885750303b15801562001288575060005460ff166001145b62001316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016200092f565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156200137557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b62001382848484620021bd565b30604051620013919062002cc6565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f080158015620013cb573d6000803e3d6000fd5b5060ca80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691821790556000906200141e9062001fb4565b805160209091012060cb5550801562000e6e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b600080620014a18562000b21565b63ffffffff8616600090815260cc6020526040812054919250620014c83383888862001963565b9050620014d88784848462001989565b93505050505b9392505050565b620014ef62001b1d565b8281146200155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f216c656e6774680000000000000000000000000000000000000000000000000060448201526064016200092f565b8260005b81811015620015ce57620015b98686838181106200158057620015806200377b565b905060200201602081019062001597919062003125565b858584818110620015ac57620015ac6200377b565b90506020020135620021af565b620015c6600182620037d9565b90506200155e565b505050505050565b600080620015e48762000b21565b63ffffffff8816600090815260cc60205260408120549192506200160c33838a8a8a62001c74565b90506200161d898484848962002281565b9998505050505050505050565b6000806200163b3387878762001963565b9050620009d0888888848762002281565b600073ffffffffffffffffffffffffffffffffffffffff8316620016f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f6e6f20726f757465722073706563696669656420666f722064657374696e617460448201527f696f6e000000000000000000000000000000000000000000000000000000000060648201526084016200092f565b6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201526000906037016040516020818303038152906040528051906020012060001c90506000620017c28262001fb4565b8051602080830191909120604080517f000000000000000000000000000000000000000000000000000000000000000060e01b7fffffffff00000000000000000000000000000000000000000000000000000000168185015273ffffffffffffffffffffffffffffffffffffffff8b811660248301523060448301528916606480830191909152825180830390910181526084909101909152805192019190912091925090620009d081838962002417565b6200187e62001b1d565b620018898162001f48565b50565b600062000865826040518060200160405280600081525062002441565b620018b362001b1d565b73ffffffffffffffffffffffffffffffffffffffff811662001958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016200092f565b620018898162001ed1565b606062000eb073ffffffffffffffffffffffffffffffffffffffff86168585856200245e565b60008362001a1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f6e6f20726f757465722073706563696669656420666f722064657374696e617460448201527f696f6e000000000000000000000000000000000000000000000000000000000060648201526084016200092f565b6040805185815260208101859052339163ffffffff8816917f4fd2d122031a8a1e6c1aed1e9128109dff5ce6b929edfa90cc52abd95f086e73910160405180910390a36040517ffa31de0100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063fa31de0190349062001ad7908990899088906004016200382a565b60206040518083038185885af115801562001af6573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062000eb09190620036d3565b60335473ffffffffffffffffffffffffffffffffffffffff16331462000e0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200092f565b600062001bad8462000b21565b14801562001bce575063ffffffff8316600090815260cc6020526040902054155b62001c5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f726f7574657220616e642049534d2064656661756c74732061726520696d6d7560448201527f7461626c65206f6e63652073657400000000000000000000000000000000000060648201526084016200092f565b62001c68838362002492565b620008208382620024aa565b60408051600180825281830190925260609160009190816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908162001c8f57905050905062001cce85858562002501565b8160008151811062001ce45762001ce46200377b565b602002602001018190525062001d0d8773ffffffffffffffffffffffffffffffffffffffff1690565b868260405160200162001d239392919062003851565b60405160208183030381529060405291505095945050505050565b6000808062001d58609763ffffffff8087169062001dcb16565b915091508162001d68856200255e565b9062001da3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200092f919062003872565b509392505050565b606062000865600083336040518060200160405280600081525062002583565b60008062001dda8484620025a1565b915091505b9250929050565b6060600062001df583620025e0565b9050805167ffffffffffffffff81111562001e145762001e1462002e55565b60405190808252806020026020018201604052801562001e3e578160200160208202803683370190505b50915060005b815181101562001eaa5781818151811062001e635762001e636200377b565b602002602001015183828151811062001e805762001e806200377b565b63ffffffff909216602092830291909101909101528062001ea181620037ef565b91505062001e44565b5050919050565b600080606062001ec48486018662003887565b9250925092509250925092565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62001f5e609763ffffffff808416906200268a16565b62001f69826200255e565b9062001247576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200092f919062003872565b6000620008658260cb5462002698565b6040517f3d602d80600a3d3981f3363d3d373d3d3d363d730000000000000000000000006020820152606082811b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660348301527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006048830152906057015b6040516020818303038152906040529050919050565b600083471015620020b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064016200092f565b815160000362002125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f60448201526064016200092f565b8282516020840186f5905073ffffffffffffffffffffffffffffffffffffffff8116620014de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f790000000000000060448201526064016200092f565b620012478282600062001ba0565b600054610100900460ff1662002256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200092f565b62002260620026a7565b6200226b8362000b42565b62002276826200086b565b620008208162001ed1565b60008462002312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f6e6f20726f757465722073706563696669656420666f722064657374696e617460448201527f696f6e000000000000000000000000000000000000000000000000000000000060648201526084016200092f565b6040805186815260208101869052339163ffffffff8916917f4fd2d122031a8a1e6c1aed1e9128109dff5ce6b929edfa90cc52abd95f086e73910160405180910390a36040517f48aee8d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906348aee8d4903490620023d1908a908a9089908990600401620039d6565b60206040518083038185885af1158015620023f0573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062000b179190620036d3565b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6000806200244f8462001d3e565b905062000b3a8482856200274a565b60608484848460405160200162002479949392919062003a11565b6040516020818303038152906040529050949350505050565b62001247609763ffffffff8085169084906200283d16565b63ffffffff8216600081815260cc602052604090819020839055517fba9685b280b1e8f64909e2dfd7465463e6a0eabbaafd732402e7a619699a382190620024f59084815260200190565b60405180910390a25050565b604080516060808201835260008083526020830152918101919091526040518060600160405280620025468673ffffffffffffffffffffffffffffffffffffffff1690565b81526020018481526020018381525090509392505050565b6060620025718263ffffffff166200284a565b60405160200162002034919062003b4f565b60606001858585856040516020016200247995949392919062003b96565b6000818152600283016020526040812054819080620025d457620025c685856200290f565b92506000915062001ddf9050565b60019250905062001ddf565b60606000620025ef836200291d565b90508067ffffffffffffffff8111156200260d576200260d62002e55565b60405190808252806020026020018201604052801562002637578160200160208202803683370190505b50915060005b8181101562001eaa576200265284826200292a565b60001c8382815181106200266a576200266a6200377b565b6020908102919091010152806200268181620037ef565b9150506200263d565b6000620014de838362002938565b6000620014de83833062002417565b600054610100900460ff1662002740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200092f565b62000e0a62002957565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166381d2ea95858585620027a160408051602081019091526000815290565b6065546040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152620027f9959493929173ffffffffffffffffffffffffffffffffffffffff169060040162003c1d565b602060405180830381865afa15801562002817573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b3a9190620036d3565b62000e6e838383620029fb565b60606000620028598362002a1a565b600101905060008167ffffffffffffffff8111156200287c576200287c62002e55565b6040519080825280601f01601f191660200182016040528015620028a7576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084620028b157509392505050565b6000620014de838362002b03565b6000620008658262002b1c565b6000620014de838362002b27565b60008181526002830160205260408120819055620014de838362002b54565b600054610100900460ff16620029f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200092f565b62000e0a3362001ed1565b6000828152600284016020526040812082905562000b3a848462002b62565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831062002a64577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831062002a91576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831062002ab057662386f26fc10000830492506010015b6305f5e100831062002ac9576305f5e100830492506008015b612710831062002ade57612710830492506004015b6064831062002af1576064830492506002015b600a8310620008655760010192915050565b60008181526001830160205260408120541515620014de565b600062000865825490565b600082600001828154811062002b415762002b416200377b565b9060005260206000200154905092915050565b6000620014de838362002b70565b6000620014de838362002c74565b6000818152600183016020526040812054801562002c6957600062002b9760018362003c81565b855490915060009062002bad9060019062003c81565b905081811462002c1957600086600001828154811062002bd15762002bd16200377b565b906000526020600020015490508087600001848154811062002bf75762002bf76200377b565b6000918252602080832090910192909255918252600188019052604090208390555b855486908062002c2d5762002c2d62003c97565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000865565b600091505062000865565b600081815260018301602052604081205462002cbd5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000865565b50600062000865565b6107f88062003cc783390190565b803563ffffffff8116811462002ce957600080fd5b919050565b60008083601f84011262002d0157600080fd5b50813567ffffffffffffffff81111562002d1a57600080fd5b6020830191508360208260051b850101111562001ddf57600080fd5b60008060008060006080868803121562002d4f57600080fd5b62002d5a8662002cd4565b94506020860135935060408601359250606086013567ffffffffffffffff81111562002d8557600080fd5b62002d938882890162002cee565b969995985093965092949392505050565b60008060006060848603121562002dba57600080fd5b62002dc58462002cd4565b95602085013595506040909401359392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811462002ce957600080fd5b6000806040838503121562002e1357600080fd5b62002e1e8362002cd4565b915062002e2e6020840162002dda565b90509250929050565b60006020828403121562002e4a57600080fd5b620014de8262002dda565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171562002eaa5762002eaa62002e55565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171562002efa5762002efa62002e55565b604052919050565b600082601f83011262002f1457600080fd5b813567ffffffffffffffff81111562002f315762002f3162002e55565b62002f6460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160162002eb0565b81815284602083860101111562002f7a57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121562002fae57600080fd5b62002fb98562002cd4565b935062002fc96020860162002dda565b925060408501359150606085013567ffffffffffffffff81111562002fed57600080fd5b62002ffb8782880162002f02565b91505092959194509250565b60008083601f8401126200301a57600080fd5b50813567ffffffffffffffff8111156200303357600080fd5b60208301915083602082850101111562001ddf57600080fd5b6000806000806000606086880312156200306557600080fd5b620030708662002cd4565b9450602086013567ffffffffffffffff808211156200308e57600080fd5b6200309c89838a0162002cee565b90965094506040880135915080821115620030b657600080fd5b5062002d938882890162003007565b60008060008060608587031215620030dc57600080fd5b620030e78562002cd4565b9350602085013567ffffffffffffffff8111156200310457600080fd5b620031128782880162003007565b9598909750949560400135949350505050565b6000602082840312156200313857600080fd5b620014de8262002cd4565b6020808252825182820181905260009190848201906040850190845b818110156200318357835163ffffffff16835292840192918401916001016200315f565b50909695505050505050565b60008060008060608587031215620031a657600080fd5b620031b18562002cd4565b935060208501359250604085013567ffffffffffffffff811115620031d557600080fd5b620031e38782880162003007565b95989497509550505050565b600080602083850312156200320357600080fd5b823567ffffffffffffffff8111156200321b57600080fd5b620032298582860162002cee565b90969095509350505050565b600080600080608085870312156200324c57600080fd5b620032578562002cd4565b9350620032676020860162002dda565b9250620032776040860162002dda565b9150620032876060860162002dda565b905092959194509250565b60008060008060008060608789031215620032ac57600080fd5b863567ffffffffffffffff80821115620032c557600080fd5b620032d38a838b0162002cee565b90985096506020890135915080821115620032ed57600080fd5b620032fb8a838b0162002cee565b909650945060408901359150808211156200331557600080fd5b506200332489828a0162002cee565b979a9699509497509295939492505050565b600080600080608085870312156200334d57600080fd5b620033588562002cd4565b93506020850135925060408501359150620032876060860162002dda565b600080604083850312156200338a57600080fd5b620033958362002cd4565b946020939093013593505050565b600080600060608486031215620033b957600080fd5b620033c48462002dda565b9250620033d46020850162002dda565b9150620033e46040850162002dda565b90509250925092565b6000806000604084860312156200340357600080fd5b6200340e8462002cd4565b9250602084013567ffffffffffffffff8111156200342b57600080fd5b620034398682870162002cee565b9497909650939450505050565b600080600080604085870312156200345d57600080fd5b843567ffffffffffffffff808211156200347657600080fd5b620034848883890162002cee565b909650945060208701359150808211156200349e57600080fd5b50620031e38782880162002cee565b600080600080600060a08688031215620034c657600080fd5b620034d18662002cd4565b9450620034e16020870162002dda565b935060408601359250606086013567ffffffffffffffff808211156200350657600080fd5b6200351489838a0162002f02565b935060808801359150808211156200352b57600080fd5b506200353a8882890162002f02565b9150509295509295909350565b60008060008060008060a087890312156200356157600080fd5b6200356c8762002cd4565b95506020870135945060408701359350606087013567ffffffffffffffff808211156200359857600080fd5b620035a68a838b0162002cee565b90955093506080890135915080821115620035c057600080fd5b50620035cf89828a0162002f02565b9150509295509295509295565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60005b838110156200364257818101518382015260200162003628565b50506000910152565b600081518084526200366581602086016020860162003625565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b63ffffffff86168152846020820152608060408201526000620036bf608083018587620035dc565b8281036060840152620009d081856200364b565b600060208284031215620036e657600080fd5b5051919050565b600081518084526020808501808196508360051b8101915082860160005b8581101562003759578284038952815180518552858101518686015260409081015160609186018290529062003744818701836200364b565b9a87019a95505050908401906001016200370b565b5091979650505050505050565b602081526000620014de6020830184620036ed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115620008655762000865620037aa565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620038235762003823620037aa565b5060010190565b63ffffffff8416815282602082015260606040820152600062000eb060608301846200364b565b83815282602082015260606040820152600062000eb06060830184620036ed565b602081526000620014de60208301846200364b565b6000806000606084860312156200389d57600080fd5b833592506020808501359250604085013567ffffffffffffffff80821115620038c557600080fd5b818701915087601f830112620038da57600080fd5b813581811115620038ef57620038ef62002e55565b8060051b6200390085820162002eb0565b918252838101850191858101908b8411156200391b57600080fd5b86860192505b83831015620039c5578235858111156200393b5760008081fd5b86016060818e037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215620039715760008081fd5b6200397b62002e84565b8882013581526040820135898201526060820135878111156200399e5760008081fd5b620039ae8f8b8386010162002f02565b604083015250835250918601919086019062003921565b809750505050505050509250925092565b63ffffffff85168152836020820152608060408201526000620039fd60808301856200364b565b8281036060840152620007fe81856200364b565b6000606080830187845260208781860152604083818701528287845260808701905060808860051b88010193508860005b8981101562003b3e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18c360301811262003aa557600080fd5b8b0180358752858101358688015284810135368290037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811262003ae957600080fd5b01858101903567ffffffffffffffff81111562003b0557600080fd5b80360382131562003b1557600080fd5b888689015262003b298989018284620035dc565b97505050918401919084019060010162003a42565b50939b9a5050505050505050505050565b7f4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e3a200081526000825162003b8981601f85016020870162003625565b91909101601f0192915050565b7fffff0000000000000000000000000000000000000000000000000000000000008660f01b1681528460028201528360228201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008360601b1660428201526000825162003c0c81605685016020870162003625565b919091016056019695505050505050565b63ffffffff8616815284602082015260a06040820152600062003c4460a08301866200364b565b828103606084015262003c5881866200364b565b91505073ffffffffffffffffffffffffffffffffffffffff831660808301529695505050505050565b81810381811115620008655762000865620037aa565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe60a060405234801561001057600080fd5b506040516107f83803806107f883398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161076861009060003960008181606d015260d001526107686000f3fe60806040526004361061002d5760003560e01c806365604f83146100395780638da5cb5b1461005b57600080fd5b3661003457005b600080fd5b34801561004557600080fd5b506100596100543660046103f7565b6100b8565b005b34801561006757600080fd5b5061008f7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461015c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f216f776e6572000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b61016e6101698284610513565b610172565b5050565b80516000905b808210156101ae576101a283838151811061019557610195610649565b60200260200101516101b3565b50816001019150610178565b505050565b80516060906101cb90836040015184602001516101d1565b92915050565b60606101f784848460405180606001604052806029815260200161070a602991396101ff565b949350505050565b606082471015610291576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610153565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516102ba919061069c565b60006040518083038185875af1925050503d80600081146102f7576040519150601f19603f3d011682016040523d82523d6000602084013e6102fc565b606091505b509150915061030d87838387610318565b979650505050505050565b606083156103ae5782516000036103a75773ffffffffffffffffffffffffffffffffffffffff85163b6103a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610153565b50816101f7565b6101f783838151156103c35781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015391906106b8565b6000806020838503121561040a57600080fd5b823567ffffffffffffffff8082111561042257600080fd5b818501915085601f83011261043657600080fd5b81358181111561044557600080fd5b8660208260051b850101111561045a57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156104be576104be61046c565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561050b5761050b61046c565b604052919050565b600067ffffffffffffffff8084111561052e5761052e61046c565b8360051b602061053f8183016104c4565b86815291850191818101903684111561055757600080fd5b865b8481101561063d578035868111156105715760008081fd5b880160603682900312156105855760008081fd5b61058d61049b565b813581528582013586820152604080830135898111156105ad5760008081fd5b9290920191601f36818501126105c35760008081fd5b83358a8111156105d5576105d561046c565b610604897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084840116016104c4565b9150808252368982870101111561061b5760008081fd5b808986018a840137600090820189015290820152845250918301918301610559565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b8381101561069357818101518382015260200161067b565b50506000910152565b600082516106ae818460208701610678565b9190910192915050565b60208152600082518060208401526106d7816040850160208701610678565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a2646970667358221220905033c75b6646ccc4df303aab4b990fe4f378608486dcf223094231370a5a4464736f6c63430008130033a264697066735822122064d1b2e8cff118bf0c19f3b29e615cf75b99ea3aab8d69943c8be5b7d64a8c7764736f6c63430008130033";
15
+ static readonly bytecode = "0x60c06040523480156200001157600080fd5b506040516200471238038062004712833981016040819052620000349162000174565b8080806001600160a01b0381163b620000935760405162461bcd60e51b815260206004820152601e60248201527f4d61696c626f78436c69656e743a20696e76616c6964206d61696c626f780000604482015260640160405180910390fd5b6001600160a01b03821660808190526040805163234d8e3d60e21b81529051638d3638f4916004808201926020929091908290030181865afa158015620000de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001049190620001a6565b63ffffffff1660a052620001183362000122565b50505050620001ce565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200018757600080fd5b81516001600160a01b03811681146200019f57600080fd5b9392505050565b600060208284031215620001b957600080fd5b815163ffffffff811681146200019f57600080fd5b60805160a0516144f46200021e6000396000818161051201526117d301526000818161068e01528181610a6801528181610c8801528181611a9a01528181612392015261274e01526144f46000f3fe608060405260043610620002625760003560e01c80638da5cb5b1162000151578063dd91cc8711620000be578063eab4eaa41162000089578063efae508a116200006c578063efae508a146200076e578063f2ed8c531462000793578063f2fde38b14620007b857600080fd5b8063eab4eaa41462000732578063ef96bb4b146200074957600080fd5b8063dd91cc8714620006b0578063de523cf314620006c7578063e9198bf914620006f6578063e9a0796c146200071b57600080fd5b80639662e8ac116200011c578063b49c53a711620000ff578063b49c53a71462000630578063c0c53b8b1462000655578063d5438eae146200067a57600080fd5b80639662e8ac14620005e6578063a5da3611146200060b57600080fd5b80638da5cb5b146200054a5780638e45f8fc14620005775780638f8625aa146200059c578063940c14dd14620005c157600080fd5b80632ead72f611620001f05780635a007b7e11620001bb57806371a15b38116200019e57806371a15b3814620004aa5780637f5a7c7b14620004cf5780638d3638f414620004fe57600080fd5b80635a007b7e1462000461578063715018a6146200049257600080fd5b80632ead72f614620003d95780633dfd387314620003fe578063440df4f4146200042357806356d5d475146200044a57600080fd5b80631ddce51411620002315780631ddce51414620003285780631f3dbe0d146200033f57806325350f08146200035657806326064c9914620003b457600080fd5b8063061197d5146200026757806309643ff714620002915780630e25828514620002b85780630e72cc061462000303575b600080fd5b6200027e6200027836600462002d36565b620007dd565b6040519081526020015b60405180910390f35b3480156200029e57600080fd5b50620002b6620002b036600462002da4565b62000809565b005b348015620002c557600080fd5b50620002dd620002d736600462002dff565b62000825565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200162000288565b3480156200031057600080fd5b50620002b66200032236600462002e37565b6200086b565b6200027e6200033936600462002f97565b6200098a565b6200027e620003503660046200304c565b620009dc565b3480156200036357600080fd5b50620003976200037536600462002e37565b60cd602052600090815260409020805460019091015463ffffffff9091169082565b6040805163ffffffff909316835260208301919091520162000288565b348015620003c157600080fd5b506200027e620003d3366004620030c5565b62000a56565b348015620003e657600080fd5b506200027e620003f836600462003125565b62000b21565b3480156200040b57600080fd5b50620002b66200041d36600462002e37565b62000b42565b3480156200043057600080fd5b506200043b62000c5d565b60405162000288919062003143565b620002b66200045b3660046200318f565b62000c70565b3480156200046e57600080fd5b506200027e6200048036600462003125565b60cc6020526000908152604090205481565b3480156200049f57600080fd5b50620002b662000df4565b348015620004b757600080fd5b50620002b6620004c9366004620031ef565b62000e0c565b348015620004dc57600080fd5b50606554620002dd9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156200050b57600080fd5b50620005347f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200162000288565b3480156200055757600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff16620002dd565b3480156200058457600080fd5b50620002dd6200059636600462003235565b62000e74565b348015620005a957600080fd5b50620002b6620005bb36600462003292565b62000eb9565b348015620005ce57600080fd5b50620002dd620005e036600462003336565b62000fd2565b348015620005f357600080fd5b50620002dd6200060536600462003235565b62001173565b3480156200061857600080fd5b50620002dd6200062a36600462003336565b620011aa565b3480156200063d57600080fd5b50620002b66200064f36600462003376565b62001231565b3480156200066257600080fd5b50620002b662000674366004620033a3565b6200124b565b3480156200068757600080fd5b50620002dd7f000000000000000000000000000000000000000000000000000000000000000081565b6200027e620006c1366004620033ed565b62001493565b348015620006d457600080fd5b50606654620002dd9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156200070357600080fd5b50620002b66200071536600462003446565b620014e5565b6200027e6200072c366004620034ad565b620015d6565b6200027e6200074336600462003547565b6200162a565b3480156200075657600080fd5b50620002dd62000768366004620033a3565b6200164c565b3480156200077b57600080fd5b50620002b66200078d36600462003125565b62001874565b348015620007a057600080fd5b506200027e620007b236600462003125565b6200188c565b348015620007c557600080fd5b50620002b6620007d736600462002e37565b620018a9565b600080620007ee3386868662001963565b9050620007fe8787878462001989565b979650505050505050565b6200081362001b1d565b6200082083838362001ba0565b505050565b6000806200083a620008378562000b21565b90565b63ffffffff8516600090815260cc6020526040902054909150620008608483836200164c565b925050505b92915050565b8073ffffffffffffffffffffffffffffffffffffffff81163b151580620008a6575073ffffffffffffffffffffffffffffffffffffffff8116155b62000938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d61696c626f78436c69656e743a20696e76616c696420636f6e74726163742060448201527f73657474696e670000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6200094262001b1d565b50606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600080620009988662000b21565b63ffffffff8716600090815260cc6020526040812054919250620009c0338389898962001c74565b9050620009d08884848462001989565b98975050505050505050565b600080620009ea8762000b21565b9050600060cc60008963ffffffff1663ffffffff168152602001908152602001600020549050620009d08883838a8a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200162a92505050565b60008062000a648662001d3e565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f7ccd3218783888862000ab18962001dab565b6040518663ffffffff1660e01b815260040162000ad395949392919062003697565b602060405180830381865afa15801562000af1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b179190620036d3565b9695505050505050565b60008062000b3a609763ffffffff8086169062001dcb16565b949350505050565b8073ffffffffffffffffffffffffffffffffffffffff81163b15158062000b7d575073ffffffffffffffffffffffffffffffffffffffff8116155b62000c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d61696c626f78436c69656e743a20696e76616c696420636f6e74726163742060448201527f73657474696e670000000000000000000000000000000000000000000000000060648201526084016200092f565b62000c1562001b1d565b50606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b606062000c6b609762001de6565b905090565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161462000d37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4d61696c626f78436c69656e743a2073656e646572206e6f74206d61696c626f60448201527f780000000000000000000000000000000000000000000000000000000000000060648201526084016200092f565b600080600062000d48858562001eb1565b925092509250600062000d5f888589620005e08790565b6040517f65604f8300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906365604f839062000db690859060040162003766565b600060405180830381600087803b15801562000dd157600080fd5b505af115801562000de6573d6000803e3d6000fd5b505050505050505050505050565b62000dfe62001b1d565b62000e0a600062001ed1565b565b62000e1662001b1d565b8060005b8181101562000e6e5762000e5984848381811062000e3c5762000e3c6200377b565b905060200201602081019062000e53919062003125565b62001f48565b62000e66600182620037d9565b905062000e1a565b50505050565b600062000eb08573ffffffffffffffffffffffffffffffffffffffff861673ffffffffffffffffffffffffffffffffffffffff86168562000fd2565b95945050505050565b62000ec362001b1d565b848314801562000ed257508481145b62000f3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6c656e677468206d69736d61746368000000000000000000000000000000000060448201526064016200092f565b60005b8581101562000fc95762000fb487878381811062000f5f5762000f5f6200377b565b905060200201602081019062000f76919062003125565b86868481811062000f8b5762000f8b6200377b565b9050602002013585858581811062000fa75762000fa76200377b565b9050602002013562001ba0565b8062000fc081620037ef565b91505062000f3d565b50505050505050565b6040805160e086901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152602482018690526044820185905273ffffffffffffffffffffffffffffffffffffffff8416606480840191909152835180840390910181526084909201909252805191012060009060006200105b8262001fa4565b905073ffffffffffffffffffffffffffffffffffffffff81163b62000b175760ca54600090620010a19073ffffffffffffffffffffffffffffffffffffffff1662001fb4565b9050620010b1600084836200204a565b60408051808201825263ffffffff8b811680835260208084018d815273ffffffffffffffffffffffffffffffffffffffff878116600081815260cd8552889020965187547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016961695909517865590516001909501949094558451938b1684528301919091529294508992917fee33e8a4a721d99ee890b32b36b48bc5a14d276b7e2510763a52f839d178edf6910160405180910390a3509695505050505050565b600062000eb08573ffffffffffffffffffffffffffffffffffffffff861673ffffffffffffffffffffffffffffffffffffffff8616855b6040805160e086901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152602482018690526044820185905273ffffffffffffffffffffffffffffffffffffffff8416606480840191909152835180840390910181526084909201909252805191012060009062000eb09062001fa4565b6200123b62001b1d565b620012478282620021af565b5050565b600054610100900460ff16158080156200126c5750600054600160ff909116105b80620012885750303b15801562001288575060005460ff166001145b62001316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016200092f565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156200137557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b62001382848484620021bd565b30604051620013919062002cc6565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f080158015620013cb573d6000803e3d6000fd5b5060ca80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691821790556000906200141e9062001fb4565b805160209091012060cb5550801562000e6e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b600080620014a18562000b21565b63ffffffff8616600090815260cc6020526040812054919250620014c83383888862001963565b9050620014d88784848462001989565b93505050505b9392505050565b620014ef62001b1d565b8281146200155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f216c656e6774680000000000000000000000000000000000000000000000000060448201526064016200092f565b8260005b81811015620015ce57620015b98686838181106200158057620015806200377b565b905060200201602081019062001597919062003125565b858584818110620015ac57620015ac6200377b565b90506020020135620021af565b620015c6600182620037d9565b90506200155e565b505050505050565b600080620015e48762000b21565b63ffffffff8816600090815260cc60205260408120549192506200160c33838a8a8a62001c74565b90506200161d898484848962002281565b9998505050505050505050565b6000806200163b3387878762001963565b9050620009d0888888848762002281565b600073ffffffffffffffffffffffffffffffffffffffff8316620016f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f6e6f20726f757465722073706563696669656420666f722064657374696e617460448201527f696f6e000000000000000000000000000000000000000000000000000000000060648201526084016200092f565b6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606085901b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201526000906037016040516020818303038152906040528051906020012060001c90506000620017c28262001fb4565b8051602080830191909120604080517f000000000000000000000000000000000000000000000000000000000000000060e01b7fffffffff00000000000000000000000000000000000000000000000000000000168185015273ffffffffffffffffffffffffffffffffffffffff8b811660248301523060448301528916606480830191909152825180830390910181526084909101909152805192019190912091925090620009d081838962002417565b6200187e62001b1d565b620018898162001f48565b50565b600062000865826040518060200160405280600081525062002441565b620018b362001b1d565b73ffffffffffffffffffffffffffffffffffffffff811662001958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016200092f565b620018898162001ed1565b606062000eb073ffffffffffffffffffffffffffffffffffffffff86168585856200245e565b60008362001a1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f6e6f20726f757465722073706563696669656420666f722064657374696e617460448201527f696f6e000000000000000000000000000000000000000000000000000000000060648201526084016200092f565b6040805185815260208101859052339163ffffffff8816917f4fd2d122031a8a1e6c1aed1e9128109dff5ce6b929edfa90cc52abd95f086e73910160405180910390a36040517ffa31de0100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063fa31de0190349062001ad7908990899088906004016200382a565b60206040518083038185885af115801562001af6573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062000eb09190620036d3565b60335473ffffffffffffffffffffffffffffffffffffffff16331462000e0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200092f565b600062001bad8462000b21565b14801562001bce575063ffffffff8316600090815260cc6020526040902054155b62001c5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f726f7574657220616e642049534d2064656661756c74732061726520696d6d7560448201527f7461626c65206f6e63652073657400000000000000000000000000000000000060648201526084016200092f565b62001c68838362002492565b620008208382620024aa565b60408051600180825281830190925260609160009190816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908162001c8f57905050905062001cce85858562002501565b8160008151811062001ce45762001ce46200377b565b602002602001018190525062001d0d8773ffffffffffffffffffffffffffffffffffffffff1690565b868260405160200162001d239392919062003851565b60405160208183030381529060405291505095945050505050565b6000808062001d58609763ffffffff8087169062001dcb16565b915091508162001d68856200255e565b9062001da3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200092f919062003872565b509392505050565b606062000865600083336040518060200160405280600081525062002583565b60008062001dda8484620025a1565b915091505b9250929050565b6060600062001df583620025e0565b9050805167ffffffffffffffff81111562001e145762001e1462002e55565b60405190808252806020026020018201604052801562001e3e578160200160208202803683370190505b50915060005b815181101562001eaa5781818151811062001e635762001e636200377b565b602002602001015183828151811062001e805762001e806200377b565b63ffffffff909216602092830291909101909101528062001ea181620037ef565b91505062001e44565b5050919050565b600080606062001ec48486018662003887565b9250925092509250925092565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62001f5e609763ffffffff808416906200268a16565b62001f69826200255e565b9062001247576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200092f919062003872565b6000620008658260cb5462002698565b6040517f3d602d80600a3d3981f3363d3d373d3d3d363d730000000000000000000000006020820152606082811b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660348301527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006048830152906057015b6040516020818303038152906040529050919050565b600083471015620020b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064016200092f565b815160000362002125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f60448201526064016200092f565b8282516020840186f5905073ffffffffffffffffffffffffffffffffffffffff8116620014de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f790000000000000060448201526064016200092f565b620012478282600062001ba0565b600054610100900460ff1662002256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200092f565b62002260620026a7565b6200226b8362000b42565b62002276826200086b565b620008208162001ed1565b60008462002312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f6e6f20726f757465722073706563696669656420666f722064657374696e617460448201527f696f6e000000000000000000000000000000000000000000000000000000000060648201526084016200092f565b6040805186815260208101869052339163ffffffff8916917f4fd2d122031a8a1e6c1aed1e9128109dff5ce6b929edfa90cc52abd95f086e73910160405180910390a36040517f48aee8d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906348aee8d4903490620023d1908a908a9089908990600401620039d6565b60206040518083038185885af1158015620023f0573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062000b179190620036d3565b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6000806200244f8462001d3e565b905062000b3a8482856200274a565b60608484848460405160200162002479949392919062003a11565b6040516020818303038152906040529050949350505050565b62001247609763ffffffff8085169084906200283d16565b63ffffffff8216600081815260cc602052604090819020839055517fba9685b280b1e8f64909e2dfd7465463e6a0eabbaafd732402e7a619699a382190620024f59084815260200190565b60405180910390a25050565b604080516060808201835260008083526020830152918101919091526040518060600160405280620025468673ffffffffffffffffffffffffffffffffffffffff1690565b81526020018481526020018381525090509392505050565b6060620025718263ffffffff166200284a565b60405160200162002034919062003b4f565b60606001858585856040516020016200247995949392919062003b96565b6000818152600283016020526040812054819080620025d457620025c685856200290f565b92506000915062001ddf9050565b60019250905062001ddf565b60606000620025ef836200291d565b90508067ffffffffffffffff8111156200260d576200260d62002e55565b60405190808252806020026020018201604052801562002637578160200160208202803683370190505b50915060005b8181101562001eaa576200265284826200292a565b60001c8382815181106200266a576200266a6200377b565b6020908102919091010152806200268181620037ef565b9150506200263d565b6000620014de838362002938565b6000620014de83833062002417565b600054610100900460ff1662002740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200092f565b62000e0a62002957565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166381d2ea95858585620027a160408051602081019091526000815290565b6065546040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b168152620027f9959493929173ffffffffffffffffffffffffffffffffffffffff169060040162003c1d565b602060405180830381865afa15801562002817573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b3a9190620036d3565b62000e6e838383620029fb565b60606000620028598362002a1a565b600101905060008167ffffffffffffffff8111156200287c576200287c62002e55565b6040519080825280601f01601f191660200182016040528015620028a7576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084620028b157509392505050565b6000620014de838362002b03565b6000620008658262002b1c565b6000620014de838362002b27565b60008181526002830160205260408120819055620014de838362002b54565b600054610100900460ff16620029f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200092f565b62000e0a3362001ed1565b6000828152600284016020526040812082905562000b3a848462002b62565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831062002a64577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831062002a91576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831062002ab057662386f26fc10000830492506010015b6305f5e100831062002ac9576305f5e100830492506008015b612710831062002ade57612710830492506004015b6064831062002af1576064830492506002015b600a8310620008655760010192915050565b60008181526001830160205260408120541515620014de565b600062000865825490565b600082600001828154811062002b415762002b416200377b565b9060005260206000200154905092915050565b6000620014de838362002b70565b6000620014de838362002c74565b6000818152600183016020526040812054801562002c6957600062002b9760018362003c81565b855490915060009062002bad9060019062003c81565b905081811462002c1957600086600001828154811062002bd15762002bd16200377b565b906000526020600020015490508087600001848154811062002bf75762002bf76200377b565b6000918252602080832090910192909255918252600188019052604090208390555b855486908062002c2d5762002c2d62003c97565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000865565b600091505062000865565b600081815260018301602052604081205462002cbd5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000865565b50600062000865565b6107f88062003cc783390190565b803563ffffffff8116811462002ce957600080fd5b919050565b60008083601f84011262002d0157600080fd5b50813567ffffffffffffffff81111562002d1a57600080fd5b6020830191508360208260051b850101111562001ddf57600080fd5b60008060008060006080868803121562002d4f57600080fd5b62002d5a8662002cd4565b94506020860135935060408601359250606086013567ffffffffffffffff81111562002d8557600080fd5b62002d938882890162002cee565b969995985093965092949392505050565b60008060006060848603121562002dba57600080fd5b62002dc58462002cd4565b95602085013595506040909401359392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811462002ce957600080fd5b6000806040838503121562002e1357600080fd5b62002e1e8362002cd4565b915062002e2e6020840162002dda565b90509250929050565b60006020828403121562002e4a57600080fd5b620014de8262002dda565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171562002eaa5762002eaa62002e55565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171562002efa5762002efa62002e55565b604052919050565b600082601f83011262002f1457600080fd5b813567ffffffffffffffff81111562002f315762002f3162002e55565b62002f6460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160162002eb0565b81815284602083860101111562002f7a57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121562002fae57600080fd5b62002fb98562002cd4565b935062002fc96020860162002dda565b925060408501359150606085013567ffffffffffffffff81111562002fed57600080fd5b62002ffb8782880162002f02565b91505092959194509250565b60008083601f8401126200301a57600080fd5b50813567ffffffffffffffff8111156200303357600080fd5b60208301915083602082850101111562001ddf57600080fd5b6000806000806000606086880312156200306557600080fd5b620030708662002cd4565b9450602086013567ffffffffffffffff808211156200308e57600080fd5b6200309c89838a0162002cee565b90965094506040880135915080821115620030b657600080fd5b5062002d938882890162003007565b60008060008060608587031215620030dc57600080fd5b620030e78562002cd4565b9350602085013567ffffffffffffffff8111156200310457600080fd5b620031128782880162003007565b9598909750949560400135949350505050565b6000602082840312156200313857600080fd5b620014de8262002cd4565b6020808252825182820181905260009190848201906040850190845b818110156200318357835163ffffffff16835292840192918401916001016200315f565b50909695505050505050565b60008060008060608587031215620031a657600080fd5b620031b18562002cd4565b935060208501359250604085013567ffffffffffffffff811115620031d557600080fd5b620031e38782880162003007565b95989497509550505050565b600080602083850312156200320357600080fd5b823567ffffffffffffffff8111156200321b57600080fd5b620032298582860162002cee565b90969095509350505050565b600080600080608085870312156200324c57600080fd5b620032578562002cd4565b9350620032676020860162002dda565b9250620032776040860162002dda565b9150620032876060860162002dda565b905092959194509250565b60008060008060008060608789031215620032ac57600080fd5b863567ffffffffffffffff80821115620032c557600080fd5b620032d38a838b0162002cee565b90985096506020890135915080821115620032ed57600080fd5b620032fb8a838b0162002cee565b909650945060408901359150808211156200331557600080fd5b506200332489828a0162002cee565b979a9699509497509295939492505050565b600080600080608085870312156200334d57600080fd5b620033588562002cd4565b93506020850135925060408501359150620032876060860162002dda565b600080604083850312156200338a57600080fd5b620033958362002cd4565b946020939093013593505050565b600080600060608486031215620033b957600080fd5b620033c48462002dda565b9250620033d46020850162002dda565b9150620033e46040850162002dda565b90509250925092565b6000806000604084860312156200340357600080fd5b6200340e8462002cd4565b9250602084013567ffffffffffffffff8111156200342b57600080fd5b620034398682870162002cee565b9497909650939450505050565b600080600080604085870312156200345d57600080fd5b843567ffffffffffffffff808211156200347657600080fd5b620034848883890162002cee565b909650945060208701359150808211156200349e57600080fd5b50620031e38782880162002cee565b600080600080600060a08688031215620034c657600080fd5b620034d18662002cd4565b9450620034e16020870162002dda565b935060408601359250606086013567ffffffffffffffff808211156200350657600080fd5b6200351489838a0162002f02565b935060808801359150808211156200352b57600080fd5b506200353a8882890162002f02565b9150509295509295909350565b60008060008060008060a087890312156200356157600080fd5b6200356c8762002cd4565b95506020870135945060408701359350606087013567ffffffffffffffff808211156200359857600080fd5b620035a68a838b0162002cee565b90955093506080890135915080821115620035c057600080fd5b50620035cf89828a0162002f02565b9150509295509295509295565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60005b838110156200364257818101518382015260200162003628565b50506000910152565b600081518084526200366581602086016020860162003625565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b63ffffffff86168152846020820152608060408201526000620036bf608083018587620035dc565b8281036060840152620009d081856200364b565b600060208284031215620036e657600080fd5b5051919050565b600081518084526020808501808196508360051b8101915082860160005b8581101562003759578284038952815180518552858101518686015260409081015160609186018290529062003744818701836200364b565b9a87019a95505050908401906001016200370b565b5091979650505050505050565b602081526000620014de6020830184620036ed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115620008655762000865620037aa565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620038235762003823620037aa565b5060010190565b63ffffffff8416815282602082015260606040820152600062000eb060608301846200364b565b83815282602082015260606040820152600062000eb06060830184620036ed565b602081526000620014de60208301846200364b565b6000806000606084860312156200389d57600080fd5b833592506020808501359250604085013567ffffffffffffffff80821115620038c557600080fd5b818701915087601f830112620038da57600080fd5b813581811115620038ef57620038ef62002e55565b8060051b6200390085820162002eb0565b918252838101850191858101908b8411156200391b57600080fd5b86860192505b83831015620039c5578235858111156200393b5760008081fd5b86016060818e037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215620039715760008081fd5b6200397b62002e84565b8882013581526040820135898201526060820135878111156200399e5760008081fd5b620039ae8f8b8386010162002f02565b604083015250835250918601919086019062003921565b809750505050505050509250925092565b63ffffffff85168152836020820152608060408201526000620039fd60808301856200364b565b8281036060840152620007fe81856200364b565b6000606080830187845260208781860152604083818701528287845260808701905060808860051b88010193508860005b8981101562003b3e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18c360301811262003aa557600080fd5b8b0180358752858101358688015284810135368290037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811262003ae957600080fd5b01858101903567ffffffffffffffff81111562003b0557600080fd5b80360382131562003b1557600080fd5b888689015262003b298989018284620035dc565b97505050918401919084019060010162003a42565b50939b9a5050505050505050505050565b7f4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e3a200081526000825162003b8981601f85016020870162003625565b91909101601f0192915050565b7fffff0000000000000000000000000000000000000000000000000000000000008660f01b1681528460028201528360228201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008360601b1660428201526000825162003c0c81605685016020870162003625565b919091016056019695505050505050565b63ffffffff8616815284602082015260a06040820152600062003c4460a08301866200364b565b828103606084015262003c5881866200364b565b91505073ffffffffffffffffffffffffffffffffffffffff831660808301529695505050505050565b81810381811115620008655762000865620037aa565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe60a060405234801561001057600080fd5b506040516107f83803806107f883398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161076861009060003960008181606d015260d001526107686000f3fe60806040526004361061002d5760003560e01c806365604f83146100395780638da5cb5b1461005b57600080fd5b3661003457005b600080fd5b34801561004557600080fd5b506100596100543660046103f7565b6100b8565b005b34801561006757600080fd5b5061008f7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461015c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f216f776e6572000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b61016e6101698284610513565b610172565b5050565b80516000905b808210156101ae576101a283838151811061019557610195610649565b60200260200101516101b3565b50816001019150610178565b505050565b80516060906101cb90836040015184602001516101d1565b92915050565b60606101f784848460405180606001604052806029815260200161070a602991396101ff565b949350505050565b606082471015610291576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610153565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516102ba919061069c565b60006040518083038185875af1925050503d80600081146102f7576040519150601f19603f3d011682016040523d82523d6000602084013e6102fc565b606091505b509150915061030d87838387610318565b979650505050505050565b606083156103ae5782516000036103a75773ffffffffffffffffffffffffffffffffffffffff85163b6103a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610153565b50816101f7565b6101f783838151156103c35781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015391906106b8565b6000806020838503121561040a57600080fd5b823567ffffffffffffffff8082111561042257600080fd5b818501915085601f83011261043657600080fd5b81358181111561044557600080fd5b8660208260051b850101111561045a57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156104be576104be61046c565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561050b5761050b61046c565b604052919050565b600067ffffffffffffffff8084111561052e5761052e61046c565b8360051b602061053f8183016104c4565b86815291850191818101903684111561055757600080fd5b865b8481101561063d578035868111156105715760008081fd5b880160603682900312156105855760008081fd5b61058d61049b565b813581528582013586820152604080830135898111156105ad5760008081fd5b9290920191601f36818501126105c35760008081fd5b83358a8111156105d5576105d561046c565b610604897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084840116016104c4565b9150808252368982870101111561061b5760008081fd5b808986018a840137600090820189015290820152845250918301918301610559565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b8381101561069357818101518382015260200161067b565b50506000910152565b600082516106ae818460208701610678565b9190910192915050565b60208152600082518060208401526106d7816040850160208701610678565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a2646970667358221220905033c75b6646ccc4df303aab4b990fe4f378608486dcf223094231370a5a4464736f6c63430008130033a26469706673582212200620af5dca4a01e2cd58e2067303247a42f5a2d56567a8ac88c5e9d894eb960464736f6c63430008130033";
16
16
  static readonly abi: readonly [{
17
17
  readonly inputs: readonly [{
18
18
  readonly internalType: "address";