@etherisc/gif-next 0.0.2-e769e2e-077 → 0.0.2-e7a5428-226

Sign up to get free protection for your applications and to get access to all the features.
Files changed (577) hide show
  1. package/README.md +133 -10
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1664 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1372 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1244 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +146 -607
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +767 -301
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +288 -118
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +152 -273
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +553 -77
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1484 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2053 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1439 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2585 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +595 -96
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +497 -75
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +617 -250
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2349 -0
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +902 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1789 -713
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +509 -220
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +204 -96
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1109 -817
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  98. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  100. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  105. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  106. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  107. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +957 -0
  109. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -0
  111. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  113. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  117. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +873 -0
  119. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  121. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +810 -0
  123. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1242 -0
  125. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  127. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +582 -235
  129. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +278 -96
  131. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +398 -49
  133. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +151 -394
  135. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +770 -365
  137. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  138. package/artifacts/contracts/pool/Pool.sol/Pool.json +148 -682
  139. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +940 -518
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +283 -97
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +382 -166
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +222 -92
  149. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1159 -0
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +502 -230
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +251 -113
  157. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +320 -9
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +369 -18
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +436 -101
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +202 -80
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +291 -264
  167. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  168. package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +295 -150
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +564 -292
  171. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +259 -97
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.json +262 -299
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +220 -122
  179. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  180. package/artifacts/contracts/product/Product.sol/Product.json +322 -596
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  185. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  186. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  187. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  188. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +454 -42
  189. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  190. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +275 -193
  191. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  192. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  193. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  194. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  195. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  196. package/artifacts/contracts/registry/Registry.sol/Registry.json +806 -97
  197. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  198. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2147 -0
  199. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  200. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1061 -0
  201. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  202. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +320 -312
  203. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  204. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +206 -94
  205. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  206. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  207. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  208. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  209. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  210. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  211. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  212. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  213. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  214. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +257 -147
  215. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  216. package/artifacts/contracts/shared/Component.sol/Component.json +92 -277
  217. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  218. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +632 -542
  219. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  220. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +241 -115
  221. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  229. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +99 -94
  231. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +549 -228
  233. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +138 -130
  235. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  236. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +51 -19
  237. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  238. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
  239. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  240. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +42 -1
  241. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  242. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
  243. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +173 -0
  245. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  246. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  247. package/artifacts/contracts/shared/IService.sol/IService.json +103 -2
  248. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  249. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  250. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  251. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +131 -366
  252. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  253. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +61 -104
  254. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  255. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
  256. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  257. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  258. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  259. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +45 -55
  260. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  261. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
  262. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  263. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +148 -98
  264. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  265. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  266. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  267. package/artifacts/contracts/shared/Service.sol/Service.json +96 -102
  268. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  269. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  272. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  273. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  274. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  275. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1388 -635
  276. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  277. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +705 -103
  278. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  279. package/artifacts/contracts/staking/Staking.sol/Staking.json +1703 -957
  280. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  281. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  282. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  283. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  284. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  285. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +274 -92
  286. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +544 -0
  288. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  289. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +751 -212
  290. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  291. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +215 -85
  292. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2637 -0
  294. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  295. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +657 -0
  296. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  297. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  298. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/Amount.sol/AmountLib.json +122 -5
  300. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +81 -17
  302. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  304. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  306. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  308. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Fee.sol/FeeLib.json +98 -37
  310. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  312. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  313. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  314. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +47 -4
  316. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  317. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  318. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +153 -4
  320. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  322. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  324. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  326. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  328. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +121 -23
  330. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +167 -2
  332. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  334. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  336. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  337. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  338. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
  340. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  341. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +37 -5
  342. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  343. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +126 -33
  344. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  346. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  347. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +120 -2
  348. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  349. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
  350. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  351. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  352. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  353. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  354. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  355. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
  356. package/contracts/accounting/AccountingService.sol +274 -0
  357. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  358. package/contracts/accounting/IAccountingService.sol +47 -0
  359. package/contracts/authorization/AccessAdmin.sol +780 -0
  360. package/contracts/authorization/AccessAdminLib.sol +396 -0
  361. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  362. package/contracts/authorization/Authorization.sol +169 -0
  363. package/contracts/authorization/IAccess.sol +67 -0
  364. package/contracts/authorization/IAccessAdmin.sol +144 -0
  365. package/contracts/authorization/IAuthorization.sol +26 -0
  366. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  367. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  368. package/contracts/distribution/BasicDistribution.sol +141 -0
  369. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  370. package/contracts/distribution/Distribution.sol +126 -142
  371. package/contracts/distribution/DistributionService.sol +288 -137
  372. package/contracts/distribution/DistributionServiceManager.sol +13 -25
  373. package/contracts/distribution/IDistributionComponent.sol +22 -43
  374. package/contracts/distribution/IDistributionService.sol +61 -27
  375. package/contracts/examples/fire/DamageLevel.sol +59 -0
  376. package/contracts/examples/fire/FirePool.sol +86 -0
  377. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  378. package/contracts/examples/fire/FireProduct.sol +433 -0
  379. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  380. package/contracts/examples/fire/FireUSD.sol +26 -0
  381. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  382. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  383. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  384. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  385. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  386. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  387. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  388. package/contracts/instance/BundleSet.sol +130 -0
  389. package/contracts/instance/IInstance.sol +117 -49
  390. package/contracts/instance/IInstanceService.sol +80 -46
  391. package/contracts/instance/Instance.sol +252 -133
  392. package/contracts/instance/InstanceAdmin.sol +383 -0
  393. package/contracts/instance/InstanceAuthorizationV3.sol +266 -0
  394. package/contracts/instance/InstanceReader.sol +499 -233
  395. package/contracts/instance/InstanceService.sol +370 -218
  396. package/contracts/instance/InstanceServiceManager.sol +14 -29
  397. package/contracts/instance/InstanceStore.sol +94 -55
  398. package/contracts/instance/RiskSet.sol +126 -0
  399. package/contracts/instance/base/BalanceStore.sol +16 -13
  400. package/contracts/instance/base/Cloneable.sol +2 -25
  401. package/contracts/instance/base/ObjectCounter.sol +20 -0
  402. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  403. package/contracts/instance/base/ObjectSet.sol +77 -0
  404. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  405. package/contracts/instance/module/IBundle.sol +6 -5
  406. package/contracts/instance/module/IComponents.sol +30 -20
  407. package/contracts/instance/module/IDistribution.sol +21 -9
  408. package/contracts/instance/module/IPolicy.sol +50 -29
  409. package/contracts/instance/module/IRisk.sol +5 -0
  410. package/contracts/mock/Dip.sol +26 -0
  411. package/contracts/oracle/BasicOracle.sol +45 -0
  412. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  413. package/contracts/oracle/IOracle.sol +41 -0
  414. package/contracts/oracle/IOracleComponent.sol +33 -0
  415. package/contracts/oracle/IOracleService.sol +66 -0
  416. package/contracts/oracle/Oracle.sol +154 -0
  417. package/contracts/oracle/OracleService.sol +310 -0
  418. package/contracts/oracle/OracleServiceManager.sol +39 -0
  419. package/contracts/pool/BasicPool.sol +162 -0
  420. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  421. package/contracts/pool/BundleService.sol +225 -152
  422. package/contracts/pool/BundleServiceManager.sol +13 -25
  423. package/contracts/pool/IBundleService.sol +44 -34
  424. package/contracts/pool/IPoolComponent.sol +20 -70
  425. package/contracts/pool/IPoolService.sol +99 -76
  426. package/contracts/pool/Pool.sol +198 -164
  427. package/contracts/pool/PoolLib.sol +341 -0
  428. package/contracts/pool/PoolService.sol +448 -255
  429. package/contracts/pool/PoolServiceManager.sol +12 -24
  430. package/contracts/product/ApplicationService.sol +160 -86
  431. package/contracts/product/ApplicationServiceManager.sol +12 -9
  432. package/contracts/product/BasicProduct.sol +49 -0
  433. package/contracts/product/BasicProductAuthorization.sol +63 -0
  434. package/contracts/product/ClaimService.sol +389 -195
  435. package/contracts/product/ClaimServiceManager.sol +12 -9
  436. package/contracts/product/IApplicationService.sol +30 -4
  437. package/contracts/product/IClaimService.sol +52 -9
  438. package/contracts/product/IPolicyService.sol +62 -38
  439. package/contracts/product/IPricingService.sol +12 -11
  440. package/contracts/product/IProductComponent.sol +29 -9
  441. package/contracts/product/IRiskService.sol +48 -0
  442. package/contracts/product/PolicyService.sol +450 -276
  443. package/contracts/product/PolicyServiceLib.sol +139 -0
  444. package/contracts/product/PolicyServiceManager.sol +12 -27
  445. package/contracts/product/PricingService.sol +97 -91
  446. package/contracts/product/PricingServiceManager.sol +12 -24
  447. package/contracts/product/Product.sol +263 -147
  448. package/contracts/product/RiskService.sol +190 -0
  449. package/contracts/product/RiskServiceManager.sol +39 -0
  450. package/contracts/registry/ChainNft.sol +72 -39
  451. package/contracts/registry/IRegistry.sol +99 -38
  452. package/contracts/registry/IRegistryService.sol +26 -43
  453. package/contracts/registry/IRelease.sol +29 -0
  454. package/contracts/registry/ITransferInterceptor.sol +1 -2
  455. package/contracts/registry/Registry.sol +439 -232
  456. package/contracts/registry/RegistryAdmin.sol +188 -0
  457. package/contracts/registry/RegistryAuthorization.sol +309 -0
  458. package/contracts/registry/RegistryService.sol +66 -152
  459. package/contracts/registry/RegistryServiceManager.sol +23 -30
  460. package/contracts/registry/ReleaseAdmin.sol +195 -0
  461. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  462. package/contracts/registry/ReleaseRegistry.sol +525 -0
  463. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  464. package/contracts/registry/TokenRegistry.sol +211 -81
  465. package/contracts/shared/Component.sol +71 -143
  466. package/contracts/shared/ComponentService.sol +460 -369
  467. package/contracts/shared/ComponentServiceManager.sol +10 -7
  468. package/contracts/shared/ContractLib.sol +312 -0
  469. package/contracts/shared/IComponent.sol +7 -23
  470. package/contracts/shared/IComponentService.sol +51 -31
  471. package/contracts/shared/IInstanceLinkedComponent.sol +10 -26
  472. package/contracts/shared/IKeyValueStore.sol +3 -2
  473. package/contracts/shared/ILifecycle.sol +3 -2
  474. package/contracts/shared/INftOwnable.sol +5 -1
  475. package/contracts/shared/IPolicyHolder.sol +12 -17
  476. package/contracts/shared/IRegisterable.sol +22 -1
  477. package/contracts/shared/IService.sol +11 -6
  478. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +12 -4
  479. package/contracts/shared/InstanceLinkedComponent.sol +95 -46
  480. package/contracts/shared/KeyValueStore.sol +32 -70
  481. package/contracts/shared/Lifecycle.sol +30 -63
  482. package/contracts/shared/NftIdSet.sol +65 -0
  483. package/contracts/shared/NftOwnable.sol +35 -24
  484. package/contracts/shared/PolicyHolder.sol +19 -50
  485. package/contracts/shared/Registerable.sol +52 -21
  486. package/contracts/shared/RegistryLinked.sol +9 -14
  487. package/contracts/shared/Service.sol +32 -42
  488. package/contracts/shared/TokenHandler.sol +310 -26
  489. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  490. package/contracts/staking/IStaking.sol +229 -42
  491. package/contracts/staking/IStakingService.sol +98 -76
  492. package/contracts/staking/Staking.sol +633 -99
  493. package/contracts/staking/StakingLib.sol +195 -0
  494. package/contracts/staking/StakingLifecycle.sol +23 -0
  495. package/contracts/staking/StakingManager.sol +25 -20
  496. package/contracts/staking/StakingReader.sol +151 -0
  497. package/contracts/staking/StakingService.sol +174 -53
  498. package/contracts/staking/StakingServiceManager.sol +13 -8
  499. package/contracts/staking/StakingStore.sol +973 -0
  500. package/contracts/staking/TargetManagerLib.sol +211 -0
  501. package/contracts/type/AddressSet.sol +1 -1
  502. package/contracts/type/Amount.sol +43 -3
  503. package/contracts/type/Blocknumber.sol +34 -16
  504. package/contracts/type/ChainId.sol +101 -0
  505. package/contracts/type/ClaimId.sol +6 -1
  506. package/contracts/type/Fee.sol +9 -9
  507. package/contracts/type/Key32.sol +2 -2
  508. package/contracts/type/Key32Set.sol +62 -0
  509. package/contracts/type/NftId.sol +16 -4
  510. package/contracts/type/NftIdSet.sol +1 -1
  511. package/contracts/type/ObjectType.sol +204 -62
  512. package/contracts/type/PayoutId.sol +10 -10
  513. package/contracts/type/Referral.sol +2 -1
  514. package/contracts/type/RequestId.sol +75 -0
  515. package/contracts/type/RiskId.sol +39 -7
  516. package/contracts/type/RoleId.sol +122 -80
  517. package/contracts/type/Seconds.sol +62 -1
  518. package/contracts/type/Selector.sol +107 -0
  519. package/contracts/type/StateId.sol +41 -2
  520. package/contracts/type/String.sol +65 -0
  521. package/contracts/type/Timestamp.sol +20 -9
  522. package/contracts/type/UFixed.sol +62 -125
  523. package/contracts/type/Version.sol +58 -7
  524. package/contracts/{shared → upgradeability}/IVersionable.sol +3 -0
  525. package/contracts/{shared → upgradeability}/ProxyManager.sol +115 -38
  526. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  527. package/contracts/{shared → upgradeability}/Versionable.sol +8 -5
  528. package/package.json +12 -8
  529. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  530. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  531. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  532. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  533. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  534. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -132
  535. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  536. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  537. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  538. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -237
  539. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  540. package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -381
  541. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  542. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -673
  543. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  544. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -636
  545. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  546. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -308
  547. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  548. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -688
  549. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  550. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  551. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  552. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  553. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  554. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  555. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  556. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  557. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  558. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
  559. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  560. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  561. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  562. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  563. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  564. package/contracts/instance/BundleManager.sol +0 -126
  565. package/contracts/instance/InstanceAccessManager.sol +0 -543
  566. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -336
  567. package/contracts/instance/base/ObjectManager.sol +0 -82
  568. package/contracts/instance/module/IAccess.sol +0 -54
  569. package/contracts/product/IProductService.sol +0 -33
  570. package/contracts/product/ProductService.sol +0 -122
  571. package/contracts/product/ProductServiceManager.sol +0 -54
  572. package/contracts/registry/RegistryAccessManager.sol +0 -213
  573. package/contracts/registry/ReleaseManager.sol +0 -375
  574. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  575. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
  576. package/contracts/shared/ComponentVerifyingService.sol +0 -111
  577. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
@@ -45,22 +45,11 @@
45
45
  "inputs": [
46
46
  {
47
47
  "internalType": "address",
48
- "name": "target",
49
- "type": "address"
50
- }
51
- ],
52
- "name": "AddressEmptyCode",
53
- "type": "error"
54
- },
55
- {
56
- "inputs": [
57
- {
58
- "internalType": "address",
59
- "name": "account",
48
+ "name": "authority",
60
49
  "type": "address"
61
50
  }
62
51
  ],
63
- "name": "AddressInsufficientBalance",
52
+ "name": "ErrorAuthorityInvalid",
64
53
  "type": "error"
65
54
  },
66
55
  {
@@ -81,7 +70,12 @@
81
70
  },
82
71
  {
83
72
  "inputs": [],
84
- "name": "ErrorComponentTokenAddressZero",
73
+ "name": "ErrorComponentProductNftIdNonzero",
74
+ "type": "error"
75
+ },
76
+ {
77
+ "inputs": [],
78
+ "name": "ErrorComponentProductNftIdZero",
85
79
  "type": "error"
86
80
  },
87
81
  {
@@ -94,928 +88,1335 @@
94
88
  "name": "ErrorComponentWalletAddressZero",
95
89
  "type": "error"
96
90
  },
91
+ {
92
+ "inputs": [],
93
+ "name": "ErrorComponentWalletNotComponent",
94
+ "type": "error"
95
+ },
97
96
  {
98
97
  "inputs": [
99
98
  {
100
- "internalType": "address",
101
- "name": "oldWallet",
102
- "type": "address"
103
- },
99
+ "internalType": "NftId",
100
+ "name": "nftId",
101
+ "type": "uint96"
102
+ }
103
+ ],
104
+ "name": "ErrorNftOwnableAlreadyLinked",
105
+ "type": "error"
106
+ },
107
+ {
108
+ "inputs": [
104
109
  {
105
110
  "internalType": "address",
106
- "name": "newWallet",
111
+ "name": "contractAddress",
107
112
  "type": "address"
108
- },
109
- {
110
- "internalType": "uint256",
111
- "name": "allowance",
112
- "type": "uint256"
113
- },
114
- {
115
- "internalType": "uint256",
116
- "name": "balance",
117
- "type": "uint256"
118
113
  }
119
114
  ],
120
- "name": "ErrorComponentWalletAllowanceTooSmall",
115
+ "name": "ErrorNftOwnableContractNotRegistered",
121
116
  "type": "error"
122
117
  },
123
118
  {
124
119
  "inputs": [],
125
- "name": "ErrorComponentWalletNotComponent",
120
+ "name": "ErrorNftOwnableInitialOwnerZero",
126
121
  "type": "error"
127
122
  },
128
123
  {
129
124
  "inputs": [
130
125
  {
131
- "internalType": "ObjectType",
132
- "name": "objectType",
133
- "type": "uint8"
134
- },
135
- {
136
- "internalType": "StateId",
137
- "name": "fromStateId",
138
- "type": "uint8"
126
+ "internalType": "NftId",
127
+ "name": "nftId",
128
+ "type": "uint96"
139
129
  },
140
130
  {
141
- "internalType": "StateId",
142
- "name": "toStateId",
131
+ "internalType": "ObjectType",
132
+ "name": "expectedObjectType",
143
133
  "type": "uint8"
144
134
  }
145
135
  ],
146
- "name": "ErrorInvalidStateTransition",
136
+ "name": "ErrorNftOwnableInvalidType",
147
137
  "type": "error"
148
138
  },
149
139
  {
150
140
  "inputs": [
151
141
  {
152
- "internalType": "Key32",
153
- "name": "key",
154
- "type": "bytes32"
155
- },
156
- {
157
- "internalType": "ObjectType",
158
- "name": "objectType",
159
- "type": "uint8"
142
+ "internalType": "address",
143
+ "name": "account",
144
+ "type": "address"
160
145
  }
161
146
  ],
162
- "name": "ErrorKeyValueStoreAlreadyCreated",
147
+ "name": "ErrorNftOwnableNotOwner",
163
148
  "type": "error"
164
149
  },
165
150
  {
166
151
  "inputs": [
167
152
  {
168
- "internalType": "Key32",
169
- "name": "key",
170
- "type": "bytes32"
153
+ "internalType": "address",
154
+ "name": "registryAddress",
155
+ "type": "address"
171
156
  }
172
157
  ],
173
- "name": "ErrorKeyValueStoreNotExisting",
158
+ "name": "ErrorNotRegistry",
159
+ "type": "error"
160
+ },
161
+ {
162
+ "inputs": [],
163
+ "name": "ErrorRegisterableNotActive",
174
164
  "type": "error"
175
165
  },
176
166
  {
177
167
  "inputs": [
178
168
  {
179
- "internalType": "Key32",
180
- "name": "key",
181
- "type": "bytes32"
169
+ "internalType": "address",
170
+ "name": "owner",
171
+ "type": "address"
172
+ },
173
+ {
174
+ "internalType": "address",
175
+ "name": "tokenHandler",
176
+ "type": "address"
177
+ },
178
+ {
179
+ "internalType": "uint256",
180
+ "name": "amount",
181
+ "type": "uint256"
182
+ },
183
+ {
184
+ "internalType": "uint256",
185
+ "name": "dipAllowance",
186
+ "type": "uint256"
182
187
  }
183
188
  ],
184
- "name": "ErrorKeyValueStoreStateZero",
189
+ "name": "ErrorStakingDipAllowanceInsufficient",
185
190
  "type": "error"
186
191
  },
187
192
  {
188
193
  "inputs": [
189
194
  {
190
- "internalType": "ObjectType",
191
- "name": "objectType",
192
- "type": "uint8"
195
+ "internalType": "address",
196
+ "name": "owner",
197
+ "type": "address"
198
+ },
199
+ {
200
+ "internalType": "uint256",
201
+ "name": "amount",
202
+ "type": "uint256"
203
+ },
204
+ {
205
+ "internalType": "uint256",
206
+ "name": "dipBalance",
207
+ "type": "uint256"
193
208
  }
194
209
  ],
195
- "name": "ErrorKeyValueStoreTypeUndefined",
210
+ "name": "ErrorStakingDipBalanceInsufficient",
196
211
  "type": "error"
197
212
  },
198
213
  {
199
214
  "inputs": [
200
215
  {
201
216
  "internalType": "NftId",
202
- "name": "nftId",
217
+ "name": "targetNftId",
203
218
  "type": "uint96"
219
+ },
220
+ {
221
+ "internalType": "Seconds",
222
+ "name": "maxLockingPeriod",
223
+ "type": "uint40"
224
+ },
225
+ {
226
+ "internalType": "Seconds",
227
+ "name": "lockingPeriod",
228
+ "type": "uint40"
204
229
  }
205
230
  ],
206
- "name": "ErrorNftOwnableAlreadyLinked",
231
+ "name": "ErrorStakingLockingPeriodTooLong",
207
232
  "type": "error"
208
233
  },
209
234
  {
210
235
  "inputs": [
211
236
  {
212
- "internalType": "address",
213
- "name": "contractAddress",
214
- "type": "address"
237
+ "internalType": "NftId",
238
+ "name": "targetNftId",
239
+ "type": "uint96"
240
+ },
241
+ {
242
+ "internalType": "Seconds",
243
+ "name": "minLockingPeriod",
244
+ "type": "uint40"
245
+ },
246
+ {
247
+ "internalType": "Seconds",
248
+ "name": "lockingPeriod",
249
+ "type": "uint40"
215
250
  }
216
251
  ],
217
- "name": "ErrorNftOwnableContractNotRegistered",
218
- "type": "error"
219
- },
220
- {
221
- "inputs": [],
222
- "name": "ErrorNftOwnableInitialOwnerZero",
252
+ "name": "ErrorStakingLockingPeriodTooShort",
223
253
  "type": "error"
224
254
  },
225
255
  {
226
256
  "inputs": [
227
257
  {
228
- "internalType": "address",
229
- "name": "account",
230
- "type": "address"
258
+ "internalType": "NftId",
259
+ "name": "nftId",
260
+ "type": "uint96"
231
261
  }
232
262
  ],
233
- "name": "ErrorNftOwnableNotOwner",
263
+ "name": "ErrorStakingNotNftOwner",
234
264
  "type": "error"
235
265
  },
236
266
  {
237
267
  "inputs": [
238
268
  {
239
269
  "internalType": "NftId",
240
- "name": "nftId",
270
+ "name": "stakeNftId",
241
271
  "type": "uint96"
242
272
  },
243
273
  {
244
- "internalType": "ObjectType",
245
- "name": "objectType",
246
- "type": "uint8"
274
+ "internalType": "address",
275
+ "name": "expectedOwner",
276
+ "type": "address"
277
+ },
278
+ {
279
+ "internalType": "address",
280
+ "name": "actualOwner",
281
+ "type": "address"
247
282
  }
248
283
  ],
249
- "name": "ErrorNoLifecycle",
284
+ "name": "ErrorStakingNotOwner",
250
285
  "type": "error"
251
286
  },
252
287
  {
253
288
  "inputs": [
254
289
  {
255
290
  "internalType": "address",
256
- "name": "registryAddress",
291
+ "name": "registry",
257
292
  "type": "address"
258
293
  }
259
294
  ],
260
- "name": "ErrorNotRegistry",
295
+ "name": "ErrorStakingNotRegistry",
261
296
  "type": "error"
262
297
  },
263
298
  {
264
- "inputs": [],
265
- "name": "FailedInnerCall",
299
+ "inputs": [
300
+ {
301
+ "internalType": "NftId",
302
+ "name": "stakeNftId",
303
+ "type": "uint96"
304
+ }
305
+ ],
306
+ "name": "ErrorStakingNotStake",
266
307
  "type": "error"
267
308
  },
268
309
  {
269
310
  "inputs": [],
270
- "name": "InvalidInitialization",
311
+ "name": "ErrorStakingNotStakingOwner",
271
312
  "type": "error"
272
313
  },
273
314
  {
274
- "inputs": [],
275
- "name": "NotInitializing",
315
+ "inputs": [
316
+ {
317
+ "internalType": "NftId",
318
+ "name": "targetNftId",
319
+ "type": "uint96"
320
+ }
321
+ ],
322
+ "name": "ErrorStakingNotTarget",
276
323
  "type": "error"
277
324
  },
278
325
  {
279
326
  "inputs": [
280
327
  {
281
- "internalType": "address",
282
- "name": "token",
283
- "type": "address"
328
+ "internalType": "VersionPart",
329
+ "name": "release",
330
+ "type": "uint8"
284
331
  }
285
332
  ],
286
- "name": "SafeERC20FailedOperation",
333
+ "name": "ErrorStakingReleaseNotActive",
287
334
  "type": "error"
288
335
  },
289
336
  {
290
- "anonymous": false,
291
337
  "inputs": [
292
338
  {
293
- "indexed": false,
294
- "internalType": "address",
295
- "name": "authority",
296
- "type": "address"
339
+ "internalType": "NftId",
340
+ "name": "targetNftId",
341
+ "type": "uint96"
342
+ },
343
+ {
344
+ "internalType": "UFixed",
345
+ "name": "maxRewardRate",
346
+ "type": "uint160"
347
+ },
348
+ {
349
+ "internalType": "UFixed",
350
+ "name": "rewardRate",
351
+ "type": "uint160"
297
352
  }
298
353
  ],
299
- "name": "AuthorityUpdated",
300
- "type": "event"
354
+ "name": "ErrorStakingRewardRateTooHigh",
355
+ "type": "error"
301
356
  },
302
357
  {
303
- "anonymous": false,
304
358
  "inputs": [
305
359
  {
306
- "indexed": false,
307
- "internalType": "uint64",
308
- "name": "version",
309
- "type": "uint64"
360
+ "internalType": "VersionPart",
361
+ "name": "release",
362
+ "type": "uint8"
310
363
  }
311
364
  ],
312
- "name": "Initialized",
313
- "type": "event"
365
+ "name": "ErrorStakingServiceNotFound",
366
+ "type": "error"
314
367
  },
315
368
  {
316
- "anonymous": false,
317
369
  "inputs": [
318
370
  {
319
- "indexed": false,
320
- "internalType": "address",
321
- "name": "token",
322
- "type": "address"
323
- },
324
- {
325
- "indexed": false,
326
- "internalType": "uint256",
327
- "name": "limit",
328
- "type": "uint256"
371
+ "internalType": "NftId",
372
+ "name": "targetNftId",
373
+ "type": "uint96"
329
374
  }
330
375
  ],
331
- "name": "LogComponentTokenHandlerApproved",
332
- "type": "event"
376
+ "name": "ErrorStakingStakeAmountZero",
377
+ "type": "error"
333
378
  },
334
379
  {
335
- "anonymous": false,
336
380
  "inputs": [
337
381
  {
338
- "indexed": false,
339
- "internalType": "address",
340
- "name": "oldWallet",
341
- "type": "address"
382
+ "internalType": "NftId",
383
+ "name": "stakeNftId",
384
+ "type": "uint96"
342
385
  },
343
386
  {
344
- "indexed": false,
345
- "internalType": "address",
346
- "name": "newWallet",
347
- "type": "address"
387
+ "internalType": "Timestamp",
388
+ "name": "lockedUntil",
389
+ "type": "uint40"
348
390
  }
349
391
  ],
350
- "name": "LogComponentWalletAddressChanged",
351
- "type": "event"
392
+ "name": "ErrorStakingStakeLocked",
393
+ "type": "error"
352
394
  },
353
395
  {
354
- "anonymous": false,
355
396
  "inputs": [
356
397
  {
357
- "indexed": false,
358
- "internalType": "address",
359
- "name": "from",
360
- "type": "address"
361
- },
362
- {
363
- "indexed": false,
364
398
  "internalType": "address",
365
- "name": "to",
399
+ "name": "stakingByStakingReader",
366
400
  "type": "address"
367
- },
368
- {
369
- "indexed": false,
370
- "internalType": "uint256",
371
- "name": "amount",
372
- "type": "uint256"
373
401
  }
374
402
  ],
375
- "name": "LogComponentWalletTokensTransferred",
376
- "type": "event"
403
+ "name": "ErrorStakingStakingReaderStakingMismatch",
404
+ "type": "error"
377
405
  },
378
406
  {
379
- "anonymous": false,
380
407
  "inputs": [
381
408
  {
382
- "indexed": false,
383
- "internalType": "ObjectType",
384
- "name": "objectType",
385
- "type": "uint8"
386
- },
387
- {
388
- "indexed": false,
389
- "internalType": "KeyId",
390
- "name": "keyId",
391
- "type": "bytes31"
392
- },
409
+ "internalType": "NftId",
410
+ "name": "targetNftId",
411
+ "type": "uint96"
412
+ }
413
+ ],
414
+ "name": "ErrorStakingTargetAlreadyRegistered",
415
+ "type": "error"
416
+ },
417
+ {
418
+ "inputs": [
393
419
  {
394
- "indexed": false,
395
- "internalType": "StateId",
396
- "name": "state",
397
- "type": "uint8"
420
+ "internalType": "NftId",
421
+ "name": "targetNftId",
422
+ "type": "uint96"
398
423
  },
399
424
  {
400
- "indexed": false,
401
- "internalType": "address",
402
- "name": "createdBy",
403
- "type": "address"
425
+ "internalType": "Amount",
426
+ "name": "maxStakedAmount",
427
+ "type": "uint96"
404
428
  },
405
429
  {
406
- "indexed": false,
407
- "internalType": "address",
408
- "name": "txOrigin",
409
- "type": "address"
430
+ "internalType": "Amount",
431
+ "name": "stakedAmount",
432
+ "type": "uint96"
410
433
  }
411
434
  ],
412
- "name": "LogInfoCreated",
413
- "type": "event"
435
+ "name": "ErrorStakingTargetMaxStakedAmountExceeded",
436
+ "type": "error"
437
+ },
438
+ {
439
+ "inputs": [],
440
+ "name": "ErrorStakingTargetNftIdZero",
441
+ "type": "error"
414
442
  },
415
443
  {
416
- "anonymous": false,
417
444
  "inputs": [
418
445
  {
419
- "indexed": false,
420
- "internalType": "ObjectType",
421
- "name": "objectType",
422
- "type": "uint8"
423
- },
424
- {
425
- "indexed": false,
426
- "internalType": "KeyId",
427
- "name": "keyId",
428
- "type": "bytes31"
429
- },
446
+ "internalType": "NftId",
447
+ "name": "targetNftId",
448
+ "type": "uint96"
449
+ }
450
+ ],
451
+ "name": "ErrorStakingTargetNotFound",
452
+ "type": "error"
453
+ },
454
+ {
455
+ "inputs": [
430
456
  {
431
- "indexed": false,
432
- "internalType": "StateId",
433
- "name": "state",
434
- "type": "uint8"
457
+ "internalType": "NftId",
458
+ "name": "targetNftId",
459
+ "type": "uint96"
435
460
  },
436
461
  {
437
- "indexed": false,
438
- "internalType": "address",
439
- "name": "updatedBy",
440
- "type": "address"
462
+ "internalType": "ChainId",
463
+ "name": "chainId",
464
+ "type": "uint96"
441
465
  },
442
466
  {
443
- "indexed": false,
444
467
  "internalType": "address",
445
- "name": "txOrigin",
468
+ "name": "token",
446
469
  "type": "address"
447
- },
448
- {
449
- "indexed": false,
450
- "internalType": "Blocknumber",
451
- "name": "lastUpdatedIn",
452
- "type": "uint32"
453
470
  }
454
471
  ],
455
- "name": "LogInfoUpdated",
456
- "type": "event"
472
+ "name": "ErrorStakingTargetTokenNotFound",
473
+ "type": "error"
457
474
  },
