@etherisc/gif-next 0.0.2-7ef1483-704 → 0.0.2-7f111bb-562

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (506) hide show
  1. package/README.md +49 -4
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1342 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -461
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +286 -235
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +77 -108
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +95 -164
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +165 -47
  36. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  37. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  38. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  39. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  40. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  41. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  42. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  44. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  45. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  46. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +64 -84
  48. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  49. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +152 -45
  50. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/Instance.sol/Instance.json +62 -219
  52. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1218 -284
  54. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  56. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  57. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +407 -127
  58. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +195 -192
  60. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +52 -99
  62. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +387 -268
  64. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  66. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  67. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  68. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  69. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  70. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  71. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  72. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  73. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  74. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  75. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  76. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  77. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  79. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  80. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  81. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  82. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +979 -0
  84. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  86. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  88. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +765 -0
  90. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  92. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  93. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +871 -0
  94. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  95. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +922 -0
  96. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  97. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +679 -0
  98. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1248 -0
  100. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  101. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  102. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +433 -168
  104. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +121 -92
  106. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  107. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +218 -1
  108. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  109. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +49 -294
  110. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  111. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +248 -100
  112. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  113. package/artifacts/contracts/pool/Pool.sol/Pool.json +56 -587
  114. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  115. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +302 -250
  116. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +46 -89
  118. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  119. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +68 -162
  120. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +44 -95
  122. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  123. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1096 -0
  124. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  125. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  126. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  127. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +222 -167
  128. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +71 -102
  130. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  131. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +18 -0
  132. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  133. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +127 -0
  134. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  135. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +197 -119
  136. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  137. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +56 -43
  138. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  139. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +36 -83
  140. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  141. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +15 -2
  142. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  143. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +269 -303
  144. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  145. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +66 -101
  146. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  147. package/artifacts/contracts/product/PricingService.sol/PricingService.json +130 -245
  148. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +59 -118
  150. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  151. package/artifacts/contracts/product/Product.sol/Product.json +46 -389
  152. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  153. package/artifacts/contracts/product/RiskService.sol/RiskService.json +583 -0
  154. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  155. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +651 -0
  156. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  157. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  158. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  159. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +246 -42
  160. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  161. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +13 -183
  162. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  163. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  164. package/artifacts/contracts/registry/Registry.sol/Registry.json +464 -99
  165. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  166. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1607 -153
  167. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  168. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +48 -123
  169. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  170. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +37 -76
  171. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  172. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  173. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  174. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1169 -0
  175. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  176. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  177. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  178. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  179. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  180. package/artifacts/contracts/shared/Component.sol/Component.json +11 -222
  181. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  182. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +264 -171
  183. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  184. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +72 -107
  185. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  186. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +10 -109
  187. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  188. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +4 -30
  189. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  190. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +173 -0
  191. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  192. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +36 -41
  193. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  194. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -15
  195. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  196. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  197. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +0 -42
  200. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IService.sol/IService.json +13 -0
  204. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  205. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  206. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  207. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  208. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +43 -286
  209. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  210. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -99
  211. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  212. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  213. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  214. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  216. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  218. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +4 -136
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  220. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  222. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  223. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  224. package/artifacts/contracts/shared/Service.sol/Service.json +10 -109
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  226. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  227. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  228. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  229. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  230. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +141 -144
  231. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  232. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +215 -70
  233. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  234. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +145 -107
  235. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  236. package/artifacts/contracts/staking/Staking.sol/Staking.json +210 -390
  237. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  238. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  239. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +50 -97
  241. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  242. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +219 -18
  243. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +254 -236
  245. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  246. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +41 -96
  247. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  248. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +776 -216
  249. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  250. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +132 -19
  251. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  252. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  253. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Amount.sol/AmountLib.json +97 -4
  255. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  257. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  259. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  261. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  263. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  264. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  265. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +28 -4
  267. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  268. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  269. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +149 -2
  271. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  273. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  275. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  276. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  277. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  279. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
  281. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +74 -2
  283. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  284. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  285. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  286. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  287. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  289. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  290. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  291. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
  293. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  295. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
  297. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  299. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  301. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  302. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  303. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  304. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +566 -0
  305. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  306. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  307. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  308. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  309. package/contracts/authorization/AccessAdmin.sol +589 -0
  310. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  311. package/contracts/authorization/Authorization.sol +217 -0
  312. package/contracts/authorization/IAccess.sol +48 -0
  313. package/contracts/authorization/IAccessAdmin.sol +136 -0
  314. package/contracts/authorization/IAuthorization.sol +54 -0
  315. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  316. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  317. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  318. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  319. package/contracts/distribution/BasicDistribution.sol +138 -0
  320. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  321. package/contracts/distribution/Distribution.sol +145 -111
  322. package/contracts/distribution/DistributionService.sol +83 -45
  323. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  324. package/contracts/distribution/IDistributionComponent.sol +25 -39
  325. package/contracts/distribution/IDistributionService.sol +23 -3
  326. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  327. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  328. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  329. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  330. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  331. package/contracts/instance/IInstance.sol +24 -40
  332. package/contracts/instance/IInstanceService.sol +34 -23
  333. package/contracts/instance/Instance.sol +112 -118
  334. package/contracts/instance/InstanceAdmin.sol +221 -267
  335. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  336. package/contracts/instance/InstanceReader.sol +79 -14
  337. package/contracts/instance/InstanceService.sol +192 -87
  338. package/contracts/instance/InstanceServiceManager.sol +2 -6
  339. package/contracts/instance/InstanceStore.sol +49 -22
  340. package/contracts/instance/base/BalanceStore.sol +11 -6
  341. package/contracts/instance/base/Cloneable.sol +2 -25
  342. package/contracts/instance/base/ObjectCounter.sol +21 -0
  343. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  344. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
  345. package/contracts/instance/module/IBundle.sol +1 -1
  346. package/contracts/instance/module/IComponents.sol +1 -7
  347. package/contracts/instance/module/IDistribution.sol +0 -1
  348. package/contracts/instance/module/IPolicy.sol +22 -22
  349. package/contracts/mock/Dip.sol +1 -1
  350. package/contracts/oracle/BasicOracle.sol +48 -0
  351. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  352. package/contracts/oracle/IOracle.sol +36 -0
  353. package/contracts/oracle/IOracleComponent.sol +33 -0
  354. package/contracts/oracle/IOracleService.sol +65 -0
  355. package/contracts/oracle/Oracle.sol +167 -0
  356. package/contracts/oracle/OracleService.sol +279 -0
  357. package/contracts/oracle/OracleServiceManager.sol +39 -0
  358. package/contracts/pool/BasicPool.sol +166 -0
  359. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  360. package/contracts/pool/BundleService.sol +210 -68
  361. package/contracts/pool/BundleServiceManager.sol +2 -5
  362. package/contracts/pool/IBundleService.sol +33 -5
  363. package/contracts/pool/IPoolComponent.sol +6 -60
  364. package/contracts/pool/IPoolService.sol +39 -26
  365. package/contracts/pool/Pool.sol +165 -138
  366. package/contracts/pool/PoolService.sol +198 -113
  367. package/contracts/pool/PoolServiceManager.sol +2 -5
  368. package/contracts/product/ApplicationService.sol +58 -64
  369. package/contracts/product/ApplicationServiceManager.sol +2 -2
  370. package/contracts/product/BasicProduct.sol +53 -0
  371. package/contracts/product/BasicProductAuthorization.sol +43 -0
  372. package/contracts/product/ClaimService.sol +131 -81
  373. package/contracts/product/ClaimServiceManager.sol +2 -2
  374. package/contracts/product/IApplicationService.sol +1 -0
  375. package/contracts/product/IClaimService.sol +31 -2
  376. package/contracts/product/IPolicyService.sol +27 -32
  377. package/contracts/product/IPricingService.sol +7 -7
  378. package/contracts/product/IProductComponent.sol +7 -10
  379. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  380. package/contracts/product/PolicyService.sol +287 -187
  381. package/contracts/product/PolicyServiceManager.sol +2 -5
  382. package/contracts/product/PricingService.sol +49 -49
  383. package/contracts/product/PricingServiceManager.sol +2 -5
  384. package/contracts/product/Product.sol +162 -114
  385. package/contracts/product/{ProductService.sol → RiskService.sol} +16 -43
  386. package/contracts/product/RiskServiceManager.sol +39 -0
  387. package/contracts/registry/ChainNft.sol +65 -31
  388. package/contracts/registry/IRegistry.sol +63 -19
  389. package/contracts/registry/IRegistryService.sol +6 -6
  390. package/contracts/registry/Registry.sol +333 -207
  391. package/contracts/registry/RegistryAdmin.sol +376 -149
  392. package/contracts/registry/RegistryService.sol +11 -25
  393. package/contracts/registry/RegistryServiceManager.sol +2 -7
  394. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  395. package/contracts/registry/ReleaseRegistry.sol +491 -0
  396. package/contracts/registry/ServiceAuthorizationV3.sol +199 -0
  397. package/contracts/registry/TokenRegistry.sol +2 -48
  398. package/contracts/shared/Component.sol +35 -53
  399. package/contracts/shared/ComponentService.sol +121 -76
  400. package/contracts/shared/ComponentServiceManager.sol +2 -2
  401. package/contracts/shared/ComponentVerifyingService.sol +14 -8
  402. package/contracts/shared/IComponent.sol +7 -11
  403. package/contracts/shared/IComponentService.sol +26 -9
  404. package/contracts/shared/IInstanceLinkedComponent.sol +10 -7
  405. package/contracts/shared/IKeyValueStore.sol +2 -1
  406. package/contracts/shared/ILifecycle.sol +1 -2
  407. package/contracts/shared/IPolicyHolder.sol +0 -9
  408. package/contracts/shared/IService.sol +8 -1
  409. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  410. package/contracts/shared/InstanceLinkedComponent.sol +51 -23
  411. package/contracts/shared/KeyValueStore.sol +7 -6
  412. package/contracts/shared/Lifecycle.sol +16 -60
  413. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  414. package/contracts/shared/NftOwnable.sol +7 -7
  415. package/contracts/shared/PolicyHolder.sol +7 -53
  416. package/contracts/shared/Registerable.sol +4 -4
  417. package/contracts/shared/RegistryLinked.sol +3 -2
  418. package/contracts/shared/Service.sol +32 -27
  419. package/contracts/shared/TokenHandler.sol +100 -19
  420. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  421. package/contracts/staking/IStaking.sol +43 -27
  422. package/contracts/staking/IStakingService.sol +42 -44
  423. package/contracts/staking/StakeManagerLib.sol +118 -50
  424. package/contracts/staking/Staking.sol +147 -146
  425. package/contracts/staking/StakingLifecycle.sol +23 -0
  426. package/contracts/staking/StakingManager.sol +2 -6
  427. package/contracts/staking/StakingReader.sol +70 -33
  428. package/contracts/staking/StakingService.sol +122 -91
  429. package/contracts/staking/StakingServiceManager.sol +2 -3
  430. package/contracts/staking/StakingStore.sol +401 -127
  431. package/contracts/staking/TargetManagerLib.sol +35 -3
  432. package/contracts/type/Amount.sol +24 -3
  433. package/contracts/type/Blocknumber.sol +7 -1
  434. package/contracts/type/NftId.sol +8 -8
  435. package/contracts/type/ObjectType.sol +174 -68
  436. package/contracts/type/Referral.sol +1 -0
  437. package/contracts/type/RequestId.sol +75 -0
  438. package/contracts/type/RoleId.sol +103 -72
  439. package/contracts/type/Seconds.sol +31 -1
  440. package/contracts/type/Selector.sol +102 -0
  441. package/contracts/type/StateId.sol +13 -0
  442. package/contracts/type/String.sol +53 -0
  443. package/contracts/type/Timestamp.sol +17 -3
  444. package/contracts/type/UFixed.sol +34 -9
  445. package/contracts/type/Version.sol +3 -1
  446. package/contracts/{shared → upgradeability}/ProxyManager.sol +4 -5
  447. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  448. package/package.json +8 -5
  449. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  450. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  451. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  452. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -204
  453. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  454. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  455. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  456. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  457. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -679
  458. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  459. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -694
  460. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  461. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1292
  462. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  463. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  464. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  465. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  466. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  467. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1715
  468. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  469. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
  470. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  471. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1806
  472. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  473. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1824
  474. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  475. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  476. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  477. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  478. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  479. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  480. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  481. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  482. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  483. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  484. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  485. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  486. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  487. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  488. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +0 -4
  489. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.json +0 -37
  490. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +0 -4
  491. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +0 -357
  492. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -349
  493. package/contracts/product/ProductServiceManager.sol +0 -42
  494. package/contracts/registry/ReleaseManager.sol +0 -599
  495. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  496. package/contracts/shared/AccessManagerCustom.sol +0 -736
  497. package/contracts/shared/AccessManagerExtended.sol +0 -470
  498. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  499. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  500. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  501. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  502. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  503. package/contracts/staking/IStakingManager.sol +0 -15
  504. package/contracts/staking/IStakingStore.sol +0 -130
  505. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  506. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -94,6 +94,17 @@
94
94
  "name": "ErrorKeyValueStoreAlreadyCreated",
95
95
  "type": "error"
96
96
  },
97
+ {
98
+ "inputs": [
99
+ {
100
+ "internalType": "ObjectType",
101
+ "name": "objectType",
102
+ "type": "uint8"
103
+ }
104
+ ],
105
+ "name": "ErrorKeyValueStoreNoLifecycle",
106
+ "type": "error"
107
+ },
97
108
  {
98
109
  "inputs": [
99
110
  {
@@ -129,11 +140,6 @@
129
140
  },
130
141
  {
131
142
  "inputs": [
132
- {
133
- "internalType": "NftId",
134
- "name": "nftId",
135
- "type": "uint96"
136
- },
137
143
  {
138
144
  "internalType": "ObjectType",
139
145
  "name": "objectType",
@@ -166,39 +172,64 @@
166
172
  "type": "error"
167
173
  },
168
174
  {
169
- "inputs": [],
170
- "name": "InvalidInitialization",
175
+ "inputs": [
176
+ {
177
+ "internalType": "NftId",
178
+ "name": "targetNftId",
179
+ "type": "uint96"
180
+ }
181
+ ],
182
+ "name": "ErrorStakingStoreNotTarget",
171
183
  "type": "error"
172
184
  },
173
185
  {
174
- "inputs": [],
175
- "name": "NotInitializing",
186
+ "inputs": [
187
+ {
188
+ "internalType": "NftId",
189
+ "name": "targetNftId",
190
+ "type": "uint96"
191
+ },
192
+ {
193
+ "internalType": "Amount",
194
+ "name": "dipAmount",
195
+ "type": "uint96"
196
+ },
197
+ {
198
+ "internalType": "Amount",
199
+ "name": "reservesBalanceAmount",
200
+ "type": "uint96"
201
+ }
202
+ ],
203
+ "name": "ErrorStakingStoreRewardReservesInsufficient",
176
204
  "type": "error"
177
205
  },
178
206
  {
179
- "anonymous": false,
180
207
  "inputs": [
181
208
  {
182
- "indexed": false,
183
- "internalType": "address",
184
- "name": "authority",
185
- "type": "address"
209
+ "internalType": "NftId",
210
+ "name": "nftId",
211
+ "type": "uint96"
186
212
  }
187
213
  ],
188
- "name": "AuthorityUpdated",
189
- "type": "event"
214
+ "name": "ErrorStakingStoreTvlBalanceNotInitialized",
215
+ "type": "error"
216
+ },
217
+ {
218
+ "inputs": [],
219
+ "name": "MathLigMulDivOverflow",
220
+ "type": "error"
190
221
  },
191
222
  {
192
223
  "anonymous": false,
193
224
  "inputs": [
194
225
  {
195
226
  "indexed": false,
196
- "internalType": "uint64",
197
- "name": "version",
198
- "type": "uint64"
227
+ "internalType": "address",
228
+ "name": "authority",
229
+ "type": "address"
199
230
  }
200
231
  ],
201
- "name": "Initialized",
232
+ "name": "AuthorityUpdated",
202
233
  "type": "event"
203
234
  },
204
235
  {
@@ -281,6 +312,68 @@
281
312
  "name": "LogInfoUpdated",
282
313
  "type": "event"
283
314
  },
315
+ {
316
+ "anonymous": false,
317
+ "inputs": [
318
+ {
319
+ "indexed": false,
320
+ "internalType": "NftId",
321
+ "name": "targetNftId",
322
+ "type": "uint96"
323
+ },
324
+ {
325
+ "indexed": false,
326
+ "internalType": "Amount",
327
+ "name": "dipAmount",
328
+ "type": "uint96"
329
+ },
330
+ {
331
+ "indexed": false,
332
+ "internalType": "Amount",
333
+ "name": "reserveBalance",
334
+ "type": "uint96"
335
+ },
336
+ {
337
+ "indexed": false,
338
+ "internalType": "Blocknumber",
339
+ "name": "lastUpdatedIn",
340
+ "type": "uint32"
341
+ }
342
+ ],
343
+ "name": "LogStakingStoreReserveBalanceDecreased",
344
+ "type": "event"
345
+ },
346
+ {
347
+ "anonymous": false,
348
+ "inputs": [
349
+ {
350
+ "indexed": false,
351
+ "internalType": "NftId",
352
+ "name": "targetNftId",
353
+ "type": "uint96"
354
+ },
355
+ {
356
+ "indexed": false,
357
+ "internalType": "Amount",
358
+ "name": "dipAmount",
359
+ "type": "uint96"
360
+ },
361
+ {
362
+ "indexed": false,
363
+ "internalType": "Amount",
364
+ "name": "reserveBalance",
365
+ "type": "uint96"
366
+ },
367
+ {
368
+ "indexed": false,
369
+ "internalType": "Blocknumber",
370
+ "name": "lastUpdatedIn",
371
+ "type": "uint32"
372
+ }
373
+ ],
374
+ "name": "LogStakingStoreReserveBalanceIncreased",
375
+ "type": "event"
376
+ },
284
377
  {
285
378
  "anonymous": false,
286
379
  "inputs": [
@@ -448,6 +541,80 @@
448
541
  "name": "LogStakingStoreStakesIncreased",
449
542
  "type": "event"
450
543
  },
544
+ {
545
+ "anonymous": false,
546
+ "inputs": [
547
+ {
548
+ "indexed": false,
549
+ "internalType": "NftId",
550
+ "name": "targetNftId",
551
+ "type": "uint96"
552
+ },
553
+ {
554
+ "indexed": false,
555
+ "internalType": "address",
556
+ "name": "token",
557
+ "type": "address"
558
+ },
559
+ {
560
+ "indexed": false,
561
+ "internalType": "Amount",
562
+ "name": "amount",
563
+ "type": "uint96"
564
+ },
565
+ {
566
+ "indexed": false,
567
+ "internalType": "Amount",
568
+ "name": "newBalance",
569
+ "type": "uint96"
570
+ },
571
+ {
572
+ "indexed": false,
573
+ "internalType": "Blocknumber",
574
+ "name": "lastUpdatedIn",
575
+ "type": "uint32"
576
+ }
577
+ ],
578
+ "name": "LogStakingStoreTotalValueLockedDecreased",
579
+ "type": "event"
580
+ },
581
+ {
582
+ "anonymous": false,
583
+ "inputs": [
584
+ {
585
+ "indexed": false,
586
+ "internalType": "NftId",
587
+ "name": "targetNftId",
588
+ "type": "uint96"
589
+ },
590
+ {
591
+ "indexed": false,
592
+ "internalType": "address",
593
+ "name": "token",
594
+ "type": "address"
595
+ },
596
+ {
597
+ "indexed": false,
598
+ "internalType": "Amount",
599
+ "name": "amount",
600
+ "type": "uint96"
601
+ },
602
+ {
603
+ "indexed": false,
604
+ "internalType": "Amount",
605
+ "name": "newBalance",
606
+ "type": "uint96"
607
+ },
608
+ {
609
+ "indexed": false,
610
+ "internalType": "Blocknumber",
611
+ "name": "lastUpdatedIn",
612
+ "type": "uint32"
613
+ }
614
+ ],
615
+ "name": "LogStakingStoreTotalValueLockedIncreased",
616
+ "type": "event"
617
+ },
451
618
  {
452
619
  "anonymous": false,
453
620
  "inputs": [
@@ -540,9 +707,14 @@
540
707
  "name": "nftId",
541
708
  "type": "uint96"
542
709
  },
710
+ {
711
+ "internalType": "NftId",
712
+ "name": "targetNftId",
713
+ "type": "uint96"
714
+ },
543
715
  {
544
716
  "internalType": "Amount",
545
- "name": "maxRewardAmount",
717
+ "name": "maxClaimAmount",
546
718
  "type": "uint96"
547
719
  }
548
720
  ],
@@ -550,7 +722,7 @@
550
722
  "outputs": [
551
723
  {
552
724
  "internalType": "Amount",
553
- "name": "rewardsClaimedAmount",
725
+ "name": "claimedAmount",
554
726
  "type": "uint96"
555
727
  }
556
728
  ],
@@ -575,11 +747,6 @@
575
747
  "internalType": "struct IStaking.StakeInfo",
576
748
  "name": "stakeInfo",
577
749
  "type": "tuple"
578
- },
579
- {
580
- "internalType": "Amount",
581
- "name": "stakeAmount",
582
- "type": "uint96"
583
750
  }
584
751
  ],
585
752
  "name": "create",
@@ -627,6 +794,64 @@
627
794
  "stateMutability": "nonpayable",
628
795
  "type": "function"
629
796
  },
797
+ {
798
+ "inputs": [
799
+ {
800
+ "internalType": "NftId",
801
+ "name": "targetNftId",
802
+ "type": "uint96"
803
+ },
804
+ {
805
+ "internalType": "Amount",
806
+ "name": "dipAmount",
807
+ "type": "uint96"
808
+ }
809
+ ],
810
+ "name": "decreaseReserves",
811
+ "outputs": [
812
+ {
813
+ "internalType": "Amount",
814
+ "name": "newReserveBalance",
815
+ "type": "uint96"
816
+ }
817
+ ],
818
+ "stateMutability": "nonpayable",
819
+ "type": "function"
820
+ },
821
+ {
822
+ "inputs": [
823
+ {
824
+ "internalType": "NftId",
825
+ "name": "targetNftId",
826
+ "type": "uint96"
827
+ },
828
+ {
829
+ "internalType": "UFixed",
830
+ "name": "stakingRate",
831
+ "type": "uint256"
832
+ },
833
+ {
834
+ "internalType": "address",
835
+ "name": "token",
836
+ "type": "address"
837
+ },
838
+ {
839
+ "internalType": "Amount",
840
+ "name": "amount",
841
+ "type": "uint96"
842
+ }
843
+ ],
844
+ "name": "decreaseTotalValueLocked",
845
+ "outputs": [
846
+ {
847
+ "internalType": "Amount",
848
+ "name": "newBalance",
849
+ "type": "uint96"
850
+ }
851
+ ],
852
+ "stateMutability": "nonpayable",
853
+ "type": "function"
854
+ },
630
855
  {
631
856
  "inputs": [
632
857
  {
@@ -689,11 +914,6 @@
689
914
  "name": "state",
690
915
  "type": "uint8"
691
916
  },
692
- {
693
- "internalType": "address",
694
- "name": "updatedBy",
695
- "type": "address"
696
- },
697
917
  {
698
918
  "internalType": "Blocknumber",
699
919
  "name": "updatedIn",
@@ -731,16 +951,11 @@
731
951
  "type": "uint96"
732
952
  }
733
953
  ],
734
- "name": "getBalanceAndLastUpdatedAt",
954
+ "name": "getBalanceUpdatedAt",
735
955
  "outputs": [
736
- {
737
- "internalType": "Amount",
738
- "name": "stakeBalance",
739
- "type": "uint96"
740
- },
741
956
  {
742
957
  "internalType": "Timestamp",
743
- "name": "lastUpdatedAt",
958
+ "name": "updatedAt",
744
959
  "type": "uint40"
745
960
  }
746
961
  ],
@@ -755,12 +970,12 @@
755
970
  "type": "uint96"
756
971
  }
757
972
  ],
758
- "name": "getBalanceUpdatedAt",
973
+ "name": "getBalanceUpdatedIn",
759
974
  "outputs": [
760
975
  {
761
- "internalType": "Timestamp",
762
- "name": "updatedAt",
763
- "type": "uint40"
976
+ "internalType": "Blocknumber",
977
+ "name": "blocknumber",
978
+ "type": "uint32"
764
979
  }
765
980
  ],
766
981
  "stateMutability": "view",
@@ -826,11 +1041,6 @@
826
1041
  "name": "state",
827
1042
  "type": "uint8"
828
1043
  },