458
475
  {
459
- "anonymous": false,
460
476
  "inputs": [
461
477
  {
462
- "indexed": false,
478
+ "internalType": "NftId",
479
+ "name": "targetNftId",
480
+ "type": "uint96"
481
+ },
482
+ {
463
483
  "internalType": "ObjectType",
464
484
  "name": "objectType",
465
485
  "type": "uint8"
466
- },
486
+ }
487
+ ],
488
+ "name": "ErrorStakingTargetTypeNotSupported",
489
+ "type": "error"
490
+ },
491
+ {
492
+ "inputs": [
467
493
  {
468
- "indexed": false,
469
- "internalType": "KeyId",
470
- "name": "keyId",
471
- "type": "bytes31"
494
+ "internalType": "NftId",
495
+ "name": "targetNftId",
496
+ "type": "uint96"
472
497
  },
473
498
  {
474
- "indexed": false,
475
- "internalType": "StateId",
476
- "name": "stateOld",
499
+ "internalType": "ObjectType",
500
+ "name": "expectedObjectType",
477
501
  "type": "uint8"
478
502
  },
479
503
  {
480
- "indexed": false,
481
- "internalType": "StateId",
482
- "name": "stateNew",
504
+ "internalType": "ObjectType",
505
+ "name": "actualObjectType",
483
506
  "type": "uint8"
484
- },
507
+ }
508
+ ],
509
+ "name": "ErrorStakingTargetUnexpectedObjectType",
510
+ "type": "error"
511
+ },
512
+ {
513
+ "inputs": [
485
514
  {
486
- "indexed": false,
487
- "internalType": "address",
488
- "name": "updatedBy",
489
- "type": "address"
515
+ "internalType": "ChainId",
516
+ "name": "chainId",
517
+ "type": "uint96"
490
518
  },
491
519
  {
492
- "indexed": false,
493
520
  "internalType": "address",
494
- "name": "txOrigin",
521
+ "name": "token",
495
522
  "type": "address"
496
- },
497
- {
498
- "indexed": false,
499
- "internalType": "Blocknumber",
500
- "name": "lastUpdatedIn",
501
- "type": "uint32"
502
523
  }
503
524
  ],
504
- "name": "LogStateUpdated",
505
- "type": "event"
525
+ "name": "ErrorStakingTokenNotRegistered",
526
+ "type": "error"
506
527
  },
507
528
  {
508
529
  "inputs": [],
509
- "name": "COMPONENT_LOCATION_V1",
510
- "outputs": [
511
- {
512
- "internalType": "bytes32",
513
- "name": "",
514
- "type": "bytes32"
515
- }
516
- ],
517
- "stateMutability": "view",
518
- "type": "function"
530
+ "name": "ErrorVersionableInitializeNotImplemented",
531
+ "type": "error"
519
532
  },
520
533
  {
521
534
  "inputs": [],
522
- "name": "CONTRACT_NAME",
523
- "outputs": [
524
- {
525
- "internalType": "string",
526
- "name": "",
527
- "type": "string"
528
- }
529
- ],
530
- "stateMutability": "view",
531
- "type": "function"
535
+ "name": "ErrorVersionableUpgradeNotImplemented",
536
+ "type": "error"
532
537
  },
533
538
  {
534
539
  "inputs": [],
535
- "name": "NFT_OWNABLE_STORAGE_LOCATION_V1",
536
- "outputs": [
537
- {
538
- "internalType": "bytes32",
539
- "name": "",
540
- "type": "bytes32"
541
- }
542
- ],
543
- "stateMutability": "view",
544
- "type": "function"
540
+ "name": "InvalidInitialization",
541
+ "type": "error"
545
542
  },
546
543
  {
547
544
  "inputs": [],
548
- "name": "REGISTERABLE_LOCATION_V1",
549
- "outputs": [
550
- {
551
- "internalType": "bytes32",
552
- "name": "",
553
- "type": "bytes32"
554
- }
555
- ],
556
- "stateMutability": "view",
557
- "type": "function"
545
+ "name": "NotInitializing",
546
+ "type": "error"
558
547
  },