829
- {
830
- "internalType": "address",
831
- "name": "updatedBy",
832
- "type": "address"
833
- },
834
1044
  {
835
1045
  "internalType": "Blocknumber",
836
1046
  "name": "updatedIn",
@@ -858,31 +1068,188 @@
858
1068
  "type": "uint96"
859
1069
  }
860
1070
  ],
861
- "name": "getRewardBalance",
1071
+ "name": "getRequiredStakeBalance",
1072
+ "outputs": [
1073
+ {
1074
+ "internalType": "Amount",
1075
+ "name": "requiredAmount",
1076
+ "type": "uint96"
1077
+ }
1078
+ ],
1079
+ "stateMutability": "view",
1080
+ "type": "function"
1081
+ },
1082
+ {
1083
+ "inputs": [
1084
+ {
1085
+ "internalType": "NftId",
1086
+ "name": "nftId",
1087
+ "type": "uint96"
1088
+ }
1089
+ ],
1090
+ "name": "getReserveBalance",
1091
+ "outputs": [
1092
+ {
1093
+ "internalType": "Amount",
1094
+ "name": "balanceAmount",
1095
+ "type": "uint96"
1096
+ }
1097
+ ],
1098
+ "stateMutability": "view",
1099
+ "type": "function"
1100
+ },
1101
+ {
1102
+ "inputs": [
1103
+ {
1104
+ "internalType": "NftId",
1105
+ "name": "nftId",
1106
+ "type": "uint96"
1107
+ }
1108
+ ],
1109
+ "name": "getRewardBalance",
1110
+ "outputs": [
1111
+ {
1112
+ "internalType": "Amount",
1113
+ "name": "rewardAmount",
1114
+ "type": "uint96"
1115
+ }
1116
+ ],
1117
+ "stateMutability": "view",
1118
+ "type": "function"
1119
+ },
1120
+ {
1121
+ "inputs": [
1122
+ {
1123
+ "internalType": "NftId",
1124
+ "name": "nftId",
1125
+ "type": "uint96"
1126
+ }
1127
+ ],
1128
+ "name": "getStakeBalance",
1129
+ "outputs": [
1130
+ {
1131
+ "internalType": "Amount",
1132
+ "name": "balanceAmount",
1133
+ "type": "uint96"
1134
+ }
1135
+ ],
1136
+ "stateMutability": "view",
1137
+ "type": "function"
1138
+ },
1139
+ {
1140
+ "inputs": [
1141
+ {
1142
+ "internalType": "NftId",
1143
+ "name": "nftId",
1144
+ "type": "uint96"
1145
+ }
1146
+ ],
1147
+ "name": "getStakeBalances",
1148
+ "outputs": [
1149
+ {
1150
+ "internalType": "Amount",
1151
+ "name": "stakeBalance",
1152
+ "type": "uint96"
1153
+ },
1154
+ {
1155
+ "internalType": "Amount",
1156
+ "name": "rewardBalance",
1157
+ "type": "uint96"
1158
+ },
1159
+ {
1160
+ "internalType": "Timestamp",
1161
+ "name": "lastUpdatedAt",
1162
+ "type": "uint40"
1163
+ }
1164
+ ],
1165
+ "stateMutability": "view",
1166
+ "type": "function"
1167
+ },
1168
+ {
1169
+ "inputs": [
1170
+ {
1171
+ "internalType": "uint256",
1172
+ "name": "chainId",
1173
+ "type": "uint256"
1174
+ },
1175
+ {
1176
+ "internalType": "address",
1177
+ "name": "token",
1178
+ "type": "address"
1179
+ }
1180
+ ],
1181
+ "name": "getStakingRate",
1182
+ "outputs": [
1183
+ {
1184
+ "internalType": "UFixed",
1185
+ "name": "stakingRate",
1186
+ "type": "uint256"
1187
+ }
1188
+ ],
1189
+ "stateMutability": "view",
1190
+ "type": "function"
1191
+ },
1192
+ {
1193
+ "inputs": [],
1194
+ "name": "getStakingReader",
1195
+ "outputs": [
1196
+ {
1197
+ "internalType": "contract StakingReader",
1198
+ "name": "stakingReader",
1199
+ "type": "address"
1200
+ }
1201
+ ],
1202
+ "stateMutability": "view",
1203
+ "type": "function"
1204
+ },
1205
+ {
1206
+ "inputs": [
1207
+ {
1208
+ "internalType": "Key32",
1209
+ "name": "key32",
1210
+ "type": "bytes32"
1211
+ }
1212
+ ],
1213
+ "name": "getState",
1214
+ "outputs": [
1215
+ {
1216
+ "internalType": "StateId",
1217
+ "name": "state",
1218
+ "type": "uint8"
1219
+ }
1220
+ ],
1221
+ "stateMutability": "view",
1222
+ "type": "function"
1223
+ },
1224
+ {
1225
+ "inputs": [
1226
+ {
1227
+ "internalType": "NftId",
1228
+ "name": "nftId",
1229
+ "type": "uint96"
1230
+ }
1231
+ ],
1232
+ "name": "getTargetBalances",
862
1233
  "outputs": [
863
1234
  {
864
1235
  "internalType": "Amount",
865
- "name": "rewardAmount",
1236
+ "name": "stakeBalance",
866
1237
  "type": "uint96"
867
- }
868
- ],
869
- "stateMutability": "view",
870
- "type": "function"
871
- },
872
- {
873
- "inputs": [
1238
+ },
874
1239
  {
875
- "internalType": "NftId",
876
- "name": "nftId",
1240
+ "internalType": "Amount",
1241
+ "name": "rewardBalance",
877
1242
  "type": "uint96"
878
- }
879
- ],
880
- "name": "getStakeBalance",
881
- "outputs": [
1243
+ },
882
1244
  {
883
1245
  "internalType": "Amount",
884
- "name": "balanceAmount",
1246
+ "name": "reserveBalance",
885
1247
  "type": "uint96"
1248
+ },
1249
+ {
1250
+ "internalType": "Blocknumber",
1251
+ "name": "lastUpdatedIn",
1252
+ "type": "uint32"
886
1253
  }
887
1254
  ],
888
1255
  "stateMutability": "view",
@@ -890,11 +1257,11 @@
890
1257
  },
891
1258
  {
892
1259
  "inputs": [],
893
- "name": "getStakingReader",
1260
+ "name": "getTargetNftIdSet",
894
1261
  "outputs": [
895
1262
  {
896
- "internalType": "contract StakingReader",
897
- "name": "stakingReader",
1263
+ "internalType": "contract NftIdSet",
1264
+ "name": "targetNftIdSet",
898
1265
  "type": "address"
899
1266
  }
900
1267
  ],
@@ -904,30 +1271,22 @@
904
1271
  {
905
1272
  "inputs": [
906
1273
  {
907
- "internalType": "Key32",
908
- "name": "key32",
909
- "type": "bytes32"
910
- }
911
- ],
912
- "name": "getState",
913
- "outputs": [
1274
+ "internalType": "NftId",
1275
+ "name": "nftId",
1276
+ "type": "uint96"
1277
+ },
914
1278
  {
915
- "internalType": "StateId",
916
- "name": "state",
917
- "type": "uint8"
1279
+ "internalType": "address",
1280
+ "name": "token",
1281
+ "type": "address"
918
1282
  }
919
1283
  ],
920
- "stateMutability": "view",
921
- "type": "function"
922
- },
923
- {
924
- "inputs": [],
925
- "name": "getTargetManager",
1284
+ "name": "getTotalValueLocked",
926
1285
  "outputs": [
927
1286
  {
928
- "internalType": "contract NftIdSetManager",
929
- "name": "targetManager",
930
- "type": "address"
1287
+ "internalType": "Amount",
1288
+ "name": "tvlBalanceAmount",
1289
+ "type": "uint96"
931
1290
  }
932
1291
  ],
933
1292
  "stateMutability": "view",
@@ -956,29 +1315,80 @@
956
1315
  "inputs": [
957
1316
  {
958
1317
  "internalType": "NftId",
959
- "name": "nftId",
1318
+ "name": "targetNftId",
960
1319
  "type": "uint96"
961
1320
  },
962
1321
  {
963
1322
  "internalType": "Amount",
964
- "name": "amount",
1323
+ "name": "dipAmount",
1324
+ "type": "uint96"
1325
+ }
1326
+ ],
1327
+ "name": "increaseReserves",
1328
+ "outputs": [
1329
+ {
1330
+ "internalType": "Amount",
1331
+ "name": "newReserveBalance",
1332
+ "type": "uint96"
1333
+ }
1334
+ ],
1335
+ "stateMutability": "nonpayable",
1336
+ "type": "function"
1337
+ },
1338
+ {
1339
+ "inputs": [
1340
+ {
1341
+ "internalType": "NftId",
1342
+ "name": "nftId",
1343
+ "type": "uint96"
1344
+ },
1345
+ {
1346
+ "internalType": "NftId",
1347
+ "name": "targetNftId",
965
1348
  "type": "uint96"
966
1349
  },
967
1350
  {
968
1351
  "internalType": "Amount",
969
- "name": "rewardIncrementAmount",
1352
+ "name": "amount",
970
1353
  "type": "uint96"
971
1354
  }
972
1355
  ],
973
- "name": "increaseBalance",
1356
+ "name": "increaseStake",
974
1357
  "outputs": [],
975
1358
  "stateMutability": "nonpayable",
976
1359
  "type": "function"
977
1360
  },
978
1361
  {
979
- "inputs": [],
980
- "name": "initializeLifecycle",
981
- "outputs": [],
1362
+ "inputs": [
1363
+ {
1364
+ "internalType": "NftId",
1365
+ "name": "targetNftId",
1366
+ "type": "uint96"
1367
+ },
1368
+ {
1369
+ "internalType": "UFixed",
1370
+ "name": "stakingRate",
1371
+ "type": "uint256"
1372
+ },
1373
+ {
1374
+ "internalType": "address",
1375
+ "name": "token",
1376
+ "type": "address"
1377
+ },
1378
+ {
1379
+ "internalType": "Amount",
1380
+ "name": "amount",
1381
+ "type": "uint96"
1382
+ }
1383
+ ],
1384
+ "name": "increaseTotalValueLocked",
1385
+ "outputs": [
1386
+ {
1387
+ "internalType": "Amount",
1388
+ "name": "newBalance",
1389
+ "type": "uint96"
1390
+ }
1391
+ ],
982
1392
  "stateMutability": "nonpayable",
983
1393
  "type": "function"
984
1394
  },
@@ -1031,6 +1441,11 @@
1031
1441
  "name": "nftId",
1032
1442
  "type": "uint96"
1033
1443
  },
1444
+ {
1445
+ "internalType": "NftId",
1446
+ "name": "targetNftId",
1447
+ "type": "uint96"
1448
+ },
1034
1449
  {
1035
1450
  "internalType": "Amount",
1036
1451
  "name": "rewardIncrementAmount",
@@ -1055,6 +1470,29 @@
1055
1470
  "stateMutability": "nonpayable",
1056
1471
  "type": "function"
1057
1472
  },