559
548
  {
560
- "inputs": [],
561
- "name": "STAKING_LOCATION_V1",
562
- "outputs": [
549
+ "anonymous": false,
550
+ "inputs": [
563
551
  {
564
- "internalType": "bytes32",
565
- "name": "",
566
- "type": "bytes32"
552
+ "indexed": false,
553
+ "internalType": "address",
554
+ "name": "authority",
555
+ "type": "address"
567
556
  }
568
557
  ],
569
- "stateMutability": "view",
570
- "type": "function"
558
+ "name": "AuthorityUpdated",
559
+ "type": "event"
571
560
  },
572
561
  {
562
+ "anonymous": false,
573
563
  "inputs": [
574
564
  {
575
- "internalType": "uint256",
576
- "name": "spendingLimitAmount",
577
- "type": "uint256"
565
+ "indexed": false,
566
+ "internalType": "uint64",
567
+ "name": "version",
568
+ "type": "uint64"
578
569
  }
579
570
  ],
580
- "name": "approveTokenHandler",
581
- "outputs": [],
582
- "stateMutability": "nonpayable",
583
- "type": "function"
571
+ "name": "Initialized",
572
+ "type": "event"
584
573
  },
585
574
  {
575
+ "anonymous": false,
586
576
  "inputs": [
587
577
  {
578
+ "indexed": false,
579
+ "internalType": "address",
580
+ "name": "tokenHandler",
581
+ "type": "address"
582
+ },
583
+ {
584
+ "indexed": false,
588
585
  "internalType": "address",
589
586
  "name": "token",
590
587
  "type": "address"
591
588
  },
592
589
  {
593
- "internalType": "uint256",
594
- "name": "spendingLimitAmount",
595
- "type": "uint256"
590
+ "indexed": false,
591
+ "internalType": "Amount",
592
+ "name": "limit",
593
+ "type": "uint96"
594
+ },
595
+ {
596
+ "indexed": false,
597
+ "internalType": "bool",
598
+ "name": "isMaxAmount",
599
+ "type": "bool"
596
600
  }
597
601
  ],
598
- "name": "approveTokenHandler",
599
- "outputs": [],
600
- "stateMutability": "nonpayable",
601
- "type": "function"
602
+ "name": "LogComponentTokenHandlerApproved",
603
+ "type": "event"
602
604
  },
603
605
  {
604
- "inputs": [],
605
- "name": "authority",
606
- "outputs": [
606
+ "anonymous": false,
607
+ "inputs": [
607
608
  {
609
+ "indexed": false,
608
610
  "internalType": "address",
609
- "name": "",
611
+ "name": "oldWallet",
612
+ "type": "address"
613
+ },
614
+ {
615
+ "indexed": false,
616
+ "internalType": "address",
617
+ "name": "newWallet",
610
618
  "type": "address"
611
619
  }
612
620
  ],
613
- "stateMutability": "view",
614
- "type": "function"
621
+ "name": "LogComponentWalletAddressChanged",
622
+ "type": "event"
615
623
  },
616
624
  {
625
+ "anonymous": false,
617
626
  "inputs": [
618
627
  {
619
- "internalType": "NftId",
620
- "name": "targetNftId",
621
- "type": "uint96"
628
+ "indexed": false,
629
+ "internalType": "address",
630
+ "name": "from",
631
+ "type": "address"
622
632
  },
623
633
  {
624
- "internalType": "Timestamp",
625
- "name": "rewardsLastUpdatedAt",
626
- "type": "uint40"
627
- }
628
- ],
629
- "name": "calculateRewardIncrementAmount",
630
- "outputs": [
631
- {
632
- "internalType": "Amount",
633
- "name": "rewardIncrementAmount",
634
- "type": "uint96"
634
+ "indexed": false,
635
+ "internalType": "address",
636
+ "name": "to",
637
+ "type": "address"
638
+ },
639
+ {
640
+ "indexed": false,
641
+ "internalType": "uint256",
642
+ "name": "amount",
643
+ "type": "uint256"
635
644
  }
636
645
  ],
637
- "stateMutability": "view",
638
- "type": "function"
646
+ "name": "LogComponentWalletTokensTransferred",
647
+ "type": "event"
639
648
  },
640
649
  {
650
+ "anonymous": false,
641
651
  "inputs": [
642
652
  {
643
- "internalType": "ObjectType",
644
- "name": "objectType",
645
- "type": "uint8"
653
+ "indexed": false,
654
+ "internalType": "NftId",
655
+ "name": "nftId",
656
+ "type": "uint96"
646
657
  },
647
658
  {
648
- "internalType": "StateId",
649
- "name": "fromId",
650
- "type": "uint8"
659
+ "indexed": false,
660
+ "internalType": "address",
661
+ "name": "owner",
662
+ "type": "address"
663
+ }
664
+ ],
665
+ "name": "LogNftOwnableNftLinkedToAddress",
666
+ "type": "event"
667
+ },
668
+ {
669
+ "anonymous": false,
670
+ "inputs": [
671
+ {
672
+ "indexed": false,
673
+ "internalType": "NftId",
674
+ "name": "targetNftId",
675
+ "type": "uint96"
651
676
  },
652
677
  {
653
- "internalType": "StateId",
654
- "name": "toId",
655
- "type": "uint8"
678
+ "indexed": false,
679
+ "internalType": "Seconds",
680
+ "name": "newLockingPeriod",
681
+ "type": "uint40"
682
+ },
683
+ {
684
+ "indexed": false,
685
+ "internalType": "Seconds",
686
+ "name": "oldLockingPeriod",
687
+ "type": "uint40"
688
+ },
689
+ {
690
+ "indexed": false,
691
+ "internalType": "Blocknumber",
692
+ "name": "lastUpdatedIn",
693
+ "type": "uint40"
656
694
  }
657
695
  ],
658
- "name": "checkTransition",
659
- "outputs": [],
660
- "stateMutability": "view",
661
- "type": "function"
696
+ "name": "LogStakingProtocolLockingPeriodSet",
697
+ "type": "event"
662
698
  },
663
699
  {
700
+ "anonymous": false,
664
701
  "inputs": [
665
702
  {
703
+ "indexed": false,
666
704
  "internalType": "NftId",
667
- "name": "stakeNftId",
705
+ "name": "targetNftId",
668
706
  "type": "uint96"
707
+ },
708
+ {
709
+ "indexed": false,
710
+ "internalType": "UFixed",
711
+ "name": "newRewardRate",
712
+ "type": "uint160"
713
+ },
714
+ {
715
+ "indexed": false,
716
+ "internalType": "UFixed",
717
+ "name": "oldRewardRate",
718
+ "type": "uint160"
719
+ },
720
+ {
721
+ "indexed": false,
722
+ "internalType": "Blocknumber",
723
+ "name": "lastUpdatedIn",
724
+ "type": "uint40"
669
725
  }
670
726
  ],
671
- "name": "claimRewards",
672
- "outputs": [],
673
- "stateMutability": "nonpayable",
674
- "type": "function"
727
+ "name": "LogStakingProtocolRewardRateSet",
728
+ "type": "event"
675
729
  },
676
730
  {
731
+ "anonymous": false,
677
732
  "inputs": [
678
733
  {
734
+ "indexed": false,
679
735
  "internalType": "NftId",
680
736
  "name": "targetNftId",
681
737
  "type": "uint96"
682
738
  },
683
739
  {
740
+ "indexed": false,
684
741
  "internalType": "Amount",
685
742
  "name": "dipAmount",
686
743
  "type": "uint96"
744
+ },
745
+ {
746
+ "indexed": false,
747
+ "internalType": "address",
748
+ "name": "targetOwner",
749
+ "type": "address"
750
+ },
751
+ {
752
+ "indexed": false,
753
+ "internalType": "Amount",
754
+ "name": "reserveBalance",
755
+ "type": "uint96"
756
+ },
757
+ {
758
+ "indexed": false,
759
+ "internalType": "Blocknumber",
760
+ "name": "lastUpdateIn",
761
+ "type": "uint40"
687
762
  }
688
763
  ],
689
- "name": "createStake",
690
- "outputs": [
764
+ "name": "LogStakingRewardReservesRefilled",
765
+ "type": "event"
766
+ },
767
+ {
768
+ "anonymous": false,
769
+ "inputs": [
691
770
  {
771
+ "indexed": false,
692
772
  "internalType": "NftId",
693
- "name": "stakeNftId",
773
+ "name": "targetNftId",
774
+ "type": "uint96"
775
+ },
776
+ {
777
+ "indexed": false,
778
+ "internalType": "Amount",
779
+ "name": "dipAmount",
694
780
  "type": "uint96"
781
+ },
782
+ {
783
+ "indexed": false,
784
+ "internalType": "Amount",
785
+ "name": "reserveBalance",
786
+ "type": "uint96"
787
+ },
788
+ {
789
+ "indexed": false,
790
+ "internalType": "Blocknumber",
791
+ "name": "lastUpdateIn",
792
+ "type": "uint40"
695
793
  }
696
794
  ],
697
- "stateMutability": "nonpayable",
698
- "type": "function"
795
+ "name": "LogStakingRewardReservesSpent",
796
+ "type": "event"
699
797
  },
700
798
  {
799
+ "anonymous": false,
701
800
  "inputs": [
702
801
  {
802
+ "indexed": false,
703
803
  "internalType": "NftId",
704
804
  "name": "targetNftId",
705
805
  "type": "uint96"
706
806
  },
707
807
  {
808
+ "indexed": false,
809
+ "internalType": "Amount",
810
+ "name": "dipAmount",
811
+ "type": "uint96"
812
+ },
813
+ {
814
+ "indexed": false,
708
815
  "internalType": "address",
709
- "name": "token",
816
+ "name": "targetOwner",
710
817
  "type": "address"
711
818
  },
712
819
  {
820
+ "indexed": false,
713
821
  "internalType": "Amount",
714
- "name": "amount",
822
+ "name": "reserveBalance",
715
823
  "type": "uint96"
824
+ },
825
+ {
826
+ "indexed": false,
827
+ "internalType": "Blocknumber",
828
+ "name": "lastUpdateIn",
829
+ "type": "uint40"
716
830
  }
717
831
  ],
718
- "name": "decreaseTvl",
719
- "outputs": [],
720
- "stateMutability": "nonpayable",
721
- "type": "function"
832
+ "name": "LogStakingRewardReservesWithdrawn",
833
+ "type": "event"
722
834
  },
723
835
  {
836
+ "anonymous": false,
724
837
  "inputs": [
725
838
  {
726
- "internalType": "Key32",
727
- "name": "key32",
728
- "type": "bytes32"
729
- }
730
- ],
731
- "name": "exists",
732
- "outputs": [
839
+ "indexed": false,
840
+ "internalType": "NftId",
841
+ "name": "stakeNftId",
842
+ "type": "uint96"
843
+ },
733
844
  {
734
- "internalType": "bool",
735
- "name": "",
736
- "type": "bool"
845
+ "indexed": false,
846
+ "internalType": "Amount",
847
+ "name": "claimedAmount",
848
+ "type": "uint96"
849
+ },
850
+ {
851
+ "indexed": false,
852
+ "internalType": "Amount",
853
+ "name": "stakeBalance",
854
+ "type": "uint96"
855
+ },
856
+ {
857
+ "indexed": false,
858
+ "internalType": "Amount",
859
+ "name": "rewardBalance",
860
+ "type": "uint96"
861
+ },
862
+ {
863
+ "indexed": false,
864
+ "internalType": "Timestamp",
865
+ "name": "lockedUntil",
866
+ "type": "uint40"
737
867
  }
738
868
  ],
739
- "stateMutability": "view",
740
- "type": "function"
869
+ "name": "LogStakingRewardsClaimed",
870
+ "type": "event"
741
871
  },
742
872
  {
873
+ "anonymous": false,
743
874
  "inputs": [
744
875
  {
745
- "internalType": "Key32",
746
- "name": "key32",
747
- "type": "bytes32"
876
+ "indexed": false,
877
+ "internalType": "NftId",
878
+ "name": "stakeNftId",
879
+ "type": "uint96"
880
+ },
881
+ {
882
+ "indexed": false,
883
+ "internalType": "Amount",
884
+ "name": "restakedAmount",
885
+ "type": "uint96"
886
+ },
887
+ {
888
+ "indexed": false,
889
+ "internalType": "Amount",
890
+ "name": "stakeBalance",
891
+ "type": "uint96"
892
+ },
893
+ {
894
+ "indexed": false,
895
+ "internalType": "Amount",
896
+ "name": "rewardBalance",
897
+ "type": "uint96"
898
+ },
899
+ {
900
+ "indexed": false,
901
+ "internalType": "Timestamp",
902
+ "name": "lockedUntil",
903
+ "type": "uint40"
748
904
  }
749
905
  ],
750
- "name": "get",
751
- "outputs": [
906
+ "name": "LogStakingRewardsRestaked",
907
+ "type": "event"
908
+ },
909
+ {
910
+ "anonymous": false,
911
+ "inputs": [
752
912
  {
753
- "components": [
754
- {
755
- "components": [
756
- {
757
- "internalType": "ObjectType",
758
- "name": "objectType",
759
- "type": "uint8"
760
- },
761
- {
762
- "internalType": "StateId",
763
- "name": "state",
764
- "type": "uint8"
765
- },
766
- {
767
- "internalType": "address",
768
- "name": "updatedBy",
769
- "type": "address"
770
- },
771
- {
772
- "internalType": "Blocknumber",
773
- "name": "updatedIn",
774
- "type": "uint32"
775
- },
776
- {
777
- "internalType": "Blocknumber",
778
- "name": "createdIn",
779
- "type": "uint32"
780
- }
781
- ],
782
- "internalType": "struct IKeyValueStore.Metadata",
783
- "name": "metadata",
784
- "type": "tuple"
785
- },
786
- {
787
- "internalType": "bytes",
788
- "name": "data",
789
- "type": "bytes"
790
- }
791
- ],
792
- "internalType": "struct IKeyValueStore.Value",
793
- "name": "value",
794
- "type": "tuple"
913
+ "indexed": false,
914
+ "internalType": "NftId",
915
+ "name": "stakeNftId",
916
+ "type": "uint96"
917
+ },
918
+ {
919
+ "indexed": false,
920
+ "internalType": "NftId",
921
+ "name": "targetNftId",
922
+ "type": "uint96"
923
+ },
924
+ {
925
+ "indexed": false,
926
+ "internalType": "Amount",
927
+ "name": "stakeAmount",
928
+ "type": "uint96"
929
+ },
930
+ {
931
+ "indexed": false,
932
+ "internalType": "Timestamp",
933
+ "name": "lockedUntil",
934
+ "type": "uint40"
935
+ },
936
+ {
937
+ "indexed": false,
938
+ "internalType": "address",
939
+ "name": "stakeOwner",
940
+ "type": "address"
795
941
  }
796
942
  ],
797
- "stateMutability": "view",
798
- "type": "function"
943
+ "name": "LogStakingStakeCreated",
944
+ "type": "event"
799
945
  },
800
946
  {
801
- "inputs": [],
802
- "name": "getComponentInfo",
803
- "outputs": [
947
+ "anonymous": false,
948
+ "inputs": [
804
949
  {
805
- "components": [
806
- {
807
- "internalType": "string",
808
- "name": "name",
809
- "type": "string"
810
- },
811
- {
812
- "internalType": "NftId",
813
- "name": "productNftId",
814
- "type": "uint96"
815
- },
816
- {
817
- "internalType": "contract IERC20Metadata",
818
- "name": "token",
819
- "type": "address"
820
- },
821
- {
822
- "internalType": "contract TokenHandler",
823
- "name": "tokenHandler",
824
- "type": "address"
825
- },
826
- {
827
- "internalType": "address",
828
- "name": "wallet",
829
- "type": "address"
830
- },
831
- {
832
- "internalType": "bytes",
833
- "name": "data",
834
- "type": "bytes"
835
- }
836
- ],
837
- "internalType": "struct IComponents.ComponentInfo",
838
- "name": "info",
839
- "type": "tuple"
950
+ "indexed": false,
951
+ "internalType": "NftId",
952
+ "name": "stakeNftId",
953
+ "type": "uint96"
954
+ },
955
+ {
956
+ "indexed": false,
957
+ "internalType": "NftId",
958
+ "name": "targetNftId",
959
+ "type": "uint96"
960
+ },
961
+ {
962
+ "indexed": false,
963
+ "internalType": "Amount",
964
+ "name": "stakeAmount",
965
+ "type": "uint96"
966
+ },
967
+ {
968
+ "indexed": false,
969
+ "internalType": "address",
970
+ "name": "owner",
971
+ "type": "address"
972
+ },
973
+ {
974
+ "indexed": false,
975
+ "internalType": "NftId",
976
+ "name": "oldStakeNftId",
977
+ "type": "uint96"
840
978
  }
841
979
  ],
842
- "stateMutability": "view",
843
- "type": "function"
980
+ "name": "LogStakingStakeRestaked",
981
+ "type": "event"
844
982
  },
845
983
  {
984
+ "anonymous": false,
846
985
  "inputs": [
847
986
  {
848
- "internalType": "Key32",
849
- "name": "key32",
850
- "type": "bytes32"
987
+ "indexed": false,
988
+ "internalType": "NftId",
989
+ "name": "stakeNftId",
990
+ "type": "uint96"
991
+ },
992
+ {
993
+ "indexed": false,
994
+ "internalType": "Amount",
995
+ "name": "rewardIncrementAmount",
996
+ "type": "uint96"
997
+ },
998
+ {
999
+ "indexed": false,
1000
+ "internalType": "Amount",
1001
+ "name": "stakeBalance",
1002
+ "type": "uint96"
1003
+ },
1004
+ {
1005
+ "indexed": false,
1006
+ "internalType": "Amount",
1007
+ "name": "rewardBalance",
1008
+ "type": "uint96"
1009
+ },
1010
+ {
1011
+ "indexed": false,
1012
+ "internalType": "Timestamp",
1013
+ "name": "lockedUntil",
1014
+ "type": "uint40"
851
1015
  }
852
1016
  ],
853
- "name": "getData",
854
- "outputs": [
1017
+ "name": "LogStakingStakeRewardsUpdated",
1018
+ "type": "event"
1019
+ },
1020
+ {
1021
+ "anonymous": false,
1022
+ "inputs": [
855
1023
  {
856
- "internalType": "bytes",
857
- "name": "data",
858
- "type": "bytes"
1024
+ "indexed": false,
1025
+ "internalType": "NftId",
1026
+ "name": "stakeNftId",
1027
+ "type": "uint96"
1028
+ },
1029
+ {
1030
+ "indexed": false,
1031
+ "internalType": "Amount",
1032
+ "name": "stakedAmount",
1033
+ "type": "uint96"
1034
+ },
1035
+ {
1036
+ "indexed": false,
1037
+ "internalType": "Amount",
1038
+ "name": "stakeBalance",
1039
+ "type": "uint96"
1040
+ },
1041
+ {
1042
+ "indexed": false,
1043
+ "internalType": "Amount",
1044
+ "name": "rewardBalance",
1045
+ "type": "uint96"
1046
+ },
1047
+ {
1048
+ "indexed": false,
1049
+ "internalType": "Timestamp",
1050
+ "name": "lockedUntil",
1051
+ "type": "uint40"
859
1052
  }
860
1053
  ],
861
- "stateMutability": "view",
862
- "type": "function"
1054
+ "name": "LogStakingStaked",
1055
+ "type": "event"
863
1056
  },
864
1057
  {
865
- "inputs": [],
866
- "name": "getInitialComponentInfo",
867
- "outputs": [
1058
+ "anonymous": false,
1059
+ "inputs": [
868
1060
  {
869
- "components": [
870
- {
871
- "internalType": "string",
872
- "name": "name",
873
- "type": "string"
874
- },
875
- {
876
- "internalType": "NftId",
877
- "name": "productNftId",
878
- "type": "uint96"
879
- },
880
- {
881
- "internalType": "contract IERC20Metadata",
882
- "name": "token",
883
- "type": "address"
884
- },
885
- {
886
- "internalType": "contract TokenHandler",
887
- "name": "tokenHandler",
888
- "type": "address"
889
- },
890
- {
891
- "internalType": "address",
892
- "name": "wallet",
893
- "type": "address"
894
- },
895
- {
896
- "internalType": "bytes",
897
- "name": "data",
898
- "type": "bytes"
899
- }
900
- ],
901
- "internalType": "struct IComponents.ComponentInfo",
902
- "name": "info",
903
- "type": "tuple"
1061
+ "indexed": false,
1062
+ "internalType": "ChainId",
1063
+ "name": "chainId",
1064
+ "type": "uint96"
1065
+ },
1066
+ {
1067
+ "indexed": false,
1068
+ "internalType": "address",
1069
+ "name": "token",
1070
+ "type": "address"
1071
+ },
1072
+ {
1073
+ "indexed": false,
1074
+ "internalType": "UFixed",
1075
+ "name": "newStakingRate",
1076
+ "type": "uint160"
1077
+ },
1078
+ {
1079
+ "indexed": false,
1080
+ "internalType": "UFixed",
1081
+ "name": "oldStakingRate",
1082
+ "type": "uint160"
1083
+ },
1084
+ {
1085
+ "indexed": false,
1086
+ "internalType": "Blocknumber",
1087
+ "name": "lastUpdatedIn",
1088
+ "type": "uint40"
1089
+ }
1090
+ ],
1091
+ "name": "LogStakingStakingRateSet",
1092
+ "type": "event"
1093
+ },
1094
+ {
1095
+ "anonymous": false,
1096
+ "inputs": [
1097
+ {
1098
+ "indexed": false,
1099
+ "internalType": "address",
1100
+ "name": "stakingReader",
1101
+ "type": "address"
1102
+ },
1103
+ {
1104
+ "indexed": false,
1105
+ "internalType": "address",
1106
+ "name": "oldStakingReader",
1107
+ "type": "address"
1108
+ }
1109
+ ],
1110
+ "name": "LogStakingStakingReaderSet",
1111
+ "type": "event"
1112
+ },
1113
+ {
1114
+ "anonymous": false,
1115
+ "inputs": [
1116
+ {
1117
+ "indexed": false,
1118
+ "internalType": "address",
1119
+ "name": "stakingService",
1120
+ "type": "address"
1121
+ },
1122
+ {
1123
+ "indexed": false,
1124
+ "internalType": "VersionPart",
1125
+ "name": "release",
1126
+ "type": "uint8"
1127
+ },
1128
+ {
1129
+ "indexed": false,
1130
+ "internalType": "address",
1131
+ "name": "oldStakingService",
1132
+ "type": "address"
1133
+ }
1134
+ ],
1135
+ "name": "LogStakingStakingServiceSet",
1136
+ "type": "event"
1137
+ },
1138
+ {
1139
+ "anonymous": false,
1140
+ "inputs": [
1141
+ {
1142
+ "indexed": false,
1143
+ "internalType": "NftId",
1144
+ "name": "targetNftId",
1145
+ "type": "uint96"
1146
+ },
1147
+ {
1148
+ "indexed": false,
1149
+ "internalType": "ObjectType",
1150
+ "name": "objectType",
1151
+ "type": "uint8"
1152
+ },
1153
+ {
1154
+ "indexed": false,
1155
+ "internalType": "Seconds",
1156
+ "name": "lockingPeriod",
1157
+ "type": "uint40"
1158
+ },
1159
+ {
1160
+ "indexed": false,
1161
+ "internalType": "UFixed",
1162
+ "name": "rewardRate",
1163
+ "type": "uint160"
1164
+ },
1165
+ {
1166
+ "indexed": false,
1167
+ "internalType": "Amount",
1168
+ "name": "maxStakedAmount",
1169
+ "type": "uint96"
1170
+ }
1171
+ ],
1172
+ "name": "LogStakingTargetCreated",
1173
+ "type": "event"
1174
+ },
1175
+ {
1176
+ "anonymous": false,
1177
+ "inputs": [
1178
+ {
1179
+ "indexed": false,
1180
+ "internalType": "NftId",
1181
+ "name": "targetNftId",
1182
+ "type": "uint96"
1183
+ },
1184
+ {
1185
+ "indexed": false,
1186
+ "internalType": "Seconds",
1187
+ "name": "oldLockingPeriod",
1188
+ "type": "uint40"
1189
+ },
1190
+ {
1191
+ "indexed": false,
1192
+ "internalType": "Seconds",
1193
+ "name": "lockingPeriod",
1194
+ "type": "uint40"
1195
+ }
1196
+ ],
1197
+ "name": "LogStakingTargetLockingPeriodSet",
1198
+ "type": "event"
1199
+ },
1200
+ {
1201
+ "anonymous": false,
1202
+ "inputs": [
1203
+ {
1204
+ "indexed": false,
1205
+ "internalType": "NftId",
1206
+ "name": "targetNftId",
1207
+ "type": "uint96"
1208
+ },
1209
+ {
1210
+ "indexed": false,
1211
+ "internalType": "Amount",
1212
+ "name": "maxStakedAmount",
1213
+ "type": "uint96"
1214
+ }
1215
+ ],
1216
+ "name": "LogStakingTargetMaxStakedAmountSet",
1217
+ "type": "event"
1218
+ },
1219
+ {
1220
+ "anonymous": false,
1221
+ "inputs": [
1222
+ {
1223
+ "indexed": false,
1224
+ "internalType": "NftId",
1225
+ "name": "targetNftId",
1226
+ "type": "uint96"
1227
+ },
1228
+ {
1229
+ "indexed": false,
1230
+ "internalType": "UFixed",
1231
+ "name": "rewardRate",
1232
+ "type": "uint160"
1233
+ },
1234
+ {
1235
+ "indexed": false,
1236
+ "internalType": "UFixed",
1237
+ "name": "oldRewardRate",
1238
+ "type": "uint160"
1239
+ }
1240
+ ],
1241
+ "name": "LogStakingTargetRewardRateSet",
1242
+ "type": "event"
1243
+ },
1244
+ {
1245
+ "anonymous": false,
1246
+ "inputs": [
1247
+ {
1248
+ "indexed": false,
1249
+ "internalType": "NftId",
1250
+ "name": "targetNftId",
1251
+ "type": "uint96"
1252
+ },
1253
+ {
1254
+ "indexed": false,
1255
+ "internalType": "ChainId",
1256
+ "name": "chainId",
1257
+ "type": "uint96"
1258
+ },
1259
+ {
1260
+ "indexed": false,
1261
+ "internalType": "address",
1262
+ "name": "token",
1263
+ "type": "address"
1264
+ }
1265
+ ],
1266
+ "name": "LogStakingTargetTokenAdded",
1267
+ "type": "event"
1268
+ },
1269
+ {
1270
+ "anonymous": false,
1271
+ "inputs": [
1272
+ {
1273
+ "indexed": false,
1274
+ "internalType": "ChainId",
1275
+ "name": "chainId",
1276
+ "type": "uint96"
1277
+ },
1278
+ {
1279
+ "indexed": false,
1280
+ "internalType": "address",
1281
+ "name": "token",
1282
+ "type": "address"
904
1283
  }
905
1284
  ],
906
- "stateMutability": "view",
907
- "type": "function"
1285
+ "name": "LogStakingTokenAdded",
1286
+ "type": "event"
908
1287
  },
909
1288
  {
910
- "inputs": [],
911
- "name": "getInitialInfo",
912
- "outputs": [
1289
+ "anonymous": false,
1290
+ "inputs": [
913
1291
  {
914
- "components": [
915
- {
916
- "internalType": "NftId",
917
- "name": "nftId",
918
- "type": "uint96"
919
- },
920
- {
921
- "internalType": "NftId",
922
- "name": "parentNftId",
923
- "type": "uint96"
924
- },
925
- {
926
- "internalType": "ObjectType",
927
- "name": "objectType",
928
- "type": "uint8"
929
- },
930
- {
931
- "internalType": "bool",
932
- "name": "isInterceptor",
933
- "type": "bool"
934
- },
935
- {
936
- "internalType": "address",
937
- "name": "objectAddress",
938
- "type": "address"
939
- },
940
- {
941
- "internalType": "address",
942
- "name": "initialOwner",
943
- "type": "address"
944
- },
945
- {
946
- "internalType": "bytes",
947
- "name": "data",
948
- "type": "bytes"
949
- }
950
- ],
951
- "internalType": "struct IRegistry.ObjectInfo",
952
- "name": "info",
953
- "type": "tuple"
1292
+ "indexed": false,
1293
+ "internalType": "address",
1294
+ "name": "token",
1295
+ "type": "address"
1296
+ },
1297
+ {
1298
+ "indexed": false,
1299
+ "internalType": "Amount",
1300
+ "name": "approvalAmount",
1301
+ "type": "uint96"
1302
+ },
1303
+ {
1304
+ "indexed": false,
1305
+ "internalType": "Amount",
1306
+ "name": "oldApprovalAmount",
1307
+ "type": "uint96"
954
1308
  }
955
1309
  ],
956
- "stateMutability": "view",
957
- "type": "function"
1310
+ "name": "LogStakingTokenHandlerApproved",
1311
+ "type": "event"
958
1312
  },
959
1313
  {
1314
+ "anonymous": false,
960
1315
  "inputs": [
961
1316
  {
962
- "internalType": "ObjectType",
963
- "name": "objectType",
964
- "type": "uint8"
1317
+ "indexed": false,
1318
+ "internalType": "NftId",
1319
+ "name": "targetNftId",
1320
+ "type": "uint96"
1321
+ },
1322
+ {
1323
+ "indexed": false,
1324
+ "internalType": "address",
1325
+ "name": "token",
1326
+ "type": "address"
1327
+ },
1328
+ {
1329
+ "indexed": false,
1330
+ "internalType": "Amount",
1331
+ "name": "amount",
1332
+ "type": "uint96"
1333
+ },
1334
+ {
1335
+ "indexed": false,
1336
+ "internalType": "Amount",
1337
+ "name": "newBalance",
1338
+ "type": "uint96"
965
1339
  }
966
1340
  ],
967
- "name": "getInitialState",
968
- "outputs": [
1341
+ "name": "LogStakingTotalValueLockedDecreased",
1342
+ "type": "event"
1343
+ },
1344
+ {
1345
+ "anonymous": false,
1346
+ "inputs": [
969
1347
  {
970
- "internalType": "StateId",
971
- "name": "",
972
- "type": "uint8"
1348
+ "indexed": false,
1349
+ "internalType": "NftId",
1350
+ "name": "targetNftId",
1351
+ "type": "uint96"
1352
+ },
1353
+ {
1354
+ "indexed": false,
1355
+ "internalType": "address",
1356
+ "name": "token",
1357
+ "type": "address"
1358
+ },
1359
+ {
1360
+ "indexed": false,
1361
+ "internalType": "Amount",
1362
+ "name": "amount",
1363
+ "type": "uint96"
1364
+ },
1365
+ {
1366
+ "indexed": false,
1367
+ "internalType": "Amount",
1368
+ "name": "newBalance",
1369
+ "type": "uint96"
973
1370
  }
974
1371
  ],
975
- "stateMutability": "view",
976
- "type": "function"
1372
+ "name": "LogStakingTotalValueLockedIncreased",
1373
+ "type": "event"
977
1374
  },
978
1375
  {
1376
+ "anonymous": false,
979
1377
  "inputs": [
980
1378
  {
981
- "internalType": "Key32",
982
- "name": "key32",
983
- "type": "bytes32"
1379
+ "indexed": false,
1380
+ "internalType": "NftId",
1381
+ "name": "stakeNftId",
1382
+ "type": "uint96"
1383
+ },
1384
+ {
1385
+ "indexed": false,
1386
+ "internalType": "Amount",
1387
+ "name": "unstakedAmount",
1388
+ "type": "uint96"
1389
+ },
1390
+ {
1391
+ "indexed": false,
1392
+ "internalType": "Amount",
1393
+ "name": "stakeBalance",
1394
+ "type": "uint96"
1395
+ },
1396
+ {
1397
+ "indexed": false,
1398
+ "internalType": "Amount",
1399
+ "name": "rewardBalance",
1400
+ "type": "uint96"
1401
+ },
1402
+ {
1403
+ "indexed": false,
1404
+ "internalType": "Timestamp",
1405
+ "name": "lockedUntil",
1406
+ "type": "uint40"
984
1407
  }
985
1408
  ],
986
- "name": "getMetadata",
1409
+ "name": "LogStakingUnstaked",
1410
+ "type": "event"
1411
+ },
1412
+ {
1413
+ "inputs": [],
1414
+ "name": "COMPONENT_LOCATION_V1",
987
1415
  "outputs": [
988
1416
  {
989
- "components": [
990
- {
991
- "internalType": "ObjectType",
992
- "name": "objectType",
993
- "type": "uint8"
994
- },
995
- {
996
- "internalType": "StateId",
997
- "name": "state",
998
- "type": "uint8"
999
- },
1000
- {
1001
- "internalType": "address",
1002
- "name": "updatedBy",
1003
- "type": "address"
1004
- },
1005
- {
1006
- "internalType": "Blocknumber",
1007
- "name": "updatedIn",
1008
- "type": "uint32"
1009
- },
1010
- {
1011
- "internalType": "Blocknumber",
1012
- "name": "createdIn",
1013
- "type": "uint32"
1014
- }
1015
- ],
1016
- "internalType": "struct IKeyValueStore.Metadata",
1017
- "name": "metadata",
1018
- "type": "tuple"
1417
+ "internalType": "bytes32",
1418
+ "name": "",
1419
+ "type": "bytes32"
1019
1420
  }
1020
1421
  ],
1021
1422
  "stateMutability": "view",
@@ -1023,11 +1424,11 @@
1023
1424
  },
1024
1425
  {
1025
1426
  "inputs": [],
1026
- "name": "getName",
1427
+ "name": "CONTRACT_NAME",
1027
1428
  "outputs": [
1028
1429
  {
1029
1430
  "internalType": "string",
1030
- "name": "name",
1431
+ "name": "",
1031
1432
  "type": "string"
1032
1433
  }
1033
1434
  ],
@@ -1036,12 +1437,12 @@
1036
1437
  },
1037
1438
  {
1038
1439
  "inputs": [],
1039
- "name": "getNftId",
1440
+ "name": "NFT_OWNABLE_STORAGE_LOCATION_V1",
1040
1441
  "outputs": [
1041
1442
  {
1042
- "internalType": "NftId",
1443
+ "internalType": "bytes32",
1043
1444
  "name": "",
1044
- "type": "uint96"
1445
+ "type": "bytes32"
1045
1446
  }
1046
1447
  ],
1047
1448
  "stateMutability": "view",
@@ -1049,12 +1450,12 @@
1049
1450
  },
1050
1451
  {
1051
1452
  "inputs": [],
1052
- "name": "getOwner",
1453
+ "name": "REGISTERABLE_LOCATION_V1",
1053
1454
  "outputs": [
1054
1455
  {
1055
- "internalType": "address",
1456
+ "internalType": "bytes32",
1056
1457
  "name": "",
1057
- "type": "address"
1458
+ "type": "bytes32"
1058
1459
  }
1059
1460
  ],
1060
1461
  "stateMutability": "view",
@@ -1062,12 +1463,12 @@
1062
1463
  },
1063
1464
  {
1064
1465
  "inputs": [],
1065
- "name": "getRegistry",
1466
+ "name": "STAKING_LOCATION_V1",
1066
1467
  "outputs": [
1067
1468
  {
1068
- "internalType": "contract IRegistry",
1469
+ "internalType": "bytes32",
1069
1470
  "name": "",
1070
- "type": "address"
1471
+ "type": "bytes32"
1071
1472
  }
1072
1473
  ],
1073
1474
  "stateMutability": "view",
@@ -1079,49 +1480,84 @@
1079
1480
  "internalType": "NftId",
1080
1481
  "name": "targetNftId",
1081
1482
  "type": "uint96"
1483
+ },
1484
+ {
1485
+ "internalType": "address",
1486
+ "name": "token",
1487
+ "type": "address"
1082
1488
  }
1083
1489
  ],
1084
- "name": "getRewardRate",
1085
- "outputs": [
1490
+ "name": "addTargetToken",
1491
+ "outputs": [],
1492
+ "stateMutability": "nonpayable",
1493
+ "type": "function"
1494
+ },
1495
+ {
1496
+ "inputs": [
1086
1497
  {
1087
- "internalType": "UFixed",
1088
- "name": "rewardRate",
1089
- "type": "uint256"
1498
+ "internalType": "ChainId",
1499
+ "name": "chainId",
1500
+ "type": "uint96"
1501
+ },
1502
+ {
1503
+ "internalType": "address",
1504
+ "name": "token",
1505
+ "type": "address"
1090
1506
  }
1091
1507
  ],
1092
- "stateMutability": "view",
1508
+ "name": "addToken",
1509
+ "outputs": [],
1510
+ "stateMutability": "nonpayable",
1093
1511
  "type": "function"
1094
1512
  },
1095
1513
  {
1096
1514
  "inputs": [
1097
1515
  {
1098
- "internalType": "NftId",
1099
- "name": "targetNftId",
1516
+ "internalType": "contract IERC20Metadata",
1517
+ "name": "token",
1518
+ "type": "address"
1519
+ },
1520
+ {
1521
+ "internalType": "Amount",
1522
+ "name": "amount",
1100
1523
  "type": "uint96"
1101
1524
  }
1102
1525
  ],
1103
- "name": "getRewardReserves",
1526
+ "name": "approveTokenHandler",
1527
+ "outputs": [],
1528
+ "stateMutability": "nonpayable",
1529
+ "type": "function"
1530
+ },
1531
+ {
1532
+ "inputs": [],
1533
+ "name": "authority",
1104
1534
  "outputs": [
1105
1535
  {
1106
- "internalType": "Amount",
1107
- "name": "rewardReserveAmount",
1108
- "type": "uint96"
1536
+ "internalType": "address",
1537
+ "name": "",
1538
+ "type": "address"
1109
1539
  }
1110
1540
  ],
1111
1541
  "stateMutability": "view",
1112
1542
  "type": "function"
1113
1543
  },
1114
1544
  {
1115
- "inputs": [],
1116
- "name": "getStakeInfo",
1117
- "outputs": [
1545
+ "inputs": [
1118
1546
  {
1119
1547
  "internalType": "NftId",
1120
1548
  "name": "stakeNftId",
1121
1549
  "type": "uint96"
1122
1550
  }
1123
1551
  ],
1124
- "stateMutability": "view",
1552
+ "name": "claimRewards",
1553
+ "outputs": [
1554
+ {
1555
+ "internalType": "Amount",
1556
+ "name": "claimedAmount",
1557
+ "type": "uint96"
1558
+ }
1559
+ ],
1560
+ "stateMutability": "nonpayable",
1125
1561
  "type": "function"
1126
1562
  },
1127
1563
  {
@@ -1130,57 +1566,83 @@
1130
1566
  "internalType": "NftId",
1131
1567
  "name": "targetNftId",
1132
1568
  "type": "uint96"
1569
+ },
1570
+ {
1571
+ "internalType": "Amount",
1572
+ "name": "stakeAmount",
1573
+ "type": "uint96"
1574
+ },
1575
+ {
1576
+ "internalType": "address",
1577
+ "name": "stakeOwner",
1578
+ "type": "address"
1133
1579
  }
1134
1580
  ],
1135
- "name": "getStakedAmount",
1581
+ "name": "createStake",
1136
1582
  "outputs": [
1137
1583
  {
1138
- "internalType": "Amount",
1139
- "name": "stakeAmount",
1584
+ "internalType": "NftId",
1585
+ "name": "stakeNftId",
1140
1586
  "type": "uint96"
1141
1587
  }
1142
1588
  ],
1143
- "stateMutability": "view",
1589
+ "stateMutability": "nonpayable",
1144
1590
  "type": "function"
1145
1591
  },
1146
1592
  {
1147
1593
  "inputs": [
1148
1594
  {
1149
- "internalType": "uint256",
1150
- "name": "chainId",
1151
- "type": "uint256"
1595
+ "internalType": "NftId",
1596
+ "name": "targetNftId",
1597
+ "type": "uint96"
1152
1598
  },
1153
1599
  {
1154
1600
  "internalType": "address",
1155
1601
  "name": "token",
1156
1602
  "type": "address"
1603
+ },
1604
+ {
1605
+ "internalType": "Amount",
1606
+ "name": "amount",
1607
+ "type": "uint96"
1157
1608
  }
1158
1609
  ],
1159
- "name": "getStakingRate",
1610
+ "name": "decreaseTotalValueLocked",
1160
1611
  "outputs": [
1161
1612
  {
1162
- "internalType": "UFixed",
1163
- "name": "stakingRate",
1164
- "type": "uint256"
1613
+ "internalType": "Amount",
1614
+ "name": "newBalance",
1615
+ "type": "uint96"
1165
1616
  }
1166
1617
  ],
1167
- "stateMutability": "view",
1618
+ "stateMutability": "nonpayable",
1168
1619
  "type": "function"
1169
1620
  },
1170
1621
  {
1171
- "inputs": [
1172
- {
1173
- "internalType": "Key32",
1174
- "name": "key32",
1175
- "type": "bytes32"
1176
- }
1177
- ],
1178
- "name": "getState",
1622
+ "inputs": [],
1623
+ "name": "getComponentInfo",
1179
1624
  "outputs": [
1180
1625
  {
1181
- "internalType": "StateId",
1182
- "name": "state",
1183
- "type": "uint8"
1626
+ "components": [
1627
+ {
1628
+ "internalType": "string",
1629
+ "name": "name",
1630
+ "type": "string"
1631
+ },
1632
+ {
1633
+ "internalType": "contract TokenHandler",
1634
+ "name": "tokenHandler",
1635
+ "type": "address"
1636
+ },
1637
+ {
1638
+ "internalType": "bytes",
1639
+ "name": "data",
1640
+ "type": "bytes"
1641
+ }
1642
+ ],
1643
+ "internalType": "struct IComponents.ComponentInfo",
1644
+ "name": "info",
1645
+ "type": "tuple"
1184
1646
  }
1185
1647
  ],
1186
1648
  "stateMutability": "view",
@@ -1188,12 +1650,29 @@
1188
1650
  },
1189
1651
  {
1190
1652
  "inputs": [],
1191
- "name": "getTargetInfo",
1653
+ "name": "getInitialComponentInfo",
1192
1654
  "outputs": [
1193
1655
  {
1194
- "internalType": "NftId",
1195
- "name": "stakeNftId",
1196
- "type": "uint96"
1656
+ "components": [
1657
+ {
1658
+ "internalType": "string",
1659
+ "name": "name",
1660
+ "type": "string"
1661
+ },
1662
+ {
1663
+ "internalType": "contract TokenHandler",
1664
+ "name": "tokenHandler",
1665
+ "type": "address"
1666
+ },
1667
+ {
1668
+ "internalType": "bytes",
1669
+ "name": "data",
1670
+ "type": "bytes"
1671
+ }
1672
+ ],
1673
+ "internalType": "struct IComponents.ComponentInfo",
1674
+ "name": "info",
1675
+ "type": "tuple"
1197
1676
  }
1198
1677
  ],
1199
1678
  "stateMutability": "view",
@@ -1201,12 +1680,49 @@
1201
1680
  },
1202
1681
  {
1203
1682
  "inputs": [],
1204
- "name": "getToken",
1683
+ "name": "getInitialInfo",
1205
1684
  "outputs": [
1206
1685
  {
1207
- "internalType": "contract IERC20Metadata",
1208
- "name": "token",
1209
- "type": "address"
1686
+ "components": [
1687
+ {
1688
+ "internalType": "NftId",
1689
+ "name": "nftId",
1690
+ "type": "uint96"
1691
+ },
1692
+ {
1693
+ "internalType": "NftId",
1694
+ "name": "parentNftId",
1695
+ "type": "uint96"
1696
+ },
1697
+ {
1698
+ "internalType": "ObjectType",
1699
+ "name": "objectType",
1700
+ "type": "uint8"
1701
+ },
1702
+ {
1703
+ "internalType": "bool",
1704
+ "name": "isInterceptor",
1705
+ "type": "bool"
1706
+ },
1707
+ {
1708
+ "internalType": "address",
1709
+ "name": "objectAddress",
1710
+ "type": "address"
1711
+ },
1712
+ {
1713
+ "internalType": "address",
1714
+ "name": "initialOwner",
1715
+ "type": "address"
1716
+ },
1717
+ {
1718
+ "internalType": "bytes",
1719
+ "name": "data",
1720
+ "type": "bytes"
1721
+ }
1722
+ ],
1723
+ "internalType": "struct IRegistry.ObjectInfo",
1724
+ "name": "info",
1725
+ "type": "tuple"
1210
1726
  }
1211
1727
  ],
1212
1728
  "stateMutability": "view",
@@ -1214,35 +1730,24 @@
1214
1730
  },
1215
1731
  {
1216
1732
  "inputs": [],
1217
- "name": "getTokenHandler",
1733
+ "name": "getName",
1218
1734
  "outputs": [
1219
1735
  {
1220
- "internalType": "contract TokenHandler",
1221
- "name": "tokenHandler",
1222
- "type": "address"
1736
+ "internalType": "string",
1737
+ "name": "name",
1738
+ "type": "string"
1223
1739
  }
1224
1740
  ],
1225
1741
  "stateMutability": "view",
1226
1742
  "type": "function"
1227
1743
  },
1228
1744
  {
1229
- "inputs": [
1230
- {
1231
- "internalType": "NftId",
1232
- "name": "targetNftId",
1233
- "type": "uint96"
1234
- },
1235
- {
1236
- "internalType": "address",
1237
- "name": "token",
1238
- "type": "address"
1239
- }
1240
- ],
1241
- "name": "getTvlAmount",
1745
+ "inputs": [],
1746
+ "name": "getNftId",
1242
1747
  "outputs": [
1243
1748
  {
1244
- "internalType": "Amount",
1245
- "name": "tvlAmount",
1749
+ "internalType": "NftId",
1750
+ "name": "",
1246
1751
  "type": "uint96"
1247
1752
  }
1248
1753
  ],
@@ -1251,24 +1756,24 @@
1251
1756
  },
1252
1757
  {
1253
1758
  "inputs": [],
1254
- "name": "getVersion",
1759
+ "name": "getOwner",
1255
1760
  "outputs": [
1256
1761
  {
1257
- "internalType": "Version",
1762
+ "internalType": "address",
1258
1763
  "name": "",
1259
- "type": "uint24"
1764
+ "type": "address"
1260
1765
  }
1261
1766
  ],
1262
- "stateMutability": "pure",
1767
+ "stateMutability": "view",
1263
1768
  "type": "function"
1264
1769
  },
1265
1770
  {
1266
1771
  "inputs": [],
1267
- "name": "getWallet",
1772
+ "name": "getRegistry",
1268
1773
  "outputs": [
1269
1774
  {
1270
- "internalType": "address",
1271
- "name": "walletAddress",
1775
+ "internalType": "contract IRegistry",
1776
+ "name": "",
1272
1777
  "type": "address"
1273
1778
  }
1274
1779
  ],
@@ -1276,184 +1781,141 @@
1276
1781
  "type": "function"
1277
1782
  },
1278
1783
  {
1279
- "inputs": [
1280
- {
1281
- "internalType": "ObjectType",
1282
- "name": "objectType",
1283
- "type": "uint8"
1284
- }
1285
- ],
1286
- "name": "hasLifecycle",
1784
+ "inputs": [],
1785
+ "name": "getRelease",
1287
1786
  "outputs": [
1288
1787
  {
1289
- "internalType": "bool",
1788
+ "internalType": "VersionPart",
1290
1789
  "name": "",
1291
- "type": "bool"
1790
+ "type": "uint8"
1292
1791
  }
1293
1792
  ],
1294
- "stateMutability": "view",
1793
+ "stateMutability": "pure",
1295
1794
  "type": "function"
1296
1795
  },
1297
1796
  {
1298
- "inputs": [
1299
- {
1300
- "internalType": "NftId",
1301
- "name": "targetNftId",
1302
- "type": "uint96"
1303
- },
1797
+ "inputs": [],
1798
+ "name": "getStakingReader",
1799
+ "outputs": [
1304
1800
  {
1305
- "internalType": "address",
1306
- "name": "token",
1801
+ "internalType": "contract StakingReader",
1802
+ "name": "reader",
1307
1803
  "type": "address"
1308
- },
1309
- {
1310
- "internalType": "Amount",
1311
- "name": "amount",
1312
- "type": "uint96"
1313
1804
  }
1314
1805
  ],
1315
- "name": "increaseTvl",
1316
- "outputs": [],
1317
- "stateMutability": "nonpayable",
1806
+ "stateMutability": "view",
1318
1807
  "type": "function"
1319
1808
  },
1320
1809
  {
1321
- "inputs": [
1322
- {
1323
- "internalType": "address",
1324
- "name": "authority",
1325
- "type": "address"
1326
- },
1327
- {
1328
- "internalType": "address",
1329
- "name": "registry",
1330
- "type": "address"
1331
- },
1332
- {
1333
- "internalType": "NftId",
1334
- "name": "parentNftId",
1335
- "type": "uint96"
1336
- },
1337
- {
1338
- "internalType": "string",
1339
- "name": "name",
1340
- "type": "string"
1341
- },
1342
- {
1343
- "internalType": "address",
1344
- "name": "token",
1345
- "type": "address"
1346
- },
1347
- {
1348
- "internalType": "ObjectType",
1349
- "name": "componentType",
1350
- "type": "uint8"
1351
- },
1352
- {
1353
- "internalType": "bool",
1354
- "name": "isInterceptor",
1355
- "type": "bool"
1356
- },
1357
- {
1358
- "internalType": "address",
1359
- "name": "initialOwner",
1360
- "type": "address"
1361
- },
1362
- {
1363
- "internalType": "bytes",
1364
- "name": "registryData",
1365
- "type": "bytes"
1366
- },
1810
+ "inputs": [],
1811
+ "name": "getStakingStore",
1812
+ "outputs": [
1367
1813
  {
1368
- "internalType": "bytes",
1369
- "name": "componentData",
1370
- "type": "bytes"
1814
+ "internalType": "contract StakingStore",
1815
+ "name": "stakingStore",
1816
+ "type": "address"
1371
1817
  }
1372
1818
  ],
1373
- "name": "initializeComponent",
1374
- "outputs": [],
1375
- "stateMutability": "nonpayable",
1819
+ "stateMutability": "view",
1376
1820
  "type": "function"
1377
1821
  },
1378
1822
  {
1379
1823
  "inputs": [],
1380
- "name": "initializeERC165",
1381
- "outputs": [],
1382
- "stateMutability": "nonpayable",
1824
+ "name": "getToken",
1825
+ "outputs": [
1826
+ {
1827
+ "internalType": "contract IERC20Metadata",
1828
+ "name": "token",
1829
+ "type": "address"
1830
+ }
1831
+ ],
1832
+ "stateMutability": "view",
1383
1833
  "type": "function"
1384
1834
  },
1385
1835
  {
1386
1836
  "inputs": [],
1387
- "name": "initializeLifecycle",
1388
- "outputs": [],
1389
- "stateMutability": "nonpayable",
1837
+ "name": "getTokenHandler",
1838
+ "outputs": [
1839
+ {
1840
+ "internalType": "contract TokenHandler",
1841
+ "name": "tokenHandler",
1842
+ "type": "address"
1843
+ }
1844
+ ],
1845
+ "stateMutability": "view",
1390
1846
  "type": "function"
1391
1847
  },
1392
1848
  {
1393
- "inputs": [
1849
+ "inputs": [],
1850
+ "name": "getTokenRegistryAddress",
1851
+ "outputs": [
1394
1852
  {
1395
1853
  "internalType": "address",
1396
- "name": "initialOwner",
1854
+ "name": "tokenRegistry",
1397
1855
  "type": "address"
1398
- },
1856
+ }
1857
+ ],
1858
+ "stateMutability": "view",
1859
+ "type": "function"
1860
+ },
1861
+ {
1862
+ "inputs": [],
1863
+ "name": "getVersion",
1864
+ "outputs": [
1399
1865
  {
1400
- "internalType": "address",
1401
- "name": "registryAddress",
1402
- "type": "address"
1866
+ "internalType": "Version",
1867
+ "name": "",
1868
+ "type": "uint24"
1403
1869
  }
1404
1870
  ],
1405
- "name": "initializeNftOwnable",
1406
- "outputs": [],
1407
- "stateMutability": "nonpayable",
1871
+ "stateMutability": "pure",
1408
1872
  "type": "function"
1409
1873
  },
1410
1874
  {
1411
- "inputs": [
1875
+ "inputs": [],
1876
+ "name": "getWallet",
1877
+ "outputs": [
1412
1878
  {
1413
1879
  "internalType": "address",
1414
- "name": "registryAddress",
1880
+ "name": "walletAddress",
1415
1881
  "type": "address"
1416
- },
1882
+ }
1883
+ ],
1884
+ "stateMutability": "view",
1885
+ "type": "function"
1886
+ },
1887
+ {
1888
+ "inputs": [
1417
1889
  {
1418
1890
  "internalType": "NftId",
1419
- "name": "parentNftId",
1891
+ "name": "targetNftId",
1420
1892
  "type": "uint96"
1421
1893
  },
1422
- {
1423
- "internalType": "ObjectType",
1424
- "name": "objectType",
1425
- "type": "uint8"
1426
- },
1427
- {
1428
- "internalType": "bool",
1429
- "name": "isInterceptor",
1430
- "type": "bool"
1431
- },
1432
1894
  {
1433
1895
  "internalType": "address",
1434
- "name": "initialOwner",
1896
+ "name": "token",
1435
1897
  "type": "address"
1436
1898
  },
1437
1899
  {
1438
- "internalType": "bytes",
1439
- "name": "registryData",
1440
- "type": "bytes"
1900
+ "internalType": "Amount",
1901
+ "name": "amount",
1902
+ "type": "uint96"
1903
+ }
1904
+ ],
1905
+ "name": "increaseTotalValueLocked",
1906
+ "outputs": [
1907
+ {
1908
+ "internalType": "Amount",
1909
+ "name": "newBalance",
1910
+ "type": "uint96"
1441
1911
  }
1442
1912
  ],
1443
- "name": "initializeRegisterable",
1444
- "outputs": [],
1445
1913
  "stateMutability": "nonpayable",
1446
1914
  "type": "function"
1447
1915
  },
1448
1916
  {
1449
- "inputs": [
1450
- {
1451
- "internalType": "address",
1452
- "name": "registryAddress",
1453
- "type": "address"
1454
- }
1455
- ],
1456
- "name": "initializeRegistryLinked",
1917
+ "inputs": [],
1918
+ "name": "initializeTokenHandler",
1457
1919
  "outputs": [],
1458
1920
  "stateMutability": "nonpayable",
1459
1921
  "type": "function"
@@ -1478,12 +1940,12 @@
1478
1940
  },
1479
1941
  {
1480
1942
  "inputs": [],
1481
- "name": "isConsumingScheduledOp",
1943
+ "name": "isActive",
1482
1944
  "outputs": [
1483
1945
  {
1484
- "internalType": "bytes4",
1485
- "name": "",
1486
- "type": "bytes4"
1946
+ "internalType": "bool",
1947
+ "name": "active",
1948
+ "type": "bool"
1487
1949
  }
1488
1950
  ],
1489
1951
  "stateMutability": "view",
@@ -1491,12 +1953,12 @@
1491
1953
  },
1492
1954
  {
1493
1955
  "inputs": [],
1494
- "name": "isNftInterceptor",
1956
+ "name": "isConsumingScheduledOp",
1495
1957
  "outputs": [
1496
1958
  {
1497
- "internalType": "bool",
1498
- "name": "isInterceptor",
1499
- "type": "bool"
1959
+ "internalType": "bytes4",
1960
+ "name": "",
1961
+ "type": "bytes4"
1500
1962
  }
1501
1963
  ],
1502
1964
  "stateMutability": "view",
@@ -1504,11 +1966,11 @@
1504
1966
  },
1505
1967
  {
1506
1968
  "inputs": [],
1507
- "name": "isRegistered",
1969
+ "name": "isNftInterceptor",
1508
1970
  "outputs": [
1509
1971
  {
1510
1972
  "internalType": "bool",
1511
- "name": "",
1973
+ "name": "isInterceptor",
1512
1974
  "type": "bool"
1513
1975
  }
1514
1976
  ],
@@ -1516,24 +1978,8 @@
1516
1978
  "type": "function"
1517
1979
  },
1518
1980
  {
1519
- "inputs": [
1520
- {
1521
- "internalType": "ObjectType",
1522
- "name": "objectType",
1523
- "type": "uint8"
1524
- },
1525
- {
1526
- "internalType": "StateId",
1527
- "name": "fromId",
1528
- "type": "uint8"
1529
- },
1530
- {
1531
- "internalType": "StateId",
1532
- "name": "toId",
1533
- "type": "uint8"
1534
- }
1535
- ],
1536
- "name": "isValidTransition",
1981
+ "inputs": [],
1982
+ "name": "isRegistered",
1537
1983
  "outputs": [
1538
1984
  {
1539
1985
  "internalType": "bool",
@@ -1547,25 +1993,13 @@
1547
1993
  {
1548
1994
  "inputs": [],
1549
1995
  "name": "linkToRegisteredNftId",
1550
- "outputs": [],
1551
- "stateMutability": "nonpayable",
1552
- "type": "function"
1553
- },
1554
- {
1555
- "inputs": [
1556
- {
1557
- "internalType": "address",
1558
- "name": "to",
1559
- "type": "address"
1560
- },
1996
+ "outputs": [
1561
1997
  {
1562
- "internalType": "uint256",
1563
- "name": "tokenId",
1564
- "type": "uint256"
1998
+ "internalType": "NftId",
1999
+ "name": "nftId",
2000
+ "type": "uint96"
1565
2001
  }
1566
2002
  ],
1567
- "name": "nftMint",
1568
- "outputs": [],
1569
2003
  "stateMutability": "nonpayable",
1570
2004
  "type": "function"
1571
2005
  },
@@ -1585,6 +2019,11 @@
1585
2019
  "internalType": "uint256",
1586
2020
  "name": "tokenId",
1587
2021
  "type": "uint256"
2022
+ },
2023
+ {
2024
+ "internalType": "address",
2025
+ "name": "operator",
2026
+ "type": "address"
1588
2027
  }
1589
2028
  ],
1590
2029
  "name": "nftTransferFrom",
@@ -1606,20 +2045,42 @@
1606
2045
  }
1607
2046
  ],
1608
2047
  "name": "refillRewardReserves",
1609
- "outputs": [],
2048
+ "outputs": [
2049
+ {
2050
+ "internalType": "Amount",
2051
+ "name": "newBalance",
2052
+ "type": "uint96"
2053
+ }
2054
+ ],
1610
2055
  "stateMutability": "nonpayable",
1611
2056
  "type": "function"
1612
2057
  },
1613
2058
  {
1614
2059
  "inputs": [
1615
2060
  {
1616
- "internalType": "bytes4",
1617
- "name": "interfaceId",
1618
- "type": "bytes4"
2061
+ "internalType": "NftId",
2062
+ "name": "targetNftId",
2063
+ "type": "uint96"
2064
+ },
2065
+ {
2066
+ "internalType": "Amount",
2067
+ "name": "dipAmount",
2068
+ "type": "uint96"
2069
+ },
2070
+ {
2071
+ "internalType": "address",
2072
+ "name": "transferFrom",
2073
+ "type": "address"
2074
+ }
2075
+ ],
2076
+ "name": "refillRewardReservesByService",
2077
+ "outputs": [
2078
+ {
2079
+ "internalType": "Amount",
2080
+ "name": "newBalance",
2081
+ "type": "uint96"
1619
2082
  }
1620
2083
  ],
1621
- "name": "registerInterface",
1622
- "outputs": [],
1623
2084
  "stateMutability": "nonpayable",
1624
2085
  "type": "function"
1625
2086
  },
@@ -1633,24 +2094,49 @@
1633
2094
  {
1634
2095
  "components": [
1635
2096
  {
1636
- "internalType": "NftId",
1637
- "name": "targetNftid",
2097
+ "internalType": "Amount",
2098
+ "name": "stakedAmount",
2099
+ "type": "uint96"
2100
+ },
2101
+ {
2102
+ "internalType": "Amount",
2103
+ "name": "rewardAmount",
2104
+ "type": "uint96"
2105
+ },
2106
+ {
2107
+ "internalType": "Blocknumber",
2108
+ "name": "lastUpdateIn",
2109
+ "type": "uint40"
2110
+ },
2111
+ {
2112
+ "internalType": "Amount",
2113
+ "name": "reserveAmount",
1638
2114
  "type": "uint96"
1639
2115
  },
2116
+ {
2117
+ "internalType": "Amount",
2118
+ "name": "maxStakedAmount",
2119
+ "type": "uint96"
2120
+ },
2121
+ {
2122
+ "internalType": "Seconds",
2123
+ "name": "lockingPeriod",
2124
+ "type": "uint40"
2125
+ },
1640
2126
  {
1641
2127
  "internalType": "ObjectType",
1642
2128
  "name": "objectType",
1643
2129
  "type": "uint8"
1644
2130
  },
1645
2131
  {
1646
- "internalType": "uint256",
1647
- "name": "chainId",
1648
- "type": "uint256"
2132
+ "internalType": "UFixed",
2133
+ "name": "rewardRate",
2134
+ "type": "uint160"
1649
2135
  },
1650
2136
  {
1651
- "internalType": "address",
1652
- "name": "token",
1653
- "type": "address"
2137
+ "internalType": "ChainId",
2138
+ "name": "chainId",
2139
+ "type": "uint96"
1654
2140
  }
1655
2141
  ],
1656
2142
  "internalType": "struct IStaking.TargetInfo",
@@ -1658,7 +2144,77 @@
1658
2144
  "type": "tuple"
1659
2145
  }
1660
2146
  ],
1661
- "name": "registerRemoteTarget",
2147
+ "name": "registerRemoteTarget",
2148
+ "outputs": [],
2149
+ "stateMutability": "nonpayable",
2150
+ "type": "function"
2151
+ },
2152
+ {
2153
+ "inputs": [
2154
+ {
2155
+ "internalType": "NftId",
2156
+ "name": "targetNftId",
2157
+ "type": "uint96"
2158
+ },
2159
+ {
2160
+ "internalType": "ObjectType",
2161
+ "name": "expectedObjectType",
2162
+ "type": "uint8"
2163
+ },
2164
+ {
2165
+ "internalType": "Seconds",
2166
+ "name": "initialLockingPeriod",
2167
+ "type": "uint40"
2168
+ },
2169
+ {
2170
+ "internalType": "UFixed",
2171
+ "name": "initialRewardRate",
2172
+ "type": "uint160"
2173
+ }
2174
+ ],
2175
+ "name": "registerTarget",
2176
+ "outputs": [],
2177
+ "stateMutability": "nonpayable",
2178
+ "type": "function"
2179
+ },
2180
+ {
2181
+ "inputs": [
2182
+ {
2183
+ "internalType": "NftId",
2184
+ "name": "stakeNftId",
2185
+ "type": "uint96"
2186
+ },
2187
+ {
2188
+ "internalType": "NftId",
2189
+ "name": "newTargetNftId",
2190
+ "type": "uint96"
2191
+ }
2192
+ ],
2193
+ "name": "restake",
2194
+ "outputs": [
2195
+ {
2196
+ "internalType": "NftId",
2197
+ "name": "newStakeNftId",
2198
+ "type": "uint96"
2199
+ },
2200
+ {
2201
+ "internalType": "Amount",
2202
+ "name": "newStakedAmount",
2203
+ "type": "uint96"
2204
+ }
2205
+ ],
2206
+ "stateMutability": "nonpayable",
2207
+ "type": "function"
2208
+ },
2209
+ {
2210
+ "inputs": [
2211
+ {
2212
+ "internalType": "address",
2213
+ "name": "newAuthority",
2214
+ "type": "address"
2215
+ }
2216
+ ],
2217
+ "name": "setAuthority",
1662
2218
  "outputs": [],
1663
2219
  "stateMutability": "nonpayable",
1664
2220
  "type": "function"
@@ -1669,9 +2225,14 @@
1669
2225
  "internalType": "NftId",
1670
2226
  "name": "targetNftId",
1671
2227
  "type": "uint96"
2228
+ },
2229
+ {
2230
+ "internalType": "Seconds",
2231
+ "name": "lockingPeriod",
2232
+ "type": "uint40"
1672
2233
  }
1673
2234
  ],
1674
- "name": "registerTarget",
2235
+ "name": "setLockingPeriod",
1675
2236
  "outputs": [],
1676
2237
  "stateMutability": "nonpayable",
1677
2238
  "type": "function"
@@ -1680,11 +2241,16 @@
1680
2241
  "inputs": [
1681
2242
  {
1682
2243
  "internalType": "NftId",
1683
- "name": "stakeNftId",
2244
+ "name": "targetNftId",
2245
+ "type": "uint96"
2246
+ },
2247
+ {
2248
+ "internalType": "Amount",
2249
+ "name": "maxStakedAmount",
1684
2250
  "type": "uint96"
1685
2251
  }
1686
2252
  ],
1687
- "name": "restakeRewards",
2253
+ "name": "setMaxStakedAmount",
1688
2254
  "outputs": [],
1689
2255
  "stateMutability": "nonpayable",
1690
2256
  "type": "function"
@@ -1692,17 +2258,12 @@
1692
2258
  {
1693
2259
  "inputs": [
1694
2260
  {
1695
- "internalType": "NftId",
1696
- "name": "stakeNftId",
1697
- "type": "uint96"
1698
- },
1699
- {
1700
- "internalType": "NftId",
1701
- "name": "newTarget",
1702
- "type": "uint96"
2261
+ "internalType": "Seconds",
2262
+ "name": "newLockingPeriod",
2263
+ "type": "uint40"
1703
2264
  }
1704
2265
  ],
1705
- "name": "restakeToNewTarget",
2266
+ "name": "setProtocolLockingPeriod",
1706
2267
  "outputs": [],
1707
2268
  "stateMutability": "nonpayable",
1708
2269
  "type": "function"
@@ -1710,12 +2271,12 @@
1710
2271
  {
1711
2272
  "inputs": [
1712
2273
  {
1713
- "internalType": "address",
1714
- "name": "newAuthority",
1715
- "type": "address"
2274
+ "internalType": "UFixed",
2275
+ "name": "newRewardRate",
2276
+ "type": "uint160"
1716
2277
  }
1717
2278
  ],
1718
- "name": "setAuthority",
2279
+ "name": "setProtocolRewardRate",
1719
2280
  "outputs": [],
1720
2281
  "stateMutability": "nonpayable",
1721
2282
  "type": "function"
@@ -1730,7 +2291,7 @@
1730
2291
  {
1731
2292
  "internalType": "UFixed",
1732
2293
  "name": "rewardRate",
1733
- "type": "uint256"
2294
+ "type": "uint160"
1734
2295
  }
1735
2296
  ],
1736
2297
  "name": "setRewardRate",
@@ -1741,9 +2302,9 @@
1741
2302
  {
1742
2303
  "inputs": [
1743
2304
  {
1744
- "internalType": "uint256",
2305
+ "internalType": "ChainId",
1745
2306
  "name": "chainId",
1746
- "type": "uint256"
2307
+ "type": "uint96"
1747
2308
  },
1748
2309
  {
1749
2310
  "internalType": "address",
@@ -1753,7 +2314,7 @@
1753
2314
  {
1754
2315
  "internalType": "UFixed",
1755
2316
  "name": "stakingRate",
1756
- "type": "uint256"
2317
+ "type": "uint160"
1757
2318
  }
1758
2319
  ],
1759
2320
  "name": "setStakingRate",
@@ -1764,12 +2325,25 @@
1764
2325
  {
1765
2326
  "inputs": [
1766
2327
  {
1767
- "internalType": "address",
1768
- "name": "newWallet",
2328
+ "internalType": "contract StakingReader",
2329
+ "name": "stakingReader",
1769
2330
  "type": "address"
1770
2331
  }
1771
2332
  ],
1772
- "name": "setWallet",
2333
+ "name": "setStakingReader",
2334
+ "outputs": [],
2335
+ "stateMutability": "nonpayable",
2336
+ "type": "function"
2337
+ },
2338
+ {
2339
+ "inputs": [
2340
+ {
2341
+ "internalType": "VersionPart",
2342
+ "name": "release",
2343
+ "type": "uint8"
2344
+ }
2345
+ ],
2346
+ "name": "setStakingService",
1773
2347
  "outputs": [],
1774
2348
  "stateMutability": "nonpayable",
1775
2349
  "type": "function"
@@ -1783,12 +2357,18 @@
1783
2357
  },
1784
2358
  {
1785
2359
  "internalType": "Amount",
1786
- "name": "dipAmount",
2360
+ "name": "stakeAmount",
1787
2361
  "type": "uint96"
1788
2362
  }
1789
2363
  ],
1790
2364
  "name": "stake",
1791
- "outputs": [],
2365
+ "outputs": [
2366
+ {
2367
+ "internalType": "Amount",
2368
+ "name": "newStakeBalance",
2369
+ "type": "uint96"
2370
+ }
2371
+ ],
1792
2372
  "stateMutability": "nonpayable",
1793
2373
  "type": "function"
1794
2374
  },
@@ -1814,41 +2394,41 @@
1814
2394
  {
1815
2395
  "inputs": [
1816
2396
  {
1817
- "internalType": "ObjectType",
1818
- "name": "objectType",
1819
- "type": "uint8"
1820
- },
1821
- {
1822
- "internalType": "KeyId",
1823
- "name": "id",
1824
- "type": "bytes31"
2397
+ "internalType": "NftId",
2398
+ "name": "stakeNftId",
2399
+ "type": "uint96"
1825
2400
  }
1826
2401
  ],
1827
- "name": "toKey32",
2402
+ "name": "unstake",
1828
2403
  "outputs": [
1829
2404
  {
1830
- "internalType": "Key32",
1831
- "name": "",
1832
- "type": "bytes32"
2405
+ "internalType": "Amount",
2406
+ "name": "unstakedAmount",
2407
+ "type": "uint96"
1833
2408
  }
1834
2409
  ],
1835
- "stateMutability": "pure",
2410
+ "stateMutability": "nonpayable",
1836
2411
  "type": "function"
1837
2412
  },
1838
2413
  {
1839
2414
  "inputs": [
1840
2415
  {
1841
2416
  "internalType": "NftId",
1842
- "name": "stakeNftId",
2417
+ "name": "targetNftId",
1843
2418
  "type": "uint96"
1844
2419
  },
2420
+ {
2421
+ "internalType": "address",
2422
+ "name": "token",
2423
+ "type": "address"
2424
+ },
1845
2425
  {
1846
2426
  "internalType": "Amount",
1847
- "name": "dipAmount",
2427
+ "name": "amount",
1848
2428
  "type": "uint96"
1849
2429
  }
1850
2430
  ],
1851
- "name": "unstake",
2431
+ "name": "updateRemoteTvl",
1852
2432
  "outputs": [],
1853
2433
  "stateMutability": "nonpayable",
1854
2434
  "type": "function"
@@ -1861,31 +2441,14 @@
1861
2441
  "type": "uint96"
1862
2442
  }
1863
2443
  ],
1864
- "name": "unstake",
1865
- "outputs": [],
1866
- "stateMutability": "nonpayable",
1867
- "type": "function"
1868
- },
1869
- {
1870
- "inputs": [
1871
- {
1872
- "internalType": "NftId",
1873
- "name": "targetNftId",
1874
- "type": "uint96"
1875
- },
1876
- {
1877
- "internalType": "address",
1878
- "name": "token",
1879
- "type": "address"
1880
- },
2444
+ "name": "updateRewards",
2445
+ "outputs": [
1881
2446
  {
1882
2447
  "internalType": "Amount",
1883
- "name": "amount",
2448
+ "name": "newRewardAmount",
1884
2449
  "type": "uint96"
1885
2450
  }
1886
2451
  ],
1887
- "name": "updateRemoteTvl",
1888
- "outputs": [],
1889
2452
  "stateMutability": "nonpayable",
1890
2453
  "type": "function"
1891
2454
  },
@@ -1916,71 +2479,174 @@
1916
2479
  }
1917
2480
  ],
1918
2481
  "name": "withdrawRewardReserves",
1919
- "outputs": [],
2482
+ "outputs": [
2483
+ {
2484
+ "internalType": "Amount",
2485
+ "name": "newBalance",
2486
+ "type": "uint96"
2487
+ }
2488
+ ],
2489
+ "stateMutability": "nonpayable",
2490
+ "type": "function"
2491
+ },
2492
+ {
2493
+ "inputs": [
2494
+ {
2495
+ "internalType": "NftId",
2496
+ "name": "targetNftId",
2497
+ "type": "uint96"
2498
+ },
2499
+ {
2500
+ "internalType": "Amount",
2501
+ "name": "dipAmount",
2502
+ "type": "uint96"
2503
+ },
2504
+ {
2505
+ "internalType": "address",
2506
+ "name": "transferTo",
2507
+ "type": "address"
2508
+ }
2509
+ ],
2510
+ "name": "withdrawRewardReservesByService",
2511
+ "outputs": [
2512
+ {
2513
+ "internalType": "Amount",
2514
+ "name": "newBalance",
2515
+ "type": "uint96"
2516
+ }
2517
+ ],
1920
2518
  "stateMutability": "nonpayable",
1921
2519
  "type": "function"
1922
2520
  }
1923
2521
  ],