1473
+ {
1474
+ "inputs": [
1475
+ {
1476
+ "internalType": "uint256",
1477
+ "name": "chainId",
1478
+ "type": "uint256"
1479
+ },
1480
+ {
1481
+ "internalType": "address",
1482
+ "name": "token",
1483
+ "type": "address"
1484
+ },
1485
+ {
1486
+ "internalType": "UFixed",
1487
+ "name": "stakingRate",
1488
+ "type": "uint256"
1489
+ }
1490
+ ],
1491
+ "name": "setStakingRate",
1492
+ "outputs": [],
1493
+ "stateMutability": "nonpayable",
1494
+ "type": "function"
1495
+ },
1058
1496
  {
1059
1497
  "inputs": [
1060
1498
  {
@@ -1086,6 +1524,11 @@
1086
1524
  "name": "nftId",
1087
1525
  "type": "uint96"
1088
1526
  },
1527
+ {
1528
+ "internalType": "NftId",
1529
+ "name": "targetNftId",
1530
+ "type": "uint96"
1531
+ },
1089
1532
  {
1090
1533
  "internalType": "Amount",
1091
1534
  "name": "maxUnstakeAmount",
@@ -1145,6 +1588,11 @@
1145
1588
  "name": "nftId",
1146
1589
  "type": "uint96"
1147
1590
  },
1591
+ {
1592
+ "internalType": "NftId",
1593
+ "name": "targetNftId",
1594
+ "type": "uint96"
1595
+ },
1148
1596
  {
1149
1597
  "internalType": "Amount",
1150
1598
  "name": "rewardIncrementAmount",
@@ -1197,42 +1645,90 @@
1197
1645
  "type": "function"
1198
1646
  }
1199
1647
  ],
1200
- "bytecode": "0x60806040523480156200001157600080fd5b50604051620045db380380620045db83398101604081905262000034916200023d565b3362000040816200013e565b50600480546001600160a01b0319166001600160a01b0384169081178255604080516307158bc560e51b8152905160009363e2b178a0928082019260209290918290030181865afa1580156200009a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c091906200027c565b9050620000cd8162000192565b600680546001600160a01b0319166001600160a01b038416179055604051620000f69062000216565b604051809103906000f08015801562000113573d6000803e3d6000fd5b50600580546001600160a01b0319166001600160a01b039290921691909117905550620002a3915050565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b60005433906001600160a01b03168114620001cf5760405162d1953b60e31b81526001600160a01b03821660048201526024015b60405180910390fd5b816001600160a01b03163b60000362000207576040516361798f2f60e11b81526001600160a01b0383166004820152602401620001c6565b62000212826200013e565b5050565b61077b8062003e6083390190565b6001600160a01b03811681146200023a57600080fd5b50565b600080604083850312156200025157600080fd5b82516200025e8162000224565b6020840151909250620002718162000224565b809150509250929050565b6000602082840312156200028f57600080fd5b81516200029c8162000224565b9392505050565b613bad80620002b36000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80637eb71df411610104578063bf1db3f9116100a2578063e9e96c7011610071578063e9e96c70146105c0578063f48016ce146105fe578063faaf71551461061f578063fb1454321461063257600080fd5b8063bf1db3f914610523578063bf7e214f14610536578063dfb7e33714610547578063e4b23d6b1461058d57600080fd5b80638fb36037116100de5780638fb36037146103d6578063a5961b4c146103f7578063a8989675146104a8578063b918ae88146104bb57600080fd5b80637eb71df41461039057806387fe5abb146103a35780638eaa6ac0146103b657600080fd5b80634b51da0c1161017c57806363fe327a1161014b57806363fe327a1461031557806365d467a914610326578063717f1b98146103395780637a9e5e4b1461037d57600080fd5b80634b51da0c146102aa5780634f9c1c09146102bd57806354f6127f146102d05780636291423a146102f057600080fd5b80632df8be9b116101b85780632df8be9b1461025957806338a699a41461026c5780633cacf20b1461028f578063468bce06146102a257600080fd5b806309648a9d146101df5780630d3581811461021e5780631807a48814610244575b600080fd5b6102076101ed366004613533565b600090815260036020526040902054610100900460ff1690565b60405160ff90911681526020015b60405180910390f35b61020761022c36600461355e565b60ff9081166000908152600160205260409020541690565b6102576102523660046135b9565b61065e565b005b6102576102673660046135b9565b610750565b61027f61027a366004613533565b610916565b6040519015158152602001610215565b61025761029d3660046136a1565b6109a7565b610257610a67565b6102576102b83660046136eb565b610a99565b61027f6102cb366004613721565b610b4a565b6102e36102de366004613533565b610be5565b6040516102159190613784565b6006546001600160a01b03165b6040516001600160a01b039091168152602001610215565b6005546001600160a01b03166102fd565b610257610334366004613797565b610c8a565b610365610347366004613721565b6001600160601b039081166000908152600860205260409020541690565b6040516001600160601b039091168152602001610215565b61025761038b3660046137d0565b610f54565b61036561039e366004613797565b610fca565b6102576103b1366004613797565b6112ed565b6103c96103c4366004613533565b611693565b6040516102159190613843565b6103de6117d4565b6040516001600160e01b03199091168152602001610215565b61049b610405366004613533565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915250600090815260036020908152604091829020825160a081018452905460ff8082168352610100820416928201929092526001600160a01b03620100008304169281019290925263ffffffff600160b01b820481166060840152600160d01b90910416608082015290565b6040516102159190613877565b6102576104b6366004613885565b6117fa565b6104fe6104c9366004613721565b6001600160601b0390811660009081526007602090815260408083205460099092529091205491169164ffffffffff90911690565b604080516001600160601b03909316835264ffffffffff909116602083015201610215565b61027f61053136600461355e565b6118eb565b6000546001600160a01b03166102fd565b610577610555366004613721565b6001600160601b031660009081526009602052604090205464ffffffffff1690565b60405164ffffffffff9091168152602001610215565b6105a061059b3660046138c5565b611938565b604080516001600160601b03938416815292909116602083015201610215565b61027f6105ce366004613885565b60ff9283166000908152600260209081526040808320948616835293815283822092851682529190915220541690565b61061161060c366004613905565b611d51565b604051908152602001610215565b61025761062d3660046138c5565b611ddb565b610365610640366004613721565b6001600160601b039081166000908152600760205260409020541690565b61074c73__$94a2c899be079b00d952d0d84fffaa5c34$__633889a4c86001600160601b038516601e6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af41580156106d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f79190613933565b60408051845160ff16602080830191909152850151818301529084015164ffffffffff16606080830191909152840151608082015260a0015b60405160208183030381529060405261074760ff90565b612224565b5050565b61083673__$94a2c899be079b00d952d0d84fffaa5c34$__633889a4c86001600160601b038516601e6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af41580156107c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e99190613933565b60408051845160ff16602080830191909152850151818301529084015164ffffffffff16606080830191909152840151608082015260a0015b604051602081830303815290604052612399565b6108ac8273__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610883573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a7919061394c565b612778565b6005546040516346f0e8a760e11b81526001600160601b03841660048201526001600160a01b0390911690638de1d14e90602401600060405180830381600087803b1580156108fa57600080fd5b505af115801561090e573d6000803e3d6000fd5b505050505050565b60008181526003602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf906024015b602060405180830381865af415801561097d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a19190613969565b92915050565b610a5873__$94a2c899be079b00d952d0d84fffaa5c34$__633889a4c86001600160601b03861660506040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af4158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a409190613933565b60408051855164ffffffffff16602082015201610822565b610a628382612778565b505050565b610a6f612a73565b610a77612ac1565b610a7f612be4565b610a87612cd8565b610a8f612e0f565b610a97612f3b565b565b61074c73__$94a2c899be079b00d952d0d84fffaa5c34$__633889a4c86001600160601b03851660506040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af4158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b329190613933565b60408051845164ffffffffff16602082015201610730565b60006109a173__$94a2c899be079b00d952d0d84fffaa5c34$__633889a4c86001600160601b03851660506040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af4158015610bc1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027a9190613933565b6000818152600360205260409020600101805460609190610c059061398b565b80601f0160208091040260200160405190810160405280929190818152602001828054610c319061398b565b8015610c7e5780601f10610c5357610100808354040283529160200191610c7e565b820191906000526020600020905b815481529060010190602001808311610c6157829003601f168201915b50505050509050919050565b6001600160601b038281166000908152600a602090815260408083205460089092529182902054915163010bd26b60e61b815263ffffffff9091166004820181905292919091169073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__906342f49ac090602401602060405180830381865af4158015610d0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d329190613969565b15610d6057604051631f7e16df60e01b81526001600160601b03851660048201526024015b60405180910390fd5b610d6a8184612ff7565b60086000866001600160601b03166001600160601b0316815260200190815260200160002060006101000a8154816001600160601b0302191690836001600160601b0316021790555073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015610dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2091906139c5565b60096000866001600160601b03166001600160601b0316815260200190815260200160002060006101000a81548164ffffffffff021916908364ffffffffff16021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015610eae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed291906139e2565b6001600160601b038581166000908152600a60209081526040808320805463ffffffff191663ffffffff9690961695909517909455600890528290205491517f9824c1941460e3f3dca0007309b88a95f4fb73bd9628ee7ad0a528b100983c7992610f469288928892909116908790613a08565b60405180910390a150505050565b60005433906001600160a01b03168114610f8b5760405162d1953b60e31b81526001600160a01b0382166004820152602401610d57565b816001600160a01b03163b600003610fc1576040516361798f2f60e11b81526001600160a01b0383166004820152602401610d57565b61074c8261307f565b6001600160601b0382166000908152600a602052604080822054905163010bd26b60e61b815263ffffffff9091166004820181905290829073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__906342f49ac090602401602060405180830381865af415801561103e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110629190613969565b1561108b57604051631f7e16df60e01b81526001600160601b0386166004820152602401610d57565b6001600160601b038086166000908152600860205260409020546110b1918691166130d3565b156110d8576001600160601b038086166000908152600860205260409020541692506110dc565b8392505b6001600160601b0380861660009081526008602052604090205461110191168461315a565b60086000876001600160601b03166001600160601b0316815260200190815260200160002060006101000a8154816001600160601b0302191690836001600160601b0316021790555073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b791906139c5565b60096000876001600160601b03166001600160601b0316815260200190815260200160002060006101000a81548164ffffffffff021916908364ffffffffff16021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015611245573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126991906139e2565b6001600160601b038681166000908152600a60209081526040808320805463ffffffff191663ffffffff9690961695909517909455600890528290205491517f18d78bbaea8f24a2aaa409f9f507204233a315575899fe3a802e20f15e81f5ef926112dd9289928892909116908790613a08565b60405180910390a1505092915050565b6001600160601b038281166000908152600a6020908152604080832054600783528184205460089093529281902054905163010bd26b60e61b815263ffffffff90931660048401819052939182169291169073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__906342f49ac090602401602060405180830381865af415801561137b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139f9190613969565b156113c857604051631f7e16df60e01b81526001600160601b0386166004820152602401610d57565b6113db6113d58383612ff7565b85612ff7565b60076000876001600160601b03166001600160601b0316815260200190815260200160002060006101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561146d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611491919061394c565b60086000876001600160601b03166001600160601b0316815260200190815260200160002060006101000a8154816001600160601b0302191690836001600160601b0316021790555073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611523573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154791906139c5565b60096000876001600160601b03166001600160601b0316815260200190815260200160002060006101000a81548164ffffffffff021916908364ffffffffff16021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af41580156115d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f991906139e2565b6001600160601b038681166000818152600a60209081526040808320805463ffffffff191663ffffffff978816179055600782529182902054825193845287851691840191909152858416838301528884166060840152909216608082015291851660a0830152517ff3a6a30356c886f04fc20380e987b6e55a1e83a7926e1a21ee6001faced599c99160c0908290030190a15050505050565b6040805160e081018252600091810182815260608083018490526080830184905260a0830184905260c083019390935281526020810191909152600082815260036020908152604091829020825160e081018452815460ff80821695830195865261010082041660608301526001600160a01b0362010000820416608083015263ffffffff600160b01b8204811660a0840152600160d01b9091041660c0820152928352600181018054919284019161174b9061398b565b80601f01602080910402602001604051908101604052809291908181526020018280546117779061398b565b80156117c45780601f10611799576101008083540402835291602001916117c4565b820191906000526020600020905b8154815290600101906020018083116117a757829003601f168201915b5050505050815250509050919050565b60008054600160a01b900460ff166117ec5750600090565b638fb3603760e01b5b905090565b60ff8381166000908152600160205260409081902054905163037c8cb160e51b81529116600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af415801561185f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118839190613969565b1561188d57505050565b60ff808416600090815260026020908152604080832086851684528252808320858516845290915290205416610a6257604051636bb20ea760e01b815260ff8085166004830152808416602483015282166044820152606401610d57565b60ff81811660009081526001602052604080822054905163b2466acf60e01b8152921660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401610960565b6001600160601b0383166000908152600a602052604080822054905163010bd26b60e61b815263ffffffff909116600482018190528291829073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__906342f49ac090602401602060405180830381865af41580156119ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d19190613969565b156119fa57604051631f7e16df60e01b81526001600160601b0388166004820152602401610d57565b6001600160601b03808816600090815260086020526040902054611a20918891166130d3565b15611a47576001600160601b03808816600090815260086020526040902054169350611a4b565b8593505b6001600160601b03808816600090815260086020526040902054611a71918791166130d3565b15611a98576001600160601b03808816600090815260086020526040902054169250611a9c565b8492505b6001600160601b03808816600090815260076020526040902054611ac191168561315a565b6001600160601b03888116600090815260076020908152604080832080546001600160601b03191695851695909517909455600890529190912054611b0791168461315a565b60086000896001600160601b03166001600160601b0316815260200190815260200160002060006101000a8154816001600160601b0302191690836001600160601b0316021790555073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbd91906139c5565b60096000896001600160601b03166001600160601b0316815260200190815260200160002060006101000a81548164ffffffffff021916908364ffffffffff16021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015611c4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6f91906139e2565b6001600160601b038881166000908152600a60209081526040808320805463ffffffff191663ffffffff9690961695909517909455600790528290205491517f4d67c2532a3443dbc1612538256c1fb6566afcd9729bf99254b26aef3b953cdd92611ce3928b928992909116908790613a08565b60405180910390a16001600160601b03808816600090815260086020526040908190205490517f18d78bbaea8f24a2aaa409f9f507204233a315575899fe3a802e20f15e81f5ef92611d3f928b92889291909116908790613a08565b60405180910390a15050935093915050565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$4b9aaffa8d044614668dad578b824b8eee$__9063f48016ce90604401602060405180830381865af4158015611db0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd49190613933565b9392505050565b6001600160601b0383166000908152600a602052604080822054905163010bd26b60e61b815263ffffffff90911660048201819052919073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__906342f49ac090602401602060405180830381865af4158015611e4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e729190613969565b15611e9b57604051631f7e16df60e01b81526001600160601b0386166004820152602401610d57565b6040516330b8415f60e01b81526001600160601b038516600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af4158015611ef3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f179190613969565b15611fb157506001600160601b03808516600090815260076020526040902054600191611f45911685612ff7565b6001600160601b038681166000908152600760205260409081902080546001600160601b03191693909216928317909155517fa206257df4168139cff2e8dea9c50f2226429e81d904d5ee2b14e4f4656f30f591611fa891889188918790613a08565b60405180910390a15b6040516330b8415f60e01b81526001600160601b038416600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af4158015612009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202d9190613969565b156120c757506001600160601b0380851660009081526008602052604090205460019161205b911684612ff7565b6001600160601b038681166000908152600860205260409081902080546001600160601b03191693909216928317909155517f9824c1941460e3f3dca0007309b88a95f4fb73bd9628ee7ad0a528b100983c79916120be91889187918790613a08565b60405180910390a15b801561221d5773__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015612116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213a91906139c5565b60096000876001600160601b03166001600160601b0316815260200190815260200160002060006101000a81548164ffffffffff021916908364ffffffffff16021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af41580156121c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ec91906139e2565b6001600160601b0386166000908152600a60205260409020805463ffffffff191663ffffffff929092169190911790555b5050505050565b600061223084836131a5565b600085815260036020526040902090915060010161224e8482613a7d565b50604051634b00e98f60e11b8152600481018590527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af41580156122c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e59190613b3d565b604051630713cfad60e31b81526004810187905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af4158015612335573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123599190613b5a565b6040805160ff938416815260ff1990921660208301529185169181019190915233606082015232608082015263ffffffff831660a082015260c001610f46565b604051634b00e98f60e11b81526004810183905260009073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af41580156123ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124109190613b3d565b60405163037c8cb160e51b815260ff8216600482015290915073__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636f91962090602401602060405180830381865af4158015612465573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124899190613969565b156124ac576040516307014a8d60e51b815260ff82166004820152602401610d57565b600083815260036020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401602060405180830381865af4158015612515573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125399190613969565b1561256357604051633f92eac960e21b81526004810185905260ff83166024820152604401610d57565b33600061256e6134c4565b9050600061257b856118eb565b61258657600461259c565b60ff808616600090815260016020526040902054165b845460ff87811661ffff1990921691909117610100918316919091021762010000600160d01b031916620100006001600160a01b0386160263ffffffff60b01b191617600160b01b63ffffffff85169081029190911763ffffffff60d01b1916600160d01b9190910217855560008881526003602052604090209091506001016126268782613a7d565b50604051634b00e98f60e11b8152600481018890527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af4158015612699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126bd9190613b3d565b604051630713cfad60e31b8152600481018a905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af415801561270d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127319190613b5a565b6040805160ff938416815260ff19929092166020830152918416818301526001600160a01b038616606082015232608082015290519081900360a00190a150505050505050565b6001600160601b0382166000908152600a60205260409081902054905163d15b589360e01b815263ffffffff909116600482015273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063d15b589390602401602060405180830381865af41580156127e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280c9190613969565b15612835576040516366d785a360e11b81526001600160601b0383166004820152602401610d57565b6001600160601b0382811660009081526007602090815260409182902080546001600160601b03191693851693909317909255805163bc1b392d60e01b8152905173__$3bac17678db7ae928afa209f2f44deec9c$__9263bc1b392d92600480820193918290030181865af41580156128b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d6919061394c565b60086000846001600160601b03166001600160601b0316815260200190815260200160002060006101000a8154816001600160601b0302191690836001600160601b0316021790555073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015612968573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298c91906139c5565b60096000846001600160601b03166001600160601b0316815260200190815260200160002060006101000a81548164ffffffffff021916908364ffffffffff16021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015612a1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a3e91906139e2565b6001600160601b03929092166000908152600a60205260409020805463ffffffff191663ffffffff9093169290921790915550565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610a9757604051631afcd79f60e31b815260040160405180910390fd5b7f81c2bf9f7c6e8ac9bd8bcd9d323e94b867d2f5054aff8759d884773c680ec1ec8054600460ff19918216179091557f3bea789071f7022d2e499e6822d37d1c257788cb0571ef6b1f16966b885724a58054821660019081179091557f8a8216ae346f5d8074fa9b37ffd09a4992f4191e502fa1d51d941f5a64f5a25e80548316821790557fe785a33bc32d0e2a5e4b716d847330e9d735b07deed8b2509893b88e2b93b6ab8054909216811790915560dc600090815260026020527f4bee8dc518469fb8c73831886b94afa96b3ef3e3ee55b9076720259192220ef090606e5b60ff1660ff1681526020019081526020016000206000612bc060c890565b60ff1681526020810191909152604001600020805460ff1916911515919091179055565b7f1bd07f61ef326b4de236f5b68f225f46ff76ee2c375ae31a06da201c49c70c128054600460ff1991821681179092557fd9c9c94fc8f62fb3e9020ec6692ef87cedf81d23b1b13c613db81032a386b9e380548216600190811790915560009283527f0c5b5dcb854d48f82af9a0c0be9f07e9b6b87611330f3e1332370633114b39986020527f4ab3dc03b20370f9434f355300c236010beb3b3b136c6e0dfa03035ced7d908a805490921681179091559060029060645b60ff1660ff1681526020019081526020016000206000612cba606e90565b60ff1660ff1681526020019081526020016000206000612bc060d290565b7f7415b658af57d740454b01d91722f71a360db8fdd5ec2a068a92c37e2bc3b1d68054600a60ff19918216179091557fab79e80fd729060036ec87a13f874ebb2dc8097341e81335d5f018d31c2230ea8054821660019081179091557f8af8421b7334508d165e28c916d150439f145e2d4404f8d042384995e44da22c80548316821790557f704650e2c2b388c7f42b779fec98a489390951f3660e3a7b2934fe2ad93c296d80548316821790557ffb362930faacff64ed42cd22de657ab2009d6be858da2a0a71ae171c109762b380548316821790557fb19ff17ecc97d518e411a190bae6e3e57c7fe5b7729a8001643e962878c90e948054909216811790915560d3600090815260026020527feb6856e0ae0d71a8a9e0bc42aca98fe96c3be13699c5c2d551c94a190e39043d906004612ba2565b7fb96e7c6ce00677da9e7edc0b5e71a26baf67854c9401b1cb6b18f18ab47e894f805460ff199081166032179091557fe0f799b18ed14704744a6a90b2e266143509ff6f419922f415e020d311a951678054821660019081179091557ff6d470c2fb98eaf5d9d596e96de7d0a691978f6d979b269ca92a53d557258c0480548316821790557ffa53d3f6917a453ff553a8f5724fe00b960b6bd175de8e9a6477d8b5a89f761680548316821790557f77835ececcc7e965708390fdc28b7c7141b063a8a849f3954f1d294d077301848054603c93168317905560009182527f3926cb2852d780b0b027970c63edfde054d1b6dcba3e6f9d5494b62c7dc3deaf602052907fc9e3618963d7dbe07b8b3573182ffa1de8d2f958f5f00fb5340bae64f230e5ef9060dc612bc0565b7f345f7c6c888721344af4147de0834159e0b302300ba13c4e7b6c0b60d8f2314e8054600460ff1991821681179092557f407059394974f4a6e984471ea08a5889d3198ae87d98fbababeea2ec39cee73480548216600190811790915560009283527f6a139e57a9d1f86bc8f0b3d2eb8e45b5b4df08813d7b8752b0f4de25d5e262a66020527fd57fdcc48f6392aa013894061d4db610915b31b9da04e85b3ea48b2024e3a6ae805490921681179091559060029060c8612c9c565b60405163274acb3560e01b81526001600160601b0380841660048301528216602482015260009073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb35906044015b602060405180830381865af415801561305b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd4919061394c565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b604051632601631360e21b81526001600160601b0380841660048301528216602482015260009073__$3bac17678db7ae928afa209f2f44deec9c$__906398058c4c90604401602060405180830381865af4158015613136573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd49190613969565b6040516363cf551160e11b81526001600160601b0380841660048301528216602482015260009073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa229060440161303e565b60405163037c8cb160e51b815260ff8216600482015260009073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af41580156131fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321e9190613969565b1561323f5760405163093b89e160e11b815260048101849052602401610d57565b50600082815260036020526040908190208054915163037c8cb160e51b8152610100830460ff1660048201819052600160b01b90930463ffffffff16929073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af41580156132b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132dd9190613969565b156132fe5760405163566ebf7960e01b815260048101869052602401610d57565b60ff8085161461347d5781546133189060ff1682866117fa565b815461ff00191661010060ff861602178255604051634b00e98f60e11b8152600481018690527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af415801561339c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133c09190613b3d565b604051630713cfad60e31b81526004810188905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af4158015613410573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134349190613b5a565b6040805160ff938416815260ff1990921660208301528285169082015290861660608201523360808201523260a082015263ffffffff851660c082015260e00160405180910390a15b815462010000600160b01b03191633620100000217825561349c6134c4565b825463ffffffff91909116600160b01b0263ffffffff60b01b19909116179091555092915050565b600073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af415801561350f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f591906139e2565b60006020828403121561354557600080fd5b5035919050565b60ff8116811461355b57600080fd5b50565b60006020828403121561357057600080fd5b8135611dd48161354c565b6001600160601b038116811461355b57600080fd5b634e487b7160e01b600052604160045260246000fd5b64ffffffffff8116811461355b57600080fd5b60008082840360a08112156135cd57600080fd5b83356135d88161357b565b92506080601f19820112156135ec57600080fd5b506040516080810181811067ffffffffffffffff8211171561361057613610613590565b60405260208401356136218161354c565b815260408401356020820152606084013561363b816135a6565b60408201526080939093013560608401525092909150565b60006020828403121561366557600080fd5b6040516020810181811067ffffffffffffffff8211171561368857613688613590565b6040529050808235613699816135a6565b905292915050565b6000806000606084860312156136b657600080fd5b83356136c18161357b565b92506136d08560208601613653565b915060408401356136e08161357b565b809150509250925092565b600080604083850312156136fe57600080fd5b82356137098161357b565b91506137188460208501613653565b90509250929050565b60006020828403121561373357600080fd5b8135611dd48161357b565b6000815180845260005b8181101561376457602081850181015186830182015201613748565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000611dd4602083018461373e565b600080604083850312156137aa57600080fd5b82356137b58161357b565b915060208301356137c58161357b565b809150509250929050565b6000602082840312156137e257600080fd5b81356001600160a01b0381168114611dd457600080fd5b60ff815116825260ff602082015116602083015260018060a01b036040820151166040830152606081015163ffffffff808216606085015280608084015116608085015250505050565b602081526138556020820183516137f9565b6000602083015160c08084015261386f60e084018261373e565b949350505050565b60a081016109a182846137f9565b60008060006060848603121561389a57600080fd5b83356138a58161354c565b925060208401356138b58161354c565b915060408401356136e08161354c565b6000806000606084860312156138da57600080fd5b83356138e58161357b565b925060208401356136d08161357b565b60ff198116811461355b57600080fd5b6000806040838503121561391857600080fd5b82356139238161354c565b915060208301356137c5816138f5565b60006020828403121561394557600080fd5b5051919050565b60006020828403121561395e57600080fd5b8151611dd48161357b565b60006020828403121561397b57600080fd5b81518015158114611dd457600080fd5b600181811c9082168061399f57607f821691505b6020821081036139bf57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156139d757600080fd5b8151611dd4816135a6565b6000602082840312156139f457600080fd5b815163ffffffff81168114611dd457600080fd5b6001600160601b03948516815292841660208401529216604082015263ffffffff909116606082015260800190565b601f821115610a6257600081815260208120601f850160051c81016020861015613a5e5750805b601f850160051c820191505b8181101561090e57828155600101613a6a565b815167ffffffffffffffff811115613a9757613a97613590565b613aab81613aa5845461398b565b84613a37565b602080601f831160018114613ae05760008415613ac85750858301515b600019600386901b1c1916600185901b17855561090e565b600085815260208120601f198616915b82811015613b0f57888601518255948401946001909101908401613af0565b5085821015613b2d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215613b4f57600080fd5b8151611dd48161354c565b600060208284031215613b6c57600080fd5b8151611dd4816138f556fea26469706673582212200423216fe32f8832c3e8c84998f6bf7fcb8b34459f900d6eb952edf9bfb36e5364736f6c63430008140033608060405234801561001057600080fd5b50600480546001600160a01b03191633179055610749806100326000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638de1d14e116100665780638de1d14e14610113578063954a317214610126578063996f8d9114610139578063ddfe867f1461014f578063f2b297811461015757600080fd5b8063042f9da3146100985780634f9c1c09146100ad578063706e9ba9146100d5578063777d185714610100575b600080fd5b6100ab6100a6366004610645565b61016a565b005b6100c06100bb36600461067e565b610229565b60405190151581526020015b60405180910390f35b6100e86100e33660046106a2565b6102b6565b6040516001600160601b0390911681526020016100cc565b6100c061010e36600461067e565b610335565b6100ab61012136600461067e565b61037f565b6100ab610134366004610645565b6104a9565b610141610533565b6040519081526020016100cc565b6101416105b0565b6100e86101653660046106a2565b6105eb565b6004546001600160a01b031633146101b25760048054604051631d1f01d960e31b81526001600160a01b03909116918101919091523360248201526044015b60405180910390fd5b604051631461054360e31b8152600260048201526001600160601b038216602482015273__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__9063a3082a18906044015b60006040518083038186803b15801561020d57600080fd5b505af4158015610221573d6000803e3d6000fd5b505050505050565b604051632bfdd6b960e01b81526000600482018190526001600160601b03831660248301529073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__90632bfdd6b9906044015b602060405180830381865af415801561028c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b091906106bb565b92915050565b60405163e797d89960e01b8152600060048201819052602482018390529073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__9063e797d899906044015b602060405180830381865af4158015610311573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b091906106dd565b604051632bfdd6b960e01b8152600260048201526001600160601b038216602482015260009073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__90632bfdd6b99060440161026f565b6004546001600160a01b031633146103c25760048054604051631d1f01d960e31b81526001600160a01b03909116918101919091523360248201526044016101a9565b604051631461054360e31b8152600060048201526001600160601b038216602482015273__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__9063a3082a189060440160006040518083038186803b15801561041c57600080fd5b505af4158015610430573d6000803e3d6000fd5b5050604051631461054360e31b8152600260048201526001600160601b038416602482015273__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__925063a3082a18915060440160006040518083038186803b15801561048e57600080fd5b505af41580156104a2573d6000803e3d6000fd5b5050505050565b6004546001600160a01b031633146104ec5760048054604051631d1f01d960e31b81526001600160a01b03909116918101919091523360248201526044016101a9565b60405163539eabab60e11b8152600260048201526001600160601b038216602482015273__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__9063a73d5756906044016101f5565b604051638b6233dd60e01b81526002600482015260009073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__90638b6233dd906024015b602060405180830381865af4158015610587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ab91906106fa565b905090565b604051638b6233dd60e01b81526000600482018190529073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__90638b6233dd9060240161056a565b60405163e797d89960e01b8152600260048201526024810182905260009073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__9063e797d899906044016102f4565b6001600160601b038116811461064257600080fd5b50565b6000806040838503121561065857600080fd5b82356106638161062d565b915060208301356106738161062d565b809150509250929050565b60006020828403121561069057600080fd5b813561069b8161062d565b9392505050565b6000602082840312156106b457600080fd5b5035919050565b6000602082840312156106cd57600080fd5b8151801515811461069b57600080fd5b6000602082840312156106ef57600080fd5b815161069b8161062d565b60006020828403121561070c57600080fd5b505191905056fea264697066735822122037d2dfc53cf831d57156adb88d70913ea8017edc2cc968ace7dc6d0cccb543ae64736f6c63430008140033",
1201
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80637eb71df411610104578063bf1db3f9116100a2578063e9e96c7011610071578063e9e96c70146105c0578063f48016ce146105fe578063faaf71551461061f578063fb1454321461063257600080fd5b8063bf1db3f914610523578063bf7e214f14610536578063dfb7e33714610547578063e4b23d6b1461058d57600080fd5b80638fb36037116100de5780638fb36037146103d6578063a5961b4c146103f7578063a8989675146104a8578063b918ae88146104bb57600080fd5b80637eb71df41461039057806387fe5abb146103a35780638eaa6ac0146103b657600080fd5b80634b51da0c1161017c57806363fe327a1161014b57806363fe327a1461031557806365d467a914610326578063717f1b98146103395780637a9e5e4b1461037d57600080fd5b80634b51da0c146102aa5780634f9c1c09146102bd57806354f6127f146102d05780636291423a146102f057600080fd5b80632df8be9b116101b85780632df8be9b1461025957806338a699a41461026c5780633cacf20b1461028f578063468bce06146102a257600080fd5b806309648a9d146101df5780630d3581811461021e5780631807a48814610244575b600080fd5b6102076101ed366004613533565b600090815260036020526040902054610100900460ff1690565b60405160ff90911681526020015b60405180910390f35b61020761022c36600461355e565b60ff9081166000908152600160205260409020541690565b6102576102523660046135b9565b61065e565b005b6102576102673660046135b9565b610750565b61027f61027a366004613533565b610916565b6040519015158152602001610215565b61025761029d3660046136a1565b6109a7565b610257610a67565b6102576102b83660046136eb565b610a99565b61027f6102cb366004613721565b610b4a565b6102e36102de366004613533565b610be5565b6040516102159190613784565b6006546001600160a01b03165b6040516001600160a01b039091168152602001610215565b6005546001600160a01b03166102fd565b610257610334366004613797565b610c8a565b610365610347366004613721565b6001600160601b039081166000908152600860205260409020541690565b6040516001600160601b039091168152602001610215565b61025761038b3660046137d0565b610f54565b61036561039e366004613797565b610fca565b6102576103b1366004613797565b6112ed565b6103c96103c4366004613533565b611693565b6040516102159190613843565b6103de6117d4565b6040516001600160e01b03199091168152602001610215565b61049b610405366004613533565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915250600090815260036020908152604091829020825160a081018452905460ff8082168352610100820416928201929092526001600160a01b03620100008304169281019290925263ffffffff600160b01b820481166060840152600160d01b90910416608082015290565b6040516102159190613877565b6102576104b6366004613885565b6117fa565b6104fe6104c9366004613721565b6001600160601b0390811660009081526007602090815260408083205460099092529091205491169164ffffffffff90911690565b604080516001600160601b03909316835264ffffffffff909116602083015201610215565b61027f61053136600461355e565b6118eb565b6000546001600160a01b03166102fd565b610577610555366004613721565b6001600160601b031660009081526009602052604090205464ffffffffff1690565b60405164ffffffffff9091168152602001610215565b6105a061059b3660046138c5565b611938565b604080516001600160601b03938416815292909116602083015201610215565b61027f6105ce366004613885565b60ff9283166000908152600260209081526040808320948616835293815283822092851682529190915220541690565b61061161060c366004613905565b611d51565b604051908152602001610215565b61025761062d3660046138c5565b611ddb565b610365610640366004613721565b6001600160601b039081166000908152600760205260409020541690565b61074c73__$94a2c899be079b00d952d0d84fffaa5c34$__633889a4c86001600160601b038516601e6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af41580156106d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f79190613933565b60408051845160ff16602080830191909152850151818301529084015164ffffffffff16606080830191909152840151608082015260a0015b60405160208183030381529060405261074760ff90565b612224565b5050565b61083673__$94a2c899be079b00d952d0d84fffaa5c34$__633889a4c86001600160601b038516601e6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af41580156107c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e99190613933565b60408051845160ff16602080830191909152850151818301529084015164ffffffffff16606080830191909152840151608082015260a0015b604051602081830303815290604052612399565b6108ac8273__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610883573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a7919061394c565b612778565b6005546040516346f0e8a760e11b81526001600160601b03841660048201526001600160a01b0390911690638de1d14e90602401600060405180830381600087803b1580156108fa57600080fd5b505af115801561090e573d6000803e3d6000fd5b505050505050565b60008181526003602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf906024015b602060405180830381865af415801561097d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a19190613969565b92915050565b610a5873__$94a2c899be079b00d952d0d84fffaa5c34$__633889a4c86001600160601b03861660506040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af4158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a409190613933565b60408051855164ffffffffff16602082015201610822565b610a628382612778565b505050565b610a6f612a73565b610a77612ac1565b610a7f612be4565b610a87612cd8565b610a8f612e0f565b610a97612f3b565b565b61074c73__$94a2c899be079b00d952d0d84fffaa5c34$__633889a4c86001600160601b03851660506040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af4158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b329190613933565b60408051845164ffffffffff16602082015201610730565b60006109a173__$94a2c899be079b00d952d0d84fffaa5c34$__633889a4c86001600160601b03851660506040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af4158015610bc1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027a9190613933565b6000818152600360205260409020600101805460609190610c059061398b565b80601f0160208091040260200160405190810160405280929190818152602001828054610c319061398b565b8015610c7e5780601f10610c5357610100808354040283529160200191610c7e565b820191906000526020600020905b815481529060010190602001808311610c6157829003601f168201915b50505050509050919050565b6001600160601b038281166000908152600a602090815260408083205460089092529182902054915163010bd26b60e61b815263ffffffff9091166004820181905292919091169073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__906342f49ac090602401602060405180830381865af4158015610d0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d329190613969565b15610d6057604051631f7e16df60e01b81526001600160601b03851660048201526024015b60405180910390fd5b610d6a8184612ff7565b60086000866001600160601b03166001600160601b0316815260200190815260200160002060006101000a8154816001600160601b0302191690836001600160601b0316021790555073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015610dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2091906139c5565b60096000866001600160601b03166001600160601b0316815260200190815260200160002060006101000a81548164ffffffffff021916908364ffffffffff16021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015610eae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed291906139e2565b6001600160601b038581166000908152600a60209081526040808320805463ffffffff191663ffffffff9690961695909517909455600890528290205491517f9824c1941460e3f3dca0007309b88a95f4fb73bd9628ee7ad0a528b100983c7992610f469288928892909116908790613a08565b60405180910390a150505050565b60005433906001600160a01b03168114610f8b5760405162d1953b60e31b81526001600160a01b0382166004820152602401610d57565b816001600160a01b03163b600003610fc1576040516361798f2f60e11b81526001600160a01b0383166004820152602401610d57565b61074c8261307f565b6001600160601b0382166000908152600a602052604080822054905163010bd26b60e61b815263ffffffff9091166004820181905290829073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__906342f49ac090602401602060405180830381865af415801561103e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110629190613969565b1561108b57604051631f7e16df60e01b81526001600160601b0386166004820152602401610d57565b6001600160601b038086166000908152600860205260409020546110b1918691166130d3565b156110d8576001600160601b038086166000908152600860205260409020541692506110dc565b8392505b6001600160601b0380861660009081526008602052604090205461110191168461315a565b60086000876001600160601b03166001600160601b0316815260200190815260200160002060006101000a8154816001600160601b0302191690836001600160601b0316021790555073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b791906139c5565b60096000876001600160601b03166001600160601b0316815260200190815260200160002060006101000a81548164ffffffffff021916908364ffffffffff16021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015611245573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126991906139e2565b6001600160601b038681166000908152600a60209081526040808320805463ffffffff191663ffffffff9690961695909517909455600890528290205491517f18d78bbaea8f24a2aaa409f9f507204233a315575899fe3a802e20f15e81f5ef926112dd9289928892909116908790613a08565b60405180910390a1505092915050565b6001600160601b038281166000908152600a6020908152604080832054600783528184205460089093529281902054905163010bd26b60e61b815263ffffffff90931660048401819052939182169291169073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__906342f49ac090602401602060405180830381865af415801561137b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139f9190613969565b156113c857604051631f7e16df60e01b81526001600160601b0386166004820152602401610d57565b6113db6113d58383612ff7565b85612ff7565b60076000876001600160601b03166001600160601b0316815260200190815260200160002060006101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561146d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611491919061394c565b60086000876001600160601b03166001600160601b0316815260200190815260200160002060006101000a8154816001600160601b0302191690836001600160601b0316021790555073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611523573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154791906139c5565b60096000876001600160601b03166001600160601b0316815260200190815260200160002060006101000a81548164ffffffffff021916908364ffffffffff16021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af41580156115d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f991906139e2565b6001600160601b038681166000818152600a60209081526040808320805463ffffffff191663ffffffff978816179055600782529182902054825193845287851691840191909152858416838301528884166060840152909216608082015291851660a0830152517ff3a6a30356c886f04fc20380e987b6e55a1e83a7926e1a21ee6001faced599c99160c0908290030190a15050505050565b6040805160e081018252600091810182815260608083018490526080830184905260a0830184905260c083019390935281526020810191909152600082815260036020908152604091829020825160e081018452815460ff80821695830195865261010082041660608301526001600160a01b0362010000820416608083015263ffffffff600160b01b8204811660a0840152600160d01b9091041660c0820152928352600181018054919284019161174b9061398b565b80601f01602080910402602001604051908101604052809291908181526020018280546117779061398b565b80156117c45780601f10611799576101008083540402835291602001916117c4565b820191906000526020600020905b8154815290600101906020018083116117a757829003601f168201915b5050505050815250509050919050565b60008054600160a01b900460ff166117ec5750600090565b638fb3603760e01b5b905090565b60ff8381166000908152600160205260409081902054905163037c8cb160e51b81529116600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af415801561185f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118839190613969565b1561188d57505050565b60ff808416600090815260026020908152604080832086851684528252808320858516845290915290205416610a6257604051636bb20ea760e01b815260ff8085166004830152808416602483015282166044820152606401610d57565b60ff81811660009081526001602052604080822054905163b2466acf60e01b8152921660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401610960565b6001600160601b0383166000908152600a602052604080822054905163010bd26b60e61b815263ffffffff909116600482018190528291829073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__906342f49ac090602401602060405180830381865af41580156119ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d19190613969565b156119fa57604051631f7e16df60e01b81526001600160601b0388166004820152602401610d57565b6001600160601b03808816600090815260086020526040902054611a20918891166130d3565b15611a47576001600160601b03808816600090815260086020526040902054169350611a4b565b8593505b6001600160601b03808816600090815260086020526040902054611a71918791166130d3565b15611a98576001600160601b03808816600090815260086020526040902054169250611a9c565b8492505b6001600160601b03808816600090815260076020526040902054611ac191168561315a565b6001600160601b03888116600090815260076020908152604080832080546001600160601b03191695851695909517909455600890529190912054611b0791168461315a565b60086000896001600160601b03166001600160601b0316815260200190815260200160002060006101000a8154816001600160601b0302191690836001600160601b0316021790555073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbd91906139c5565b60096000896001600160601b03166001600160601b0316815260200190815260200160002060006101000a81548164ffffffffff021916908364ffffffffff16021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015611c4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6f91906139e2565b6001600160601b038881166000908152600a60209081526040808320805463ffffffff191663ffffffff9690961695909517909455600790528290205491517f4d67c2532a3443dbc1612538256c1fb6566afcd9729bf99254b26aef3b953cdd92611ce3928b928992909116908790613a08565b60405180910390a16001600160601b03808816600090815260086020526040908190205490517f18d78bbaea8f24a2aaa409f9f507204233a315575899fe3a802e20f15e81f5ef92611d3f928b92889291909116908790613a08565b60405180910390a15050935093915050565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$4b9aaffa8d044614668dad578b824b8eee$__9063f48016ce90604401602060405180830381865af4158015611db0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd49190613933565b9392505050565b6001600160601b0383166000908152600a602052604080822054905163010bd26b60e61b815263ffffffff90911660048201819052919073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__906342f49ac090602401602060405180830381865af4158015611e4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e729190613969565b15611e9b57604051631f7e16df60e01b81526001600160601b0386166004820152602401610d57565b6040516330b8415f60e01b81526001600160601b038516600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af4158015611ef3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f179190613969565b15611fb157506001600160601b03808516600090815260076020526040902054600191611f45911685612ff7565b6001600160601b038681166000908152600760205260409081902080546001600160601b03191693909216928317909155517fa206257df4168139cff2e8dea9c50f2226429e81d904d5ee2b14e4f4656f30f591611fa891889188918790613a08565b60405180910390a15b6040516330b8415f60e01b81526001600160601b038416600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af4158015612009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202d9190613969565b156120c757506001600160601b0380851660009081526008602052604090205460019161205b911684612ff7565b6001600160601b038681166000908152600860205260409081902080546001600160601b03191693909216928317909155517f9824c1941460e3f3dca0007309b88a95f4fb73bd9628ee7ad0a528b100983c79916120be91889187918790613a08565b60405180910390a15b801561221d5773__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015612116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213a91906139c5565b60096000876001600160601b03166001600160601b0316815260200190815260200160002060006101000a81548164ffffffffff021916908364ffffffffff16021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af41580156121c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ec91906139e2565b6001600160601b0386166000908152600a60205260409020805463ffffffff191663ffffffff929092169190911790555b5050505050565b600061223084836131a5565b600085815260036020526040902090915060010161224e8482613a7d565b50604051634b00e98f60e11b8152600481018590527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af41580156122c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e59190613b3d565b604051630713cfad60e31b81526004810187905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af4158015612335573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123599190613b5a565b6040805160ff938416815260ff1990921660208301529185169181019190915233606082015232608082015263ffffffff831660a082015260c001610f46565b604051634b00e98f60e11b81526004810183905260009073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af41580156123ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124109190613b3d565b60405163037c8cb160e51b815260ff8216600482015290915073__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636f91962090602401602060405180830381865af4158015612465573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124899190613969565b156124ac576040516307014a8d60e51b815260ff82166004820152602401610d57565b600083815260036020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401602060405180830381865af4158015612515573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125399190613969565b1561256357604051633f92eac960e21b81526004810185905260ff83166024820152604401610d57565b33600061256e6134c4565b9050600061257b856118eb565b61258657600461259c565b60ff808616600090815260016020526040902054165b845460ff87811661ffff1990921691909117610100918316919091021762010000600160d01b031916620100006001600160a01b0386160263ffffffff60b01b191617600160b01b63ffffffff85169081029190911763ffffffff60d01b1916600160d01b9190910217855560008881526003602052604090209091506001016126268782613a7d565b50604051634b00e98f60e11b8152600481018890527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af4158015612699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126bd9190613b3d565b604051630713cfad60e31b8152600481018a905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af415801561270d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127319190613b5a565b6040805160ff938416815260ff19929092166020830152918416818301526001600160a01b038616606082015232608082015290519081900360a00190a150505050505050565b6001600160601b0382166000908152600a60205260409081902054905163d15b589360e01b815263ffffffff909116600482015273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063d15b589390602401602060405180830381865af41580156127e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280c9190613969565b15612835576040516366d785a360e11b81526001600160601b0383166004820152602401610d57565b6001600160601b0382811660009081526007602090815260409182902080546001600160601b03191693851693909317909255805163bc1b392d60e01b8152905173__$3bac17678db7ae928afa209f2f44deec9c$__9263bc1b392d92600480820193918290030181865af41580156128b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d6919061394c565b60086000846001600160601b03166001600160601b0316815260200190815260200160002060006101000a8154816001600160601b0302191690836001600160601b0316021790555073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015612968573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298c91906139c5565b60096000846001600160601b03166001600160601b0316815260200190815260200160002060006101000a81548164ffffffffff021916908364ffffffffff16021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015612a1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a3e91906139e2565b6001600160601b03929092166000908152600a60205260409020805463ffffffff191663ffffffff9093169290921790915550565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610a9757604051631afcd79f60e31b815260040160405180910390fd5b7f81c2bf9f7c6e8ac9bd8bcd9d323e94b867d2f5054aff8759d884773c680ec1ec8054600460ff19918216179091557f3bea789071f7022d2e499e6822d37d1c257788cb0571ef6b1f16966b885724a58054821660019081179091557f8a8216ae346f5d8074fa9b37ffd09a4992f4191e502fa1d51d941f5a64f5a25e80548316821790557fe785a33bc32d0e2a5e4b716d847330e9d735b07deed8b2509893b88e2b93b6ab8054909216811790915560dc600090815260026020527f4bee8dc518469fb8c73831886b94afa96b3ef3e3ee55b9076720259192220ef090606e5b60ff1660ff1681526020019081526020016000206000612bc060c890565b60ff1681526020810191909152604001600020805460ff1916911515919091179055565b7f1bd07f61ef326b4de236f5b68f225f46ff76ee2c375ae31a06da201c49c70c128054600460ff1991821681179092557fd9c9c94fc8f62fb3e9020ec6692ef87cedf81d23b1b13c613db81032a386b9e380548216600190811790915560009283527f0c5b5dcb854d48f82af9a0c0be9f07e9b6b87611330f3e1332370633114b39986020527f4ab3dc03b20370f9434f355300c236010beb3b3b136c6e0dfa03035ced7d908a805490921681179091559060029060645b60ff1660ff1681526020019081526020016000206000612cba606e90565b60ff1660ff1681526020019081526020016000206000612bc060d290565b7f7415b658af57d740454b01d91722f71a360db8fdd5ec2a068a92c37e2bc3b1d68054600a60ff19918216179091557fab79e80fd729060036ec87a13f874ebb2dc8097341e81335d5f018d31c2230ea8054821660019081179091557f8af8421b7334508d165e28c916d150439f145e2d4404f8d042384995e44da22c80548316821790557f704650e2c2b388c7f42b779fec98a489390951f3660e3a7b2934fe2ad93c296d80548316821790557ffb362930faacff64ed42cd22de657ab2009d6be858da2a0a71ae171c109762b380548316821790557fb19ff17ecc97d518e411a190bae6e3e57c7fe5b7729a8001643e962878c90e948054909216811790915560d3600090815260026020527feb6856e0ae0d71a8a9e0bc42aca98fe96c3be13699c5c2d551c94a190e39043d906004612ba2565b7fb96e7c6ce00677da9e7edc0b5e71a26baf67854c9401b1cb6b18f18ab47e894f805460ff199081166032179091557fe0f799b18ed14704744a6a90b2e266143509ff6f419922f415e020d311a951678054821660019081179091557ff6d470c2fb98eaf5d9d596e96de7d0a691978f6d979b269ca92a53d557258c0480548316821790557ffa53d3f6917a453ff553a8f5724fe00b960b6bd175de8e9a6477d8b5a89f761680548316821790557f77835ececcc7e965708390fdc28b7c7141b063a8a849f3954f1d294d077301848054603c93168317905560009182527f3926cb2852d780b0b027970c63edfde054d1b6dcba3e6f9d5494b62c7dc3deaf602052907fc9e3618963d7dbe07b8b3573182ffa1de8d2f958f5f00fb5340bae64f230e5ef9060dc612bc0565b7f345f7c6c888721344af4147de0834159e0b302300ba13c4e7b6c0b60d8f2314e8054600460ff1991821681179092557f407059394974f4a6e984471ea08a5889d3198ae87d98fbababeea2ec39cee73480548216600190811790915560009283527f6a139e57a9d1f86bc8f0b3d2eb8e45b5b4df08813d7b8752b0f4de25d5e262a66020527fd57fdcc48f6392aa013894061d4db610915b31b9da04e85b3ea48b2024e3a6ae805490921681179091559060029060c8612c9c565b60405163274acb3560e01b81526001600160601b0380841660048301528216602482015260009073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb35906044015b602060405180830381865af415801561305b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd4919061394c565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b604051632601631360e21b81526001600160601b0380841660048301528216602482015260009073__$3bac17678db7ae928afa209f2f44deec9c$__906398058c4c90604401602060405180830381865af4158015613136573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd49190613969565b6040516363cf551160e11b81526001600160601b0380841660048301528216602482015260009073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa229060440161303e565b60405163037c8cb160e51b815260ff8216600482015260009073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af41580156131fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321e9190613969565b1561323f5760405163093b89e160e11b815260048101849052602401610d57565b50600082815260036020526040908190208054915163037c8cb160e51b8152610100830460ff1660048201819052600160b01b90930463ffffffff16929073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af41580156132b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132dd9190613969565b156132fe5760405163566ebf7960e01b815260048101869052602401610d57565b60ff8085161461347d5781546133189060ff1682866117fa565b815461ff00191661010060ff861602178255604051634b00e98f60e11b8152600481018690527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af415801561339c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133c09190613b3d565b604051630713cfad60e31b81526004810188905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af4158015613410573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134349190613b5a565b6040805160ff938416815260ff1990921660208301528285169082015290861660608201523360808201523260a082015263ffffffff851660c082015260e00160405180910390a15b815462010000600160b01b03191633620100000217825561349c6134c4565b825463ffffffff91909116600160b01b0263ffffffff60b01b19909116179091555092915050565b600073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af415801561350f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f591906139e2565b60006020828403121561354557600080fd5b5035919050565b60ff8116811461355b57600080fd5b50565b60006020828403121561357057600080fd5b8135611dd48161354c565b6001600160601b038116811461355b57600080fd5b634e487b7160e01b600052604160045260246000fd5b64ffffffffff8116811461355b57600080fd5b60008082840360a08112156135cd57600080fd5b83356135d88161357b565b92506080601f19820112156135ec57600080fd5b506040516080810181811067ffffffffffffffff8211171561361057613610613590565b60405260208401356136218161354c565b815260408401356020820152606084013561363b816135a6565b60408201526080939093013560608401525092909150565b60006020828403121561366557600080fd5b6040516020810181811067ffffffffffffffff8211171561368857613688613590565b6040529050808235613699816135a6565b905292915050565b6000806000606084860312156136b657600080fd5b83356136c18161357b565b92506136d08560208601613653565b915060408401356136e08161357b565b809150509250925092565b600080604083850312156136fe57600080fd5b82356137098161357b565b91506137188460208501613653565b90509250929050565b60006020828403121561373357600080fd5b8135611dd48161357b565b6000815180845260005b8181101561376457602081850181015186830182015201613748565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000611dd4602083018461373e565b600080604083850312156137aa57600080fd5b82356137b58161357b565b915060208301356137c58161357b565b809150509250929050565b6000602082840312156137e257600080fd5b81356001600160a01b0381168114611dd457600080fd5b60ff815116825260ff602082015116602083015260018060a01b036040820151166040830152606081015163ffffffff808216606085015280608084015116608085015250505050565b602081526138556020820183516137f9565b6000602083015160c08084015261386f60e084018261373e565b949350505050565b60a081016109a182846137f9565b60008060006060848603121561389a57600080fd5b83356138a58161354c565b925060208401356138b58161354c565b915060408401356136e08161354c565b6000806000606084860312156138da57600080fd5b83356138e58161357b565b925060208401356136d08161357b565b60ff198116811461355b57600080fd5b6000806040838503121561391857600080fd5b82356139238161354c565b915060208301356137c5816138f5565b60006020828403121561394557600080fd5b5051919050565b60006020828403121561395e57600080fd5b8151611dd48161357b565b60006020828403121561397b57600080fd5b81518015158114611dd457600080fd5b600181811c9082168061399f57607f821691505b6020821081036139bf57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156139d757600080fd5b8151611dd4816135a6565b6000602082840312156139f457600080fd5b815163ffffffff81168114611dd457600080fd5b6001600160601b03948516815292841660208401529216604082015263ffffffff909116606082015260800190565b601f821115610a6257600081815260208120601f850160051c81016020861015613a5e5750805b601f850160051c820191505b8181101561090e57828155600101613a6a565b815167ffffffffffffffff811115613a9757613a97613590565b613aab81613aa5845461398b565b84613a37565b602080601f831160018114613ae05760008415613ac85750858301515b600019600386901b1c1916600185901b17855561090e565b600085815260208120601f198616915b82811015613b0f57888601518255948401946001909101908401613af0565b5085821015613b2d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215613b4f57600080fd5b8151611dd48161354c565b600060208284031215613b6c57600080fd5b8151611dd4816138f556fea26469706673582212200423216fe32f8832c3e8c84998f6bf7fcb8b34459f900d6eb952edf9bfb36e5364736f6c63430008140033",
1648
+ "bytecode": "0x608060405234801561000f575f80fd5b50604051615a89380380615a8983398101604081905261002e91610e15565b33610038816102ae565b50610041610301565b6100a9826001600160a01b031663e2b178a06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610080573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a49190610e4d565b610324565b600480546001600160a01b038085166001600160a01b03199283161790925560068054928416929091169190911790556040516100e590610df1565b604051809103905ff0801580156100fe573d5f803e3d5ffd5b50600580546001600160a01b0319166001600160a01b039290921691909117905560405163efac97cf60e01b815261044d60048201526102a79073__$94a2c899be079b00d952d0d84fffaa5c34$__9063efac97cf90602401602060405180830381865af4158015610172573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101969190610e83565b60405180608001604052806101af6103a160201b60201c565b60ff1681526020016001815260200173__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__63c6edc3dd6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610205573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102299190610e9e565b64ffffffffff16815260200173__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__63f87bf3736040518163ffffffff1660e01b8152600401602060405180830381865af415801561027c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a09190610ec2565b90526103a6565b50506110c2565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b61030e60205b600161058a565b610318600b610307565b6103226021610307565b565b5f5433906001600160a01b0316811461035f5760405162d1953b60e31b81526001600160a01b03821660048201526024015b60405180910390fd5b816001600160a01b03163b5f03610394576040516361798f2f60e11b81526001600160a01b0383166004820152602401610356565b61039d826102ae565b5050565b600190565b60408051630711349960e31b81526001600160601b0384166004820152602060248201819052915161047d9273__$94a2c899be079b00d952d0d84fffaa5c34$__92633889a4c892604480830193928290030181865af415801561040c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104309190610ec2565b60408051845160ff16602080830191909152850151818301529084015164ffffffffff16606080830191909152840151608082015260a00160408051601f198184030181529190526105cc565b73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af41580156104c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e89190610ed9565b6001600160601b0383165f908152601060205260409020805463ffffffff191663ffffffff929092169190911790556105208261098f565b6005546040516346f0e8a760e11b81526001600160601b03841660048201526001600160a01b0390911690638de1d14e906024015f604051808303815f87803b15801561056b575f80fd5b505af115801561057d573d5f803e3d5ffd5b505050505050565b905090565b60ff8281165f9081526001602052604090205416156105ab576105ab610efc565b60ff9182165f908152600160205260409020805460ff191691909216179055565b604051634b00e98f60e11b8152600481018390525f9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af415801561061c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106409190610f10565b60405163037c8cb160e51b815260ff8216600482015290915073__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636f91962090602401602060405180830381865af4158015610693573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b79190610f30565b156106da576040516307014a8d60e51b815260ff82166004820152602401610356565b5f83815260036020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401602060405180830381865af4158015610740573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107649190610f30565b1561078e57604051633f92eac960e21b81526004810185905260ff83166024820152604401610356565b61079782610cf9565b6107b957604051636cb0978b60e11b815260ff83166004820152602401610356565b5f6107c2610d85565b60ff8085165f908152600160205260408120549293509116835460ff86811661ffff1990921691909117610100918316919091021762010000600160501b0319166201000063ffffffff851690810263ffffffff60301b1916919091176601000000000000919091021784555f87815260036020526040902090915060010161084b8682610fe7565b50604051634b00e98f60e11b8152600481018790527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af41580156108bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e09190610f10565b604051630713cfad60e31b81526004810189905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af415801561092e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061095291906110a1565b6040805160ff938416815260ff199290921660208301529184168183015233606082015232608082015290519081900360a00190a1505050505050565b6001600160601b0381165f908152600c60205260409081902054905163d15b589360e01b815263ffffffff909116600482015273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063d15b589390602401602060405180830381865af41580156109fc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a209190610f30565b15610a49576040516366d785a360e11b81526001600160601b0382166004820152602401610356565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610a90573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab49190610e83565b60085f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610b41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b659190610e83565b60095f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610bf2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c169190610e83565b600a5f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015610ca3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc79190610ed9565b6001600160601b03919091165f908152600c60205260409020805463ffffffff191663ffffffff909216919091179055565b60ff8181165f9081526001602052604080822054905163b2466acf60e01b8152921660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401602060405180830381865af4158015610d5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d7f9190610f30565b92915050565b5f73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015610dcd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105859190610ed9565b61074c8061533d83390190565b6001600160a01b0381168114610e12575f80fd5b50565b5f8060408385031215610e26575f80fd5b8251610e3181610dfe565b6020840151909250610e4281610dfe565b809150509250929050565b5f60208284031215610e5d575f80fd5b8151610e6881610dfe565b9392505050565b6001600160601b0381168114610e12575f80fd5b5f60208284031215610e93575f80fd5b8151610e6881610e6f565b5f60208284031215610eae575f80fd5b815164ffffffffff81168114610e68575f80fd5b5f60208284031215610ed2575f80fd5b5051919050565b5f60208284031215610ee9575f80fd5b815163ffffffff81168114610e68575f80fd5b634e487b7160e01b5f52600160045260245ffd5b5f60208284031215610f20575f80fd5b815160ff81168114610e68575f80fd5b5f60208284031215610f40575f80fd5b81518015158114610e68575f80fd5b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680610f7757607f821691505b602082108103610f9557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610fe257805f5260205f20601f840160051c81016020851015610fc05750805b601f840160051c820191505b81811015610fdf575f8155600101610fcc565b50505b505050565b81516001600160401b0381111561100057611000610f4f565b6110148161100e8454610f63565b84610f9b565b6020601f821160018114611046575f831561102f5750848201515b5f19600385901b1c1916600184901b178455610fdf565b5f84815260208120601f198516915b828110156110755787850151825560209485019460019092019101611055565b508482101561109257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f602082840312156110b1575f80fd5b815160ff1981168114610e68575f80fd5b61426e806110cf5f395ff3fe608060405234801561000f575f80fd5b506004361061023f575f3560e01c8063828227de11610135578063bf7e214f116100b4578063eb98e8a011610079578063eb98e8a01461074f578063f48016ce14610782578063fb14543214610795578063fb39549c146107c0578063ff86054d146107d3575f80fd5b8063bf7e214f146106a9578063d7537c37146106b9578063dfb7e337146106cc578063e067350f14610711578063e9e96c701461073c575f80fd5b8063a5961b4c116100fa578063a5961b4c14610562578063a8989675146105ee578063b04fa50614610601578063beba11201461066b578063bf1db3f914610696575f80fd5b8063828227de1461048b5780638eaa6ac0146104ce5780638fb36037146104ee57806391a2059f1461050f5780639a7263641461054f575f80fd5b80634b51da0c116101c15780636291423a116101865780636291423a146103e6578063717f1b98146103f757806377f91851146104225780637a9e5e4b146104355780637b21556114610448575f80fd5b80634b51da0c146103685780634f9c1c091461037b57806354f6127f1461038e5780635cce3fa1146103ae57806362841be2146103d3575f80fd5b806330f441991161020757806330f44199146102f95780633861317f1461030c57806338a699a41461031f5780633fbdfe32146103425780634a2101d114610355575f80fd5b806309648a9d146102435780630d35818114610281578063136cfef7146102a65780631807a488146102d15780632df8be9b146102e6575b5f80fd5b61026a610251366004613a07565b5f90815260036020526040902054610100900460ff1690565b60405160ff90911681526020015b60405180910390f35b61026a61028f366004613a2f565b60ff9081165f908152600160205260409020541690565b6102b96102b4366004613a5e565b61084d565b6040516001600160601b039091168152602001610278565b6102e46102df366004613abb565b610934565b005b6102e46102f4366004613abb565b610a20565b6102e4610307366004613b52565b610a33565b6102e461031a366004613b52565b610bd8565b61033261032d366004613a07565b610ce1565b6040519015158152602001610278565b6102b9610350366004613b52565b610d6f565b6102e4610363366004613b52565b610ef3565b6102e4610376366004613b9a565b610fcf565b610332610389366004613c0c565b611087565b6103a161039c366004613a07565b61111f565b6040516102789190613c55565b6005546001600160a01b03165b6040516001600160a01b039091168152602001610278565b6102e46103e1366004613b9a565b6111c1565b6006546001600160a01b03166103bb565b6102b9610405366004613c0c565b6001600160601b039081165f908152600960205260409020541690565b6102b9610430366004613c7d565b611292565b6102e4610443366004613ccb565b6114ee565b61047d610456366004613ce4565b5f9182526007602090815260408084206001600160a01b0393909316845291905290205490565b604051908152602001610278565b6104b9610499366004613c0c565b6001600160601b03165f908152600c602052604090205463ffffffff1690565b60405163ffffffff9091168152602001610278565b6104e16104dc366004613a07565b611562565b6040516102789190613d0e565b6104f6611683565b6040516001600160e01b03199091168152602001610278565b6102b961051d366004613d74565b6001600160601b039182165f908152600d602090815260408083206001600160a01b0394909416835292905220541690565b6102e461055d366004613d9e565b6116a7565b6105e1610570366004613a07565b60408051608080820183525f8083526020808401829052838501829052606093840182905294815260038552839020835191820184525460ff80821683526101008204169482019490945263ffffffff620100008504811693820193909352600160301b9093049091169082015290565b6040516102789190613dd1565b6102e46105fc366004613e12565b6116d5565b61065b61060f366004613c0c565b6001600160601b039081165f908152600860209081526040808320546009835281842054600a845282852054600c90945291909320549284169490841693919091169163ffffffff1690565b6040516102789493929190613e4f565b6102b9610679366004613c0c565b6001600160601b039081165f908152600f60205260409020541690565b6103326106a4366004613a2f565b6117e0565b5f546001600160a01b03166103bb565b6102b96106c7366004613a5e565b61182c565b6106fb6106da366004613c0c565b6001600160601b03165f908152600b602052604090205464ffffffffff1690565b60405164ffffffffff9091168152602001610278565b6102b961071f366004613c0c565b6001600160601b039081165f908152600a60205260409020541690565b61033261074a366004613e12565b6118ad565b61076261075d366004613e7e565b6118e0565b604080516001600160601b03938416815292909116602083015201610278565b61047d610790366004613ecb565b611b82565b6102b96107a3366004613c0c565b6001600160601b039081165f908152600860205260409020541690565b6102b96107ce366004613c7d565b611c02565b6108206107e1366004613c0c565b6001600160601b039081165f908152600860209081526040808320546009835281842054600b9093529220549183169392169164ffffffffff90911690565b604080516001600160601b03948516815293909216602084015264ffffffffff1690820152606001610278565b5f61085a335b5f36611f20565b6001600160601b038084165f908152600a60205260409020541661087e8382612016565b156108bc576040516301a4b29960e11b81526001600160601b0380861660048301528085166024830152821660448201526064015b60405180910390fd5b6001600160601b038085165f908152600a60205260409020546108e091168461209a565b91505f6108ed858461211f565b90507fd3383e52279373b5cfb83f1b6d4bd83e415313626f418a63a24251420d4b96df858585846040516109249493929190613e4f565b60405180910390a1505092915050565b61093d33610853565b60408051630711349960e31b81526001600160601b03841660048201526020602482018190529151610a1c9273__$94a2c899be079b00d952d0d84fffaa5c34$__92633889a4c892604480830193928290030181865af41580156109a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c79190613ef7565b60408051845160ff16602080830191909152850151818301529084015164ffffffffff16606080830191909152840151608082015260a0015b604051602081830303815290604052610a1760ff90565b6122bf565b5050565b610a2933610853565b610a1c828261242e565b610a3c33610853565b5f610a46846125fd565b6001600160601b038086165f9081526008602090815260408083205460099092529091205492935081169116610af986610a89610a8385856126bf565b876126bf565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610ad0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610af49190613f0e565b612709565b6001600160601b038086165f90815260086020526040902054610b50918791610b2791610a839116856126bf565b6001600160601b038089165f90815260096020526040902054610b4b91168561209a565b61289f565b6001600160601b038681165f8181526008602090815260409182902054825193845286851691840191909152848416918301919091528683166060830152909116608082015263ffffffff841660a08201527ff3a6a30356c886f04fc20380e987b6e55a1e83a7926e1a21ee6001faced599c99060c0015b60405180910390a1505050505050565b610be133610853565b5f610beb846125fd565b6001600160601b038086165f90815260086020526040902054919250610c37918691610c189116856126bf565b6001600160601b038088165f9081526009602052604090205416612709565b6001600160601b038084165f90815260086020526040902054610c80918591610c619116856126bf565b6001600160601b038087165f908152600960205260409020541661289f565b6001600160601b038085165f90815260086020526040908190205490517fa206257df4168139cff2e8dea9c50f2226429e81d904d5ee2b14e4f4656f30f592610cd3928892879291909116908690613e4f565b60405180910390a150505050565b5f8181526003602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf906024015b602060405180830381865af4158015610d45573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d699190613f38565b92915050565b5f610d7933610853565b5f610d83856125fd565b6001600160601b038681165f9081526009602052604090819020549051637931c81160e01b815286831660048201529116602482015290915073__$3bac17678db7ae928afa209f2f44deec9c$__90637931c81190604401602060405180830381865af4158015610df6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e1a9190613f0e565b6001600160601b038087165f90815260086020908152604080832054600990925290912054929450610e5792889291821691610af491168661209a565b6001600160601b038085165f90815260086020908152604080832054600990925290912054610e90928792811691610b4b91168661209a565b6001600160601b038086165f90815260096020526040908190205490517f18d78bbaea8f24a2aaa409f9f507204233a315575899fe3a802e20f15e81f5ef92610ee3928992879291909116908690613e4f565b60405180910390a1509392505050565b610efc33610853565b5f610f06846125fd565b6001600160601b038086165f90815260086020908152604080832054600990925290912054929350610f4392879291821691610af49116866126bf565b6001600160601b038084165f90815260086020908152604080832054600990925290912054610f7c928692811691610b4b9116866126bf565b6001600160601b038085165f90815260096020526040908190205490517f9824c1941460e3f3dca0007309b88a95f4fb73bd9628ee7ad0a528b100983c7992610cd3928892879291909116908690613e4f565b610fd833610853565b610a1c73__$94a2c899be079b00d952d0d84fffaa5c34$__633889a4c86001600160601b03851660216040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af415801561104b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061106f9190613ef7565b60408051845164ffffffffff16602082015201610a00565b5f610d6973__$94a2c899be079b00d952d0d84fffaa5c34$__633889a4c86001600160601b03851660216040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af41580156110fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061032d9190613ef7565b5f81815260036020526040902060010180546060919061113e90613f51565b80601f016020809104026020016040519081016040528092919081815260200182805461116a90613f51565b80156111b55780601f1061118c576101008083540402835291602001916111b5565b820191905f5260205f20905b81548152906001019060200180831161119857829003601f168201915b50505050509050919050565b6111ca33610853565b61128973__$94a2c899be079b00d952d0d84fffaa5c34$__633889a4c86001600160601b03851660216040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af415801561123d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112619190613ef7565b60408051845164ffffffffff166020820152015b60405160208183030381529060405261292f565b610a1c82612cea565b5f61129c33610853565b5f805f6112a98887613050565b9250925092506112b982866126bf565b604051632c34efe560e11b81526001600160601b0382166004820152602481018990529094505f9073__$3bac17678db7ae928afa209f2f44deec9c$__90635869dfca90604401602060405180830381865af415801561131b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061133f9190613f0e565b6001600160601b038a81165f818152600d602090815260408083206001600160a01b038e1680855290835281842080546001600160601b03199081168e891617909155858552600e84528285209185529083528184208054909116878716179055928252600f905220549192506113c1916113bb91168461209a565b826126bf565b600f5f8b6001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af415801561144e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114729190613f9a565b6001600160601b038a165f9081526010602052604090819020805463ffffffff191663ffffffff9390931692909217909155517f4bd4ee2e64e523eeed623045709eb9e7828b3b191c978feb362e5b600c7d4dd9906114da908b908a908a908a908a90613fb5565b60405180910390a150505050949350505050565b5f5433906001600160a01b031681146115245760405162d1953b60e31b81526001600160a01b03821660048201526024016108b3565b816001600160a01b03163b5f03611559576040516361798f2f60e11b81526001600160a01b03831660048201526024016108b3565b610a1c82613160565b6040805160c0810182525f91810182815260608083018490526080830184905260a0830193909352815260208101919091525f82815260036020908152604091829020825160c081018452815460ff808216958301958652610100820416606083015263ffffffff62010000820481166080840152600160301b9091041660a082015292835260018101805491928401916115fc90613f51565b80601f016020809104026020016040519081016040528092919081815260200182805461162890613f51565b80156116735780601f1061164a57610100808354040283529160200191611673565b820191905f5260205f20905b81548152906001019060200180831161165657829003601f168201915b5050505050815250509050919050565b5f8054600160a01b900460ff1661169957505f90565b638fb3603760e01b5b905090565b6116b033610853565b5f9283526007602090815260408085206001600160a01b039094168552929052912055565b60ff8381165f908152600160205260409081902054905163037c8cb160e51b81529116600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af4158015611737573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061175b9190613f38565b1561177e576040516321b9f44760e01b815260ff841660048201526024016108b3565b60ff8084165f908152600260209081526040808320868516845282528083208585168452909152902054166117db57604051636bb20ea760e01b815260ff80851660048301528084166024830152821660448201526064016108b3565b505050565b60ff8181165f9081526001602052604080822054905163b2466acf60e01b8152921660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401610d2a565b5f61183633610853565b6001600160601b038084165f908152600a602052604090205461185a9116836126bf565b90505f611867848361211f565b90507f15ce01bb869f4f5440b921c09a1c73e043269a1e29f44d11a7a899ed51fa67b88484848460405161189e9493929190613e4f565b60405180910390a15092915050565b60ff8084165f908152600260209081526040808320868516845282528083208585168452909152902054165b9392505050565b5f806118eb33610853565b5f6118f5876125fd565b6001600160601b038881165f9081526008602052604090819020549051637931c81160e01b815288831660048201529116602482015290915073__$3bac17678db7ae928afa209f2f44deec9c$__90637931c81190604401602060405180830381865af4158015611968573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061198c9190613f0e565b6001600160601b038881165f9081526009602052604090819020549051637931c81160e01b815287831660048201529116602482015290935073__$3bac17678db7ae928afa209f2f44deec9c$__90637931c81190604401602060405180830381865af41580156119ff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a239190613f0e565b6001600160601b038089165f90815260086020526040902054919350611a74918991611a5091168661209a565b6001600160601b03808b165f90815260096020526040902054610af491168661209a565b6001600160601b038087165f90815260086020526040902054611ac2918891611a9e91168661209a565b6001600160601b03808a165f90815260096020526040902054610b4b91168661209a565b6001600160601b038088165f90815260086020526040908190205490517f4d67c2532a3443dbc1612538256c1fb6566afcd9729bf99254b26aef3b953cdd92611b15928b92889291909116908690613e4f565b60405180910390a16001600160601b038088165f90815260096020526040908190205490517f18d78bbaea8f24a2aaa409f9f507204233a315575899fe3a802e20f15e81f5ef92611b70928b92879291909116908690613e4f565b60405180910390a15094509492505050565b604051637a400b6760e11b815260ff8316600482015260ff19821660248201525f9073__$4b9aaffa8d044614668dad578b824b8eee$__9063f48016ce90604401602060405180830381865af4158015611bde573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d99190613ef7565b5f611c0c33610853565b5f805f611c198887613050565b925092509250611c29828661209a565b6040516355205f0f60e01b81526001600160601b03821660048201529094505f9073__$3bac17678db7ae928afa209f2f44deec9c$__90634c41dd9690611cbb908b9084906355205f0f90602401602060405180830381865af4158015611c92573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cb69190613ef7565b6131b3565b604051632255341b60e11b8152600481019190915273__$bf7bc340cbb9229ef1de2c568356e67902$__906344aa683690602401602060405180830381865af4158015611d0a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d2e9190613ef7565b6040518263ffffffff1660e01b8152600401611d4c91815260200190565b602060405180830381865af4158015611d67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d8b9190613f0e565b6001600160601b038a81165f818152600d602090815260408083206001600160a01b038e1680855290835281842080546001600160601b03199081168e891617909155858552600e84528285209185529083528184208054909116878716179055928252600f90522054919250611e07916113bb91168461209a565b600f5f8b6001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015611e94573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb89190613f9a565b6001600160601b038a165f9081526010602052604090819020805463ffffffff191663ffffffff9390931692909217909155517ff9be485b3e2a5d1dc6dadfab8a9962c32cc55ac95a026b980452f8b138723789906114da908b908a908a908a908a90613fb5565b5f80611f53611f365f546001600160a01b031690565b8630611f4560045f898b613ff6565b611f4e9161401d565b6131c7565b915091508161200f5763ffffffff811615611fec575f805460ff60a01b198116600160a01b17909155604051634a63ebf760e11b81526001600160a01b03909116906394c7d7ee90611fad90889088908890600401614055565b5f604051808303815f87803b158015611fc4575f80fd5b505af1158015611fd6573d5f803e3d5ffd5b50505f805460ff60a01b191690555061200f9050565b60405162d1953b60e31b81526001600160a01b03861660048201526024016108b3565b5050505050565b604051632601631360e21b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__906398058c4c90604401602060405180830381865af4158015612076573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d99190613f38565b6040516363cf551160e11b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa22906044015b602060405180830381865af41580156120fb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d99190613f0e565b6001600160601b0382165f908152600c602052604080822054905163010bd26b60e61b815263ffffffff909116600482015273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__906342f49ac090602401602060405180830381865af415801561218b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121af9190613f38565b156121d8576040516364692acf60e01b81526001600160601b03841660048201526024016108b3565b506001600160601b038281165f908152600c6020908152604080832054600a83529281902080546001600160601b03191694861694909417909355825163e8b7afe360e01b8152925163ffffffff9092169273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9263e8b7afe3926004808401939192918290030181865af4158015612266573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061228a9190613f9a565b6001600160601b03939093165f908152600c60205260409020805463ffffffff191663ffffffff909416939093179092555090565b5f6122ca84836132cf565b5f8581526003602052604090209091506001016122e784826140d8565b50604051634b00e98f60e11b8152600481018590527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af4158015612358573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061237c9190614193565b604051630713cfad60e31b81526004810187905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af41580156123ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123ee91906141ae565b6040805160ff938416815260ff1990921660208301529185169181019190915233606082015232608082015263ffffffff831660a082015260c001610cd3565b60408051630711349960e31b81526001600160601b038416600482015260206024820181905291516124f59273__$94a2c899be079b00d952d0d84fffaa5c34$__92633889a4c892604480830193928290030181865af4158015612494573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124b89190613ef7565b60408051845160ff16602080830191909152850151818301529084015164ffffffffff16606080830191909152840151608082015260a001611275565b73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af415801561253c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125609190613f9a565b6001600160601b0383165f908152601060205260409020805463ffffffff191663ffffffff92909216919091179055612598826135ca565b6005546040516346f0e8a760e11b81526001600160601b03841660048201526001600160a01b0390911690638de1d14e906024015f604051808303815f87803b1580156125e3575f80fd5b505af11580156125f5573d5f803e3d5ffd5b505050505050565b6001600160601b0381165f908152600c60205260409081902054905163010bd26b60e61b815263ffffffff909116600482018190529073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__906342f49ac090602401602060405180830381865af415801561266d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126919190613f38565b156126ba57604051631f7e16df60e01b81526001600160601b03831660048201526024016108b3565b919050565b60405163274acb3560e01b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb35906044016120e0565b6001600160601b038381165f90815260086020908152604080832080546001600160601b031990811688871617909155600983529281902080549093169385169390931790915581516356db0c1960e11b8152915173__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9263adb618329260048083019391928290030181865af4158015612799573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127bd91906141c9565b600b5f856001600160601b03166001600160601b031681526020019081526020015f205f6101000a81548164ffffffffff021916908364ffffffffff16021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015612846573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061286a9190613f9a565b6001600160601b03939093165f908152600c60205260409020805463ffffffff191663ffffffff909416939093179092555050565b6001600160601b038381165f90815260086020908152604080832080546001600160601b0319908116888716179091556009835292819020805490931693851693909317909155815163e8b7afe360e01b8152915173__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9263e8b7afe39260048083019391928290030181865af4158015612846573d5f803e3d5ffd5b604051634b00e98f60e11b8152600481018390525f9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af415801561297f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129a39190614193565b60405163037c8cb160e51b815260ff8216600482015290915073__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636f91962090602401602060405180830381865af41580156129f6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a1a9190613f38565b15612a3d576040516307014a8d60e51b815260ff821660048201526024016108b3565b5f83815260036020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401602060405180830381865af4158015612aa3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ac79190613f38565b15612af157604051633f92eac960e21b81526004810185905260ff831660248201526044016108b3565b612afa826117e0565b612b1c57604051636cb0978b60e11b815260ff831660048201526024016108b3565b5f612b256138de565b60ff8085165f908152600160205260408120549293509116835460ff86811661ffff1990921691909117610100918316919091021769ffffffffffffffff000019166201000063ffffffff851690810269ffffffff000000000000191691909117600160301b919091021784555f878152600360205260409020909150600101612baf86826140d8565b50604051634b00e98f60e11b8152600481018790527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af4158015612c20573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c449190614193565b604051630713cfad60e31b81526004810189905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af4158015612c92573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cb691906141ae565b6040805160ff938416815260ff1990921660208301529184169181019190915233606082015232608082015260a001610bc8565b6001600160601b0381165f908152600c60205260409081902054905163d15b589360e01b815263ffffffff909116600482015273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063d15b589390602401602060405180830381865af4158015612d57573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d7b9190613f38565b15612da4576040516366d785a360e11b81526001600160601b03821660048201526024016108b3565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015612deb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e0f9190613f0e565b60085f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015612e9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ec09190613f0e565b60095f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015612f4d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f7191906141c9565b600b5f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a81548164ffffffffff021916908364ffffffffff16021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015612ffa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061301e9190613f9a565b6001600160601b03919091165f908152600c60205260409020805463ffffffff191663ffffffff909216919091179055565b6001600160601b0382165f9081526010602052604080822054905163010bd26b60e61b815263ffffffff909116600482018190529190819073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__906342f49ac090602401602060405180830381865af41580156130c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130e69190613f38565b1561310f576040516362540e0360e11b81526001600160601b03861660048201526024016108b3565b50506001600160601b039283165f818152600d602090815260408083206001600160a01b0390961680845295825280832054938352600e825280832095835294905292909220549093918316921690565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b5f6118d98383670de0b6b3a764000061394a565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b1790525161323591906141e4565b5f60405180830381855afa9150503d805f811461326d576040519150601f19603f3d011682016040523d82523d5f602084013e613272565b606091505b509150915081156132c45760408151106132a4578080602001905181019061329a91906141fa565b90945092506132c4565b60208151106132c457808060200190518101906132c19190613f38565b93505b505094509492505050565b60405163037c8cb160e51b815260ff821660048201525f9073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af4158015613321573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133459190613f38565b156133665760405163093b89e160e11b8152600481018490526024016108b3565b505f82815260036020526040908190208054915163037c8cb160e51b8152610100830460ff16600482018190526201000090930463ffffffff16929073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af41580156133dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134009190613f38565b156134215760405163566ebf7960e01b8152600481018690526024016108b3565b60ff8085161461359c57815461343b9060ff1682866116d5565b815461ff00191661010060ff861602178255604051634b00e98f60e11b8152600481018690527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af41580156134bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134e19190614193565b604051630713cfad60e31b81526004810188905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af415801561352f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061355391906141ae565b6040805160ff938416815260ff1990921660208301528285169082015290861660608201523360808201523260a082015263ffffffff851660c082015260e00160405180910390a15b6135a46138de565b825463ffffffff91909116620100000265ffffffff000019909116179091555092915050565b6001600160601b0381165f908152600c60205260409081902054905163d15b589360e01b815263ffffffff909116600482015273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063d15b589390602401602060405180830381865af4158015613637573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061365b9190613f38565b15613684576040516366d785a360e11b81526001600160601b03821660048201526024016108b3565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156136cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136ef9190613f0e565b60085f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561377c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137a09190613f0e565b60095f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561382d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138519190613f0e565b600a5f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015612ffa573d5f803e3d5ffd5b5f73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015613926573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116a29190613f9a565b5f80805f19858709858702925082811083820303915050805f036139815783828161397757613977614224565b04925050506118d9565b8084116139a057604051629540d960e61b815260040160405180910390fd5b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f60208284031215613a17575f80fd5b5035919050565b60ff81168114613a2c575f80fd5b50565b5f60208284031215613a3f575f80fd5b81356118d981613a1e565b6001600160601b0381168114613a2c575f80fd5b5f8060408385031215613a6f575f80fd5b8235613a7a81613a4a565b91506020830135613a8a81613a4a565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b64ffffffffff81168114613a2c575f80fd5b5f8082840360a0811215613acd575f80fd5b8335613ad881613a4a565b92506080601f1982011215613aeb575f80fd5b506040516080810167ffffffffffffffff81118282101715613b0f57613b0f613a95565b6040526020840135613b2081613a1e565b8152604084013560208201526060840135613b3a81613aa9565b60408201526080939093013560608401525092909150565b5f805f60608486031215613b64575f80fd5b8335613b6f81613a4a565b92506020840135613b7f81613a4a565b91506040840135613b8f81613a4a565b809150509250925092565b5f808284036040811215613bac575f80fd5b8335613bb781613a4a565b92506020601f1982011215613bca575f80fd5b506040516020810167ffffffffffffffff81118282101715613bee57613bee613a95565b6040526020840135613bff81613aa9565b8152919491935090915050565b5f60208284031215613c1c575f80fd5b81356118d981613a4a565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6118d96020830184613c27565b80356001600160a01b03811681146126ba575f80fd5b5f805f8060808587031215613c90575f80fd5b8435613c9b81613a4a565b935060208501359250613cb060408601613c67565b91506060850135613cc081613a4a565b939692955090935050565b5f60208284031215613cdb575f80fd5b6118d982613c67565b5f8060408385031215613cf5575f80fd5b82359150613d0560208401613c67565b90509250929050565b60208152613d5360208201835160ff815116825260ff602082015116602083015263ffffffff604082015116604083015263ffffffff60608201511660608301525050565b5f602083015160a080840152613d6c60c0840182613c27565b949350505050565b5f8060408385031215613d85575f80fd5b8235613d9081613a4a565b9150613d0560208401613c67565b5f805f60608486031215613db0575f80fd5b83359250613dc060208501613c67565b929592945050506040919091013590565b60808101610d69828460ff815116825260ff602082015116602083015263ffffffff604082015116604083015263ffffffff60608201511660608301525050565b5f805f60608486031215613e24575f80fd5b8335613e2f81613a1e565b92506020840135613e3f81613a1e565b91506040840135613b8f81613a1e565b6001600160601b03948516815292841660208401529216604082015263ffffffff909116606082015260800190565b5f805f8060808587031215613e91575f80fd5b8435613e9c81613a4a565b93506020850135613eac81613a4a565b92506040850135613cb081613a4a565b60ff1981168114613a2c575f80fd5b5f8060408385031215613edc575f80fd5b8235613ee781613a1e565b91506020830135613a8a81613ebc565b5f60208284031215613f07575f80fd5b5051919050565b5f60208284031215613f1e575f80fd5b81516118d981613a4a565b805180151581146126ba575f80fd5b5f60208284031215613f48575f80fd5b6118d982613f29565b600181811c90821680613f6557607f821691505b602082108103613f8357634e487b7160e01b5f52602260045260245ffd5b50919050565b63ffffffff81168114613a2c575f80fd5b5f60208284031215613faa575f80fd5b81516118d981613f89565b6001600160601b0395861681526001600160a01b039490941660208501529184166040840152909216606082015263ffffffff909116608082015260a00190565b5f8085851115614004575f80fd5b83861115614010575f80fd5b5050820193919092039150565b80356001600160e01b0319811690600484101561404e576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b601f8211156117db57805f5260205f20601f840160051c810160208510156140b95750805b601f840160051c820191505b8181101561200f575f81556001016140c5565b815167ffffffffffffffff8111156140f2576140f2613a95565b614106816141008454613f51565b84614094565b6020601f821160018114614138575f83156141215750848201515b5f19600385901b1c1916600184901b17845561200f565b5f84815260208120601f198516915b828110156141675787850151825560209485019460019092019101614147565b508482101561418457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f602082840312156141a3575f80fd5b81516118d981613a1e565b5f602082840312156141be575f80fd5b81516118d981613ebc565b5f602082840312156141d9575f80fd5b81516118d981613aa9565b5f82518060208501845e5f920191825250919050565b5f806040838503121561420b575f80fd5b61421483613f29565b91506020830151613a8a81613f89565b634e487b7160e01b5f52601260045260245ffdfea2646970667358221220202a3214e8bc45846ed8f3f4cd3610426fe0a94df48d86df7635349b2a0e5b4664736f6c634300081a00336080604052348015600e575f80fd5b50600480546001600160a01b0319163317905561071e8061002e5f395ff3fe608060405234801561000f575f80fd5b5060043610610090575f3560e01c80638de1d14e116100635780638de1d14e1461010f578063954a317214610122578063996f8d9114610135578063ddfe867f1461014b578063f2b2978114610153575f80fd5b8063042f9da3146100945780634f9c1c09146100a9578063706e9ba9146100d1578063777d1857146100fc575b5f80fd5b6100a76100a2366004610627565b610166565b005b6100bc6100b736600461065e565b610221565b60405190151581526020015b60405180910390f35b6100e46100df366004610680565b6102ab565b6040516001600160601b0390911681526020016100c8565b6100bc61010a36600461065e565b610327565b6100a761011d36600461065e565b610370565b6100a7610130366004610627565b610491565b61013d61051b565b6040519081526020016100c8565b61013d610595565b6100e4610161366004610680565b6105cf565b6004546001600160a01b031633146101ae5760048054604051631d1f01d960e31b81526001600160a01b03909116918101919091523360248201526044015b60405180910390fd5b604051631461054360e31b8152600260048201526001600160601b038216602482015273__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__9063a3082a18906044015b5f6040518083038186803b158015610207575f80fd5b505af4158015610219573d5f803e3d5ffd5b505050505050565b604051632bfdd6b960e01b81525f600482018190526001600160601b03831660248301529073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__90632bfdd6b9906044015b602060405180830381865af4158015610281573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a59190610697565b92915050565b60405163e797d89960e01b81525f60048201819052602482018390529073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__9063e797d899906044015b602060405180830381865af4158015610303573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a591906106b6565b604051632bfdd6b960e01b8152600260048201526001600160601b03821660248201525f9073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__90632bfdd6b990604401610266565b6004546001600160a01b031633146103b35760048054604051631d1f01d960e31b81526001600160a01b03909116918101919091523360248201526044016101a5565b604051631461054360e31b81525f60048201526001600160601b038216602482015273__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__9063a3082a18906044015f6040518083038186803b15801561040a575f80fd5b505af415801561041c573d5f803e3d5ffd5b5050604051631461054360e31b8152600260048201526001600160601b038416602482015273__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__925063a3082a1891506044015f6040518083038186803b158015610478575f80fd5b505af415801561048a573d5f803e3d5ffd5b5050505050565b6004546001600160a01b031633146104d45760048054604051631d1f01d960e31b81526001600160a01b03909116918101919091523360248201526044016101a5565b60405163539eabab60e11b8152600260048201526001600160601b038216602482015273__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__9063a73d5756906044016101f1565b604051638b6233dd60e01b8152600260048201525f9073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__90638b6233dd906024015b602060405180830381865af415801561056c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059091906106d1565b905090565b604051638b6233dd60e01b81525f600482018190529073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__90638b6233dd90602401610551565b60405163e797d89960e01b815260026004820152602481018290525f9073__$f7a7d9f32fdcd358419ed5ca3af4f3da33$__9063e797d899906044016102e8565b6001600160601b0381168114610624575f80fd5b50565b5f8060408385031215610638575f80fd5b823561064381610610565b9150602083013561065381610610565b809150509250929050565b5f6020828403121561066e575f80fd5b813561067981610610565b9392505050565b5f60208284031215610690575f80fd5b5035919050565b5f602082840312156106a7575f80fd5b81518015158114610679575f80fd5b5f602082840312156106c6575f80fd5b815161067981610610565b5f602082840312156106e1575f80fd5b505191905056fea264697066735822122057b69e77681ad60310336b136519bd4b7c8f93b0514eb8f480aa2c7ffd79ea7a64736f6c634300081a0033",
1649
+ "deployedBytecode": "0x608060405234801561000f575f80fd5b506004361061023f575f3560e01c8063828227de11610135578063bf7e214f116100b4578063eb98e8a011610079578063eb98e8a01461074f578063f48016ce14610782578063fb14543214610795578063fb39549c146107c0578063ff86054d146107d3575f80fd5b8063bf7e214f146106a9578063d7537c37146106b9578063dfb7e337146106cc578063e067350f14610711578063e9e96c701461073c575f80fd5b8063a5961b4c116100fa578063a5961b4c14610562578063a8989675146105ee578063b04fa50614610601578063beba11201461066b578063bf1db3f914610696575f80fd5b8063828227de1461048b5780638eaa6ac0146104ce5780638fb36037146104ee57806391a2059f1461050f5780639a7263641461054f575f80fd5b80634b51da0c116101c15780636291423a116101865780636291423a146103e6578063717f1b98146103f757806377f91851146104225780637a9e5e4b146104355780637b21556114610448575f80fd5b80634b51da0c146103685780634f9c1c091461037b57806354f6127f1461038e5780635cce3fa1146103ae57806362841be2146103d3575f80fd5b806330f441991161020757806330f44199146102f95780633861317f1461030c57806338a699a41461031f5780633fbdfe32146103425780634a2101d114610355575f80fd5b806309648a9d146102435780630d35818114610281578063136cfef7146102a65780631807a488146102d15780632df8be9b146102e6575b5f80fd5b61026a610251366004613a07565b5f90815260036020526040902054610100900460ff1690565b60405160ff90911681526020015b60405180910390f35b61026a61028f366004613a2f565b60ff9081165f908152600160205260409020541690565b6102b96102b4366004613a5e565b61084d565b6040516001600160601b039091168152602001610278565b6102e46102df366004613abb565b610934565b005b6102e46102f4366004613abb565b610a20565b6102e4610307366004613b52565b610a33565b6102e461031a366004613b52565b610bd8565b61033261032d366004613a07565b610ce1565b6040519015158152602001610278565b6102b9610350366004613b52565b610d6f565b6102e4610363366004613b52565b610ef3565b6102e4610376366004613b9a565b610fcf565b610332610389366004613c0c565b611087565b6103a161039c366004613a07565b61111f565b6040516102789190613c55565b6005546001600160a01b03165b6040516001600160a01b039091168152602001610278565b6102e46103e1366004613b9a565b6111c1565b6006546001600160a01b03166103bb565b6102b9610405366004613c0c565b6001600160601b039081165f908152600960205260409020541690565b6102b9610430366004613c7d565b611292565b6102e4610443366004613ccb565b6114ee565b61047d610456366004613ce4565b5f9182526007602090815260408084206001600160a01b0393909316845291905290205490565b604051908152602001610278565b6104b9610499366004613c0c565b6001600160601b03165f908152600c602052604090205463ffffffff1690565b60405163ffffffff9091168152602001610278565b6104e16104dc366004613a07565b611562565b6040516102789190613d0e565b6104f6611683565b6040516001600160e01b03199091168152602001610278565b6102b961051d366004613d74565b6001600160601b039182165f908152600d602090815260408083206001600160a01b0394909416835292905220541690565b6102e461055d366004613d9e565b6116a7565b6105e1610570366004613a07565b60408051608080820183525f8083526020808401829052838501829052606093840182905294815260038552839020835191820184525460ff80821683526101008204169482019490945263ffffffff620100008504811693820193909352600160301b9093049091169082015290565b6040516102789190613dd1565b6102e46105fc366004613e12565b6116d5565b61065b61060f366004613c0c565b6001600160601b039081165f908152600860209081526040808320546009835281842054600a845282852054600c90945291909320549284169490841693919091169163ffffffff1690565b6040516102789493929190613e4f565b6102b9610679366004613c0c565b6001600160601b039081165f908152600f60205260409020541690565b6103326106a4366004613a2f565b6117e0565b5f546001600160a01b03166103bb565b6102b96106c7366004613a5e565b61182c565b6106fb6106da366004613c0c565b6001600160601b03165f908152600b602052604090205464ffffffffff1690565b60405164ffffffffff9091168152602001610278565b6102b961071f366004613c0c565b6001600160601b039081165f908152600a60205260409020541690565b61033261074a366004613e12565b6118ad565b61076261075d366004613e7e565b6118e0565b604080516001600160601b03938416815292909116602083015201610278565b61047d610790366004613ecb565b611b82565b6102b96107a3366004613c0c565b6001600160601b039081165f908152600860205260409020541690565b6102b96107ce366004613c7d565b611c02565b6108206107e1366004613c0c565b6001600160601b039081165f908152600860209081526040808320546009835281842054600b9093529220549183169392169164ffffffffff90911690565b604080516001600160601b03948516815293909216602084015264ffffffffff1690820152606001610278565b5f61085a335b5f36611f20565b6001600160601b038084165f908152600a60205260409020541661087e8382612016565b156108bc576040516301a4b29960e11b81526001600160601b0380861660048301528085166024830152821660448201526064015b60405180910390fd5b6001600160601b038085165f908152600a60205260409020546108e091168461209a565b91505f6108ed858461211f565b90507fd3383e52279373b5cfb83f1b6d4bd83e415313626f418a63a24251420d4b96df858585846040516109249493929190613e4f565b60405180910390a1505092915050565b61093d33610853565b60408051630711349960e31b81526001600160601b03841660048201526020602482018190529151610a1c9273__$94a2c899be079b00d952d0d84fffaa5c34$__92633889a4c892604480830193928290030181865af41580156109a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c79190613ef7565b60408051845160ff16602080830191909152850151818301529084015164ffffffffff16606080830191909152840151608082015260a0015b604051602081830303815290604052610a1760ff90565b6122bf565b5050565b610a2933610853565b610a1c828261242e565b610a3c33610853565b5f610a46846125fd565b6001600160601b038086165f9081526008602090815260408083205460099092529091205492935081169116610af986610a89610a8385856126bf565b876126bf565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610ad0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610af49190613f0e565b612709565b6001600160601b038086165f90815260086020526040902054610b50918791610b2791610a839116856126bf565b6001600160601b038089165f90815260096020526040902054610b4b91168561209a565b61289f565b6001600160601b038681165f8181526008602090815260409182902054825193845286851691840191909152848416918301919091528683166060830152909116608082015263ffffffff841660a08201527ff3a6a30356c886f04fc20380e987b6e55a1e83a7926e1a21ee6001faced599c99060c0015b60405180910390a1505050505050565b610be133610853565b5f610beb846125fd565b6001600160601b038086165f90815260086020526040902054919250610c37918691610c189116856126bf565b6001600160601b038088165f9081526009602052604090205416612709565b6001600160601b038084165f90815260086020526040902054610c80918591610c619116856126bf565b6001600160601b038087165f908152600960205260409020541661289f565b6001600160601b038085165f90815260086020526040908190205490517fa206257df4168139cff2e8dea9c50f2226429e81d904d5ee2b14e4f4656f30f592610cd3928892879291909116908690613e4f565b60405180910390a150505050565b5f8181526003602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf906024015b602060405180830381865af4158015610d45573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d699190613f38565b92915050565b5f610d7933610853565b5f610d83856125fd565b6001600160601b038681165f9081526009602052604090819020549051637931c81160e01b815286831660048201529116602482015290915073__$3bac17678db7ae928afa209f2f44deec9c$__90637931c81190604401602060405180830381865af4158015610df6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e1a9190613f0e565b6001600160601b038087165f90815260086020908152604080832054600990925290912054929450610e5792889291821691610af491168661209a565b6001600160601b038085165f90815260086020908152604080832054600990925290912054610e90928792811691610b4b91168661209a565b6001600160601b038086165f90815260096020526040908190205490517f18d78bbaea8f24a2aaa409f9f507204233a315575899fe3a802e20f15e81f5ef92610ee3928992879291909116908690613e4f565b60405180910390a1509392505050565b610efc33610853565b5f610f06846125fd565b6001600160601b038086165f90815260086020908152604080832054600990925290912054929350610f4392879291821691610af49116866126bf565b6001600160601b038084165f90815260086020908152604080832054600990925290912054610f7c928692811691610b4b9116866126bf565b6001600160601b038085165f90815260096020526040908190205490517f9824c1941460e3f3dca0007309b88a95f4fb73bd9628ee7ad0a528b100983c7992610cd3928892879291909116908690613e4f565b610fd833610853565b610a1c73__$94a2c899be079b00d952d0d84fffaa5c34$__633889a4c86001600160601b03851660216040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af415801561104b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061106f9190613ef7565b60408051845164ffffffffff16602082015201610a00565b5f610d6973__$94a2c899be079b00d952d0d84fffaa5c34$__633889a4c86001600160601b03851660216040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af41580156110fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061032d9190613ef7565b5f81815260036020526040902060010180546060919061113e90613f51565b80601f016020809104026020016040519081016040528092919081815260200182805461116a90613f51565b80156111b55780601f1061118c576101008083540402835291602001916111b5565b820191905f5260205f20905b81548152906001019060200180831161119857829003601f168201915b50505050509050919050565b6111ca33610853565b61128973__$94a2c899be079b00d952d0d84fffaa5c34$__633889a4c86001600160601b03851660216040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af415801561123d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112619190613ef7565b60408051845164ffffffffff166020820152015b60405160208183030381529060405261292f565b610a1c82612cea565b5f61129c33610853565b5f805f6112a98887613050565b9250925092506112b982866126bf565b604051632c34efe560e11b81526001600160601b0382166004820152602481018990529094505f9073__$3bac17678db7ae928afa209f2f44deec9c$__90635869dfca90604401602060405180830381865af415801561131b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061133f9190613f0e565b6001600160601b038a81165f818152600d602090815260408083206001600160a01b038e1680855290835281842080546001600160601b03199081168e891617909155858552600e84528285209185529083528184208054909116878716179055928252600f905220549192506113c1916113bb91168461209a565b826126bf565b600f5f8b6001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af415801561144e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114729190613f9a565b6001600160601b038a165f9081526010602052604090819020805463ffffffff191663ffffffff9390931692909217909155517f4bd4ee2e64e523eeed623045709eb9e7828b3b191c978feb362e5b600c7d4dd9906114da908b908a908a908a908a90613fb5565b60405180910390a150505050949350505050565b5f5433906001600160a01b031681146115245760405162d1953b60e31b81526001600160a01b03821660048201526024016108b3565b816001600160a01b03163b5f03611559576040516361798f2f60e11b81526001600160a01b03831660048201526024016108b3565b610a1c82613160565b6040805160c0810182525f91810182815260608083018490526080830184905260a0830193909352815260208101919091525f82815260036020908152604091829020825160c081018452815460ff808216958301958652610100820416606083015263ffffffff62010000820481166080840152600160301b9091041660a082015292835260018101805491928401916115fc90613f51565b80601f016020809104026020016040519081016040528092919081815260200182805461162890613f51565b80156116735780601f1061164a57610100808354040283529160200191611673565b820191905f5260205f20905b81548152906001019060200180831161165657829003601f168201915b5050505050815250509050919050565b5f8054600160a01b900460ff1661169957505f90565b638fb3603760e01b5b905090565b6116b033610853565b5f9283526007602090815260408085206001600160a01b039094168552929052912055565b60ff8381165f908152600160205260409081902054905163037c8cb160e51b81529116600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af4158015611737573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061175b9190613f38565b1561177e576040516321b9f44760e01b815260ff841660048201526024016108b3565b60ff8084165f908152600260209081526040808320868516845282528083208585168452909152902054166117db57604051636bb20ea760e01b815260ff80851660048301528084166024830152821660448201526064016108b3565b505050565b60ff8181165f9081526001602052604080822054905163b2466acf60e01b8152921660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401610d2a565b5f61183633610853565b6001600160601b038084165f908152600a602052604090205461185a9116836126bf565b90505f611867848361211f565b90507f15ce01bb869f4f5440b921c09a1c73e043269a1e29f44d11a7a899ed51fa67b88484848460405161189e9493929190613e4f565b60405180910390a15092915050565b60ff8084165f908152600260209081526040808320868516845282528083208585168452909152902054165b9392505050565b5f806118eb33610853565b5f6118f5876125fd565b6001600160601b038881165f9081526008602052604090819020549051637931c81160e01b815288831660048201529116602482015290915073__$3bac17678db7ae928afa209f2f44deec9c$__90637931c81190604401602060405180830381865af4158015611968573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061198c9190613f0e565b6001600160601b038881165f9081526009602052604090819020549051637931c81160e01b815287831660048201529116602482015290935073__$3bac17678db7ae928afa209f2f44deec9c$__90637931c81190604401602060405180830381865af41580156119ff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a239190613f0e565b6001600160601b038089165f90815260086020526040902054919350611a74918991611a5091168661209a565b6001600160601b03808b165f90815260096020526040902054610af491168661209a565b6001600160601b038087165f90815260086020526040902054611ac2918891611a9e91168661209a565b6001600160601b03808a165f90815260096020526040902054610b4b91168661209a565b6001600160601b038088165f90815260086020526040908190205490517f4d67c2532a3443dbc1612538256c1fb6566afcd9729bf99254b26aef3b953cdd92611b15928b92889291909116908690613e4f565b60405180910390a16001600160601b038088165f90815260096020526040908190205490517f18d78bbaea8f24a2aaa409f9f507204233a315575899fe3a802e20f15e81f5ef92611b70928b92879291909116908690613e4f565b60405180910390a15094509492505050565b604051637a400b6760e11b815260ff8316600482015260ff19821660248201525f9073__$4b9aaffa8d044614668dad578b824b8eee$__9063f48016ce90604401602060405180830381865af4158015611bde573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d99190613ef7565b5f611c0c33610853565b5f805f611c198887613050565b925092509250611c29828661209a565b6040516355205f0f60e01b81526001600160601b03821660048201529094505f9073__$3bac17678db7ae928afa209f2f44deec9c$__90634c41dd9690611cbb908b9084906355205f0f90602401602060405180830381865af4158015611c92573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cb69190613ef7565b6131b3565b604051632255341b60e11b8152600481019190915273__$bf7bc340cbb9229ef1de2c568356e67902$__906344aa683690602401602060405180830381865af4158015611d0a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d2e9190613ef7565b6040518263ffffffff1660e01b8152600401611d4c91815260200190565b602060405180830381865af4158015611d67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d8b9190613f0e565b6001600160601b038a81165f818152600d602090815260408083206001600160a01b038e1680855290835281842080546001600160601b03199081168e891617909155858552600e84528285209185529083528184208054909116878716179055928252600f90522054919250611e07916113bb91168461209a565b600f5f8b6001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015611e94573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb89190613f9a565b6001600160601b038a165f9081526010602052604090819020805463ffffffff191663ffffffff9390931692909217909155517ff9be485b3e2a5d1dc6dadfab8a9962c32cc55ac95a026b980452f8b138723789906114da908b908a908a908a908a90613fb5565b5f80611f53611f365f546001600160a01b031690565b8630611f4560045f898b613ff6565b611f4e9161401d565b6131c7565b915091508161200f5763ffffffff811615611fec575f805460ff60a01b198116600160a01b17909155604051634a63ebf760e11b81526001600160a01b03909116906394c7d7ee90611fad90889088908890600401614055565b5f604051808303815f87803b158015611fc4575f80fd5b505af1158015611fd6573d5f803e3d5ffd5b50505f805460ff60a01b191690555061200f9050565b60405162d1953b60e31b81526001600160a01b03861660048201526024016108b3565b5050505050565b604051632601631360e21b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__906398058c4c90604401602060405180830381865af4158015612076573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d99190613f38565b6040516363cf551160e11b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa22906044015b602060405180830381865af41580156120fb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d99190613f0e565b6001600160601b0382165f908152600c602052604080822054905163010bd26b60e61b815263ffffffff909116600482015273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__906342f49ac090602401602060405180830381865af415801561218b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121af9190613f38565b156121d8576040516364692acf60e01b81526001600160601b03841660048201526024016108b3565b506001600160601b038281165f908152600c6020908152604080832054600a83529281902080546001600160601b03191694861694909417909355825163e8b7afe360e01b8152925163ffffffff9092169273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9263e8b7afe3926004808401939192918290030181865af4158015612266573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061228a9190613f9a565b6001600160601b03939093165f908152600c60205260409020805463ffffffff191663ffffffff909416939093179092555090565b5f6122ca84836132cf565b5f8581526003602052604090209091506001016122e784826140d8565b50604051634b00e98f60e11b8152600481018590527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af4158015612358573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061237c9190614193565b604051630713cfad60e31b81526004810187905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af41580156123ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123ee91906141ae565b6040805160ff938416815260ff1990921660208301529185169181019190915233606082015232608082015263ffffffff831660a082015260c001610cd3565b60408051630711349960e31b81526001600160601b038416600482015260206024820181905291516124f59273__$94a2c899be079b00d952d0d84fffaa5c34$__92633889a4c892604480830193928290030181865af4158015612494573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124b89190613ef7565b60408051845160ff16602080830191909152850151818301529084015164ffffffffff16606080830191909152840151608082015260a001611275565b73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af415801561253c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125609190613f9a565b6001600160601b0383165f908152601060205260409020805463ffffffff191663ffffffff92909216919091179055612598826135ca565b6005546040516346f0e8a760e11b81526001600160601b03841660048201526001600160a01b0390911690638de1d14e906024015f604051808303815f87803b1580156125e3575f80fd5b505af11580156125f5573d5f803e3d5ffd5b505050505050565b6001600160601b0381165f908152600c60205260409081902054905163010bd26b60e61b815263ffffffff909116600482018190529073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__906342f49ac090602401602060405180830381865af415801561266d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126919190613f38565b156126ba57604051631f7e16df60e01b81526001600160601b03831660048201526024016108b3565b919050565b60405163274acb3560e01b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb35906044016120e0565b6001600160601b038381165f90815260086020908152604080832080546001600160601b031990811688871617909155600983529281902080549093169385169390931790915581516356db0c1960e11b8152915173__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__9263adb618329260048083019391928290030181865af4158015612799573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127bd91906141c9565b600b5f856001600160601b03166001600160601b031681526020019081526020015f205f6101000a81548164ffffffffff021916908364ffffffffff16021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015612846573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061286a9190613f9a565b6001600160601b03939093165f908152600c60205260409020805463ffffffff191663ffffffff909416939093179092555050565b6001600160601b038381165f90815260086020908152604080832080546001600160601b0319908116888716179091556009835292819020805490931693851693909317909155815163e8b7afe360e01b8152915173__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9263e8b7afe39260048083019391928290030181865af4158015612846573d5f803e3d5ffd5b604051634b00e98f60e11b8152600481018390525f9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af415801561297f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129a39190614193565b60405163037c8cb160e51b815260ff8216600482015290915073__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636f91962090602401602060405180830381865af41580156129f6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a1a9190613f38565b15612a3d576040516307014a8d60e51b815260ff821660048201526024016108b3565b5f83815260036020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401602060405180830381865af4158015612aa3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ac79190613f38565b15612af157604051633f92eac960e21b81526004810185905260ff831660248201526044016108b3565b612afa826117e0565b612b1c57604051636cb0978b60e11b815260ff831660048201526024016108b3565b5f612b256138de565b60ff8085165f908152600160205260408120549293509116835460ff86811661ffff1990921691909117610100918316919091021769ffffffffffffffff000019166201000063ffffffff851690810269ffffffff000000000000191691909117600160301b919091021784555f878152600360205260409020909150600101612baf86826140d8565b50604051634b00e98f60e11b8152600481018790527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af4158015612c20573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c449190614193565b604051630713cfad60e31b81526004810189905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af4158015612c92573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cb691906141ae565b6040805160ff938416815260ff1990921660208301529184169181019190915233606082015232608082015260a001610bc8565b6001600160601b0381165f908152600c60205260409081902054905163d15b589360e01b815263ffffffff909116600482015273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063d15b589390602401602060405180830381865af4158015612d57573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d7b9190613f38565b15612da4576040516366d785a360e11b81526001600160601b03821660048201526024016108b3565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015612deb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e0f9190613f0e565b60085f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015612e9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ec09190613f0e565b60095f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$91d01b1eccbca8d6f94a5eb2a0acb040e9$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015612f4d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f7191906141c9565b600b5f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a81548164ffffffffff021916908364ffffffffff16021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015612ffa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061301e9190613f9a565b6001600160601b03919091165f908152600c60205260409020805463ffffffff191663ffffffff909216919091179055565b6001600160601b0382165f9081526010602052604080822054905163010bd26b60e61b815263ffffffff909116600482018190529190819073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__906342f49ac090602401602060405180830381865af41580156130c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130e69190613f38565b1561310f576040516362540e0360e11b81526001600160601b03861660048201526024016108b3565b50506001600160601b039283165f818152600d602090815260408083206001600160a01b0390961680845295825280832054938352600e825280832095835294905292909220549093918316921690565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b5f6118d98383670de0b6b3a764000061394a565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b1790525161323591906141e4565b5f60405180830381855afa9150503d805f811461326d576040519150601f19603f3d011682016040523d82523d5f602084013e613272565b606091505b509150915081156132c45760408151106132a4578080602001905181019061329a91906141fa565b90945092506132c4565b60208151106132c457808060200190518101906132c19190613f38565b93505b505094509492505050565b60405163037c8cb160e51b815260ff821660048201525f9073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af4158015613321573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133459190613f38565b156133665760405163093b89e160e11b8152600481018490526024016108b3565b505f82815260036020526040908190208054915163037c8cb160e51b8152610100830460ff16600482018190526201000090930463ffffffff16929073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af41580156133dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134009190613f38565b156134215760405163566ebf7960e01b8152600481018690526024016108b3565b60ff8085161461359c57815461343b9060ff1682866116d5565b815461ff00191661010060ff861602178255604051634b00e98f60e11b8152600481018690527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af41580156134bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134e19190614193565b604051630713cfad60e31b81526004810188905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af415801561352f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061355391906141ae565b6040805160ff938416815260ff1990921660208301528285169082015290861660608201523360808201523260a082015263ffffffff851660c082015260e00160405180910390a15b6135a46138de565b825463ffffffff91909116620100000265ffffffff000019909116179091555092915050565b6001600160601b0381165f908152600c60205260409081902054905163d15b589360e01b815263ffffffff909116600482015273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__9063d15b589390602401602060405180830381865af4158015613637573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061365b9190613f38565b15613684576040516366d785a360e11b81526001600160601b03821660048201526024016108b3565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156136cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136ef9190613f0e565b60085f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561377c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137a09190613f0e565b60095f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801561382d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138519190613f0e565b600a5f836001600160601b03166001600160601b031681526020019081526020015f205f6101000a8154816001600160601b0302191690836001600160601b0316021790555073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015612ffa573d5f803e3d5ffd5b5f73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015613926573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116a29190613f9a565b5f80805f19858709858702925082811083820303915050805f036139815783828161397757613977614224565b04925050506118d9565b8084116139a057604051629540d960e61b815260040160405180910390fd5b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f60208284031215613a17575f80fd5b5035919050565b60ff81168114613a2c575f80fd5b50565b5f60208284031215613a3f575f80fd5b81356118d981613a1e565b6001600160601b0381168114613a2c575f80fd5b5f8060408385031215613a6f575f80fd5b8235613a7a81613a4a565b91506020830135613a8a81613a4a565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b64ffffffffff81168114613a2c575f80fd5b5f8082840360a0811215613acd575f80fd5b8335613ad881613a4a565b92506080601f1982011215613aeb575f80fd5b506040516080810167ffffffffffffffff81118282101715613b0f57613b0f613a95565b6040526020840135613b2081613a1e565b8152604084013560208201526060840135613b3a81613aa9565b60408201526080939093013560608401525092909150565b5f805f60608486031215613b64575f80fd5b8335613b6f81613a4a565b92506020840135613b7f81613a4a565b91506040840135613b8f81613a4a565b809150509250925092565b5f808284036040811215613bac575f80fd5b8335613bb781613a4a565b92506020601f1982011215613bca575f80fd5b506040516020810167ffffffffffffffff81118282101715613bee57613bee613a95565b6040526020840135613bff81613aa9565b8152919491935090915050565b5f60208284031215613c1c575f80fd5b81356118d981613a4a565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6118d96020830184613c27565b80356001600160a01b03811681146126ba575f80fd5b5f805f8060808587031215613c90575f80fd5b8435613c9b81613a4a565b935060208501359250613cb060408601613c67565b91506060850135613cc081613a4a565b939692955090935050565b5f60208284031215613cdb575f80fd5b6118d982613c67565b5f8060408385031215613cf5575f80fd5b82359150613d0560208401613c67565b90509250929050565b60208152613d5360208201835160ff815116825260ff602082015116602083015263ffffffff604082015116604083015263ffffffff60608201511660608301525050565b5f602083015160a080840152613d6c60c0840182613c27565b949350505050565b5f8060408385031215613d85575f80fd5b8235613d9081613a4a565b9150613d0560208401613c67565b5f805f60608486031215613db0575f80fd5b83359250613dc060208501613c67565b929592945050506040919091013590565b60808101610d69828460ff815116825260ff602082015116602083015263ffffffff604082015116604083015263ffffffff60608201511660608301525050565b5f805f60608486031215613e24575f80fd5b8335613e2f81613a1e565b92506020840135613e3f81613a1e565b91506040840135613b8f81613a1e565b6001600160601b03948516815292841660208401529216604082015263ffffffff909116606082015260800190565b5f805f8060808587031215613e91575f80fd5b8435613e9c81613a4a565b93506020850135613eac81613a4a565b92506040850135613cb081613a4a565b60ff1981168114613a2c575f80fd5b5f8060408385031215613edc575f80fd5b8235613ee781613a1e565b91506020830135613a8a81613ebc565b5f60208284031215613f07575f80fd5b5051919050565b5f60208284031215613f1e575f80fd5b81516118d981613a4a565b805180151581146126ba575f80fd5b5f60208284031215613f48575f80fd5b6118d982613f29565b600181811c90821680613f6557607f821691505b602082108103613f8357634e487b7160e01b5f52602260045260245ffd5b50919050565b63ffffffff81168114613a2c575f80fd5b5f60208284031215613faa575f80fd5b81516118d981613f89565b6001600160601b0395861681526001600160a01b039490941660208501529184166040840152909216606082015263ffffffff909116608082015260a00190565b5f8085851115614004575f80fd5b83861115614010575f80fd5b5050820193919092039150565b80356001600160e01b0319811690600484101561404e576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b601f8211156117db57805f5260205f20601f840160051c810160208510156140b95750805b601f840160051c820191505b8181101561200f575f81556001016140c5565b815167ffffffffffffffff8111156140f2576140f2613a95565b614106816141008454613f51565b84614094565b6020601f821160018114614138575f83156141215750848201515b5f19600385901b1c1916600184901b17845561200f565b5f84815260208120601f198516915b828110156141675787850151825560209485019460019092019101614147565b508482101561418457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f602082840312156141a3575f80fd5b81516118d981613a1e565b5f602082840312156141be575f80fd5b81516118d981613ebc565b5f602082840312156141d9575f80fd5b81516118d981613aa9565b5f82518060208501845e5f920191825250919050565b5f806040838503121561420b575f80fd5b61421483613f29565b91506020830151613a8a81613f89565b634e487b7160e01b5f52601260045260245ffdfea2646970667358221220202a3214e8bc45846ed8f3f4cd3610426fe0a94df48d86df7635349b2a0e5b4664736f6c634300081a0033",
1202
1650
  "linkReferences": {
1651
+ "contracts/staking/TargetManagerLib.sol": {
1652
+ "TargetManagerLib": [
1653
+ {
1654
+ "length": 20,
1655
+ "start": 448
1656
+ },
1657
+ {
1658
+ "length": 20,
1659
+ "start": 567
1660
+ }
1661
+ ]
1662
+ },
1203
1663
  "contracts/type/Amount.sol": {
1204
1664
  "AmountLib": [
1205
1665
  {
1206
1666
  "length": 20,
1207
- "start": 2799
1667
+ "start": 2635
1668
+ },
1669
+ {
1670
+ "length": 20,
1671
+ "start": 2812
1672
+ },
1673
+ {
1674
+ "length": 20,
1675
+ "start": 2989
1676
+ },
1677
+ {
1678
+ "length": 20,
1679
+ "start": 7002
1680
+ },
1681
+ {
1682
+ "length": 20,
1683
+ "start": 7821
1684
+ },
1685
+ {
1686
+ "length": 20,
1687
+ "start": 9138
1688
+ },
1689
+ {
1690
+ "length": 20,
1691
+ "start": 10751
1692
+ },
1693
+ {
1694
+ "length": 20,
1695
+ "start": 10902
1696
+ },
1697
+ {
1698
+ "length": 20,
1699
+ "start": 11547
1208
1700
  },
1209
1701
  {
1210
1702
  "length": 20,
1211
- "start": 5849
1703
+ "start": 12557
1212
1704
  },
1213
1705
  {
1214
1706
  "length": 20,
1215
- "start": 8556
1707
+ "start": 12689
1216
1708
  },
1217
1709
  {
1218
1710
  "length": 20,
1219
- "start": 8834
1711
+ "start": 14262
1220
1712
  },
1221
1713
  {
1222
1714
  "length": 20,
1223
- "start": 11051
1715
+ "start": 15989
1224
1716
  },
1225
1717
  {
1226
1718
  "length": 20,
1227
- "start": 13011
1719
+ "start": 16166
1228
1720
  },
1229
1721
  {
1230
1722
  "length": 20,
1231
- "start": 13231
1723
+ "start": 18261
1232
1724
  },
1233
1725
  {
1234
1726
  "length": 20,
1235
- "start": 13366
1727
+ "start": 18438
1728
+ },
1729
+ {
1730
+ "length": 20,
1731
+ "start": 18615
1236
1732
  }
1237
1733
  ]
1238
1734
  },
@@ -1240,55 +1736,75 @@
1240
1736
  "BlocknumberLib": [
1241
1737
  {
1242
1738
  "length": 20,
1243
- "start": 3975
1739
+ "start": 1151
1740
+ },
1741
+ {
1742
+ "length": 20,
1743
+ "start": 2500
1744
+ },
1745
+ {
1746
+ "length": 20,
1747
+ "start": 3166
1748
+ },
1749
+ {
1750
+ "length": 20,
1751
+ "start": 3464
1244
1752
  },
1245
1753
  {
1246
1754
  "length": 20,
1247
- "start": 4378
1755
+ "start": 9432
1248
1756
  },
1249
1757
  {
1250
1758
  "length": 20,
1251
- "start": 4791
1759
+ "start": 12062
1252
1760
  },
1253
1761
  {
1254
1762
  "length": 20,
1255
- "start": 5297
1763
+ "start": 12834
1256
1764
  },
1257
1765
  {
1258
1766
  "length": 20,
1259
- "start": 5620
1767
+ "start": 13051
1260
1768
  },
1261
1769
  {
1262
1770
  "length": 20,
1263
- "start": 6209
1771
+ "start": 13766
1264
1772
  },
1265
1773
  {
1266
1774
  "length": 20,
1267
- "start": 7206
1775
+ "start": 14084
1268
1776
  },
1269
1777
  {
1270
1778
  "length": 20,
1271
- "start": 7863
1779
+ "start": 14544
1272
1780
  },
1273
1781
  {
1274
1782
  "length": 20,
1275
- "start": 8391
1783
+ "start": 14789
1276
1784
  },
1277
1785
  {
1278
1786
  "length": 20,
1279
- "start": 9268
1787
+ "start": 15854
1280
1788
  },
1281
1789
  {
1282
1790
  "length": 20,
1283
- "start": 10849
1791
+ "start": 16516
1284
1792
  },
1285
1793
  {
1286
1794
  "length": 20,
1287
- "start": 11398
1795
+ "start": 16729
1288
1796
  },
1289
1797
  {
1290
1798
  "length": 20,
1291
- "start": 14203
1799
+ "start": 18126
1800
+ },
1801
+ {
1802
+ "length": 20,
1803
+ "start": 18792
1804
+ },
1805
+ {
1806
+ "length": 20,
1807
+ "start": 18864
1292
1808
  }
1293
1809
  ]
1294
1810
  },
@@ -1296,35 +1812,47 @@
1296
1812
  "Key32Lib": [
1297
1813
  {
1298
1814
  "length": 20,
1299
- "start": 8233
1815
+ "start": 1508
1816
+ },
1817
+ {
1818
+ "length": 20,
1819
+ "start": 2180
1820
+ },
1821
+ {
1822
+ "length": 20,
1823
+ "start": 2294
1300
1824
  },
1301
1825
  {
1302
1826
  "length": 20,
1303
- "start": 9530
1827
+ "start": 11381
1304
1828
  },
1305
1829
  {
1306
1830
  "length": 20,
1307
- "start": 9646
1831
+ "start": 13295
1308
1832
  },
1309
1833
  {
1310
1834
  "length": 20,
1311
- "start": 9829
1835
+ "start": 13409
1312
1836
  },
1313
1837
  {
1314
1838
  "length": 20,
1315
- "start": 10514
1839
+ "start": 14870
1316
1840
  },
1317
1841
  {
1318
1842
  "length": 20,
1319
- "start": 10630
1843
+ "start": 15543
1320
1844
  },
1321
1845
  {
1322
1846
  "length": 20,
1323
- "start": 13845
1847
+ "start": 15657
1324
1848
  },
1325
1849
  {
1326
1850
  "length": 20,
1327
- "start": 13961
1851
+ "start": 17748
1852
+ },
1853
+ {
1854
+ "length": 20,
1855
+ "start": 17862
1328
1856
  }
1329
1857
  ]
1330
1858
  },