1924
- "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b61474780620000e66000396000f3fe60806040523480156200001157600080fd5b5060043610620004755760003560e01c80636c0a81911162000259578063bb1e0e591162000149578063e9e96c7011620000c7578063f48016ce1162000092578063f48016ce1462000c01578063f57f4aaa1462000893578063f67fef6d1462000646578063f7c34ee01462000c18578063f8bf0d9f1462000c2f57600080fd5b8063e9e96c701462000b6e578063ea15869f1462000b85578063ecd6bf3c1462000b9c578063f43a39191462000bb357600080fd5b8063dea4ccf21162000114578063dea4ccf214620007f9578063deaa59df1462000b29578063e7f7fb861462000b40578063e8ce883d1462000646578063e904ec661462000b5757600080fd5b8063bb1e0e591462000adb578063bf1db3f91462000af2578063bf7e214f1462000b09578063de0eb85f146200064657600080fd5b80638eaa6ac011620001d75780639a72636411620001a25780639a72636414620009dc578063a5961b4c14620009ed578063a89896751462000aa3578063ada9652e1462000aba578063b423086c1462000ad157600080fd5b80638eaa6ac014620009625780638fb36037146200098857806390edbd3514620009ac578063958697a014620009c557600080fd5b806374a4030f116200022457806374a4030f14620008935780637a9e5e4b146200089b5780637b21556114620008b2578063806b5ece146200090a578063893d20e8146200095857600080fd5b80636c0a819114620007f95780636c1e9dff146200064657806370ed62c71462000882578063719f761a14620007f957600080fd5b80632a80f673116200037557806351d3417e11620002f35780635e0dacca11620002be5780635e0dacca14620007f9578063614d08f8146200080d578063644c45e01462000834578063675393bf146200085457806369aff9af146200086b57600080fd5b806351d3417e146200076357806354f6127f14620007c65780635741e5e914620007dd5780635ab1bd5314620007e757600080fd5b806338a699a4116200034057806338a699a414620006ef57806343d752d31462000706578063468bce06146200071057806349bb9e4b146200071a5780634dd84ff7146200073157600080fd5b80632a80f6731462000672578063329d6e741462000683578063346b1db4146200069a57806336fc697e14620006e557600080fd5b8063160e4b1f116200040357806321df0da711620003ce57806321df0da7146200063257806322366844146200063c57806326889b09146200064657806327415b7e14620005c457806327bb7a33146200065b57600080fd5b8063160e4b1f14620005c457806317d7de7c14620005da5780631eff4b2214620005f3578063214cdb80146200061b57600080fd5b80630d8e6e2c11620004445780630d8e6e2c146200055d5780630fec111c146200057c578063132996041462000595578063138461e014620005b857600080fd5b806301ffc9a7146200047a578063062c9cdf14620004bf57806309648a9d14620004f65780630d3581811462000534575b600080fd5b620004aa6200048b3660046200336b565b6001600160e01b03191660009081526003602052604090205460ff1690565b60405190151581526020015b60405180910390f35b620004e77fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f0081565b604051908152602001620004b6565b620005216200050736600462003397565b600090815260026020526040902054610100900460ff1690565b60405160ff9091168152602001620004b6565b6200052162000545366004620033d3565b60ff9081166000908152602081905260409020541690565b6200056762000c46565b60405162ffffff9091168152602001620004b6565b6200058662000cd3565b604051620004b6919062003447565b6200059f62000ea4565b6040516001600160a01b039091168152602001620004b6565b620005c262000eb9565b005b620005c2620005d53660046200351b565b505050565b620005e4620010ce565b604051620004b691906200356d565b620004e77f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b620005c26200062c3660046200336b565b620010e0565b6200059f6200110f565b620004aa62001124565b620005c26200065736600462003582565b5050565b620005c26200066c366004620036d6565b62001226565b620005c2620006573660046200377c565b620005c262000694366004620037ab565b620012d1565b620004e7620006ab366004620037e3565b6001600160601b031660009081527fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f01602052604090205490565b620005c262001429565b620004aa6200070036600462003397565b62001471565b6200059f62001505565b620005c26200151a565b620005c26200072b36600462003803565b62001558565b6200074a6200074236600462003858565b600092915050565b6040516001600160601b039091168152602001620004b6565b6200074a6200077436600462003894565b6001600160601b0391821660009081527fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f04602090815260408083206001600160a01b0394909416835292905220541690565b620005e4620007d736600462003397565b62001660565b620004aa6200170d565b6004546001600160a01b03166200059f565b620005c26200080a366004620037e3565b50565b620005e4604051806040016040528060078152602001665374616b696e6760c81b81525081565b60008051602062004692833981519152546001600160601b03166200074a565b620005c262000865366004620038c7565b620017cc565b620005c26200087c36600462003397565b620018e2565b6200074a6200074236600462003582565b60006200074a565b620005c2620008ac366004620038c7565b62001936565b620004e7620008c3366004620038e7565b60009182527fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00602090815260408084206001600160a01b0393909316845291905290205490565b6200074a6200091b366004620037e3565b6001600160601b0390811660009081527fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f0360205260409020541690565b6200059f620019d8565b620009796200097336600462003397565b62001b17565b604051620004b6919062003959565b6200099262001c60565b6040516001600160e01b03199091168152602001620004b6565b620009b662001c9b565b604051620004b6919062003989565b620005c2620009d63660046200351b565b62001cc9565b620005c2620009d636600462003a10565b62000a94620009fe36600462003397565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915250600090815260026020908152604091829020825160a081018452905460ff8082168352610100820416928201929092526001600160a01b03620100008304169281019290925263ffffffff600160b01b820481166060840152600160d01b90910416608082015290565b604051620004b6919062003a4b565b620005c262000ab436600462003a5b565b62001d08565b620004e76000805160206200469283398151915281565b620009b662001dff565b620005c262000aec36600462003aa2565b62001e13565b620004aa62000b03366004620033d3565b62001eb7565b600080516020620046d2833981519152546001600160a01b03166200059f565b620005c262000b3a366004620038c7565b62001f05565b620005c262000b5136600462003ac3565b620021a3565b620005c262000b6836600462003aa2565b62002247565b620004aa62000b7f36600462003a5b565b62002398565b620004e7600080516020620046b283398151915281565b620005c262000bad36600462003af8565b620023cc565b6200074a62000bc4366004620037e3565b6001600160601b0390811660009081527fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f0260205260409020541690565b620004e762000c1236600462003ba9565b6200240b565b620005c262000c2936600462003be2565b62002491565b620005c262000c4036600462003c03565b62002510565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af415801562000ca8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cce919062003d19565b905090565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801562000d88573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000dae919062003d4d565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a00162000df8620019d8565b6001600160a01b0316815260200182600101805462000e179062003d6d565b80601f016020809104026020016040519081016040528092919081815260200182805462000e459062003d6d565b801562000e965780601f1062000e6a5761010080835404028352916020019162000e96565b820191906000526020600020905b81548152906001019060200180831162000e7857829003601f168201915b505050505081525091505090565b600062000eb062001c9b565b60800151905090565b60006000805160206200469283398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801562000f2a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f50919062003db6565b1562000f825780546040516301ab8b6760e21b81526001600160601b0390911660048201526024015b60405180910390fd5b3062000f966004546001600160a01b031690565b60405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa15801562000fdf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001005919062003db6565b6200102f5760405163b9304b0d60e01b81526001600160a01b038216600482015260240162000f79565b6004546001600160a01b0316604051636939560f60e11b81526001600160a01b038381166004830152919091169063d272ac1e90602401602060405180830381865afa15801562001084573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010aa919062003d4d565b82546bffffffffffffffffffffffff19166001600160601b03919091161790915550565b6060620010da62001c9b565b51919050565b620010ea62002630565b6001600160e01b0319166000908152600360205260409020805460ff19166001179055565b60006200111b62001c9b565b60400151905090565b6000620011396004546001600160a01b031690565b604051636939560f60e11b81523060048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa15801562001180573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011a6919062003d4d565b6040516330b8415f60e01b81526001600160601b03909116600482015273__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801562001200573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cce919062003db6565b6200123062002630565b6200123c828762002491565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa301620012c7838262003e28565b5050505050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c620012f562000c46565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af415801562001336573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200135c919062003ef4565b600080516020620046f28339815191528054600160401b900460ff168062001391575080546001600160401b03808416911610155b15620013b05760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155620013dc8362002669565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a1505050565b6200143362002630565b6301ffc9a760e01b60005260036020527f28b0ef64f7e82d3b26f3fd404bd0151552f792965f39c29ae82c0a78df67af9c805460ff19166001179055565b60008181526002602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf906024015b602060405180830381865af4158015620014d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014ff919062003db6565b92915050565b60006200151162001c9b565b60600151905090565b6200152462002630565b6200152e62002673565b6200153862002797565b620015426200288b565b6200154c620029c3565b6200155662002af0565b565b600080516020620046f28339815191528054600160401b810460ff1615906001600160401b03166000811580156200158d5750825b90506000826001600160401b03166001148015620015aa5750303b155b905081158015620015b9575080155b15620015d85760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156200160357845460ff60401b1916600160401b1785555b6200160f878762002bac565b83156200165757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b6000818152600260205260409020600101805460609190620016829062003d6d565b80601f0160208091040260200160405190810160405280929190818152602001828054620016b09062003d6d565b8015620017015780601f10620016d55761010080835404028352916020019162001701565b820191906000526020600020905b815481529060010190602001808311620016e357829003601f168201915b50505050509050919050565b60006200171962001124565b156200179c576004546001600160a01b03166040516308b09a5f60e41b81523060048201526001600160a01b039190911690638b09a5f090602401600060405180830381865afa15801562001772573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001511919081019062003f85565b507fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f0354600160a01b900460ff1690565b620017d662002630565b806001600160a01b03163b6000036200180e5760405163fdeac91f60e01b81526001600160a01b038216600482015260240162000f79565b600480546001600160a01b0319166001600160a01b03831690811782556040516301ffc9a760e01b815263256dc24d60e21b92810192909252906301ffc9a790602401602060405180830381865afa9250505080156200188d575060408051601f3d908101601f191682019092526200188a9181019062003db6565b60015b620018b75760405163fdeac91f60e01b81526001600160a01b038216600482015260240162000f79565b80620006575760405163fdeac91f60e01b81526001600160a01b038316600482015260240162000f79565b620018ec620019d8565b6001600160a01b0316336001600160a01b031614620019215760405163086391f760e31b815233600482015260240162000f79565b6200080a6200192f6200110f565b8262002247565b3362001958600080516020620046d2833981519152546001600160a01b031690565b6001600160a01b0316816001600160a01b031614620019955760405162d1953b60e31b81526001600160a01b038216600482015260240162000f79565b816001600160a01b03163b600003620019cd576040516361798f2f60e11b81526001600160a01b038316600482015260240162000f79565b620006578262002d94565b6000806000805160206200469283398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801562001a4a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a70919062003db6565b1562001b01576004546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa15801562001ad5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001afb91906200406b565b91505090565b54600160601b90046001600160a01b0316919050565b6040805160e081018252600091810182815260608083018490526080830184905260a0830184905260c083019390935281526020810191909152600082815260026020908152604091829020825160e081018452815460ff80821695830195865261010082041660608301526001600160a01b0362010000820416608083015263ffffffff600160b01b8204811660a0840152600160d01b9091041660c0820152928352600181018054919284019162001bd19062003d6d565b80601f016020809104026020016040519081016040528092919081815260200182805462001bff9062003d6d565b801562001c505780601f1062001c245761010080835404028352916020019162001c50565b820191906000526020600020905b81548152906001019060200180831162001c3257829003601f168201915b5050505050815250509050919050565b600080516020620046d2833981519152805460009190600160a01b900460ff1662001c8d57600062001afb565b638fb3603760e01b91505090565b62001ca562003303565b62001caf62001124565b1562001cbf5762000cce62002df0565b62000cce62001dff565b62001cd3620019d8565b6001600160a01b0316336001600160a01b031614620005d55760405163086391f760e31b815233600482015260240162000f79565b60ff8381166000908152602081905260409081902054905163037c8cb160e51b81529116600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af415801562001d6e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d94919062003db6565b1562001d9f57505050565b60ff808416600090815260016020908152604080832086851684528252808320858516845290915290205416620005d557604051636bb20ea760e01b815260ff808516600483015280841660248301528216604482015260640162000f79565b62001e0962003303565b62000cce62002df0565b6004546001600160a01b03166001600160a01b031663120726c36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001e5d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e8391906200406b565b6001600160a01b0316336001600160a01b031614620006575760405162f0630960e01b815233600482015260240162000f79565b60ff81811660009081526020819052604080822054905163b2466acf60e01b8152921660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401620014bb565b62001f0f620019d8565b6001600160a01b0316336001600160a01b03161462001f445760405163086391f760e31b815233600482015260240162000f79565b600062001f5062000ea4565b9050600062001f5e6200110f565b6040516370a0823160e01b81526001600160a01b0384811660048301529192506000918316906370a0823190602401602060405180830381865afa15801562001fab573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fd191906200408b565b90508015620020aa576001600160a01b0383163014620020aa57604051636eb1769f60e11b81526001600160a01b0384811660048301523060248301526000919084169063dd62ed3e90604401602060405180830381865afa1580156200203c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200206291906200408b565b905081811015620020a8576040516372c963b360e11b81526001600160a01b03808616600483015286166024820152604481018290526064810183905260840162000f79565b505b620020b58462002f71565b80156200219d57306001600160a01b03841603620021435760405163095ea7b360e01b8152306004820152602481018290526001600160a01b0383169063095ea7b3906044016020604051808303816000875af11580156200211b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002141919062003db6565b505b62002151828486846200305e565b604080516001600160a01b038086168252861660208201529081018290527f8f925ed35e36754081a3353f30c5686c405280f94d1cfe322ee5707833d898679060600160405180910390a15b50505050565b6004546001600160a01b03166001600160a01b031663120726c36040518163ffffffff1660e01b8152600401602060405180830381865afa158015620021ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200221391906200406b565b6001600160a01b0316336001600160a01b031614620005d55760405162f0630960e01b815233600482015260240162000f79565b62002251620019d8565b6001600160a01b0316336001600160a01b031614620022865760405163086391f760e31b815233600482015260240162000f79565b306200229162000ea4565b6001600160a01b031614620022b95760405163b6d7537f60e01b815260040160405180910390fd5b816001600160a01b031663095ea7b3620022d262001505565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af115801562002320573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002346919062003db6565b507f2384a42fdaabc7c18091b047d32d817d2ead07cae899963c6bcf9ab42aff85d46200237262001505565b604080516001600160a01b03909216825260208201849052015b60405180910390a15050565b60ff8084166000908152600160209081526040808320868516845282528083208585168452909152902054165b9392505050565b620023d6620019d8565b6001600160a01b0316336001600160a01b031614620006575760405163086391f760e31b815233600482015260240162000f79565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$4b9aaffa8d044614668dad578b824b8eee$__9063f48016ce90604401602060405180830381865af41580156200246b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023c591906200408b565b6200249b62002630565b620024a681620017cc565b620024b062001429565b6001600160a01b038216620024d85760405163f17ef42d60e01b815260040160405180910390fd5b506000805160206200469283398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b6200251a62002630565b6200252a89898787878762001226565b620025358a620030ba565b6001600160a01b0386166200255d576040516327eab2e360e11b815260040160405180910390fd5b8651600003620025805760405163591eebf360e11b815260040160405180910390fd5b600080516020620046b2833981519152806200259d898262003e28565b506001810180546001600160a01b03199081166001600160a01b038a161790915560028201805490911690556003810180546001600160a81b0319163060ff60a01b191617600160a01b8715150217905560048101620025fe838262003e28565b5062002611634a531f3360e01b620010e0565b6200262363100951f160e31b620010e0565b5050505050505050505050565b600080516020620046f283398151915254600160401b900460ff166200155657604051631afcd79f60e31b815260040160405180910390fd5b6200047562002630565b7f5bd290414b404036f9d63146803dd83b59a8e1905062a5bfed8b0154d20a390d8054606460ff19918216179091557f1578fb1f3721b6c33cae7dfcd025f5660361b090d8a17dcf8a744763f22d32ff8054821660019081179091557f47ebb928e225b2cdc8d8e0079f8da9b87d2bc15cc37a8c27842a5c925baa8b1e80548316821790557ffe60dc71e2c842ec11550e74a003d6f707c74c3b19b04c1b0700bc0fd9efd9508054909216811790915560dc600090815260208290527f81c2bf9f7c6e8ac9bd8bcd9d323e94b867d2f5054aff8759d884773c680ec1ec90606e5b60ff1660ff16815260200190815260200160002060006200277360c890565b60ff1681526020810191909152604001600020805460ff1916911515919091179055565b7f9db7038e59677010ca8f72fa448bad1b4f3c53346b666689163ccac31db467728054606460ff1991821681179092557f1a3062e9a24818c8281fcfb58ec4f3083a2f9a1314ac63f80d8d646661fdc50980548216600190811790915560008381527fc884cae9155e1829c27543e26ecbb72f79fe3a85ba4df2c4a97ad5806356754d6020527f2916767ac794614810c43d6c0837244e8b2c8d3f3c02376a214f465d6841db5680549093168217909255918291905b60ff1660ff16815260200190815260200160002060006200286c606e90565b60ff1660ff16815260200190815260200160002060006200277360d290565b7fa57aae0b1e878b4cf2d1f237d2c6d245fa2af12f527cffc45e0a81d7b3c46abe8054600a60ff19918216179091557f10d8f68d28031156bb5a2007a6e7fc1ff769776115bd307e1d3f2901ec220eef8054821660019081179091557f71e0ce7e96b0b9ecf53c20706f5891c8e9bb320060393406400136d7ab1db61e80548316821790557f3aa5c1a82b8afaca3213d4302f465dcc339ab680e61c71830f7d9c441c63328380548316821790557ff9240d619fae1c941eaa4888cff36b0b9489ef130bdb7c814fd3a0e301d8ad1f80548316821790557f59d2febd485ffaba948645e520694e9996f0c229c4a10430d07956b599b172538054909216811790915560d3600090815260208290527f7415b658af57d740454b01d91722f71a360db8fdd5ec2a068a92c37e2bc3b1d690606462002754565b7f41d63e1348ead7043feb8677b52ff813a7a3d573fdf99c917846a69e8e7b7e60805460ff199081166032179091557f378c5573ee3453f5c9f5c7aa83b807835ecb097b5151d641746b59340336b67d8054821660019081179091557f7f4fc20c9070f9c8378783c3022311e08af436d0fea4b913fe0bbde88023d12680548316821790557ff6e14778b29b20f68b5cc5186c105c44b748bec78fd85e0b2ec52bc8586d6a6b80548316821790557fb9ec96904d3ea9e7b01f30f8b9a841d70b77145e37a183ebdbba2b0733adc0ec8054603c93168317905560009182527f77835ececcc7e965708390fdc28b7c7141b063a8a849f3954f1d294d07730184602052907f5e9b6496c2ea16de03007cb0b49643b7231addd52c0cee66d8556b1dd66622a19060dc62002773565b7fc5f2c791ab4e0b1a0b6c600884b07e98575b00ebd7c3166c4272a53bebf714038054606460ff1991821681179092557f66482ac56acdda5113badf732cc46c284136d9d6378a671ac129cd298ff5f96780548216600190811790915560009283527f47d871bf8fdbdfc3d809d1454103f6ff238aad0f5cefde0353363b9e415ef6a76020527ff2de5750d5c9f412b7907640f68a5258fe3f903dfd0cd25c2ea235b23cc926958054909216811790915590819060c86200284d565b600080516020620046f28339815191528054600160401b810460ff1615906001600160401b031660008115801562002be15750825b90506000826001600160401b0316600114801562002bfe5750303b155b90508115801562002c0d575080155b1562002c2c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831562002c5757845460ff60401b1916600160401b1785555b6000806000808980602001905181019062002c739190620040a5565b935093509350935062002d308484856001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002cc0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ce6919062003d4d565b6040805180820190915260078152665374616b696e6760c81b602082015286602d600088604051806020016040528060008152506040518060200160405280600081525062002510565b62002d3a620030cf565b62002d4c6339dee94960e01b620010e0565b5050505083156200165757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020016200164e565b600080516020620046d283398151915280546001600160a01b0319166001600160a01b03831690811782556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad906020016200238c565b62002dfa62003303565b6000600080516020620046b283398151915290506040518060c0016040528082600001805462002e2a9062003d6d565b80601f016020809104026020016040519081016040528092919081815260200182805462002e589062003d6d565b801562002ea95780601f1062002e7d5761010080835404028352916020019162002ea9565b820191906000526020600020905b81548152906001019060200180831162002e8b57829003601f168201915b5050505050815260200173__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801562002efd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f23919062003d4d565b6001600160601b0316815260018301546001600160a01b039081166020830152600284015481166040830152600384015416606082015260048301805460809092019162000e179062003d6d565b7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f0354600080516020620046b2833981519152906001600160a01b0390811690831662002fd05760405163185a690f60e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b031603620030035760405163ade4578160e01b815260040160405180910390fd5b6003820180546001600160a01b0319166001600160a01b0385811691821790925560408051928416835260208301919091527f610ad1290dceadae2c5ce18bae2eb495be595083a257fac7414e50686f7c265091016200141c565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526200219d9085906200316d565b620030c462002630565b6200080a81620031d7565b7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f0154604051600080516020620046b2833981519152916001600160a01b0316906200311a906200335d565b6001600160a01b039091168152602001604051809103906000f08015801562003147573d6000803e3d6000fd5b5060029190910180546001600160a01b0319166001600160a01b03909216919091179055565b6000620031846001600160a01b03841683620031ec565b90508051600014158015620031ac575080806020019051810190620031aa919062003db6565b155b15620005d557604051635274afe760e01b81526001600160a01b038416600482015260240162000f79565b620031e162002630565b6200080a8162002d94565b6060620023c58383600084600080856001600160a01b031684866040516200321591906200410d565b60006040518083038185875af1925050503d806000811462003254576040519150601f19603f3d011682016040523d82523d6000602084013e62003259565b606091505b50915091506200326b86838362003275565b9695505050505050565b6060826200328e576200328882620032d9565b620023c5565b8151158015620032a657506001600160a01b0384163b155b15620032d157604051639996b31560e01b81526001600160a01b038516600482015260240162000f79565b5080620023c5565b805115620032ea5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6040518060c001604052806060815260200160006001600160601b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001606081525090565b610566806200412c83390190565b6000602082840312156200337e57600080fd5b81356001600160e01b031981168114620023c557600080fd5b600060208284031215620033aa57600080fd5b5035919050565b60ff811681146200080a57600080fd5b8035620033ce81620033b1565b919050565b600060208284031215620033e657600080fd5b8135620023c581620033b1565b60005b8381101562003410578181015183820152602001620033f6565b50506000910152565b6000815180845262003433816020860160208601620033f3565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a0830151620034b160c08401826001600160a01b03169052565b5060c083015160e080840152620034cd61010084018262003419565b949350505050565b6001600160601b03811681146200080a57600080fd5b8035620033ce81620034d5565b6001600160a01b03811681146200080a57600080fd5b8035620033ce81620034f8565b6000806000606084860312156200353157600080fd5b83356200353e81620034d5565b925060208401356200355081620034f8565b915060408401356200356281620034d5565b809150509250925092565b602081526000620023c5602083018462003419565b600080604083850312156200359657600080fd5b8235620035a381620034d5565b91506020830135620035b581620034d5565b809150509250929050565b80151581146200080a57600080fd5b8035620033ce81620035c0565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715620036175762003617620035dc565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620036485762003648620035dc565b604052919050565b60006001600160401b038211156200366c576200366c620035dc565b50601f01601f191660200190565b600082601f8301126200368c57600080fd5b8135620036a36200369d8262003650565b6200361d565b818152846020838601011115620036b957600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c08789031215620036f057600080fd5b8635620036fd81620034f8565b955060208701356200370f81620034d5565b945060408701356200372181620033b1565b935060608701356200373381620035c0565b925060808701356200374581620034f8565b915060a08701356001600160401b038111156200376157600080fd5b6200376f89828a016200367a565b9150509295509295509295565b600080604083850312156200379057600080fd5b82356200379d81620034d5565b946020939093013593505050565b600060208284031215620037be57600080fd5b81356001600160401b03811115620037d557600080fd5b620034cd848285016200367a565b600060208284031215620037f657600080fd5b8135620023c581620034d5565b600080604083850312156200381757600080fd5b82356200382481620034f8565b915060208301356001600160401b038111156200384057600080fd5b6200384e858286016200367a565b9150509250929050565b600080604083850312156200386c57600080fd5b82356200387981620034d5565b9150602083013564ffffffffff81168114620035b557600080fd5b60008060408385031215620038a857600080fd5b8235620038b581620034d5565b91506020830135620035b581620034f8565b600060208284031215620038da57600080fd5b8135620023c581620034f8565b60008060408385031215620038fb57600080fd5b823591506020830135620035b581620034f8565b60ff815116825260ff602082015116602083015260018060a01b036040820151166040830152606081015163ffffffff808216606085015280608084015116608085015250505050565b602081526200396d6020820183516200390f565b6000602083015160c080840152620034cd60e084018262003419565b602081526000825160c06020840152620039a760e084018262003419565b90506001600160601b036020850151166040840152604084015160018060a01b0380821660608601528060608701511660808601528060808701511660a0860152505060a0840151601f198483030160c085015262003a07828262003419565b95945050505050565b60008060006060848603121562003a2657600080fd5b83359250602084013562003a3a81620034f8565b929592945050506040919091013590565b60a08101620014ff82846200390f565b60008060006060848603121562003a7157600080fd5b833562003a7e81620033b1565b9250602084013562003a9081620033b1565b915060408401356200356281620033b1565b6000806040838503121562003ab657600080fd5b82356200379d81620034f8565b60008060006060848603121562003ad957600080fd5b833562003ae681620034f8565b9250602084013562003a3a81620034f8565b60008082840360a081121562003b0d57600080fd5b833562003b1a81620034d5565b92506080601f198201121562003b2f57600080fd5b50604051608081018181106001600160401b038211171562003b555762003b55620035dc565b604052602084013562003b6881620034d5565b8152604084013562003b7a81620033b1565b602082015260608401356040820152608084013562003b9981620034f8565b6060820152919491935090915050565b6000806040838503121562003bbd57600080fd5b823562003bca81620033b1565b9150602083013560ff1981168114620035b557600080fd5b6000806040838503121562003bf657600080fd5b8235620038b581620034f8565b6000806000806000806000806000806101408b8d03121562003c2457600080fd5b62003c2f8b6200350e565b995062003c3f60208c016200350e565b985062003c4f60408c01620034eb565b975060608b01356001600160401b038082111562003c6c57600080fd5b62003c7a8e838f016200367a565b985062003c8a60808e016200350e565b975062003c9a60a08e01620033c1565b965062003caa60c08e01620035cf565b955062003cba60e08e016200350e565b94506101008d013591508082111562003cd257600080fd5b62003ce08e838f016200367a565b93506101208d013591508082111562003cf857600080fd5b5062003d078d828e016200367a565b9150509295989b9194979a5092959850565b60006020828403121562003d2c57600080fd5b815162ffffff81168114620023c557600080fd5b8051620033ce81620034d5565b60006020828403121562003d6057600080fd5b8151620023c581620034d5565b600181811c9082168062003d8257607f821691505b60208210810362003da357634e487b7160e01b600052602260045260246000fd5b50919050565b8051620033ce81620035c0565b60006020828403121562003dc957600080fd5b8151620023c581620035c0565b601f821115620005d557600081815260208120601f850160051c8101602086101562003dff5750805b601f850160051c820191505b8181101562003e205782815560010162003e0b565b505050505050565b81516001600160401b0381111562003e445762003e44620035dc565b62003e5c8162003e55845462003d6d565b8462003dd6565b602080601f83116001811462003e94576000841562003e7b5750858301515b600019600386901b1c1916600185901b17855562003e20565b600085815260208120601f198616915b8281101562003ec55788860151825594840194600190910190840162003ea4565b508582101562003ee45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562003f0757600080fd5b81516001600160401b0381168114620023c557600080fd5b8051620033ce81620033b1565b8051620033ce81620034f8565b600082601f83011262003f4b57600080fd5b815162003f5c6200369d8262003650565b81815284602083860101111562003f7257600080fd5b620034cd826020830160208701620033f3565b60006020828403121562003f9857600080fd5b81516001600160401b038082111562003fb057600080fd5b9083019060e0828603121562003fc557600080fd5b62003fcf620035f2565b62003fda8362003d40565b815262003fea6020840162003d40565b602082015262003ffd6040840162003f1f565b6040820152620040106060840162003da9565b6060820152620040236080840162003f2c565b60808201526200403660a0840162003f2c565b60a082015260c0830151828111156200404e57600080fd5b6200405c8782860162003f39565b60c08301525095945050505050565b6000602082840312156200407e57600080fd5b8151620023c581620034f8565b6000602082840312156200409e57600080fd5b5051919050565b60008060008060808587031215620040bc57600080fd5b8451620040c981620034f8565b6020860151909450620040dc81620034f8565b6040860151909350620040ef81620034f8565b60608601519092506200410281620034f8565b939692955090935050565b6000825162004121818460208701620033f3565b919091019291505056fe608060405234801561001057600080fd5b5060405161056638038061056683398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6104d3806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806321df0da7146100465780638d7271c314610065578063c661667d1461007a575b600080fd5b600054604080516001600160a01b039092168252519081900360200190f35b61007861007336600461039c565b61008d565b005b6100786100883660046103f0565b61011f565b60405163046e44af60e11b81526001600160601b03821660048201526101199085908590859073__$3bac17678db7ae928afa209f2f44deec9c$__906308dc895e906024015b602060405180830381865af41580156100f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101149190610433565b610179565b50505050565b60005460405163046e44af60e11b81526001600160601b0383166004820152610174916001600160a01b0316908590859073__$3bac17678db7ae928afa209f2f44deec9c$__906308dc895e906024016100d3565b505050565b604080516001600160a01b038581166024830152848116604483015260648083018590528351808403909101815260849092019092526020810180516001600160e01b03166323b872dd60e01b179052610119918691906000906101df90841683610232565b90508051600014158015610204575080806020019051810190610202919061044c565b155b1561017457604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b606061024083836000610247565b9392505050565b60608147101561026c5760405163cd78605960e01b8152306004820152602401610229565b600080856001600160a01b03168486604051610288919061046e565b60006040518083038185875af1925050503d80600081146102c5576040519150601f19603f3d011682016040523d82523d6000602084013e6102ca565b606091505b50915091506102da8683836102e4565b9695505050505050565b6060826102f9576102f482610340565b610240565b815115801561031057506001600160a01b0384163b155b1561033957604051639996b31560e01b81526001600160a01b0385166004820152602401610229565b5080610240565b8051156103505780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b038116811461038057600080fd5b919050565b80356001600160601b038116811461038057600080fd5b600080600080608085870312156103b257600080fd5b6103bb85610369565b93506103c960208601610369565b92506103d760408601610369565b91506103e560608601610385565b905092959194509250565b60008060006060848603121561040557600080fd5b61040e84610369565b925061041c60208501610369565b915061042a60408501610385565b90509250925092565b60006020828403121561044557600080fd5b5051919050565b60006020828403121561045e57600080fd5b8151801515811461024057600080fd5b6000825160005b8181101561048f5760208186018101518583015201610475565b50600092019182525091905056fea2646970667358221220cef169e5ebf6594361114297bdf3c5c071054018e8f028c23ba2f8f1536ea8ae64736f6c6343000814003307ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00ffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220496af537e5dc16917f0399ef7fb9452683f2bb2d3080e80aa686b501eb34c95264736f6c63430008140033",
1925
- "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620004755760003560e01c80636c0a81911162000259578063bb1e0e591162000149578063e9e96c7011620000c7578063f48016ce1162000092578063f48016ce1462000c01578063f57f4aaa1462000893578063f67fef6d1462000646578063f7c34ee01462000c18578063f8bf0d9f1462000c2f57600080fd5b8063e9e96c701462000b6e578063ea15869f1462000b85578063ecd6bf3c1462000b9c578063f43a39191462000bb357600080fd5b8063dea4ccf21162000114578063dea4ccf214620007f9578063deaa59df1462000b29578063e7f7fb861462000b40578063e8ce883d1462000646578063e904ec661462000b5757600080fd5b8063bb1e0e591462000adb578063bf1db3f91462000af2578063bf7e214f1462000b09578063de0eb85f146200064657600080fd5b80638eaa6ac011620001d75780639a72636411620001a25780639a72636414620009dc578063a5961b4c14620009ed578063a89896751462000aa3578063ada9652e1462000aba578063b423086c1462000ad157600080fd5b80638eaa6ac014620009625780638fb36037146200098857806390edbd3514620009ac578063958697a014620009c557600080fd5b806374a4030f116200022457806374a4030f14620008935780637a9e5e4b146200089b5780637b21556114620008b2578063806b5ece146200090a578063893d20e8146200095857600080fd5b80636c0a819114620007f95780636c1e9dff146200064657806370ed62c71462000882578063719f761a14620007f957600080fd5b80632a80f673116200037557806351d3417e11620002f35780635e0dacca11620002be5780635e0dacca14620007f9578063614d08f8146200080d578063644c45e01462000834578063675393bf146200085457806369aff9af146200086b57600080fd5b806351d3417e146200076357806354f6127f14620007c65780635741e5e914620007dd5780635ab1bd5314620007e757600080fd5b806338a699a4116200034057806338a699a414620006ef57806343d752d31462000706578063468bce06146200071057806349bb9e4b146200071a5780634dd84ff7146200073157600080fd5b80632a80f6731462000672578063329d6e741462000683578063346b1db4146200069a57806336fc697e14620006e557600080fd5b8063160e4b1f116200040357806321df0da711620003ce57806321df0da7146200063257806322366844146200063c57806326889b09146200064657806327415b7e14620005c457806327bb7a33146200065b57600080fd5b8063160e4b1f14620005c457806317d7de7c14620005da5780631eff4b2214620005f3578063214cdb80146200061b57600080fd5b80630d8e6e2c11620004445780630d8e6e2c146200055d5780630fec111c146200057c578063132996041462000595578063138461e014620005b857600080fd5b806301ffc9a7146200047a578063062c9cdf14620004bf57806309648a9d14620004f65780630d3581811462000534575b600080fd5b620004aa6200048b3660046200336b565b6001600160e01b03191660009081526003602052604090205460ff1690565b60405190151581526020015b60405180910390f35b620004e77fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f0081565b604051908152602001620004b6565b620005216200050736600462003397565b600090815260026020526040902054610100900460ff1690565b60405160ff9091168152602001620004b6565b6200052162000545366004620033d3565b60ff9081166000908152602081905260409020541690565b6200056762000c46565b60405162ffffff9091168152602001620004b6565b6200058662000cd3565b604051620004b6919062003447565b6200059f62000ea4565b6040516001600160a01b039091168152602001620004b6565b620005c262000eb9565b005b620005c2620005d53660046200351b565b505050565b620005e4620010ce565b604051620004b691906200356d565b620004e77f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b620005c26200062c3660046200336b565b620010e0565b6200059f6200110f565b620004aa62001124565b620005c26200065736600462003582565b5050565b620005c26200066c366004620036d6565b62001226565b620005c2620006573660046200377c565b620005c262000694366004620037ab565b620012d1565b620004e7620006ab366004620037e3565b6001600160601b031660009081527fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f01602052604090205490565b620005c262001429565b620004aa6200070036600462003397565b62001471565b6200059f62001505565b620005c26200151a565b620005c26200072b36600462003803565b62001558565b6200074a6200074236600462003858565b600092915050565b6040516001600160601b039091168152602001620004b6565b6200074a6200077436600462003894565b6001600160601b0391821660009081527fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f04602090815260408083206001600160a01b0394909416835292905220541690565b620005e4620007d736600462003397565b62001660565b620004aa6200170d565b6004546001600160a01b03166200059f565b620005c26200080a366004620037e3565b50565b620005e4604051806040016040528060078152602001665374616b696e6760c81b81525081565b60008051602062004692833981519152546001600160601b03166200074a565b620005c262000865366004620038c7565b620017cc565b620005c26200087c36600462003397565b620018e2565b6200074a6200074236600462003582565b60006200074a565b620005c2620008ac366004620038c7565b62001936565b620004e7620008c3366004620038e7565b60009182527fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00602090815260408084206001600160a01b0393909316845291905290205490565b6200074a6200091b366004620037e3565b6001600160601b0390811660009081527fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f0360205260409020541690565b6200059f620019d8565b620009796200097336600462003397565b62001b17565b604051620004b6919062003959565b6200099262001c60565b6040516001600160e01b03199091168152602001620004b6565b620009b662001c9b565b604051620004b6919062003989565b620005c2620009d63660046200351b565b62001cc9565b620005c2620009d636600462003a10565b62000a94620009fe36600462003397565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915250600090815260026020908152604091829020825160a081018452905460ff8082168352610100820416928201929092526001600160a01b03620100008304169281019290925263ffffffff600160b01b820481166060840152600160d01b90910416608082015290565b604051620004b6919062003a4b565b620005c262000ab436600462003a5b565b62001d08565b620004e76000805160206200469283398151915281565b620009b662001dff565b620005c262000aec36600462003aa2565b62001e13565b620004aa62000b03366004620033d3565b62001eb7565b600080516020620046d2833981519152546001600160a01b03166200059f565b620005c262000b3a366004620038c7565b62001f05565b620005c262000b5136600462003ac3565b620021a3565b620005c262000b6836600462003aa2565b62002247565b620004aa62000b7f36600462003a5b565b62002398565b620004e7600080516020620046b283398151915281565b620005c262000bad36600462003af8565b620023cc565b6200074a62000bc4366004620037e3565b6001600160601b0390811660009081527fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f0260205260409020541690565b620004e762000c1236600462003ba9565b6200240b565b620005c262000c2936600462003be2565b62002491565b620005c262000c4036600462003c03565b62002510565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af415801562000ca8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cce919062003d19565b905090565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801562000d88573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000dae919062003d4d565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a00162000df8620019d8565b6001600160a01b0316815260200182600101805462000e179062003d6d565b80601f016020809104026020016040519081016040528092919081815260200182805462000e459062003d6d565b801562000e965780601f1062000e6a5761010080835404028352916020019162000e96565b820191906000526020600020905b81548152906001019060200180831162000e7857829003601f168201915b505050505081525091505090565b600062000eb062001c9b565b60800151905090565b60006000805160206200469283398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801562000f2a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f50919062003db6565b1562000f825780546040516301ab8b6760e21b81526001600160601b0390911660048201526024015b60405180910390fd5b3062000f966004546001600160a01b031690565b60405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa15801562000fdf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001005919062003db6565b6200102f5760405163b9304b0d60e01b81526001600160a01b038216600482015260240162000f79565b6004546001600160a01b0316604051636939560f60e11b81526001600160a01b038381166004830152919091169063d272ac1e90602401602060405180830381865afa15801562001084573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010aa919062003d4d565b82546bffffffffffffffffffffffff19166001600160601b03919091161790915550565b6060620010da62001c9b565b51919050565b620010ea62002630565b6001600160e01b0319166000908152600360205260409020805460ff19166001179055565b60006200111b62001c9b565b60400151905090565b6000620011396004546001600160a01b031690565b604051636939560f60e11b81523060048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa15801562001180573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011a6919062003d4d565b6040516330b8415f60e01b81526001600160601b03909116600482015273__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801562001200573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cce919062003db6565b6200123062002630565b6200123c828762002491565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa301620012c7838262003e28565b5050505050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c620012f562000c46565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af415801562001336573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200135c919062003ef4565b600080516020620046f28339815191528054600160401b900460ff168062001391575080546001600160401b03808416911610155b15620013b05760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155620013dc8362002669565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a1505050565b6200143362002630565b6301ffc9a760e01b60005260036020527f28b0ef64f7e82d3b26f3fd404bd0151552f792965f39c29ae82c0a78df67af9c805460ff19166001179055565b60008181526002602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf906024015b602060405180830381865af4158015620014d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014ff919062003db6565b92915050565b60006200151162001c9b565b60600151905090565b6200152462002630565b6200152e62002673565b6200153862002797565b620015426200288b565b6200154c620029c3565b6200155662002af0565b565b600080516020620046f28339815191528054600160401b810460ff1615906001600160401b03166000811580156200158d5750825b90506000826001600160401b03166001148015620015aa5750303b155b905081158015620015b9575080155b15620015d85760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156200160357845460ff60401b1916600160401b1785555b6200160f878762002bac565b83156200165757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b6000818152600260205260409020600101805460609190620016829062003d6d565b80601f0160208091040260200160405190810160405280929190818152602001828054620016b09062003d6d565b8015620017015780601f10620016d55761010080835404028352916020019162001701565b820191906000526020600020905b815481529060010190602001808311620016e357829003601f168201915b50505050509050919050565b60006200171962001124565b156200179c576004546001600160a01b03166040516308b09a5f60e41b81523060048201526001600160a01b039190911690638b09a5f090602401600060405180830381865afa15801562001772573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001511919081019062003f85565b507fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f0354600160a01b900460ff1690565b620017d662002630565b806001600160a01b03163b6000036200180e5760405163fdeac91f60e01b81526001600160a01b038216600482015260240162000f79565b600480546001600160a01b0319166001600160a01b03831690811782556040516301ffc9a760e01b815263256dc24d60e21b92810192909252906301ffc9a790602401602060405180830381865afa9250505080156200188d575060408051601f3d908101601f191682019092526200188a9181019062003db6565b60015b620018b75760405163fdeac91f60e01b81526001600160a01b038216600482015260240162000f79565b80620006575760405163fdeac91f60e01b81526001600160a01b038316600482015260240162000f79565b620018ec620019d8565b6001600160a01b0316336001600160a01b031614620019215760405163086391f760e31b815233600482015260240162000f79565b6200080a6200192f6200110f565b8262002247565b3362001958600080516020620046d2833981519152546001600160a01b031690565b6001600160a01b0316816001600160a01b031614620019955760405162d1953b60e31b81526001600160a01b038216600482015260240162000f79565b816001600160a01b03163b600003620019cd576040516361798f2f60e11b81526001600160a01b038316600482015260240162000f79565b620006578262002d94565b6000806000805160206200469283398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801562001a4a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a70919062003db6565b1562001b01576004546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa15801562001ad5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001afb91906200406b565b91505090565b54600160601b90046001600160a01b0316919050565b6040805160e081018252600091810182815260608083018490526080830184905260a0830184905260c083019390935281526020810191909152600082815260026020908152604091829020825160e081018452815460ff80821695830195865261010082041660608301526001600160a01b0362010000820416608083015263ffffffff600160b01b8204811660a0840152600160d01b9091041660c0820152928352600181018054919284019162001bd19062003d6d565b80601f016020809104026020016040519081016040528092919081815260200182805462001bff9062003d6d565b801562001c505780601f1062001c245761010080835404028352916020019162001c50565b820191906000526020600020905b81548152906001019060200180831162001c3257829003601f168201915b5050505050815250509050919050565b600080516020620046d2833981519152805460009190600160a01b900460ff1662001c8d57600062001afb565b638fb3603760e01b91505090565b62001ca562003303565b62001caf62001124565b1562001cbf5762000cce62002df0565b62000cce62001dff565b62001cd3620019d8565b6001600160a01b0316336001600160a01b031614620005d55760405163086391f760e31b815233600482015260240162000f79565b60ff8381166000908152602081905260409081902054905163037c8cb160e51b81529116600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af415801562001d6e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d94919062003db6565b1562001d9f57505050565b60ff808416600090815260016020908152604080832086851684528252808320858516845290915290205416620005d557604051636bb20ea760e01b815260ff808516600483015280841660248301528216604482015260640162000f79565b62001e0962003303565b62000cce62002df0565b6004546001600160a01b03166001600160a01b031663120726c36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001e5d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e8391906200406b565b6001600160a01b0316336001600160a01b031614620006575760405162f0630960e01b815233600482015260240162000f79565b60ff81811660009081526020819052604080822054905163b2466acf60e01b8152921660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401620014bb565b62001f0f620019d8565b6001600160a01b0316336001600160a01b03161462001f445760405163086391f760e31b815233600482015260240162000f79565b600062001f5062000ea4565b9050600062001f5e6200110f565b6040516370a0823160e01b81526001600160a01b0384811660048301529192506000918316906370a0823190602401602060405180830381865afa15801562001fab573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fd191906200408b565b90508015620020aa576001600160a01b0383163014620020aa57604051636eb1769f60e11b81526001600160a01b0384811660048301523060248301526000919084169063dd62ed3e90604401602060405180830381865afa1580156200203c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200206291906200408b565b905081811015620020a8576040516372c963b360e11b81526001600160a01b03808616600483015286166024820152604481018290526064810183905260840162000f79565b505b620020b58462002f71565b80156200219d57306001600160a01b03841603620021435760405163095ea7b360e01b8152306004820152602481018290526001600160a01b0383169063095ea7b3906044016020604051808303816000875af11580156200211b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002141919062003db6565b505b62002151828486846200305e565b604080516001600160a01b038086168252861660208201529081018290527f8f925ed35e36754081a3353f30c5686c405280f94d1cfe322ee5707833d898679060600160405180910390a15b50505050565b6004546001600160a01b03166001600160a01b031663120726c36040518163ffffffff1660e01b8152600401602060405180830381865afa158015620021ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200221391906200406b565b6001600160a01b0316336001600160a01b031614620005d55760405162f0630960e01b815233600482015260240162000f79565b62002251620019d8565b6001600160a01b0316336001600160a01b031614620022865760405163086391f760e31b815233600482015260240162000f79565b306200229162000ea4565b6001600160a01b031614620022b95760405163b6d7537f60e01b815260040160405180910390fd5b816001600160a01b031663095ea7b3620022d262001505565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af115801562002320573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002346919062003db6565b507f2384a42fdaabc7c18091b047d32d817d2ead07cae899963c6bcf9ab42aff85d46200237262001505565b604080516001600160a01b03909216825260208201849052015b60405180910390a15050565b60ff8084166000908152600160209081526040808320868516845282528083208585168452909152902054165b9392505050565b620023d6620019d8565b6001600160a01b0316336001600160a01b031614620006575760405163086391f760e31b815233600482015260240162000f79565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$4b9aaffa8d044614668dad578b824b8eee$__9063f48016ce90604401602060405180830381865af41580156200246b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023c591906200408b565b6200249b62002630565b620024a681620017cc565b620024b062001429565b6001600160a01b038216620024d85760405163f17ef42d60e01b815260040160405180910390fd5b506000805160206200469283398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b6200251a62002630565b6200252a89898787878762001226565b620025358a620030ba565b6001600160a01b0386166200255d576040516327eab2e360e11b815260040160405180910390fd5b8651600003620025805760405163591eebf360e11b815260040160405180910390fd5b600080516020620046b2833981519152806200259d898262003e28565b506001810180546001600160a01b03199081166001600160a01b038a161790915560028201805490911690556003810180546001600160a81b0319163060ff60a01b191617600160a01b8715150217905560048101620025fe838262003e28565b5062002611634a531f3360e01b620010e0565b6200262363100951f160e31b620010e0565b5050505050505050505050565b600080516020620046f283398151915254600160401b900460ff166200155657604051631afcd79f60e31b815260040160405180910390fd5b6200047562002630565b7f5bd290414b404036f9d63146803dd83b59a8e1905062a5bfed8b0154d20a390d8054606460ff19918216179091557f1578fb1f3721b6c33cae7dfcd025f5660361b090d8a17dcf8a744763f22d32ff8054821660019081179091557f47ebb928e225b2cdc8d8e0079f8da9b87d2bc15cc37a8c27842a5c925baa8b1e80548316821790557ffe60dc71e2c842ec11550e74a003d6f707c74c3b19b04c1b0700bc0fd9efd9508054909216811790915560dc600090815260208290527f81c2bf9f7c6e8ac9bd8bcd9d323e94b867d2f5054aff8759d884773c680ec1ec90606e5b60ff1660ff16815260200190815260200160002060006200277360c890565b60ff1681526020810191909152604001600020805460ff1916911515919091179055565b7f9db7038e59677010ca8f72fa448bad1b4f3c53346b666689163ccac31db467728054606460ff1991821681179092557f1a3062e9a24818c8281fcfb58ec4f3083a2f9a1314ac63f80d8d646661fdc50980548216600190811790915560008381527fc884cae9155e1829c27543e26ecbb72f79fe3a85ba4df2c4a97ad5806356754d6020527f2916767ac794614810c43d6c0837244e8b2c8d3f3c02376a214f465d6841db5680549093168217909255918291905b60ff1660ff16815260200190815260200160002060006200286c606e90565b60ff1660ff16815260200190815260200160002060006200277360d290565b7fa57aae0b1e878b4cf2d1f237d2c6d245fa2af12f527cffc45e0a81d7b3c46abe8054600a60ff19918216179091557f10d8f68d28031156bb5a2007a6e7fc1ff769776115bd307e1d3f2901ec220eef8054821660019081179091557f71e0ce7e96b0b9ecf53c20706f5891c8e9bb320060393406400136d7ab1db61e80548316821790557f3aa5c1a82b8afaca3213d4302f465dcc339ab680e61c71830f7d9c441c63328380548316821790557ff9240d619fae1c941eaa4888cff36b0b9489ef130bdb7c814fd3a0e301d8ad1f80548316821790557f59d2febd485ffaba948645e520694e9996f0c229c4a10430d07956b599b172538054909216811790915560d3600090815260208290527f7415b658af57d740454b01d91722f71a360db8fdd5ec2a068a92c37e2bc3b1d690606462002754565b7f41d63e1348ead7043feb8677b52ff813a7a3d573fdf99c917846a69e8e7b7e60805460ff199081166032179091557f378c5573ee3453f5c9f5c7aa83b807835ecb097b5151d641746b59340336b67d8054821660019081179091557f7f4fc20c9070f9c8378783c3022311e08af436d0fea4b913fe0bbde88023d12680548316821790557ff6e14778b29b20f68b5cc5186c105c44b748bec78fd85e0b2ec52bc8586d6a6b80548316821790557fb9ec96904d3ea9e7b01f30f8b9a841d70b77145e37a183ebdbba2b0733adc0ec8054603c93168317905560009182527f77835ececcc7e965708390fdc28b7c7141b063a8a849f3954f1d294d07730184602052907f5e9b6496c2ea16de03007cb0b49643b7231addd52c0cee66d8556b1dd66622a19060dc62002773565b7fc5f2c791ab4e0b1a0b6c600884b07e98575b00ebd7c3166c4272a53bebf714038054606460ff1991821681179092557f66482ac56acdda5113badf732cc46c284136d9d6378a671ac129cd298ff5f96780548216600190811790915560009283527f47d871bf8fdbdfc3d809d1454103f6ff238aad0f5cefde0353363b9e415ef6a76020527ff2de5750d5c9f412b7907640f68a5258fe3f903dfd0cd25c2ea235b23cc926958054909216811790915590819060c86200284d565b600080516020620046f28339815191528054600160401b810460ff1615906001600160401b031660008115801562002be15750825b90506000826001600160401b0316600114801562002bfe5750303b155b90508115801562002c0d575080155b1562002c2c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831562002c5757845460ff60401b1916600160401b1785555b6000806000808980602001905181019062002c739190620040a5565b935093509350935062002d308484856001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002cc0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ce6919062003d4d565b6040805180820190915260078152665374616b696e6760c81b602082015286602d600088604051806020016040528060008152506040518060200160405280600081525062002510565b62002d3a620030cf565b62002d4c6339dee94960e01b620010e0565b5050505083156200165757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020016200164e565b600080516020620046d283398151915280546001600160a01b0319166001600160a01b03831690811782556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad906020016200238c565b62002dfa62003303565b6000600080516020620046b283398151915290506040518060c0016040528082600001805462002e2a9062003d6d565b80601f016020809104026020016040519081016040528092919081815260200182805462002e589062003d6d565b801562002ea95780601f1062002e7d5761010080835404028352916020019162002ea9565b820191906000526020600020905b81548152906001019060200180831162002e8b57829003601f168201915b5050505050815260200173__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801562002efd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f23919062003d4d565b6001600160601b0316815260018301546001600160a01b039081166020830152600284015481166040830152600384015416606082015260048301805460809092019162000e179062003d6d565b7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f0354600080516020620046b2833981519152906001600160a01b0390811690831662002fd05760405163185a690f60e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b031603620030035760405163ade4578160e01b815260040160405180910390fd5b6003820180546001600160a01b0319166001600160a01b0385811691821790925560408051928416835260208301919091527f610ad1290dceadae2c5ce18bae2eb495be595083a257fac7414e50686f7c265091016200141c565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526200219d9085906200316d565b620030c462002630565b6200080a81620031d7565b7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f0154604051600080516020620046b2833981519152916001600160a01b0316906200311a906200335d565b6001600160a01b039091168152602001604051809103906000f08015801562003147573d6000803e3d6000fd5b5060029190910180546001600160a01b0319166001600160a01b03909216919091179055565b6000620031846001600160a01b03841683620031ec565b90508051600014158015620031ac575080806020019051810190620031aa919062003db6565b155b15620005d557604051635274afe760e01b81526001600160a01b038416600482015260240162000f79565b620031e162002630565b6200080a8162002d94565b6060620023c58383600084600080856001600160a01b031684866040516200321591906200410d565b60006040518083038185875af1925050503d806000811462003254576040519150601f19603f3d011682016040523d82523d6000602084013e62003259565b606091505b50915091506200326b86838362003275565b9695505050505050565b6060826200328e576200328882620032d9565b620023c5565b8151158015620032a657506001600160a01b0384163b155b15620032d157604051639996b31560e01b81526001600160a01b038516600482015260240162000f79565b5080620023c5565b805115620032ea5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6040518060c001604052806060815260200160006001600160601b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001606081525090565b610566806200412c83390190565b6000602082840312156200337e57600080fd5b81356001600160e01b031981168114620023c557600080fd5b600060208284031215620033aa57600080fd5b5035919050565b60ff811681146200080a57600080fd5b8035620033ce81620033b1565b919050565b600060208284031215620033e657600080fd5b8135620023c581620033b1565b60005b8381101562003410578181015183820152602001620033f6565b50506000910152565b6000815180845262003433816020860160208601620033f3565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a0830151620034b160c08401826001600160a01b03169052565b5060c083015160e080840152620034cd61010084018262003419565b949350505050565b6001600160601b03811681146200080a57600080fd5b8035620033ce81620034d5565b6001600160a01b03811681146200080a57600080fd5b8035620033ce81620034f8565b6000806000606084860312156200353157600080fd5b83356200353e81620034d5565b925060208401356200355081620034f8565b915060408401356200356281620034d5565b809150509250925092565b602081526000620023c5602083018462003419565b600080604083850312156200359657600080fd5b8235620035a381620034d5565b91506020830135620035b581620034d5565b809150509250929050565b80151581146200080a57600080fd5b8035620033ce81620035c0565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715620036175762003617620035dc565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620036485762003648620035dc565b604052919050565b60006001600160401b038211156200366c576200366c620035dc565b50601f01601f191660200190565b600082601f8301126200368c57600080fd5b8135620036a36200369d8262003650565b6200361d565b818152846020838601011115620036b957600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c08789031215620036f057600080fd5b8635620036fd81620034f8565b955060208701356200370f81620034d5565b945060408701356200372181620033b1565b935060608701356200373381620035c0565b925060808701356200374581620034f8565b915060a08701356001600160401b038111156200376157600080fd5b6200376f89828a016200367a565b9150509295509295509295565b600080604083850312156200379057600080fd5b82356200379d81620034d5565b946020939093013593505050565b600060208284031215620037be57600080fd5b81356001600160401b03811115620037d557600080fd5b620034cd848285016200367a565b600060208284031215620037f657600080fd5b8135620023c581620034d5565b600080604083850312156200381757600080fd5b82356200382481620034f8565b915060208301356001600160401b038111156200384057600080fd5b6200384e858286016200367a565b9150509250929050565b600080604083850312156200386c57600080fd5b82356200387981620034d5565b9150602083013564ffffffffff81168114620035b557600080fd5b60008060408385031215620038a857600080fd5b8235620038b581620034d5565b91506020830135620035b581620034f8565b600060208284031215620038da57600080fd5b8135620023c581620034f8565b60008060408385031215620038fb57600080fd5b823591506020830135620035b581620034f8565b60ff815116825260ff602082015116602083015260018060a01b036040820151166040830152606081015163ffffffff808216606085015280608084015116608085015250505050565b602081526200396d6020820183516200390f565b6000602083015160c080840152620034cd60e084018262003419565b602081526000825160c06020840152620039a760e084018262003419565b90506001600160601b036020850151166040840152604084015160018060a01b0380821660608601528060608701511660808601528060808701511660a0860152505060a0840151601f198483030160c085015262003a07828262003419565b95945050505050565b60008060006060848603121562003a2657600080fd5b83359250602084013562003a3a81620034f8565b929592945050506040919091013590565b60a08101620014ff82846200390f565b60008060006060848603121562003a7157600080fd5b833562003a7e81620033b1565b9250602084013562003a9081620033b1565b915060408401356200356281620033b1565b6000806040838503121562003ab657600080fd5b82356200379d81620034f8565b60008060006060848603121562003ad957600080fd5b833562003ae681620034f8565b9250602084013562003a3a81620034f8565b60008082840360a081121562003b0d57600080fd5b833562003b1a81620034d5565b92506080601f198201121562003b2f57600080fd5b50604051608081018181106001600160401b038211171562003b555762003b55620035dc565b604052602084013562003b6881620034d5565b8152604084013562003b7a81620033b1565b602082015260608401356040820152608084013562003b9981620034f8565b6060820152919491935090915050565b6000806040838503121562003bbd57600080fd5b823562003bca81620033b1565b9150602083013560ff1981168114620035b557600080fd5b6000806040838503121562003bf657600080fd5b8235620038b581620034f8565b6000806000806000806000806000806101408b8d03121562003c2457600080fd5b62003c2f8b6200350e565b995062003c3f60208c016200350e565b985062003c4f60408c01620034eb565b975060608b01356001600160401b038082111562003c6c57600080fd5b62003c7a8e838f016200367a565b985062003c8a60808e016200350e565b975062003c9a60a08e01620033c1565b965062003caa60c08e01620035cf565b955062003cba60e08e016200350e565b94506101008d013591508082111562003cd257600080fd5b62003ce08e838f016200367a565b93506101208d013591508082111562003cf857600080fd5b5062003d078d828e016200367a565b9150509295989b9194979a5092959850565b60006020828403121562003d2c57600080fd5b815162ffffff81168114620023c557600080fd5b8051620033ce81620034d5565b60006020828403121562003d6057600080fd5b8151620023c581620034d5565b600181811c9082168062003d8257607f821691505b60208210810362003da357634e487b7160e01b600052602260045260246000fd5b50919050565b8051620033ce81620035c0565b60006020828403121562003dc957600080fd5b8151620023c581620035c0565b601f821115620005d557600081815260208120601f850160051c8101602086101562003dff5750805b601f850160051c820191505b8181101562003e205782815560010162003e0b565b505050505050565b81516001600160401b0381111562003e445762003e44620035dc565b62003e5c8162003e55845462003d6d565b8462003dd6565b602080601f83116001811462003e94576000841562003e7b5750858301515b600019600386901b1c1916600185901b17855562003e20565b600085815260208120601f198616915b8281101562003ec55788860151825594840194600190910190840162003ea4565b508582101562003ee45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562003f0757600080fd5b81516001600160401b0381168114620023c557600080fd5b8051620033ce81620033b1565b8051620033ce81620034f8565b600082601f83011262003f4b57600080fd5b815162003f5c6200369d8262003650565b81815284602083860101111562003f7257600080fd5b620034cd826020830160208701620033f3565b60006020828403121562003f9857600080fd5b81516001600160401b038082111562003fb057600080fd5b9083019060e0828603121562003fc557600080fd5b62003fcf620035f2565b62003fda8362003d40565b815262003fea6020840162003d40565b602082015262003ffd6040840162003f1f565b6040820152620040106060840162003da9565b6060820152620040236080840162003f2c565b60808201526200403660a0840162003f2c565b60a082015260c0830151828111156200404e57600080fd5b6200405c8782860162003f39565b60c08301525095945050505050565b6000602082840312156200407e57600080fd5b8151620023c581620034f8565b6000602082840312156200409e57600080fd5b5051919050565b60008060008060808587031215620040bc57600080fd5b8451620040c981620034f8565b6020860151909450620040dc81620034f8565b6040860151909350620040ef81620034f8565b60608601519092506200410281620034f8565b939692955090935050565b6000825162004121818460208701620033f3565b919091019291505056fe608060405234801561001057600080fd5b5060405161056638038061056683398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6104d3806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806321df0da7146100465780638d7271c314610065578063c661667d1461007a575b600080fd5b600054604080516001600160a01b039092168252519081900360200190f35b61007861007336600461039c565b61008d565b005b6100786100883660046103f0565b61011f565b60405163046e44af60e11b81526001600160601b03821660048201526101199085908590859073__$3bac17678db7ae928afa209f2f44deec9c$__906308dc895e906024015b602060405180830381865af41580156100f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101149190610433565b610179565b50505050565b60005460405163046e44af60e11b81526001600160601b0383166004820152610174916001600160a01b0316908590859073__$3bac17678db7ae928afa209f2f44deec9c$__906308dc895e906024016100d3565b505050565b604080516001600160a01b038581166024830152848116604483015260648083018590528351808403909101815260849092019092526020810180516001600160e01b03166323b872dd60e01b179052610119918691906000906101df90841683610232565b90508051600014158015610204575080806020019051810190610202919061044c565b155b1561017457604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b606061024083836000610247565b9392505050565b60608147101561026c5760405163cd78605960e01b8152306004820152602401610229565b600080856001600160a01b03168486604051610288919061046e565b60006040518083038185875af1925050503d80600081146102c5576040519150601f19603f3d011682016040523d82523d6000602084013e6102ca565b606091505b50915091506102da8683836102e4565b9695505050505050565b6060826102f9576102f482610340565b610240565b815115801561031057506001600160a01b0384163b155b1561033957604051639996b31560e01b81526001600160a01b0385166004820152602401610229565b5080610240565b8051156103505780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b038116811461038057600080fd5b919050565b80356001600160601b038116811461038057600080fd5b600080600080608085870312156103b257600080fd5b6103bb85610369565b93506103c960208601610369565b92506103d760408601610369565b91506103e560608601610385565b905092959194509250565b60008060006060848603121561040557600080fd5b61040e84610369565b925061041c60208501610369565b915061042a60408501610385565b90509250925092565b60006020828403121561044557600080fd5b5051919050565b60006020828403121561045e57600080fd5b8151801515811461024057600080fd5b6000825160005b8181101561048f5760208186018101518583015201610475565b50600092019182525091905056fea2646970667358221220cef169e5ebf6594361114297bdf3c5c071054018e8f028c23ba2f8f1536ea8ae64736f6c6343000814003307ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00ffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220496af537e5dc16917f0399ef7fb9452683f2bb2d3080e80aa686b501eb34c95264736f6c63430008140033",
2522
+ "bytecode": "0x6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6159d6806100d65f395ff3fe608060405234801561000f575f80fd5b506004361061037d575f3560e01c80636c1e9dff116101d4578063b283765d11610109578063d43a2623116100a9578063e8ce883d11610079578063e8ce883d146107df578063ea15869f146107f2578063ea48ce9b14610819578063ec0407d91461082c575f80fd5b8063d43a262314610793578063d44f8a4b146107a6578063de0eb85f146107b9578063dea4ccf2146107cc575f80fd5b8063bf7e214f116100e4578063bf7e214f1461075d578063c813d79114610765578063caed989714610778578063cdf73d5014610780575f80fd5b8063b283765d1461072f578063b423086c14610742578063b47f48881461074a575f80fd5b80638fb3603711610174578063a6bc7cb81161014f578063a6bc7cb8146106e2578063a71bfbb7146106f5578063ad12ad6014610708578063ada9652e1461071b575f80fd5b80638fb360371461069957806390edbd35146106ba578063958697a0146106cf575f80fd5b806376b707b7116101af57806376b707b71461065c5780637a9e5e4b1461067657806386c7575414610689578063893d20e814610691575f80fd5b80636c1e9dff146106235780636d387fe414610636578063719f761a14610649575f80fd5b806322f3e2d4116102b55780635741e5e9116102555780635fd1efec116102255780635fd1efec146105c5578063614d08f8146105d85780636291423a146105fe578063644c45e014610606575f80fd5b80635741e5e9146105665780635ab1bd531461056e5780635cbb7d851461057f5780635ecf260f146105b2575f80fd5b8063419197fe11610290578063419197fe1461052557806343d752d31461053857806344dcf7301461054057806349bb9e4b14610553575f80fd5b806322f3e2d4146104f75780632391b052146104ff578063329d6e7414610512575f80fd5b806313299604116103205780631eff4b22116102fb5780631eff4b22146104ad57806321df0da7146104d457806322366844146104dc57806322e16406146104e4575f80fd5b80631329960414610470578063138461e01461049057806317d7de7c14610498575f80fd5b806309980bfd1161035b57806309980bfd1461040c5780630d8e6e2c146104145780630fec111c1461043057806310a0638a14610445575f80fd5b806301ffc9a7146103815780630345861d146103c2578063062c9cdf146103d7575b5f80fd5b6103ad61038f366004614bcc565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6103d56103d0366004614c36565b61083f565b005b6103fe7fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f0081565b6040519081526020016103b9565b6103d5610917565b61041c610b0d565b60405162ffffff90911681526020016103b9565b610438610b94565b6040516103b99190614c9b565b610458610453366004614d2f565b610d4e565b6040516001600160601b0390911681526020016103b9565b610478610ddb565b6040516001600160a01b0390911681526020016103b9565b610458610e43565b6104a0610e4d565b6040516103b99190614d4a565b6103fe7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b610478610e5d565b6103ad610ea1565b6103d56104f2366004614c36565b610f97565b6103ad610ff1565b61045861050d366004614d5c565b611068565b6103d5610520366004614eab565b61125f565b6103d5610533366004614edc565b6113bd565b6104786115bd565b6103d561054e366004614f3e565b6115d8565b6103d5610561366004614f97565b61170a565b6103ad611818565b6001546001600160a01b0316610478565b61059261058d366004614fe3565b6118ce565b604080516001600160601b039384168152929091166020830152016103b9565b6103d56105c0366004614fff565b611bf0565b6103d56105d336600461502b565b611ce4565b6104a0604051806040016040528060078152602001665374616b696e6760c81b81525081565b610478611ea4565b5f80516020615961833981519152546001600160601b0316610458565b610458610631366004614fe3565b611ebf565b6103d5610644366004614fe3565b61215b565b610458610657366004614d2f565b612236565b6106646124d3565b60405160ff90911681526020016103b9565b6103d561068436600461502b565b612547565b6104786125c9565b6104786125e4565b6106a1612715565b6040516001600160e01b031990911681526020016103b9565b6106c261274a565b6040516103b99190615046565b6103d56106dd366004615094565b61276f565b6103d56106f03660046150d1565b6127b8565b6103d5610703366004614c36565b6128f3565b6103d56107163660046150fe565b612a52565b6103fe5f8051602061596183398151915281565b6103d561073d36600461502b565b612af5565b6106c2612c3c565b6103d5610758366004615143565b612c4c565b610478612d99565b6103d561077336600461515e565b612db4565b610478612df8565b6103d561078e36600461523d565b612e10565b6104586107a1366004614d5c565b612f6e565b6104586107b4366004615094565b612f8f565b6104586107c7366004614fe3565b613072565b6104586107da366004614d2f565b61309d565b6104586107ed366004614fe3565b613196565b6103fe7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f0081565b610458610827366004615094565b6133f2565b61045861083a366004614d5c565b6134c5565b61084b335b5f366135be565b8161085981601f5b5f6136bc565b5f610862613950565b60030154604051630345861d60e01b81526001600160a01b0390911690630345861d906108959087908790600401615258565b60408051808303815f875af11580156108b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d49190615290565b5090507ec60e9fa0b11ba4353f1efa957e6380e75820bcf5afd13713f0c7c268b18a5b848483604051610909939291906152bd565b60405180910390a150505050565b6001546001600160a01b0316331461094957604051632a6e1a8960e01b81523360048201526024015b60405180910390fd5b5f610952613950565b90505f61095d613950565b546040805163b201f70960e01b815290516001600160a01b039092169163b201f709916004808201926020929091908290030181865afa1580156109a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c791906152e7565b905073__$51089c37ca0df1177a910c640c8c5f8165$__6350c6470d6109f56001546001600160a01b031690565b3084610a096001546001600160a01b031690565b6001600160a01b031663e2b178a06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6891906152e7565b60405160e086901b6001600160e01b03191681526001600160a01b039485166004820152928416602484015290831660448301529091166064820152608401602060405180830381865af4158015610ac2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae691906152e7565b60019290920180546001600160a01b0319166001600160a01b039093169290921790915550565b604051632efe011360e01b8152600360048201525f60248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af4158015610b6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8f9190615302565b905090565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820152907f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610c40573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c64919061532f565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a001610cac6125e4565b6001600160a01b03168152602001826001018054610cc99061534a565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf59061534a565b8015610d405780601f10610d1757610100808354040283529160200191610d40565b820191905f5260205f20905b815481529060010190602001808311610d2357829003601f168201915b505050505081525091505090565b5f610d5833610844565b81610d6781601e5b60016136bc565b5f610d70613950565b600381015460405163085031c560e11b81526001600160601b03871660048201529192506001600160a01b0316906310a0638a906024015f604051808303815f87803b158015610dbe575f80fd5b505af1158015610dd0573d5f803e3d5ffd5b505050505050919050565b5f610de46115bd565b6001600160a01b031663132996046040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e1f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8f91906152e7565b5f610b8f30613974565b6060610e5761274a565b51919050565b5f610e666115bd565b6001600160a01b03166382bfefc86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e1f573d5f803e3d5ffd5b5f610eb46001546001600160a01b031690565b604051632f2a35f760e11b81523060048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015610ef8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1c919061532f565b6040516330b8415f60e01b81526001600160601b03909116600482015273__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015610f73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8f9190615391565b610fa033610844565b610fa86125e4565b6001600160a01b0316336001600160a01b031614610fdb5760405163086391f760e31b8152336004820152602401610940565b610fed610fe6613950565b8383613bb6565b5050565b5f610ffa612d99565b60405163a166aa8960e01b81523060048201526001600160a01b03919091169063a166aa8990602401602060405180830381865afa15801561103e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110629190615391565b15905090565b5f61107233610844565b8361107e81601f610853565b5f611087613950565b6002810154604051627c1b7d60e71b81529192506001600160a01b031690633e0dbe80906110bb9089908890600401615258565b6020604051808303815f875af11580156110d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110fb919061532f565b60038201546040516351486e7d60e01b81529194506001600160a01b0316906351486e7d906111349086908a9089908b906004016153aa565b6020604051808303815f875af1158015611150573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061117491906153de565b506040516330b8415f60e01b81526001600160601b038616600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af41580156111cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ef9190615391565b1561125657600281015460405163f71c4cef60e01b81526001600160a01b039091169063f71c4cef906112289088908890600401615258565b5f604051808303815f87803b15801561123f575f80fd5b505af1158015611251573d5f803e3d5ffd5b505050505b50509392505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c611281610b0d565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af41580156112bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e391906153f9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b900460ff1680611328575080546001600160401b03808416911610155b156113465760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561137083613d07565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a1505050565b6113c633610844565b6113ce6125e4565b6001600160a01b0316336001600160a01b0316146114015760405163086391f760e31b8152336004820152602401610940565b5f61140a613950565b6001810154604051636eb1769f60e11b81523060048201526001600160a01b0391821660248201529192505f9173__$3bac17678db7ae928afa209f2f44deec9c$__91634c41dd96919087169063dd62ed3e90604401602060405180830381865afa15801561147b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061149f919061541f565b6040518263ffffffff1660e01b81526004016114bd91815260200190565b602060405180830381865af41580156114d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114fc919061532f565b60028301546040516320c8cbff60e11b81526001600160a01b0387811660048301526001600160601b038716602483015292935091169063419197fe906044015f604051808303815f87803b158015611553575f80fd5b505af1158015611565573d5f803e3d5ffd5b5050604080516001600160a01b03881681526001600160601b0380881660208301528516918101919091527fd04c7a08e8de83264477350e162e0d3e26406e3eaf786d06d976ea7f229d5c4e92506060019050610909565b5f6115c6613950565b600101546001600160a01b0316919050565b6115e133610844565b6115e9613950565b60030154604051639a148b7f60e01b81526001600160601b038616600482015260ff8516602482015264ffffffffff841660448201526001600160a01b03838116606483015290911690639a148b7f906084015f604051808303815f87803b158015611653575f80fd5b505af1158015611665573d5f803e3d5ffd5b505050507fc849e103742be0a3f6a0ce76fbdbf4c40caa5cd6eb6bdee9c12c925cff885fa58484848473__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af41580156116d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f9919061532f565b604051610909959493929190615436565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561174e5750825b90505f826001600160401b031660011480156117695750303b155b905081158015611777575080155b156117955760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156117bf57845460ff60401b1916600160401b1785555b6117c98787613d28565b831561180f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b5f611821610ea1565b156118a5576001546001600160a01b03166040516308b09a5f60e41b81523060048201526001600160a01b039190911690638b09a5f0906024015f60405180830381865afa158015611875573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261189c91908101906154d1565b60600151905090565b507fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f015460ff1690565b5f806118d933610844565b836118e581601e610d60565b836118f181601f610853565b5f6118fa613950565b9050806003015f9054906101000a90046001600160a01b03166001600160a01b0316630ad044ce8860018073__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af415801561196c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611990919061532f565b60405160e086901b6001600160e01b03191681526001600160601b0394851660048201529215156024840152901515604483015290911660648201526084016020604051808303815f875af11580156119eb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a0f919061532f565b93505f611a246001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038a1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611a71573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a9591906152e7565b6002830154604051627c1b7d60e71b81529192506001600160a01b031690633e0dbe8090611ac9908a908590600401615258565b6020604051808303815f875af1158015611ae5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b09919061532f565b60038301546040516351486e7d60e01b81529197506001600160a01b0316906351486e7d90611b429089908b9086908b906004016153aa565b6020604051808303815f875af1158015611b5e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b8291906153de565b50604080516001600160601b0388811682528981166020830152878116828401526001600160a01b03841660608301528a16608082015290517fb83b505434e350ef4d02aa4d11d8c3bf9903b943ecba24fffa1061de4a109e199181900360a00190a1505050509250929050565b611bf933610844565b81611c0581601f610853565b5f611c0e613950565b60030154604051635ecf260f60e01b81526001600160601b038616600482015264ffffffffff851660248201526001600160a01b0390911690635ecf260f9060440160408051808303815f875af1158015611c6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c8f91906155a1565b50604080516001600160601b038716815264ffffffffff80871660208301528316918101919091529091507f30c0fd8161ee020f45ae168e89fb340e68c952a10aad14f7a895dc9393818e4690606001610909565b611ced33610844565b611cf56125e4565b6001600160a01b0316336001600160a01b031614611d285760405163086391f760e31b8152336004820152602401610940565b306001600160a01b0316816001600160a01b0316637b1391a66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d6e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d9291906152e7565b6001600160a01b031614611e2557806001600160a01b0316637b1391a66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ddc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e0091906152e7565b604051631641c88f60e11b81526001600160a01b039091166004820152602401610940565b5f611e2e613950565b600401546001600160a01b0316905081611e46613950565b60040180546001600160a01b0319166001600160a01b0392831617905560408051848316815291831660208301527f8414c1d6352c513484c229579bca3842a94d9c46e1dd28ec9b03c9b3d5a4ae4291015b60405180910390a15050565b5f611ead613950565b600401546001600160a01b0316919050565b5f611ec933610844565b82611ed581601e610d60565b5f611ede613950565b9050806003015f9054906101000a90046001600160a01b03166001600160a01b03166359386f8e8660018073__$71e292c09eace9601b3e21e68a1278917a$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af4158015611f50573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f7491906153de565b6040516001600160e01b031960e087901b1681526001600160601b0394851660048201529215156024840152901515604483015264ffffffffff166064820152908716608482015260a4015f604051808303815f87803b158015611fd6575f80fd5b505af1158015611fe8573d5f803e3d5ffd5b50506040516330b8415f60e01b81526001600160601b038716600482015273__$3bac17678db7ae928afa209f2f44deec9c$__92506330b8415f9150602401602060405180830381865af4158015612042573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120669190615391565b15612153575f61207e6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03881660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156120cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120ef91906152e7565b600283015460405163f71c4cef60e01b81529192506001600160a01b03169063f71c4cef906121249088908590600401615258565b5f604051808303815f87803b15801561213b575f80fd5b505af115801561214d573d5f803e3d5ffd5b50505050505b505092915050565b61216433610844565b8161217081601f610853565b612178613950565b60030154604051631b4e1ff960e21b81526001600160601b038086166004830152841660248201526001600160a01b0390911690636d387fe49060440160408051808303815f875af11580156121d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121f491906155bd565b5050604080516001600160601b038086168252841660208201527ff595ceebb66e043dea95b0b28e85ab6e8200e13aca74757365131310dc01793c91016113b0565b5f61224033610844565b8161224c81601e610d60565b5f612255613950565b9050806003015f9054906101000a90046001600160a01b03166001600160a01b0316634a923f0c85600173__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af41580156122c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122ea919061532f565b60405160e085901b6001600160e01b03191681526001600160601b039384166004820152911515602483015290911660448201526064015b6020604051808303815f875af115801561233e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612362919061532f565b6040516330b8415f60e01b81526001600160601b038216600482015290935073__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af41580156123bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123df9190615391565b156124cc575f6123f76001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03871660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612444573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061246891906152e7565b6002830154604051630cb9145560e41b81529192506001600160a01b03169063cb9145509061249d9087908590600401615258565b5f604051808303815f87803b1580156124b4575f80fd5b505af11580156124c6573d5f803e3d5ffd5b50505050505b5050919050565b604051632392b61b60e21b8152600360048201525f9073__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af4158015612523573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8f91906155d9565b33612550612d99565b6001600160a01b0316816001600160a01b03161461258b5760405162d1953b60e31b81526001600160a01b0382166004820152602401610940565b816001600160a01b03163b5f036125c0576040516361798f2f60e11b81526001600160a01b0383166004820152602401610940565b610fed82613fa0565b5f6125d2613950565b600301546001600160a01b0316919050565b5f805f8051602061596183398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015612650573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126749190615391565b156126ff576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156126d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126f991906152e7565b91505090565b54600160601b90046001600160a01b0316919050565b5f8051602061598183398151915280545f9190600160a01b900460ff1661273c575f6126f9565b638fb3603760e01b91505090565b612752614ba3565b61275a610ea1565b1561276757610b8f613ff9565b610b8f612c3c565b61277833610844565b6127806125e4565b6001600160a01b0316336001600160a01b0316146127b35760405163086391f760e31b8152336004820152602401610940565b505050565b6127c133610844565b6127c96125e4565b6001600160a01b0316336001600160a01b0316146127fc5760405163086391f760e31b8152336004820152602401610940565b5f80612806613950565b600301546040516314d78f9760e31b81526001600160a01b039091169063a6bc7cb89061283b908890889088906004016152bd565b60408051808303815f875af1158015612856573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061287a9190615290565b604080516001600160601b03891681526001600160a01b03808916602083015280881692820192909252908316606082015264ffffffffff8216608082015291935091507f519b91b3c7a09332814e208f4ff950747fd39d6aa537517322893c161f6ac9459060a0015b60405180910390a15050505050565b6128fc33610844565b8161290881601f610853565b5f612911613950565b6040516301f8588560e51b81526001600160601b03861660048201529091505f9073__$dacf551d137a232f87fa09e79113e25430$__90633f0b10a090602401602060405180830381865af415801561296c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612990919061532f565b905061299d828286613bb6565b600382015460405163a71bfbb760e01b81526001600160a01b039091169063a71bfbb7906129d19088908890600401615258565b5f604051808303815f87803b1580156129e8575f80fd5b505af11580156129fa573d5f803e3d5ffd5b5050604080516001600160601b03808a168252851660208201526001600160a01b038816918101919091527f7a2e316a9c20094b9155914cb3caab21339f9fc6d45d341144e1c25011031328925060600190506128e4565b6001546001600160a01b03166001600160a01b031663120726c36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a99573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612abd91906152e7565b6001600160a01b0316336001600160a01b031614612aef5760405162f0630960e01b8152336004820152602401610940565b50505050565b612afe33610844565b612b066125e4565b6001600160a01b0316336001600160a01b031614612b395760405163086391f760e31b8152336004820152602401610940565b5f612b42613950565b6003810154600480830154604051630345861d60e01b81529394505f9384936001600160a01b031692630345861d92612b8f92600160a01b9091046001600160601b031691899101615258565b60408051808303815f875af1158015612baa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bce9190615290565b600485015460408051600160a01b9092046001600160601b031682526001600160a01b03888116602084015284169082015264ffffffffff8216606082015291935091507f089233199b2878dc789e4ec6789758b5d04a0df1cd1e2f75b8e1077b0ed7806b90608001610909565b612c44614ba3565b610b8f613ff9565b612c5533610844565b612c5d6125e4565b6001600160a01b0316336001600160a01b031614612c905760405163086391f760e31b8152336004820152602401610940565b5f612c99613950565b6003810154600480830154604051635ecf260f60e01b8152600160a01b9091046001600160601b03169181019190915264ffffffffff851660248201529192505f9182916001600160a01b031690635ecf260f9060440160408051808303815f875af1158015612d0b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d2f91906155a1565b600485015460408051600160a01b9092046001600160601b0316825264ffffffffff8881166020840152848116918301919091528216606082015291935091507f4de81d4f6acfa293451d20e78b7ce05c2e9f676381b7e41b986c75e7ce10491c90608001610909565b5f80516020615981833981519152546001600160a01b031690565b612dbd33610844565b612dc56125e4565b6001600160a01b0316336001600160a01b031614610fed5760405163086391f760e31b8152336004820152602401610940565b5f612e01613950565b546001600160a01b0316919050565b612e1933610844565b612e216125e4565b6001600160a01b0316336001600160a01b031614612e545760405163086391f760e31b8152336004820152602401610940565b5f612e5d613950565b60028101549091506001600160a01b031673__$f048dbd5170c0ac319fa0222065b281d84$__63cf7601bf612e9a6001546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260ff86166024820152604401602060405180830381865af4158015612ee5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f0991906152e7565b6002830180546001600160a01b0319166001600160a01b039283169081179091556040805191825260ff86166020830152918316918101919091527f0d3c2937ad932ccd841592977cdeb6dabbfb6fc4df9d7569f35a84f0864ac3c5906060016113b0565b5f612f7833610844565b83612f8481601f610853565b6112568585856140dd565b5f612f9933610844565b5f612fa2613950565b600381015460405163d44f8a4b60e01b81526001600160601b0380891660048301526001600160a01b038881166024840152908716604483015292935091169063d44f8a4b906064016020604051808303815f875af1158015613007573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061302b919061532f565b91507f7e242460dd6c92d78287e1000e16b4bc99b2e4b3c6377c63c83dd83845302ec48585858560405161306294939291906155f4565b60405180910390a1509392505050565b5f61307c33610844565b8261308881601f610853565b336130948585836140dd565b50505092915050565b5f6130a733610844565b816130b381601e610d60565b5f6130bc613950565b9050806003015f9054906101000a90046001600160a01b03166001600160a01b0316630ad044ce8560018073__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af415801561312e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613152919061532f565b60405160e086901b6001600160e01b03191681526001600160601b039485166004820152921515602484015290151560448301529091166064820152608401612322565b5f6131a033610844565b826131ac81601f610853565b5f613227856131c36001546001600160a01b031690565b6001600160a01b031663fff74f6c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131fe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613222919061532f565b614251565b15613264576132346125e4565b9050336001600160a01b0382161461325f57604051631928390360e21b815260040160405180910390fd5b6133de565b60405163f2c821f760e01b81526001600160601b038616600482015273__$dacf551d137a232f87fa09e79113e25430$__9063f2c821f790602401602060405180830381865af41580156132ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132de9190615391565b15613396576001546001600160a01b0316604051631c5da14d60e11b81526001600160601b03871660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa15801561333c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061336091906152e7565b9050336001600160a01b0382161461325f57604051635520388f60e01b81526001600160601b0386166004820152602401610940565b60405162461bcd60e51b815260206004820181905260248201527f43726f73732d636861696e20746172676574206e6f7420737570706f727465646044820152606401610940565b6133e98585836142dc565b95945050505050565b5f6133fc33610844565b5f613405613950565b600381015460405163ea48ce9b60e01b81526001600160601b0380891660048301526001600160a01b038881166024840152908716604483015292935091169063ea48ce9b906064016020604051808303815f875af115801561346a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061348e919061532f565b91507f4bfa3a293bec95a822b40b97aefb460cdc94363179f8636f068f2a569b0790678585858560405161306294939291906155f4565b5f6134cf33610844565b836134db81601f610853565b6134f1856131c36001546001600160a01b031690565b1561352157604051632778739960e11b81526001600160601b038616600482015260016024820152604401610940565b5f6135346001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03881660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015613581573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135a591906152e7565b90506135b28686836142dc565b9250505b509392505050565b5f805160206159818339815191525f806135f66135d9612d99565b87306135e860045f8a8c615628565b6135f19161564f565b61441b565b91509150816136b45763ffffffff81161561369157825460ff60a01b1916600160a01b178355613624612d99565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b815260040161365393929190615687565b5f604051808303815f87803b15801561366a575f80fd5b505af115801561367c573d5f803e3d5ffd5b5050845460ff60a01b19168555506136b49050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610940565b505050505050565b5f6136c5613950565b905060ff8316601e03613774576003810154604051634f9c1c0960e01b81526001600160601b03861660048201526001600160a01b0390911690634f9c1c0990602401602060405180830381865afa158015613723573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137479190615391565b61376f57604051632ab4595b60e11b81526001600160601b0385166004820152602401610940565b61388e565b60ff8316601f0361388e57806003015f9054906101000a90046001600160a01b03166001600160a01b0316633a208dc76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137f591906152e7565b604051634f9c1c0960e01b81526001600160601b03861660048201526001600160a01b039190911690634f9c1c0990602401602060405180830381865afa158015613842573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138669190615391565b61388e576040516396cff01560e01b81526001600160601b0385166004820152602401610940565b8115612aef575f6138a76001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03871660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156138f4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061391891906152e7565b9050336001600160a01b0382161461394957848133604051630807d41d60e41b8152600401610940939291906152bd565b5050505050565b7fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f0090565b5f805f8051602061596183398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af41580156139e0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a049190615391565b15613a305780546040516301ab8b6760e21b81526001600160601b039091166004820152602401610940565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa158015613a82573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613aa69190615391565b613ace5760405163b9304b0d60e01b81526001600160a01b0384166004820152602401610940565b6001546001600160a01b0316604051632f2a35f760e11b81526001600160a01b0385811660048301529190911690635e546bee90602401602060405180830381865afa158015613b20573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b44919061532f565b81546bffffffffffffffffffffffff19166001600160601b039190911690811782557f88857b75cbef7f257c9d5a473e28aaf6a91cc28f717f60f2cda3bcf5623d7b5490613b906125e4565b604051613b9e929190615258565b60405180910390a1546001600160601b031692915050565b6003830154604051635809c85d60e01b81526001600160a01b0390911690635809c85d90613bea9085908590600401615258565b6040805180830381865afa158015613c04573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c2891906156c6565b6020015160405163790a38ad60e01b815264ffffffffff909116600482015273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063790a38ad90602401602060405180830381865af4158015613c81573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ca59190615391565b156127b3576003830154604051631170b20360e11b81526001600160a01b03909116906322e1640690613cde9085908590600401615258565b5f604051808303815f87803b158015613cf5575f80fd5b505af115801561180f573d5f803e3d5ffd5b613d0f614523565b60405163502ec37160e01b815260040160405180910390fd5b613d30614523565b5f805f83806020019051810190613d479190615724565b91945092509050825f613d58613950565b9050816001600160a01b031663fff74f6c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613dba919061532f565b600480830180546001600160601b0393909316600160a01b026001600160a01b039384161790556003830180549286166001600160a01b0319939093168317905560408051633148a11d60e11b81529051636291423a928281019260209291908290030181865afa158015613e31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e5591906152e7565b600482810180546001600160a01b03199081166001600160a01b0394851617909155835416868316178355604080516307158bc560e51b81529051613f879386169263e2b178a0928082019260209290918290030181865afa158015613ebd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ee191906152e7565b83846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f42919061532f565b6040805180820190915260078152665374616b696e6760c81b602082015260035f8d60405180602001604052805f81525060405180602001604052805f81525061456e565b613f908161464a565b61180f63667de56960e01b6147e6565b5f8051602061598183398151915280546001600160a01b0319166001600160a01b03831690811782556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad90602001611e98565b614001614ba3565b5f7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f0090506040518060600160405280825f01805461403e9061534a565b80601f016020809104026020016040519081016040528092919081815260200182805461406a9061534a565b80156140b55780601f1061408c576101008083540402835291602001916140b5565b820191905f5260205f20905b81548152906001019060200180831161409857829003601f168201915b505050505081526020015f6001600160a01b03168152602001826002018054610cc99061534a565b5f806140e7613950565b600381015460405163de0eb85f60e01b81526001600160601b038089166004830152871660248201529192506001600160a01b03169063de0eb85f906044016020604051808303815f875af1158015614142573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614166919061532f565b6040516330b8415f60e01b81526001600160601b038616600482015290925073__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af41580156141bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141e39190615391565b156135b657600281015460405163f71c4cef60e01b81526001600160a01b039091169063f71c4cef9061421c9087908790600401615258565b5f604051808303815f87803b158015614233575f80fd5b505af1158015614245573d5f803e3d5ffd5b50505050509392505050565b60405163c4cade9d60e01b81526001600160601b038084166004830152821660248201525f9073__$94a2c899be079b00d952d0d84fffaa5c34$__9063c4cade9d90604401602060405180830381865af41580156142b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142d59190615391565b9392505050565b5f806142e6613950565b600381015460405163e8ce883d60e01b81526001600160601b038089166004830152871660248201529192506001600160a01b03169063e8ce883d906044016020604051808303815f875af1158015614341573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614365919061532f565b6040516330b8415f60e01b81526001600160601b038616600482015290925073__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af41580156143be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143e29190615391565b156135b6576002810154604051630cb9145560e41b81526001600160a01b039091169063cb9145509061421c9087908790600401615258565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516144899190615763565b5f60405180830381855afa9150503d805f81146144c1576040519150601f19603f3d011682016040523d82523d5f602084013e6144c6565b606091505b509150915081156145185760408151106144f857808060200190518101906144ee9190615779565b9094509250614518565b602081511061451857808060200190518101906145159190615391565b93505b505094509492505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661456c57604051631afcd79f60e31b815260040160405180910390fd5b565b614576614523565b85515f036145975760405163591eebf360e11b815260040160405180910390fd5b6145a689898988888888614819565b7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f00806145d288826157ef565b5060018101805460ff1916861515179055600281016145f183826157ef565b506145fc600b614960565b6003820180546001600160a01b0319166001600160a01b039290921691909117905561462e634a531f3360e01b6147e6565b61463e6306e9e5ff60e31b6147e6565b50505050505050505050565b600381015460048083015460405163153d412560e31b8152600160a01b9091046001600160601b0316918101919091525f916001600160a01b03169063a9ea09289060240161012060405180830381865afa1580156146ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906146cf91906158a9565b604080820151905163790a38ad60e01b815264ffffffffff909116600482015290915073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063790a38ad90602401602060405180830381865af415801561472c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906147509190615391565b156147885760048281015460405163686c563560e11b8152600160a01b9091046001600160601b031691810191909152602401610940565b7fc849e103742be0a3f6a0ce76fbdbf4c40caa5cd6eb6bdee9c12c925cff885fa58260040160149054906101000a90046001600160601b03168260c001518360a001518460e001518560800151604051611e98959493929190615436565b6147ee614523565b614816816001600160e01b0319165f908152602081905260409020805460ff19166001179055565b50565b614821614523565b604051632330f24760e01b81526001600160a01b038816600482015273__$fb599632d08395912d9d70eb2f0f93b5e2$__90632330f24790602401602060405180830381865af4158015614877573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061489b9190615391565b6148c35760405163cf6935e560e01b81526001600160a01b0388166004820152602401610940565b6148cc876149f7565b6148d68683614a08565b5f7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b8615150217815590506001810161494583826157ef565b50614956634a531f3360e01b6147e6565b5050505050505050565b5f6149736001546001600160a01b031690565b6001600160a01b031663d39e60438361498a6124d3565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa1580156149cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906149f191906152e7565b92915050565b6149ff614523565b61481681614a7e565b614a10614523565b614a18614a8f565b614a2182614ad7565b6001600160a01b038116614a485760405163f17ef42d60e01b815260040160405180910390fd5b5f8051602061596183398151915280546001600160601b0316600160601b6001600160a01b039093169290920291909117905550565b614a86614523565b61481681613fa0565b614a97614523565b61456c6301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b614adf614523565b604051633334d16b60e01b81526001600160a01b038216600482015273__$fb599632d08395912d9d70eb2f0f93b5e2$__90633334d16b90602401602060405180830381865af4158015614b35573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614b599190615391565b614b815760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610940565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6040518060600160405280606081526020015f6001600160a01b03168152602001606081525090565b5f60208284031215614bdc575f80fd5b81356001600160e01b0319811681146142d5575f80fd5b6001600160601b0381168114614816575f80fd5b8035614c1281614bf3565b919050565b6001600160a01b0381168114614816575f80fd5b8035614c1281614c17565b5f8060408385031215614c47575f80fd5b8235614c5281614bf3565b91506020830135614c6281614c17565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081526001600160601b0382511660208201526001600160601b03602083015116604082015260ff60408301511660608201525f6060830151614ce3608084018215159052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e080840152614d27610100840182614c6d565b949350505050565b5f60208284031215614d3f575f80fd5b81356142d581614bf3565b602081525f6142d56020830184614c6d565b5f805f60608486031215614d6e575f80fd5b8335614d7981614bf3565b92506020840135614d8981614bf3565b91506040840135614d9981614c17565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b0381118282101715614ddb57614ddb614da4565b60405290565b60405160e081016001600160401b0381118282101715614ddb57614ddb614da4565b604051601f8201601f191681016001600160401b0381118282101715614e2b57614e2b614da4565b604052919050565b5f6001600160401b03821115614e4b57614e4b614da4565b50601f01601f191660200190565b5f82601f830112614e68575f80fd5b8135614e7b614e7682614e33565b614e03565b818152846020838601011115614e8f575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215614ebb575f80fd5b81356001600160401b03811115614ed0575f80fd5b614d2784828501614e59565b5f8060408385031215614eed575f80fd5b8235614ef881614c17565b91506020830135614c6281614bf3565b60ff81168114614816575f80fd5b8035614c1281614f08565b64ffffffffff81168114614816575f80fd5b8035614c1281614f21565b5f805f8060808587031215614f51575f80fd5b8435614f5c81614bf3565b93506020850135614f6c81614f08565b92506040850135614f7c81614f21565b91506060850135614f8c81614c17565b939692955090935050565b5f8060408385031215614fa8575f80fd5b8235614fb381614c17565b915060208301356001600160401b03811115614fcd575f80fd5b614fd985828601614e59565b9150509250929050565b5f8060408385031215614ff4575f80fd5b8235614ef881614bf3565b5f8060408385031215615010575f80fd5b823561501b81614bf3565b91506020830135614c6281614f21565b5f6020828403121561503b575f80fd5b81356142d581614c17565b602081525f8251606060208401526150616080840182614c6d565b60208501516001600160a01b0316604085810191909152850151848203601f190160608601529091506133e98282614c6d565b5f805f606084860312156150a6575f80fd5b83356150b181614bf3565b925060208401356150c181614c17565b91506040840135614d9981614bf3565b5f805f606084860312156150e3575f80fd5b83356150ee81614bf3565b92506020840135614d8981614c17565b5f805f8060808587031215615111575f80fd5b843561511c81614c17565b9350602085013561512c81614c17565b9250604085013591506060850135614f8c81614c17565b5f60208284031215615153575f80fd5b81356142d581614f21565b5f80828403610140811215615171575f80fd5b833561517c81614bf3565b9250610120601f1982011215615190575f80fd5b50615199614db8565b6151a560208501614c07565b81526151b360408501614c07565b60208201526151c460608501614f33565b60408201526151d560808501614c07565b60608201526151e660a08501614c07565b60808201526151f760c08501614f33565b60a082015261520860e08501614f16565b60c082015261521a6101008501614c2b565b60e082015261522c6101208501614c07565b610100820152809150509250929050565b5f6020828403121561524d575f80fd5b81356142d581614f08565b6001600160601b039290921682526001600160a01b0316602082015260400190565b8051614c1281614c17565b8051614c1281614f21565b5f80604083850312156152a1575f80fd5b82516152ac81614c17565b6020840151909250614c6281614f21565b6001600160601b039390931683526001600160a01b03918216602084015216604082015260600190565b5f602082840312156152f7575f80fd5b81516142d581614c17565b5f60208284031215615312575f80fd5b815162ffffff811681146142d5575f80fd5b8051614c1281614bf3565b5f6020828403121561533f575f80fd5b81516142d581614bf3565b600181811c9082168061535e57607f821691505b60208210810361537c57634e487b7160e01b5f52602260045260245ffd5b50919050565b80518015158114614c12575f80fd5b5f602082840312156153a1575f80fd5b6142d582615382565b6001600160601b03948516815292841660208401526001600160a01b03919091166040830152909116606082015260800190565b5f602082840312156153ee575f80fd5b81516142d581614f21565b5f60208284031215615409575f80fd5b81516001600160401b03811681146142d5575f80fd5b5f6020828403121561542f575f80fd5b5051919050565b6001600160601b03958616815260ff94909416602085015264ffffffffff9290921660408401526001600160a01b03166060830152909116608082015260a00190565b8051614c1281614f08565b5f82601f830112615493575f80fd5b81516154a1614e7682614e33565b8181528460208386010111156154b5575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f602082840312156154e1575f80fd5b81516001600160401b038111156154f6575f80fd5b820160e08185031215615507575f80fd5b61550f614de1565b61551882615324565b815261552660208301615324565b602082015261553760408301615479565b604082015261554860608301615382565b60608201526155596080830161527a565b608082015261556a60a0830161527a565b60a082015260c08201516001600160401b03811115615587575f80fd5b61559386828501615484565b60c083015250949350505050565b5f80604083850312156155b2575f80fd5b82516152ac81614f21565b5f80604083850312156155ce575f80fd5b82516152ac81614bf3565b5f602082840312156155e9575f80fd5b81516142d581614f08565b6001600160601b0394851681526001600160a01b039390931660208401529083166040830152909116606082015260800190565b5f8085851115615636575f80fd5b83861115615642575f80fd5b5050820193919092039150565b80356001600160e01b03198116906004841015615680576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f60408284031280156156d7575f80fd5b50604080519081016001600160401b03811182821017156156fa576156fa614da4565b604052825161570881614c17565b8152602083015161571881614f21565b60208201529392505050565b5f805f60608486031215615736575f80fd5b835161574181614c17565b602085015190935061575281614c17565b6040850151909250614d9981614c17565b5f82518060208501845e5f920191825250919050565b5f806040838503121561578a575f80fd5b61579383615382565b9150602083015163ffffffff81168114614c62575f80fd5b601f8211156127b357805f5260205f20601f840160051c810160208510156157d05750805b601f840160051c820191505b81811015613949575f81556001016157dc565b81516001600160401b0381111561580857615808614da4565b61581c81615816845461534a565b846157ab565b6020601f82116001811461584e575f83156158375750848201515b5f19600385901b1c1916600184901b178455613949565b5f84815260208120601f198516915b8281101561587d578785015182556020948501946001909201910161585d565b508482101561589a57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f6101208284031280156158bb575f80fd5b506158c4614db8565b6158cd83615324565b81526158db60208401615324565b60208201526158ec60408401615285565b60408201526158fd60608401615324565b606082015261590e60808401615324565b608082015261591f60a08401615285565b60a082015261593060c08401615479565b60c082015261594160e0840161527a565b60e08201526159536101008401615324565b610100820152939250505056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a2646970667358221220b0e35fe9c25192092bd35f1269d644ab73840fd64ec836bc117a3ddd0198720764736f6c634300081a0033",
2523
+ "deployedBytecode": "0x608060405234801561000f575f80fd5b506004361061037d575f3560e01c80636c1e9dff116101d4578063b283765d11610109578063d43a2623116100a9578063e8ce883d11610079578063e8ce883d146107df578063ea15869f146107f2578063ea48ce9b14610819578063ec0407d91461082c575f80fd5b8063d43a262314610793578063d44f8a4b146107a6578063de0eb85f146107b9578063dea4ccf2146107cc575f80fd5b8063bf7e214f116100e4578063bf7e214f1461075d578063c813d79114610765578063caed989714610778578063cdf73d5014610780575f80fd5b8063b283765d1461072f578063b423086c14610742578063b47f48881461074a575f80fd5b80638fb3603711610174578063a6bc7cb81161014f578063a6bc7cb8146106e2578063a71bfbb7146106f5578063ad12ad6014610708578063ada9652e1461071b575f80fd5b80638fb360371461069957806390edbd35146106ba578063958697a0146106cf575f80fd5b806376b707b7116101af57806376b707b71461065c5780637a9e5e4b1461067657806386c7575414610689578063893d20e814610691575f80fd5b80636c1e9dff146106235780636d387fe414610636578063719f761a14610649575f80fd5b806322f3e2d4116102b55780635741e5e9116102555780635fd1efec116102255780635fd1efec146105c5578063614d08f8146105d85780636291423a146105fe578063644c45e014610606575f80fd5b80635741e5e9146105665780635ab1bd531461056e5780635cbb7d851461057f5780635ecf260f146105b2575f80fd5b8063419197fe11610290578063419197fe1461052557806343d752d31461053857806344dcf7301461054057806349bb9e4b14610553575f80fd5b806322f3e2d4146104f75780632391b052146104ff578063329d6e7414610512575f80fd5b806313299604116103205780631eff4b22116102fb5780631eff4b22146104ad57806321df0da7146104d457806322366844146104dc57806322e16406146104e4575f80fd5b80631329960414610470578063138461e01461049057806317d7de7c14610498575f80fd5b806309980bfd1161035b57806309980bfd1461040c5780630d8e6e2c146104145780630fec111c1461043057806310a0638a14610445575f80fd5b806301ffc9a7146103815780630345861d146103c2578063062c9cdf146103d7575b5f80fd5b6103ad61038f366004614bcc565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6103d56103d0366004614c36565b61083f565b005b6103fe7fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f0081565b6040519081526020016103b9565b6103d5610917565b61041c610b0d565b60405162ffffff90911681526020016103b9565b610438610b94565b6040516103b99190614c9b565b610458610453366004614d2f565b610d4e565b6040516001600160601b0390911681526020016103b9565b610478610ddb565b6040516001600160a01b0390911681526020016103b9565b610458610e43565b6104a0610e4d565b6040516103b99190614d4a565b6103fe7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b610478610e5d565b6103ad610ea1565b6103d56104f2366004614c36565b610f97565b6103ad610ff1565b61045861050d366004614d5c565b611068565b6103d5610520366004614eab565b61125f565b6103d5610533366004614edc565b6113bd565b6104786115bd565b6103d561054e366004614f3e565b6115d8565b6103d5610561366004614f97565b61170a565b6103ad611818565b6001546001600160a01b0316610478565b61059261058d366004614fe3565b6118ce565b604080516001600160601b039384168152929091166020830152016103b9565b6103d56105c0366004614fff565b611bf0565b6103d56105d336600461502b565b611ce4565b6104a0604051806040016040528060078152602001665374616b696e6760c81b81525081565b610478611ea4565b5f80516020615961833981519152546001600160601b0316610458565b610458610631366004614fe3565b611ebf565b6103d5610644366004614fe3565b61215b565b610458610657366004614d2f565b612236565b6106646124d3565b60405160ff90911681526020016103b9565b6103d561068436600461502b565b612547565b6104786125c9565b6104786125e4565b6106a1612715565b6040516001600160e01b031990911681526020016103b9565b6106c261274a565b6040516103b99190615046565b6103d56106dd366004615094565b61276f565b6103d56106f03660046150d1565b6127b8565b6103d5610703366004614c36565b6128f3565b6103d56107163660046150fe565b612a52565b6103fe5f8051602061596183398151915281565b6103d561073d36600461502b565b612af5565b6106c2612c3c565b6103d5610758366004615143565b612c4c565b610478612d99565b6103d561077336600461515e565b612db4565b610478612df8565b6103d561078e36600461523d565b612e10565b6104586107a1366004614d5c565b612f6e565b6104586107b4366004615094565b612f8f565b6104586107c7366004614fe3565b613072565b6104586107da366004614d2f565b61309d565b6104586107ed366004614fe3565b613196565b6103fe7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f0081565b610458610827366004615094565b6133f2565b61045861083a366004614d5c565b6134c5565b61084b335b5f366135be565b8161085981601f5b5f6136bc565b5f610862613950565b60030154604051630345861d60e01b81526001600160a01b0390911690630345861d906108959087908790600401615258565b60408051808303815f875af11580156108b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d49190615290565b5090507ec60e9fa0b11ba4353f1efa957e6380e75820bcf5afd13713f0c7c268b18a5b848483604051610909939291906152bd565b60405180910390a150505050565b6001546001600160a01b0316331461094957604051632a6e1a8960e01b81523360048201526024015b60405180910390fd5b5f610952613950565b90505f61095d613950565b546040805163b201f70960e01b815290516001600160a01b039092169163b201f709916004808201926020929091908290030181865afa1580156109a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c791906152e7565b905073__$51089c37ca0df1177a910c640c8c5f8165$__6350c6470d6109f56001546001600160a01b031690565b3084610a096001546001600160a01b031690565b6001600160a01b031663e2b178a06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6891906152e7565b60405160e086901b6001600160e01b03191681526001600160a01b039485166004820152928416602484015290831660448301529091166064820152608401602060405180830381865af4158015610ac2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae691906152e7565b60019290920180546001600160a01b0319166001600160a01b039093169290921790915550565b604051632efe011360e01b8152600360048201525f60248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af4158015610b6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8f9190615302565b905090565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820152907f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610c40573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c64919061532f565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a001610cac6125e4565b6001600160a01b03168152602001826001018054610cc99061534a565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf59061534a565b8015610d405780601f10610d1757610100808354040283529160200191610d40565b820191905f5260205f20905b815481529060010190602001808311610d2357829003601f168201915b505050505081525091505090565b5f610d5833610844565b81610d6781601e5b60016136bc565b5f610d70613950565b600381015460405163085031c560e11b81526001600160601b03871660048201529192506001600160a01b0316906310a0638a906024015f604051808303815f87803b158015610dbe575f80fd5b505af1158015610dd0573d5f803e3d5ffd5b505050505050919050565b5f610de46115bd565b6001600160a01b031663132996046040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e1f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8f91906152e7565b5f610b8f30613974565b6060610e5761274a565b51919050565b5f610e666115bd565b6001600160a01b03166382bfefc86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e1f573d5f803e3d5ffd5b5f610eb46001546001600160a01b031690565b604051632f2a35f760e11b81523060048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015610ef8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1c919061532f565b6040516330b8415f60e01b81526001600160601b03909116600482015273__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015610f73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8f9190615391565b610fa033610844565b610fa86125e4565b6001600160a01b0316336001600160a01b031614610fdb5760405163086391f760e31b8152336004820152602401610940565b610fed610fe6613950565b8383613bb6565b5050565b5f610ffa612d99565b60405163a166aa8960e01b81523060048201526001600160a01b03919091169063a166aa8990602401602060405180830381865afa15801561103e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110629190615391565b15905090565b5f61107233610844565b8361107e81601f610853565b5f611087613950565b6002810154604051627c1b7d60e71b81529192506001600160a01b031690633e0dbe80906110bb9089908890600401615258565b6020604051808303815f875af11580156110d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110fb919061532f565b60038201546040516351486e7d60e01b81529194506001600160a01b0316906351486e7d906111349086908a9089908b906004016153aa565b6020604051808303815f875af1158015611150573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061117491906153de565b506040516330b8415f60e01b81526001600160601b038616600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af41580156111cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ef9190615391565b1561125657600281015460405163f71c4cef60e01b81526001600160a01b039091169063f71c4cef906112289088908890600401615258565b5f604051808303815f87803b15801561123f575f80fd5b505af1158015611251573d5f803e3d5ffd5b505050505b50509392505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c611281610b0d565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af41580156112bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e391906153f9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b900460ff1680611328575080546001600160401b03808416911610155b156113465760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561137083613d07565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a1505050565b6113c633610844565b6113ce6125e4565b6001600160a01b0316336001600160a01b0316146114015760405163086391f760e31b8152336004820152602401610940565b5f61140a613950565b6001810154604051636eb1769f60e11b81523060048201526001600160a01b0391821660248201529192505f9173__$3bac17678db7ae928afa209f2f44deec9c$__91634c41dd96919087169063dd62ed3e90604401602060405180830381865afa15801561147b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061149f919061541f565b6040518263ffffffff1660e01b81526004016114bd91815260200190565b602060405180830381865af41580156114d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114fc919061532f565b60028301546040516320c8cbff60e11b81526001600160a01b0387811660048301526001600160601b038716602483015292935091169063419197fe906044015f604051808303815f87803b158015611553575f80fd5b505af1158015611565573d5f803e3d5ffd5b5050604080516001600160a01b03881681526001600160601b0380881660208301528516918101919091527fd04c7a08e8de83264477350e162e0d3e26406e3eaf786d06d976ea7f229d5c4e92506060019050610909565b5f6115c6613950565b600101546001600160a01b0316919050565b6115e133610844565b6115e9613950565b60030154604051639a148b7f60e01b81526001600160601b038616600482015260ff8516602482015264ffffffffff841660448201526001600160a01b03838116606483015290911690639a148b7f906084015f604051808303815f87803b158015611653575f80fd5b505af1158015611665573d5f803e3d5ffd5b505050507fc849e103742be0a3f6a0ce76fbdbf4c40caa5cd6eb6bdee9c12c925cff885fa58484848473__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af41580156116d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f9919061532f565b604051610909959493929190615436565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561174e5750825b90505f826001600160401b031660011480156117695750303b155b905081158015611777575080155b156117955760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156117bf57845460ff60401b1916600160401b1785555b6117c98787613d28565b831561180f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b5f611821610ea1565b156118a5576001546001600160a01b03166040516308b09a5f60e41b81523060048201526001600160a01b039190911690638b09a5f0906024015f60405180830381865afa158015611875573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261189c91908101906154d1565b60600151905090565b507fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f015460ff1690565b5f806118d933610844565b836118e581601e610d60565b836118f181601f610853565b5f6118fa613950565b9050806003015f9054906101000a90046001600160a01b03166001600160a01b0316630ad044ce8860018073__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af415801561196c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611990919061532f565b60405160e086901b6001600160e01b03191681526001600160601b0394851660048201529215156024840152901515604483015290911660648201526084016020604051808303815f875af11580156119eb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a0f919061532f565b93505f611a246001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038a1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611a71573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a9591906152e7565b6002830154604051627c1b7d60e71b81529192506001600160a01b031690633e0dbe8090611ac9908a908590600401615258565b6020604051808303815f875af1158015611ae5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b09919061532f565b60038301546040516351486e7d60e01b81529197506001600160a01b0316906351486e7d90611b429089908b9086908b906004016153aa565b6020604051808303815f875af1158015611b5e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b8291906153de565b50604080516001600160601b0388811682528981166020830152878116828401526001600160a01b03841660608301528a16608082015290517fb83b505434e350ef4d02aa4d11d8c3bf9903b943ecba24fffa1061de4a109e199181900360a00190a1505050509250929050565b611bf933610844565b81611c0581601f610853565b5f611c0e613950565b60030154604051635ecf260f60e01b81526001600160601b038616600482015264ffffffffff851660248201526001600160a01b0390911690635ecf260f9060440160408051808303815f875af1158015611c6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c8f91906155a1565b50604080516001600160601b038716815264ffffffffff80871660208301528316918101919091529091507f30c0fd8161ee020f45ae168e89fb340e68c952a10aad14f7a895dc9393818e4690606001610909565b611ced33610844565b611cf56125e4565b6001600160a01b0316336001600160a01b031614611d285760405163086391f760e31b8152336004820152602401610940565b306001600160a01b0316816001600160a01b0316637b1391a66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d6e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d9291906152e7565b6001600160a01b031614611e2557806001600160a01b0316637b1391a66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ddc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e0091906152e7565b604051631641c88f60e11b81526001600160a01b039091166004820152602401610940565b5f611e2e613950565b600401546001600160a01b0316905081611e46613950565b60040180546001600160a01b0319166001600160a01b0392831617905560408051848316815291831660208301527f8414c1d6352c513484c229579bca3842a94d9c46e1dd28ec9b03c9b3d5a4ae4291015b60405180910390a15050565b5f611ead613950565b600401546001600160a01b0316919050565b5f611ec933610844565b82611ed581601e610d60565b5f611ede613950565b9050806003015f9054906101000a90046001600160a01b03166001600160a01b03166359386f8e8660018073__$71e292c09eace9601b3e21e68a1278917a$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af4158015611f50573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f7491906153de565b6040516001600160e01b031960e087901b1681526001600160601b0394851660048201529215156024840152901515604483015264ffffffffff166064820152908716608482015260a4015f604051808303815f87803b158015611fd6575f80fd5b505af1158015611fe8573d5f803e3d5ffd5b50506040516330b8415f60e01b81526001600160601b038716600482015273__$3bac17678db7ae928afa209f2f44deec9c$__92506330b8415f9150602401602060405180830381865af4158015612042573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120669190615391565b15612153575f61207e6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03881660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156120cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120ef91906152e7565b600283015460405163f71c4cef60e01b81529192506001600160a01b03169063f71c4cef906121249088908590600401615258565b5f604051808303815f87803b15801561213b575f80fd5b505af115801561214d573d5f803e3d5ffd5b50505050505b505092915050565b61216433610844565b8161217081601f610853565b612178613950565b60030154604051631b4e1ff960e21b81526001600160601b038086166004830152841660248201526001600160a01b0390911690636d387fe49060440160408051808303815f875af11580156121d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121f491906155bd565b5050604080516001600160601b038086168252841660208201527ff595ceebb66e043dea95b0b28e85ab6e8200e13aca74757365131310dc01793c91016113b0565b5f61224033610844565b8161224c81601e610d60565b5f612255613950565b9050806003015f9054906101000a90046001600160a01b03166001600160a01b0316634a923f0c85600173__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af41580156122c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122ea919061532f565b60405160e085901b6001600160e01b03191681526001600160601b039384166004820152911515602483015290911660448201526064015b6020604051808303815f875af115801561233e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612362919061532f565b6040516330b8415f60e01b81526001600160601b038216600482015290935073__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af41580156123bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123df9190615391565b156124cc575f6123f76001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03871660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612444573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061246891906152e7565b6002830154604051630cb9145560e41b81529192506001600160a01b03169063cb9145509061249d9087908590600401615258565b5f604051808303815f87803b1580156124b4575f80fd5b505af11580156124c6573d5f803e3d5ffd5b50505050505b5050919050565b604051632392b61b60e21b8152600360048201525f9073__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af4158015612523573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8f91906155d9565b33612550612d99565b6001600160a01b0316816001600160a01b03161461258b5760405162d1953b60e31b81526001600160a01b0382166004820152602401610940565b816001600160a01b03163b5f036125c0576040516361798f2f60e11b81526001600160a01b0383166004820152602401610940565b610fed82613fa0565b5f6125d2613950565b600301546001600160a01b0316919050565b5f805f8051602061596183398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015612650573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126749190615391565b156126ff576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156126d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126f991906152e7565b91505090565b54600160601b90046001600160a01b0316919050565b5f8051602061598183398151915280545f9190600160a01b900460ff1661273c575f6126f9565b638fb3603760e01b91505090565b612752614ba3565b61275a610ea1565b1561276757610b8f613ff9565b610b8f612c3c565b61277833610844565b6127806125e4565b6001600160a01b0316336001600160a01b0316146127b35760405163086391f760e31b8152336004820152602401610940565b505050565b6127c133610844565b6127c96125e4565b6001600160a01b0316336001600160a01b0316146127fc5760405163086391f760e31b8152336004820152602401610940565b5f80612806613950565b600301546040516314d78f9760e31b81526001600160a01b039091169063a6bc7cb89061283b908890889088906004016152bd565b60408051808303815f875af1158015612856573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061287a9190615290565b604080516001600160601b03891681526001600160a01b03808916602083015280881692820192909252908316606082015264ffffffffff8216608082015291935091507f519b91b3c7a09332814e208f4ff950747fd39d6aa537517322893c161f6ac9459060a0015b60405180910390a15050505050565b6128fc33610844565b8161290881601f610853565b5f612911613950565b6040516301f8588560e51b81526001600160601b03861660048201529091505f9073__$dacf551d137a232f87fa09e79113e25430$__90633f0b10a090602401602060405180830381865af415801561296c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612990919061532f565b905061299d828286613bb6565b600382015460405163a71bfbb760e01b81526001600160a01b039091169063a71bfbb7906129d19088908890600401615258565b5f604051808303815f87803b1580156129e8575f80fd5b505af11580156129fa573d5f803e3d5ffd5b5050604080516001600160601b03808a168252851660208201526001600160a01b038816918101919091527f7a2e316a9c20094b9155914cb3caab21339f9fc6d45d341144e1c25011031328925060600190506128e4565b6001546001600160a01b03166001600160a01b031663120726c36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a99573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612abd91906152e7565b6001600160a01b0316336001600160a01b031614612aef5760405162f0630960e01b8152336004820152602401610940565b50505050565b612afe33610844565b612b066125e4565b6001600160a01b0316336001600160a01b031614612b395760405163086391f760e31b8152336004820152602401610940565b5f612b42613950565b6003810154600480830154604051630345861d60e01b81529394505f9384936001600160a01b031692630345861d92612b8f92600160a01b9091046001600160601b031691899101615258565b60408051808303815f875af1158015612baa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bce9190615290565b600485015460408051600160a01b9092046001600160601b031682526001600160a01b03888116602084015284169082015264ffffffffff8216606082015291935091507f089233199b2878dc789e4ec6789758b5d04a0df1cd1e2f75b8e1077b0ed7806b90608001610909565b612c44614ba3565b610b8f613ff9565b612c5533610844565b612c5d6125e4565b6001600160a01b0316336001600160a01b031614612c905760405163086391f760e31b8152336004820152602401610940565b5f612c99613950565b6003810154600480830154604051635ecf260f60e01b8152600160a01b9091046001600160601b03169181019190915264ffffffffff851660248201529192505f9182916001600160a01b031690635ecf260f9060440160408051808303815f875af1158015612d0b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d2f91906155a1565b600485015460408051600160a01b9092046001600160601b0316825264ffffffffff8881166020840152848116918301919091528216606082015291935091507f4de81d4f6acfa293451d20e78b7ce05c2e9f676381b7e41b986c75e7ce10491c90608001610909565b5f80516020615981833981519152546001600160a01b031690565b612dbd33610844565b612dc56125e4565b6001600160a01b0316336001600160a01b031614610fed5760405163086391f760e31b8152336004820152602401610940565b5f612e01613950565b546001600160a01b0316919050565b612e1933610844565b612e216125e4565b6001600160a01b0316336001600160a01b031614612e545760405163086391f760e31b8152336004820152602401610940565b5f612e5d613950565b60028101549091506001600160a01b031673__$f048dbd5170c0ac319fa0222065b281d84$__63cf7601bf612e9a6001546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260ff86166024820152604401602060405180830381865af4158015612ee5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f0991906152e7565b6002830180546001600160a01b0319166001600160a01b039283169081179091556040805191825260ff86166020830152918316918101919091527f0d3c2937ad932ccd841592977cdeb6dabbfb6fc4df9d7569f35a84f0864ac3c5906060016113b0565b5f612f7833610844565b83612f8481601f610853565b6112568585856140dd565b5f612f9933610844565b5f612fa2613950565b600381015460405163d44f8a4b60e01b81526001600160601b0380891660048301526001600160a01b038881166024840152908716604483015292935091169063d44f8a4b906064016020604051808303815f875af1158015613007573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061302b919061532f565b91507f7e242460dd6c92d78287e1000e16b4bc99b2e4b3c6377c63c83dd83845302ec48585858560405161306294939291906155f4565b60405180910390a1509392505050565b5f61307c33610844565b8261308881601f610853565b336130948585836140dd565b50505092915050565b5f6130a733610844565b816130b381601e610d60565b5f6130bc613950565b9050806003015f9054906101000a90046001600160a01b03166001600160a01b0316630ad044ce8560018073__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af415801561312e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613152919061532f565b60405160e086901b6001600160e01b03191681526001600160601b039485166004820152921515602484015290151560448301529091166064820152608401612322565b5f6131a033610844565b826131ac81601f610853565b5f613227856131c36001546001600160a01b031690565b6001600160a01b031663fff74f6c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131fe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613222919061532f565b614251565b15613264576132346125e4565b9050336001600160a01b0382161461325f57604051631928390360e21b815260040160405180910390fd5b6133de565b60405163f2c821f760e01b81526001600160601b038616600482015273__$dacf551d137a232f87fa09e79113e25430$__9063f2c821f790602401602060405180830381865af41580156132ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132de9190615391565b15613396576001546001600160a01b0316604051631c5da14d60e11b81526001600160601b03871660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa15801561333c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061336091906152e7565b9050336001600160a01b0382161461325f57604051635520388f60e01b81526001600160601b0386166004820152602401610940565b60405162461bcd60e51b815260206004820181905260248201527f43726f73732d636861696e20746172676574206e6f7420737570706f727465646044820152606401610940565b6133e98585836142dc565b95945050505050565b5f6133fc33610844565b5f613405613950565b600381015460405163ea48ce9b60e01b81526001600160601b0380891660048301526001600160a01b038881166024840152908716604483015292935091169063ea48ce9b906064016020604051808303815f875af115801561346a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061348e919061532f565b91507f4bfa3a293bec95a822b40b97aefb460cdc94363179f8636f068f2a569b0790678585858560405161306294939291906155f4565b5f6134cf33610844565b836134db81601f610853565b6134f1856131c36001546001600160a01b031690565b1561352157604051632778739960e11b81526001600160601b038616600482015260016024820152604401610940565b5f6135346001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03881660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015613581573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135a591906152e7565b90506135b28686836142dc565b9250505b509392505050565b5f805160206159818339815191525f806135f66135d9612d99565b87306135e860045f8a8c615628565b6135f19161564f565b61441b565b91509150816136b45763ffffffff81161561369157825460ff60a01b1916600160a01b178355613624612d99565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b815260040161365393929190615687565b5f604051808303815f87803b15801561366a575f80fd5b505af115801561367c573d5f803e3d5ffd5b5050845460ff60a01b19168555506136b49050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610940565b505050505050565b5f6136c5613950565b905060ff8316601e03613774576003810154604051634f9c1c0960e01b81526001600160601b03861660048201526001600160a01b0390911690634f9c1c0990602401602060405180830381865afa158015613723573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137479190615391565b61376f57604051632ab4595b60e11b81526001600160601b0385166004820152602401610940565b61388e565b60ff8316601f0361388e57806003015f9054906101000a90046001600160a01b03166001600160a01b0316633a208dc76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137f591906152e7565b604051634f9c1c0960e01b81526001600160601b03861660048201526001600160a01b039190911690634f9c1c0990602401602060405180830381865afa158015613842573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138669190615391565b61388e576040516396cff01560e01b81526001600160601b0385166004820152602401610940565b8115612aef575f6138a76001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03871660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156138f4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061391891906152e7565b9050336001600160a01b0382161461394957848133604051630807d41d60e41b8152600401610940939291906152bd565b5050505050565b7fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f0090565b5f805f8051602061596183398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af41580156139e0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a049190615391565b15613a305780546040516301ab8b6760e21b81526001600160601b039091166004820152602401610940565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa158015613a82573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613aa69190615391565b613ace5760405163b9304b0d60e01b81526001600160a01b0384166004820152602401610940565b6001546001600160a01b0316604051632f2a35f760e11b81526001600160a01b0385811660048301529190911690635e546bee90602401602060405180830381865afa158015613b20573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b44919061532f565b81546bffffffffffffffffffffffff19166001600160601b039190911690811782557f88857b75cbef7f257c9d5a473e28aaf6a91cc28f717f60f2cda3bcf5623d7b5490613b906125e4565b604051613b9e929190615258565b60405180910390a1546001600160601b031692915050565b6003830154604051635809c85d60e01b81526001600160a01b0390911690635809c85d90613bea9085908590600401615258565b6040805180830381865afa158015613c04573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c2891906156c6565b6020015160405163790a38ad60e01b815264ffffffffff909116600482015273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063790a38ad90602401602060405180830381865af4158015613c81573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ca59190615391565b156127b3576003830154604051631170b20360e11b81526001600160a01b03909116906322e1640690613cde9085908590600401615258565b5f604051808303815f87803b158015613cf5575f80fd5b505af115801561180f573d5f803e3d5ffd5b613d0f614523565b60405163502ec37160e01b815260040160405180910390fd5b613d30614523565b5f805f83806020019051810190613d479190615724565b91945092509050825f613d58613950565b9050816001600160a01b031663fff74f6c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613dba919061532f565b600480830180546001600160601b0393909316600160a01b026001600160a01b039384161790556003830180549286166001600160a01b0319939093168317905560408051633148a11d60e11b81529051636291423a928281019260209291908290030181865afa158015613e31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e5591906152e7565b600482810180546001600160a01b03199081166001600160a01b0394851617909155835416868316178355604080516307158bc560e51b81529051613f879386169263e2b178a0928082019260209290918290030181865afa158015613ebd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ee191906152e7565b83846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f42919061532f565b6040805180820190915260078152665374616b696e6760c81b602082015260035f8d60405180602001604052805f81525060405180602001604052805f81525061456e565b613f908161464a565b61180f63667de56960e01b6147e6565b5f8051602061598183398151915280546001600160a01b0319166001600160a01b03831690811782556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad90602001611e98565b614001614ba3565b5f7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f0090506040518060600160405280825f01805461403e9061534a565b80601f016020809104026020016040519081016040528092919081815260200182805461406a9061534a565b80156140b55780601f1061408c576101008083540402835291602001916140b5565b820191905f5260205f20905b81548152906001019060200180831161409857829003601f168201915b505050505081526020015f6001600160a01b03168152602001826002018054610cc99061534a565b5f806140e7613950565b600381015460405163de0eb85f60e01b81526001600160601b038089166004830152871660248201529192506001600160a01b03169063de0eb85f906044016020604051808303815f875af1158015614142573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614166919061532f565b6040516330b8415f60e01b81526001600160601b038616600482015290925073__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af41580156141bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141e39190615391565b156135b657600281015460405163f71c4cef60e01b81526001600160a01b039091169063f71c4cef9061421c9087908790600401615258565b5f604051808303815f87803b158015614233575f80fd5b505af1158015614245573d5f803e3d5ffd5b50505050509392505050565b60405163c4cade9d60e01b81526001600160601b038084166004830152821660248201525f9073__$94a2c899be079b00d952d0d84fffaa5c34$__9063c4cade9d90604401602060405180830381865af41580156142b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142d59190615391565b9392505050565b5f806142e6613950565b600381015460405163e8ce883d60e01b81526001600160601b038089166004830152871660248201529192506001600160a01b03169063e8ce883d906044016020604051808303815f875af1158015614341573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614365919061532f565b6040516330b8415f60e01b81526001600160601b038616600482015290925073__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af41580156143be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143e29190615391565b156135b6576002810154604051630cb9145560e41b81526001600160a01b039091169063cb9145509061421c9087908790600401615258565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516144899190615763565b5f60405180830381855afa9150503d805f81146144c1576040519150601f19603f3d011682016040523d82523d5f602084013e6144c6565b606091505b509150915081156145185760408151106144f857808060200190518101906144ee9190615779565b9094509250614518565b602081511061451857808060200190518101906145159190615391565b93505b505094509492505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661456c57604051631afcd79f60e31b815260040160405180910390fd5b565b614576614523565b85515f036145975760405163591eebf360e11b815260040160405180910390fd5b6145a689898988888888614819565b7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f00806145d288826157ef565b5060018101805460ff1916861515179055600281016145f183826157ef565b506145fc600b614960565b6003820180546001600160a01b0319166001600160a01b039290921691909117905561462e634a531f3360e01b6147e6565b61463e6306e9e5ff60e31b6147e6565b50505050505050505050565b600381015460048083015460405163153d412560e31b8152600160a01b9091046001600160601b0316918101919091525f916001600160a01b03169063a9ea09289060240161012060405180830381865afa1580156146ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906146cf91906158a9565b604080820151905163790a38ad60e01b815264ffffffffff909116600482015290915073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063790a38ad90602401602060405180830381865af415801561472c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906147509190615391565b156147885760048281015460405163686c563560e11b8152600160a01b9091046001600160601b031691810191909152602401610940565b7fc849e103742be0a3f6a0ce76fbdbf4c40caa5cd6eb6bdee9c12c925cff885fa58260040160149054906101000a90046001600160601b03168260c001518360a001518460e001518560800151604051611e98959493929190615436565b6147ee614523565b614816816001600160e01b0319165f908152602081905260409020805460ff19166001179055565b50565b614821614523565b604051632330f24760e01b81526001600160a01b038816600482015273__$fb599632d08395912d9d70eb2f0f93b5e2$__90632330f24790602401602060405180830381865af4158015614877573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061489b9190615391565b6148c35760405163cf6935e560e01b81526001600160a01b0388166004820152602401610940565b6148cc876149f7565b6148d68683614a08565b5f7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b8615150217815590506001810161494583826157ef565b50614956634a531f3360e01b6147e6565b5050505050505050565b5f6149736001546001600160a01b031690565b6001600160a01b031663d39e60438361498a6124d3565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa1580156149cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906149f191906152e7565b92915050565b6149ff614523565b61481681614a7e565b614a10614523565b614a18614a8f565b614a2182614ad7565b6001600160a01b038116614a485760405163f17ef42d60e01b815260040160405180910390fd5b5f8051602061596183398151915280546001600160601b0316600160601b6001600160a01b039093169290920291909117905550565b614a86614523565b61481681613fa0565b614a97614523565b61456c6301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b614adf614523565b604051633334d16b60e01b81526001600160a01b038216600482015273__$fb599632d08395912d9d70eb2f0f93b5e2$__90633334d16b90602401602060405180830381865af4158015614b35573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614b599190615391565b614b815760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610940565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6040518060600160405280606081526020015f6001600160a01b03168152602001606081525090565b5f60208284031215614bdc575f80fd5b81356001600160e01b0319811681146142d5575f80fd5b6001600160601b0381168114614816575f80fd5b8035614c1281614bf3565b919050565b6001600160a01b0381168114614816575f80fd5b8035614c1281614c17565b5f8060408385031215614c47575f80fd5b8235614c5281614bf3565b91506020830135614c6281614c17565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081526001600160601b0382511660208201526001600160601b03602083015116604082015260ff60408301511660608201525f6060830151614ce3608084018215159052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e080840152614d27610100840182614c6d565b949350505050565b5f60208284031215614d3f575f80fd5b81356142d581614bf3565b602081525f6142d56020830184614c6d565b5f805f60608486031215614d6e575f80fd5b8335614d7981614bf3565b92506020840135614d8981614bf3565b91506040840135614d9981614c17565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b0381118282101715614ddb57614ddb614da4565b60405290565b60405160e081016001600160401b0381118282101715614ddb57614ddb614da4565b604051601f8201601f191681016001600160401b0381118282101715614e2b57614e2b614da4565b604052919050565b5f6001600160401b03821115614e4b57614e4b614da4565b50601f01601f191660200190565b5f82601f830112614e68575f80fd5b8135614e7b614e7682614e33565b614e03565b818152846020838601011115614e8f575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215614ebb575f80fd5b81356001600160401b03811115614ed0575f80fd5b614d2784828501614e59565b5f8060408385031215614eed575f80fd5b8235614ef881614c17565b91506020830135614c6281614bf3565b60ff81168114614816575f80fd5b8035614c1281614f08565b64ffffffffff81168114614816575f80fd5b8035614c1281614f21565b5f805f8060808587031215614f51575f80fd5b8435614f5c81614bf3565b93506020850135614f6c81614f08565b92506040850135614f7c81614f21565b91506060850135614f8c81614c17565b939692955090935050565b5f8060408385031215614fa8575f80fd5b8235614fb381614c17565b915060208301356001600160401b03811115614fcd575f80fd5b614fd985828601614e59565b9150509250929050565b5f8060408385031215614ff4575f80fd5b8235614ef881614bf3565b5f8060408385031215615010575f80fd5b823561501b81614bf3565b91506020830135614c6281614f21565b5f6020828403121561503b575f80fd5b81356142d581614c17565b602081525f8251606060208401526150616080840182614c6d565b60208501516001600160a01b0316604085810191909152850151848203601f190160608601529091506133e98282614c6d565b5f805f606084860312156150a6575f80fd5b83356150b181614bf3565b925060208401356150c181614c17565b91506040840135614d9981614bf3565b5f805f606084860312156150e3575f80fd5b83356150ee81614bf3565b92506020840135614d8981614c17565b5f805f8060808587031215615111575f80fd5b843561511c81614c17565b9350602085013561512c81614c17565b9250604085013591506060850135614f8c81614c17565b5f60208284031215615153575f80fd5b81356142d581614f21565b5f80828403610140811215615171575f80fd5b833561517c81614bf3565b9250610120601f1982011215615190575f80fd5b50615199614db8565b6151a560208501614c07565b81526151b360408501614c07565b60208201526151c460608501614f33565b60408201526151d560808501614c07565b60608201526151e660a08501614c07565b60808201526151f760c08501614f33565b60a082015261520860e08501614f16565b60c082015261521a6101008501614c2b565b60e082015261522c6101208501614c07565b610100820152809150509250929050565b5f6020828403121561524d575f80fd5b81356142d581614f08565b6001600160601b039290921682526001600160a01b0316602082015260400190565b8051614c1281614c17565b8051614c1281614f21565b5f80604083850312156152a1575f80fd5b82516152ac81614c17565b6020840151909250614c6281614f21565b6001600160601b039390931683526001600160a01b03918216602084015216604082015260600190565b5f602082840312156152f7575f80fd5b81516142d581614c17565b5f60208284031215615312575f80fd5b815162ffffff811681146142d5575f80fd5b8051614c1281614bf3565b5f6020828403121561533f575f80fd5b81516142d581614bf3565b600181811c9082168061535e57607f821691505b60208210810361537c57634e487b7160e01b5f52602260045260245ffd5b50919050565b80518015158114614c12575f80fd5b5f602082840312156153a1575f80fd5b6142d582615382565b6001600160601b03948516815292841660208401526001600160a01b03919091166040830152909116606082015260800190565b5f602082840312156153ee575f80fd5b81516142d581614f21565b5f60208284031215615409575f80fd5b81516001600160401b03811681146142d5575f80fd5b5f6020828403121561542f575f80fd5b5051919050565b6001600160601b03958616815260ff94909416602085015264ffffffffff9290921660408401526001600160a01b03166060830152909116608082015260a00190565b8051614c1281614f08565b5f82601f830112615493575f80fd5b81516154a1614e7682614e33565b8181528460208386010111156154b5575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f602082840312156154e1575f80fd5b81516001600160401b038111156154f6575f80fd5b820160e08185031215615507575f80fd5b61550f614de1565b61551882615324565b815261552660208301615324565b602082015261553760408301615479565b604082015261554860608301615382565b60608201526155596080830161527a565b608082015261556a60a0830161527a565b60a082015260c08201516001600160401b03811115615587575f80fd5b61559386828501615484565b60c083015250949350505050565b5f80604083850312156155b2575f80fd5b82516152ac81614f21565b5f80604083850312156155ce575f80fd5b82516152ac81614bf3565b5f602082840312156155e9575f80fd5b81516142d581614f08565b6001600160601b0394851681526001600160a01b039390931660208401529083166040830152909116606082015260800190565b5f8085851115615636575f80fd5b83861115615642575f80fd5b5050820193919092039150565b80356001600160e01b03198116906004841015615680576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f60408284031280156156d7575f80fd5b50604080519081016001600160401b03811182821017156156fa576156fa614da4565b604052825161570881614c17565b8152602083015161571881614f21565b60208201529392505050565b5f805f60608486031215615736575f80fd5b835161574181614c17565b602085015190935061575281614c17565b6040850151909250614d9981614c17565b5f82518060208501845e5f920191825250919050565b5f806040838503121561578a575f80fd5b61579383615382565b9150602083015163ffffffff81168114614c62575f80fd5b601f8211156127b357805f5260205f20601f840160051c810160208510156157d05750805b601f840160051c820191505b81811015613949575f81556001016157dc565b81516001600160401b0381111561580857615808614da4565b61581c81615816845461534a565b846157ab565b6020601f82116001811461584e575f83156158375750848201515b5f19600385901b1c1916600184901b178455613949565b5f84815260208120601f198516915b8281101561587d578785015182556020948501946001909201910161585d565b508482101561589a57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f6101208284031280156158bb575f80fd5b506158c4614db8565b6158cd83615324565b81526158db60208401615324565b60208201526158ec60408401615285565b60408201526158fd60608401615324565b606082015261590e60808401615324565b608082015261591f60a08401615285565b60a082015261593060c08401615479565b60c082015261594160e0840161527a565b60e08201526159536101008401615324565b610100820152939250505056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a2646970667358221220b0e35fe9c25192092bd35f1269d644ab73840fd64ec836bc117a3ddd0198720764736f6c634300081a0033",
1926
2524
  "linkReferences": {
1927
- "contracts/type/Amount.sol": {
1928
- "AmountLib": [
2525
+ "contracts/shared/ContractLib.sol": {
2526
+ "ContractLib": [
1929
2527
  {
1930
2528
  "length": 20,
1931
- "start": 17242
2529
+ "start": 18709
1932
2530
  },
1933
2531
  {
1934
2532
  "length": 20,
1935
- "start": 17399
2533
+ "start": 19411
1936
2534
  }
1937
2535
  ]
1938
2536
  },
1939
- "contracts/type/Key32.sol": {
1940
- "Key32Lib": [
2537
+ "contracts/shared/TokenHandlerDeployerLib.sol": {
2538
+ "TokenHandlerDeployerLib": [
1941
2539
  {
1942
2540
  "length": 20,
1943
- "start": 9494
2541
+ "start": 2721
1944
2542
  }
1945
2543
  ]
1946
2544
  },
1947
- "contracts/type/NftId.sol": {
1948
- "NftIdLib": [
2545
+ "contracts/staking/StakingLib.sol": {
2546
+ "StakingLib": [
2547
+ {
2548
+ "length": 20,
2549
+ "start": 12102
2550
+ }
2551
+ ]
2552
+ },
2553
+ "contracts/type/Amount.sol": {
2554
+ "AmountLib": [
2555
+ {
2556
+ "length": 20,
2557
+ "start": 4713
2558
+ },
2559
+ {
2560
+ "length": 20,
2561
+ "start": 5391
2562
+ },
2563
+ {
2564
+ "length": 20,
2565
+ "start": 5990
2566
+ },
2567
+ {
2568
+ "length": 20,
2569
+ "start": 6653
2570
+ },
2571
+ {
2572
+ "length": 20,
2573
+ "start": 8414
2574
+ },
2575
+ {
2576
+ "length": 20,
2577
+ "start": 9047
2578
+ },
2579
+ {
2580
+ "length": 20,
2581
+ "start": 9305
2582
+ },
1949
2583
  {
1950
2584
  "length": 20,
1951
- "start": 3622
2585
+ "start": 12735
1952
2586
  },
1953
2587
  {
1954
2588
  "length": 20,
1955
- "start": 4053
2589
+ "start": 16989
1956
2590
  },
1957
2591
  {
1958
2592
  "length": 20,
1959
- "start": 4779
2593
+ "start": 17500
2594
+ }
2595
+ ]
2596
+ },
2597
+ "contracts/type/Blocknumber.sol": {
2598
+ "BlocknumberLib": [
2599
+ {
2600
+ "length": 20,
2601
+ "start": 15647
1960
2602
  },
1961
2603
  {
1962
2604
  "length": 20,
1963
- "start": 6901
2605
+ "start": 18378
2606
+ }
2607
+ ]
2608
+ },
2609
+ "contracts/type/ChainId.sol": {
2610
+ "ChainIdLib": [
2611
+ {
2612
+ "length": 20,
2613
+ "start": 10762
1964
2614
  },
1965
2615
  {
1966
2616
  "length": 20,
1967
- "start": 12187
2617
+ "start": 13144
1968
2618
  }
1969
2619
  ]
1970
2620
  },
1971
- "contracts/type/StateId.sol": {
1972
- "StateIdLib": [
2621
+ "contracts/type/NftId.sol": {
2622
+ "NftIdLib": [
2623
+ {
2624
+ "length": 20,
2625
+ "start": 3281
2626
+ },
2627
+ {
2628
+ "length": 20,
2629
+ "start": 4113
2630
+ },
1973
2631
  {
1974
2632
  "length": 20,
1975
- "start": 5507
2633
+ "start": 9966
1976
2634
  },
1977
2635
  {
1978
2636
  "length": 20,
1979
- "start": 7705
2637
+ "start": 14974
1980
2638
  },
1981
2639
  {
1982
2640
  "length": 20,
1983
- "start": 8136
2641
+ "start": 17231
2642
+ }
2643
+ ]
2644
+ },
2645
+ "contracts/type/Seconds.sol": {
2646
+ "SecondsLib": [
2647
+ {
2648
+ "length": 20,
2649
+ "start": 8161
1984
2650
  }
1985
2651
  ]
1986
2652
  },
@@ -1988,73 +2654,147 @@
1988
2654
  "VersionLib": [
1989
2655
  {
1990
2656
  "length": 20,
1991
- "start": 3411
2657
+ "start": 3081
1992
2658
  },
1993
2659
  {
1994
2660
  "length": 20,
1995
- "start": 5049
2661
+ "start": 4919
2662
+ }
2663
+ ],
2664
+ "VersionPartLib": [
2665
+ {
2666
+ "length": 20,
2667
+ "start": 9665
1996
2668
  }
1997
2669
  ]
1998
2670
  }
1999
2671
  },
2000
2672
  "deployedLinkReferences": {
2001
- "contracts/type/Amount.sol": {
2002
- "AmountLib": [
2673
+ "contracts/shared/ContractLib.sol": {
2674
+ "ContractLib": [
2003
2675
  {
2004
2676
  "length": 20,
2005
- "start": 17012
2677
+ "start": 18495
2006
2678
  },
2007
2679
  {
2008
2680
  "length": 20,
2009
- "start": 17169
2681
+ "start": 19197
2010
2682
  }
2011
2683
  ]
2012
2684
  },
2013
- "contracts/type/Key32.sol": {
2014
- "Key32Lib": [
2685
+ "contracts/shared/TokenHandlerDeployerLib.sol": {
2686
+ "TokenHandlerDeployerLib": [
2015
2687
  {
2016
2688
  "length": 20,
2017
- "start": 9264
2689
+ "start": 2507
2018
2690
  }
2019
2691
  ]
2020
2692
  },
2021
- "contracts/type/NftId.sol": {
2022
- "NftIdLib": [
2693
+ "contracts/staking/StakingLib.sol": {
2694
+ "StakingLib": [
2695
+ {
2696
+ "length": 20,
2697
+ "start": 11888
2698
+ }
2699
+ ]
2700
+ },
2701
+ "contracts/type/Amount.sol": {
2702
+ "AmountLib": [
2703
+ {
2704
+ "length": 20,
2705
+ "start": 4499
2706
+ },
2707
+ {
2708
+ "length": 20,
2709
+ "start": 5177
2710
+ },
2711
+ {
2712
+ "length": 20,
2713
+ "start": 5776
2714
+ },
2715
+ {
2716
+ "length": 20,
2717
+ "start": 6439
2718
+ },
2719
+ {
2720
+ "length": 20,
2721
+ "start": 8200
2722
+ },
2723
+ {
2724
+ "length": 20,
2725
+ "start": 8833
2726
+ },
2727
+ {
2728
+ "length": 20,
2729
+ "start": 9091
2730
+ },
2023
2731
  {
2024
2732
  "length": 20,
2025
- "start": 3392
2733
+ "start": 12521
2026
2734
  },
2027
2735
  {
2028
2736
  "length": 20,
2029
- "start": 3823
2737
+ "start": 16775
2030
2738
  },
2031
2739
  {
2032
2740
  "length": 20,
2033
- "start": 4549
2741
+ "start": 17286
2742
+ }
2743
+ ]
2744
+ },
2745
+ "contracts/type/Blocknumber.sol": {
2746
+ "BlocknumberLib": [
2747
+ {
2748
+ "length": 20,
2749
+ "start": 15433
2034
2750
  },
2035
2751
  {
2036
2752
  "length": 20,
2037
- "start": 6671
2753
+ "start": 18164
2754
+ }
2755
+ ]
2756
+ },
2757
+ "contracts/type/ChainId.sol": {
2758
+ "ChainIdLib": [
2759
+ {
2760
+ "length": 20,
2761
+ "start": 10548
2038
2762
  },
2039
2763
  {
2040
2764
  "length": 20,
2041
- "start": 11957
2765
+ "start": 12930
2042
2766
  }
2043
2767
  ]
2044
2768
  },
2045
- "contracts/type/StateId.sol": {
2046
- "StateIdLib": [
2769
+ "contracts/type/NftId.sol": {
2770
+ "NftIdLib": [
2771
+ {
2772
+ "length": 20,
2773
+ "start": 3067
2774
+ },
2047
2775
  {
2048
2776
  "length": 20,
2049
- "start": 5277
2777
+ "start": 3899
2050
2778
  },
2051
2779
  {
2052
2780
  "length": 20,
2053
- "start": 7475
2781
+ "start": 9752
2054
2782
  },
2055
2783
  {
2056
2784
  "length": 20,
2057
- "start": 7906
2785
+ "start": 14760
2786
+ },
2787
+ {
2788
+ "length": 20,
2789
+ "start": 17017
2790
+ }
2791
+ ]
2792
+ },
2793
+ "contracts/type/Seconds.sol": {
2794
+ "SecondsLib": [
2795
+ {
2796
+ "length": 20,
2797
+ "start": 7947
2058
2798
  }
2059
2799
  ]
2060
2800
  },
@@ -2062,11 +2802,17 @@
2062
2802
  "VersionLib": [
2063
2803
  {
2064
2804
  "length": 20,
2065
- "start": 3181
2805
+ "start": 2867
2066
2806
  },
2067
2807
  {
2068
2808
  "length": 20,
2069
- "start": 4819
2809
+ "start": 4705
2810
+ }
2811
+ ],
2812
+ "VersionPartLib": [
2813
+ {
2814
+ "length": 20,
2815
+ "start": 9451
2070
2816
  }
2071
2817
  ]
2072
2818
  }