@@ -1332,23 +1860,31 @@
1332
1860
  "NftIdLib": [
1333
1861
  {
1334
1862
  "length": 20,
1335
- "start": 2326
1863
+ "start": 314
1864
+ },
1865
+ {
1866
+ "length": 20,
1867
+ "start": 980
1868
+ },
1869
+ {
1870
+ "length": 20,
1871
+ "start": 6714
1336
1872
  },
1337
1873
  {
1338
1874
  "length": 20,
1339
- "start": 2568
1875
+ "start": 8364
1340
1876
  },
1341
1877
  {
1342
1878
  "length": 20,
1343
- "start": 3167
1879
+ "start": 8540
1344
1880
  },
1345
1881
  {
1346
1882
  "length": 20,
1347
- "start": 3409
1883
+ "start": 8862
1348
1884
  },
1349
1885
  {
1350
1886
  "length": 20,
1351
- "start": 3588
1887
+ "start": 13611
1352
1888
  }
1353
1889
  ]
1354
1890
  },
@@ -1356,43 +1892,43 @@
1356
1892
  "LibNftIdSet": [
1357
1893
  {
1358
1894
  "length": 20,
1359
- "start": 16489
1895
+ "start": 21822
1360
1896
  },
1361
1897
  {
1362
1898
  "length": 20,
1363
- "start": 16611
1899
+ "start": 21939
1364
1900
  },
1365
1901
  {
1366
1902
  "length": 20,
1367
- "start": 16744
1903
+ "start": 22069
1368
1904
  },
1369
1905
  {
1370
1906
  "length": 20,
1371
- "start": 16879
1907
+ "start": 22201
1372
1908
  },
1373
1909
  {
1374
1910
  "length": 20,
1375
- "start": 17017
1911
+ "start": 22338
1376
1912
  },
1377
1913
  {
1378
1914
  "length": 20,
1379
- "start": 17129
1915
+ "start": 22446
1380
1916
  },
1381
1917
  {
1382
1918
  "length": 20,
1383
- "start": 17315
1919
+ "start": 22628
1384
1920
  },
1385
1921
  {
1386
1922
  "length": 20,
1387
- "start": 17374
1923
+ "start": 22686
1388
1924
  },
1389
1925
  {
1390
1926
  "length": 20,
1391
- "start": 17499
1927
+ "start": 22808
1392
1928
  },
1393
1929
  {
1394
1930
  "length": 20,
1395
- "start": 17565
1931
+ "start": 22873
1396
1932
  }
1397
1933
  ]
1398
1934
  },
@@ -1400,7 +1936,11 @@
1400
1936
  "ObjectTypeLib": [
1401
1937
  {
1402
1938
  "length": 20,
1403
- "start": 9950
1939
+ "start": 1627
1940
+ },
1941
+ {
1942
+ "length": 20,
1943
+ "start": 14989
1404
1944
  }
1405
1945
  ]
1406
1946
  },
@@ -1408,27 +1948,35 @@
1408
1948
  "StateIdLib": [
1409
1949
  {
1410
1950
  "length": 20,
1411
- "start": 3061
1951
+ "start": 1800
1412
1952
  },
1413
1953
  {
1414
1954
  "length": 20,
1415
- "start": 6872
1955
+ "start": 3363
1416
1956
  },
1417
1957
  {
1418
1958
  "length": 20,
1419
- "start": 7113
1959
+ "start": 7643
1420
1960
  },
1421
1961
  {
1422
1962
  "length": 20,
1423
- "start": 10126
1963
+ "start": 10190
1424
1964
  },
1425
1965
  {
1426
1966
  "length": 20,
1427
- "start": 13427
1967
+ "start": 10457
1428
1968
  },
1429
1969
  {
1430
1970
  "length": 20,
1431
- "start": 13618
1971
+ "start": 15162
1972
+ },
1973
+ {
1974
+ "length": 20,
1975
+ "start": 17336
1976
+ },
1977
+ {
1978
+ "length": 20,
1979
+ "start": 17523
1432
1980
  }
1433
1981
  ]
1434
1982
  },
@@ -1436,65 +1984,81 @@
1436
1984
  "TimestampLib": [
1437
1985
  {
1438
1986
  "length": 20,
1439
- "start": 4200
1987
+ "start": 14383
1988
+ },
1989
+ {
1990
+ "length": 20,
1991
+ "start": 16343
1992
+ }
1993
+ ]
1994
+ },
1995
+ "contracts/type/UFixed.sol": {
1996
+ "UFixedLib": [
1997
+ {
1998
+ "length": 20,
1999
+ "start": 11681
2000
+ }
2001
+ ]
2002
+ }
2003
+ },
2004
+ "deployedLinkReferences": {
2005
+ "contracts/type/Amount.sol": {
2006
+ "AmountLib": [
2007
+ {
2008
+ "length": 20,
2009
+ "start": 2699
1440
2010
  },
1441
2011
  {
1442
2012
  "length": 20,
1443
- "start": 5119
2013
+ "start": 3518
1444
2014
  },
1445
2015
  {
1446
2016
  "length": 20,
1447
- "start": 6031
2017
+ "start": 4835
1448
2018
  },
1449
2019
  {
1450
2020
  "length": 20,
1451
- "start": 7685
2021
+ "start": 6448
1452
2022
  },
1453
2023
  {
1454
2024
  "length": 20,
1455
- "start": 9090
2025
+ "start": 6599
1456
2026
  },
1457
2027
  {
1458
2028
  "length": 20,
1459
- "start": 11220
1460
- }
1461
- ]
1462
- }
1463
- },
1464
- "deployedLinkReferences": {
1465
- "contracts/type/Amount.sol": {
1466
- "AmountLib": [
2029
+ "start": 7244
2030
+ },
1467
2031
  {
1468
2032
  "length": 20,
1469
- "start": 2108
2033
+ "start": 8254
1470
2034
  },
1471
2035
  {
1472
2036
  "length": 20,
1473
- "start": 5158
2037
+ "start": 8386
1474
2038
  },
1475
2039
  {
1476
2040
  "length": 20,
1477
- "start": 7865
2041
+ "start": 9959
1478
2042
  },
1479
2043
  {
1480
2044
  "length": 20,
1481
- "start": 8143
2045
+ "start": 11686
1482
2046
  },
1483
2047
  {
1484
2048
  "length": 20,
1485
- "start": 10360
2049
+ "start": 11863
1486
2050
  },
1487
2051
  {
1488
2052
  "length": 20,
1489
- "start": 12320
2053
+ "start": 13958
1490
2054
  },
1491
2055
  {
1492
2056
  "length": 20,
1493
- "start": 12540
2057
+ "start": 14135
1494
2058
  },
1495
2059
  {
1496
2060
  "length": 20,
1497
- "start": 12675
2061
+ "start": 14312
1498
2062
  }
1499
2063
  ]
1500
2064
  },
@@ -1502,55 +2066,59 @@
1502
2066
  "BlocknumberLib": [
1503
2067
  {
1504
2068
  "length": 20,
1505
- "start": 3284
2069
+ "start": 5129
2070
+ },
2071
+ {
2072
+ "length": 20,
2073
+ "start": 7759
1506
2074
  },
1507
2075
  {
1508
2076
  "length": 20,
1509
- "start": 3687
2077
+ "start": 8531
1510
2078
  },
1511
2079
  {
1512
2080
  "length": 20,
1513
- "start": 4100
2081
+ "start": 8748
1514
2082
  },
1515
2083
  {
1516
2084
  "length": 20,
1517
- "start": 4606
2085
+ "start": 9463
1518
2086
  },
1519
2087
  {
1520
2088
  "length": 20,
1521
- "start": 4929
2089
+ "start": 9781
1522
2090
  },
1523
2091
  {
1524
2092
  "length": 20,
1525
- "start": 5518
2093
+ "start": 10241
1526
2094
  },
1527
2095
  {
1528
2096
  "length": 20,
1529
- "start": 6515
2097
+ "start": 10486
1530
2098
  },
1531
2099
  {
1532
2100
  "length": 20,
1533
- "start": 7172
2101
+ "start": 11551
1534
2102
  },
1535
2103
  {
1536
2104
  "length": 20,
1537
- "start": 7700
2105
+ "start": 12213
1538
2106
  },
1539
2107
  {
1540
2108
  "length": 20,
1541
- "start": 8577
2109
+ "start": 12426
1542
2110
  },
1543
2111
  {
1544
2112
  "length": 20,
1545
- "start": 10158
2113
+ "start": 13823
1546
2114
  },
1547
2115
  {
1548
2116
  "length": 20,
1549
- "start": 10707
2117
+ "start": 14489
1550
2118
  },
1551
2119
  {
1552
2120
  "length": 20,
1553
- "start": 13512
2121
+ "start": 14561
1554
2122
  }
1555
2123
  ]
1556
2124
  },
@@ -1558,35 +2126,35 @@
1558
2126
  "Key32Lib": [
1559
2127
  {
1560
2128
  "length": 20,
1561
- "start": 7542
2129
+ "start": 7078
1562
2130
  },
1563
2131
  {
1564
2132
  "length": 20,
1565
- "start": 8839
2133
+ "start": 8992
1566
2134
  },
1567
2135
  {
1568
2136
  "length": 20,
1569
- "start": 8955
2137
+ "start": 9106
1570
2138
  },
1571
2139
  {
1572
2140
  "length": 20,
1573
- "start": 9138
2141
+ "start": 10567
1574
2142
  },
1575
2143
  {
1576
2144
  "length": 20,
1577
- "start": 9823
2145
+ "start": 11240
1578
2146
  },
1579
2147
  {
1580
2148
  "length": 20,
1581
- "start": 9939
2149
+ "start": 11354
1582
2150
  },
1583
2151
  {
1584
2152
  "length": 20,
1585
- "start": 13154
2153
+ "start": 13445
1586
2154
  },
1587
2155
  {
1588
2156
  "length": 20,
1589
- "start": 13270
2157
+ "start": 13559
1590
2158
  }
1591
2159
  ]
1592
2160
  },
@@ -1594,23 +2162,23 @@
1594
2162
  "NftIdLib": [
1595
2163
  {
1596
2164
  "length": 20,
1597
- "start": 1635
2165
+ "start": 2411
1598
2166
  },
1599
2167
  {
1600
2168
  "length": 20,
1601
- "start": 1877
2169
+ "start": 4061
1602
2170
  },
1603
2171
  {
1604
2172
  "length": 20,
1605
- "start": 2476
2173
+ "start": 4237
1606
2174
  },
1607
2175
  {
1608
2176
  "length": 20,
1609
- "start": 2718
2177
+ "start": 4559
1610
2178
  },
1611
2179
  {
1612
2180
  "length": 20,
1613
- "start": 2897
2181
+ "start": 9308
1614
2182
  }
1615
2183
  ]
1616
2184
  },
@@ -1618,7 +2186,7 @@
1618
2186
  "ObjectTypeLib": [
1619
2187
  {
1620
2188
  "length": 20,
1621
- "start": 9259
2189
+ "start": 10686
1622
2190
  }
1623
2191
  ]
1624
2192
  },
@@ -1626,27 +2194,27 @@
1626
2194
  "StateIdLib": [
1627
2195
  {
1628
2196
  "length": 20,
1629
- "start": 2370
2197
+ "start": 3340
1630
2198
  },
1631
2199
  {
1632
2200
  "length": 20,
1633
- "start": 6181
2201
+ "start": 5887
1634
2202
  },
1635
2203
  {
1636
2204
  "length": 20,
1637
- "start": 6422
2205
+ "start": 6154
1638
2206
  },
1639
2207
  {
1640
2208
  "length": 20,
1641
- "start": 9435
2209
+ "start": 10859
1642
2210
  },
1643
2211
  {
1644
2212
  "length": 20,
1645
- "start": 12736
2213
+ "start": 13033
1646
2214
  },
1647
2215
  {
1648
2216
  "length": 20,
1649
- "start": 12927
2217
+ "start": 13220
1650
2218
  }
1651
2219
  ]
1652
2220
  },
@@ -1654,27 +2222,19 @@
1654
2222
  "TimestampLib": [
1655
2223
  {
1656
2224
  "length": 20,
1657
- "start": 3509
1658
- },
1659
- {
1660
- "length": 20,
1661
- "start": 4428
1662
- },
1663
- {
1664
- "length": 20,
1665
- "start": 5340
1666
- },
1667
- {
1668
- "length": 20,
1669
- "start": 6994
2225
+ "start": 10080
1670
2226
  },
1671
2227
  {
1672
2228
  "length": 20,
1673
- "start": 8399
1674
- },
2229
+ "start": 12040
2230
+ }
2231
+ ]
2232
+ },
2233
+ "contracts/type/UFixed.sol": {
2234
+ "UFixedLib": [
1675
2235
  {
1676
2236
  "length": 20,
1677
- "start": 10529
2237
+ "start": 7378
1678
2238
  }
1679
2239
  ]
1680
2240
  }