@etherisc/gif-next 0.0.2-f18fb8b-243 → 0.0.2-f1f3b2c-994

Sign up to get free protection for your applications and to get access to all the features.
Files changed (465) hide show
  1. package/README.md +19 -2
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +81 -63
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  7. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +48 -30
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +21 -2
  14. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +72 -9
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  19. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +106 -248
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +64 -222
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +228 -217
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +93 -101
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +64 -37
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +120 -31
  32. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  33. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  34. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1512 -0
  36. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
  38. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1999 -0
  40. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +414 -0
  42. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1432 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1192 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1566 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2001 -0
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  53. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -6
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +5 -5
  58. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/Instance.sol/Instance.json +17 -106
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +146 -112
  62. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +31 -31
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  65. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +437 -129
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +44 -151
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +61 -81
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +285 -228
  72. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  73. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  74. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  76. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  77. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  78. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +45 -4
  79. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  80. package/artifacts/contracts/instance/base/{ObjectManager.sol/ObjectManager.json → ObjectSet.sol/ObjectSet.json} +6 -6
  81. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  86. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  87. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  88. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  89. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +74 -229
  91. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  92. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +18 -18
  93. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  94. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +45 -31
  96. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  98. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +42 -213
  99. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +37 -144
  101. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +60 -80
  103. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  104. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +94 -274
  105. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  106. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
  107. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  108. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +458 -161
  109. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +154 -86
  111. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  112. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +229 -1
  113. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  114. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +87 -88
  115. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  116. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +360 -171
  117. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  118. package/artifacts/contracts/pool/Pool.sol/Pool.json +84 -270
  119. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  120. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +492 -333
  121. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +98 -82
  123. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  124. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +36 -162
  125. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +57 -89
  127. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  128. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +62 -242
  129. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  130. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
  131. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  132. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +263 -181
  133. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  134. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +104 -100
  135. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  136. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
  137. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  138. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +147 -6
  139. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  140. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +295 -119
  141. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  142. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
  143. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  144. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +62 -57
  145. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  146. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
  147. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  148. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +406 -321
  149. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +104 -100
  151. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  152. package/artifacts/contracts/product/PricingService.sol/PricingService.json +118 -265
  153. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +80 -120
  155. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  156. package/artifacts/contracts/product/Product.sol/Product.json +62 -242
  157. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  158. package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
  159. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  160. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -0
  161. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  162. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  163. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  164. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +274 -22
  165. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  166. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  167. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  168. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  169. package/artifacts/contracts/registry/Registry.sol/Registry.json +493 -80
  170. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  171. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +263 -145
  172. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  173. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -313
  174. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +52 -72
  176. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  177. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +46 -5
  178. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  179. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1061 -0
  180. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  181. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +70 -12
  182. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  183. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  184. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  185. package/artifacts/contracts/shared/Component.sol/Component.json +15 -205
  186. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  187. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +247 -161
  188. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  189. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +105 -95
  190. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  191. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +5 -112
  192. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  193. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  194. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +15 -20
  196. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  198. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +34 -31
  200. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  202. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  203. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  204. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  205. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  206. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  207. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  208. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  209. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  210. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  211. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  212. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  213. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +34 -216
  214. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  215. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +41 -0
  216. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  217. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +41 -0
  218. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  219. package/artifacts/contracts/shared/{NftIdSetManager.sol/NftIdSetManager.json → NftIdSet.sol/NftIdSet.json} +4 -4
  220. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  221. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
  222. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  223. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  224. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  225. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
  226. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  227. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  228. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  229. package/artifacts/contracts/shared/Service.sol/Service.json +5 -112
  230. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  231. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  232. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  233. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  234. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  235. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +42 -21
  236. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  237. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  238. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
  239. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  240. package/artifacts/contracts/staking/Staking.sol/Staking.json +100 -256
  241. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  242. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +45 -4
  243. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +77 -88
  245. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  246. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  247. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  248. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +31 -138
  249. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  250. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +56 -76
  251. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  252. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +176 -130
  253. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  254. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  255. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  256. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
  258. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  260. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  262. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  264. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
  266. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  267. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  268. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  270. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  271. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  272. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  274. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  276. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  278. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  280. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  282. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  284. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  286. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  290. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -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 +52 -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 +586 -0
  305. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  306. package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
  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 +31 -24
  310. package/contracts/authorization/Authorization.sol +5 -2
  311. package/contracts/authorization/IAccessAdmin.sol +3 -2
  312. package/contracts/authorization/IServiceAuthorization.sol +4 -2
  313. package/contracts/authorization/ServiceAuthorization.sol +27 -11
  314. package/contracts/distribution/BasicDistribution.sol +4 -15
  315. package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
  316. package/contracts/distribution/Distribution.sol +23 -11
  317. package/contracts/distribution/DistributionService.sol +76 -42
  318. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  319. package/contracts/distribution/IDistributionComponent.sol +8 -4
  320. package/contracts/distribution/IDistributionService.sol +18 -2
  321. package/contracts/examples/fire/DamageLevel.sol +59 -0
  322. package/contracts/examples/fire/FirePool.sol +75 -0
  323. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  324. package/contracts/examples/fire/FireProduct.sol +411 -0
  325. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  326. package/contracts/examples/fire/FireUSD.sol +26 -0
  327. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  328. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  329. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  330. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  331. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  332. package/contracts/instance/IInstance.sol +11 -34
  333. package/contracts/instance/IInstanceService.sol +5 -5
  334. package/contracts/instance/Instance.sol +13 -38
  335. package/contracts/instance/InstanceAdmin.sol +31 -9
  336. package/contracts/instance/InstanceAuthorizationV3.sol +16 -14
  337. package/contracts/instance/InstanceReader.sol +115 -25
  338. package/contracts/instance/InstanceService.sol +71 -49
  339. package/contracts/instance/InstanceServiceManager.sol +8 -13
  340. package/contracts/instance/InstanceStore.sol +12 -1
  341. package/contracts/instance/base/ObjectLifecycle.sol +9 -4
  342. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +5 -5
  343. package/contracts/instance/module/IBundle.sol +1 -1
  344. package/contracts/instance/module/IComponents.sol +4 -8
  345. package/contracts/instance/module/IDistribution.sol +0 -1
  346. package/contracts/instance/module/IPolicy.sol +24 -24
  347. package/contracts/mock/Dip.sol +1 -1
  348. package/contracts/oracle/IOracleComponent.sol +2 -1
  349. package/contracts/oracle/Oracle.sol +17 -7
  350. package/contracts/oracle/OracleService.sol +11 -8
  351. package/contracts/oracle/OracleServiceManager.sol +8 -11
  352. package/contracts/pool/BasicPool.sol +7 -5
  353. package/contracts/pool/BasicPoolAuthorization.sol +11 -2
  354. package/contracts/pool/BundleService.sol +221 -56
  355. package/contracts/pool/BundleServiceManager.sol +8 -11
  356. package/contracts/pool/IBundleService.sol +42 -5
  357. package/contracts/pool/IPoolComponent.sol +24 -8
  358. package/contracts/pool/IPoolService.sol +57 -36
  359. package/contracts/pool/Pool.sol +72 -30
  360. package/contracts/pool/PoolService.sol +240 -129
  361. package/contracts/pool/PoolServiceManager.sol +6 -9
  362. package/contracts/product/ApplicationService.sol +62 -65
  363. package/contracts/product/ApplicationServiceManager.sol +6 -6
  364. package/contracts/product/BasicProduct.sol +3 -32
  365. package/contracts/product/BasicProductAuthorization.sol +3 -0
  366. package/contracts/product/ClaimService.sol +254 -115
  367. package/contracts/product/ClaimServiceManager.sol +6 -6
  368. package/contracts/product/IApplicationService.sol +1 -0
  369. package/contracts/product/IClaimService.sol +31 -7
  370. package/contracts/product/IPolicyService.sol +34 -32
  371. package/contracts/product/IPricingService.sol +7 -7
  372. package/contracts/product/IProductComponent.sol +18 -4
  373. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  374. package/contracts/product/PolicyService.sol +404 -193
  375. package/contracts/product/PolicyServiceManager.sol +6 -9
  376. package/contracts/product/PricingService.sol +46 -46
  377. package/contracts/product/PricingServiceManager.sol +5 -8
  378. package/contracts/product/Product.sol +90 -50
  379. package/contracts/product/{ProductService.sol → RiskService.sol} +13 -41
  380. package/contracts/product/RiskServiceManager.sol +39 -0
  381. package/contracts/registry/ChainNft.sol +65 -32
  382. package/contracts/registry/IRegistry.sol +65 -19
  383. package/contracts/registry/IRegistryService.sol +0 -9
  384. package/contracts/registry/Registry.sol +340 -211
  385. package/contracts/registry/RegistryAdmin.sol +155 -72
  386. package/contracts/registry/RegistryService.sol +59 -66
  387. package/contracts/registry/RegistryServiceManager.sol +4 -4
  388. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  389. package/contracts/registry/ReleaseRegistry.sol +496 -0
  390. package/contracts/registry/ServiceAuthorizationV3.sol +13 -15
  391. package/contracts/registry/TokenRegistry.sol +2 -2
  392. package/contracts/shared/Component.sol +38 -43
  393. package/contracts/shared/ComponentService.sol +88 -28
  394. package/contracts/shared/ComponentServiceManager.sol +10 -7
  395. package/contracts/shared/ComponentVerifyingService.sol +2 -3
  396. package/contracts/shared/ContractLib.sol +38 -0
  397. package/contracts/shared/IComponent.sol +7 -4
  398. package/contracts/shared/IComponentService.sol +15 -9
  399. package/contracts/shared/IInstanceLinkedComponent.sol +9 -10
  400. package/contracts/shared/ILifecycle.sol +3 -1
  401. package/contracts/shared/IPolicyHolder.sol +12 -22
  402. package/contracts/shared/IService.sol +1 -1
  403. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  404. package/contracts/shared/InstanceLinkedComponent.sol +26 -6
  405. package/contracts/shared/KeyValueStore.sol +1 -1
  406. package/contracts/shared/Lifecycle.sol +13 -2
  407. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  408. package/contracts/shared/NftOwnable.sol +7 -7
  409. package/contracts/shared/PolicyHolder.sol +17 -57
  410. package/contracts/shared/Registerable.sol +4 -4
  411. package/contracts/shared/RegistryLinked.sol +3 -2
  412. package/contracts/shared/Service.sol +19 -15
  413. package/contracts/shared/TokenHandler.sol +100 -19
  414. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  415. package/contracts/staking/IStaking.sol +3 -3
  416. package/contracts/staking/IStakingService.sol +12 -5
  417. package/contracts/staking/StakeManagerLib.sol +18 -25
  418. package/contracts/staking/Staking.sol +27 -42
  419. package/contracts/staking/StakingManager.sol +10 -12
  420. package/contracts/staking/StakingReader.sol +23 -20
  421. package/contracts/staking/StakingService.sol +10 -14
  422. package/contracts/staking/StakingServiceManager.sol +4 -4
  423. package/contracts/staking/StakingStore.sol +12 -22
  424. package/contracts/staking/TargetManagerLib.sol +7 -3
  425. package/contracts/type/Amount.sol +27 -5
  426. package/contracts/type/Blocknumber.sol +7 -1
  427. package/contracts/type/ClaimId.sol +6 -1
  428. package/contracts/type/NftId.sol +1 -0
  429. package/contracts/type/ObjectType.sol +19 -18
  430. package/contracts/type/PayoutId.sol +10 -10
  431. package/contracts/type/Referral.sol +1 -0
  432. package/contracts/type/RiskId.sol +15 -1
  433. package/contracts/type/Seconds.sol +21 -1
  434. package/contracts/type/StateId.sol +15 -1
  435. package/contracts/type/Timestamp.sol +11 -1
  436. package/contracts/type/UFixed.sol +33 -10
  437. package/contracts/type/Version.sol +3 -1
  438. package/contracts/{shared → upgradeability}/ProxyManager.sol +70 -38
  439. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  440. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  441. package/package.json +2 -1
  442. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  443. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -703
  444. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  445. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  446. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  447. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  448. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  449. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  450. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  451. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1159
  452. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  453. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  454. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  455. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  456. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  457. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  458. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  459. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  460. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  461. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  462. package/contracts/product/ProductServiceManager.sol +0 -42
  463. package/contracts/registry/ReleaseManager.sol +0 -487
  464. package/contracts/shared/InitializableCustom.sol +0 -177
  465. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -0,0 +1,1192 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "SimpleOracle",
4
+ "sourceName": "contracts/examples/unpermissioned/SimpleOracle.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "registry",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "NftId",
15
+ "name": "instanceNftId",
16
+ "type": "uint96"
17
+ },
18
+ {
19
+ "internalType": "contract IAuthorization",
20
+ "name": "authorization",
21
+ "type": "address"
22
+ },
23
+ {
24
+ "internalType": "address",
25
+ "name": "initialOwner",
26
+ "type": "address"
27
+ },
28
+ {
29
+ "internalType": "address",
30
+ "name": "token",
31
+ "type": "address"
32
+ }
33
+ ],
34
+ "stateMutability": "nonpayable",
35
+ "type": "constructor"
36
+ },
37
+ {
38
+ "inputs": [
39
+ {
40
+ "internalType": "address",
41
+ "name": "authority",
42
+ "type": "address"
43
+ }
44
+ ],
45
+ "name": "AccessManagedInvalidAuthority",
46
+ "type": "error"
47
+ },
48
+ {
49
+ "inputs": [
50
+ {
51
+ "internalType": "address",
52
+ "name": "caller",
53
+ "type": "address"
54
+ },
55
+ {
56
+ "internalType": "uint32",
57
+ "name": "delay",
58
+ "type": "uint32"
59
+ }
60
+ ],
61
+ "name": "AccessManagedRequiredDelay",
62
+ "type": "error"
63
+ },
64
+ {
65
+ "inputs": [
66
+ {
67
+ "internalType": "address",
68
+ "name": "caller",
69
+ "type": "address"
70
+ }
71
+ ],
72
+ "name": "AccessManagedUnauthorized",
73
+ "type": "error"
74
+ },
75
+ {
76
+ "inputs": [],
77
+ "name": "ErrorComponentNameLengthZero",
78
+ "type": "error"
79
+ },
80
+ {
81
+ "inputs": [
82
+ {
83
+ "internalType": "address",
84
+ "name": "caller",
85
+ "type": "address"
86
+ }
87
+ ],
88
+ "name": "ErrorComponentNotChainNft",
89
+ "type": "error"
90
+ },
91
+ {
92
+ "inputs": [
93
+ {
94
+ "internalType": "NftId",
95
+ "name": "instanceNftId",
96
+ "type": "uint96"
97
+ }
98
+ ],
99
+ "name": "ErrorComponentNotInstance",
100
+ "type": "error"
101
+ },
102
+ {
103
+ "inputs": [],
104
+ "name": "ErrorComponentProductNftAlreadySet",
105
+ "type": "error"
106
+ },
107
+ {
108
+ "inputs": [],
109
+ "name": "ErrorComponentTokenAddressZero",
110
+ "type": "error"
111
+ },
112
+ {
113
+ "inputs": [],
114
+ "name": "ErrorComponentWalletAddressIsSameAsCurrent",
115
+ "type": "error"
116
+ },
117
+ {
118
+ "inputs": [],
119
+ "name": "ErrorComponentWalletAddressZero",
120
+ "type": "error"
121
+ },
122
+ {
123
+ "inputs": [],
124
+ "name": "ErrorComponentWalletNotComponent",
125
+ "type": "error"
126
+ },
127
+ {
128
+ "inputs": [
129
+ {
130
+ "internalType": "NftId",
131
+ "name": "nftId",
132
+ "type": "uint96"
133
+ },
134
+ {
135
+ "internalType": "ObjectType",
136
+ "name": "objectType",
137
+ "type": "uint8"
138
+ },
139
+ {
140
+ "internalType": "ObjectType",
141
+ "name": "expectedObjectType",
142
+ "type": "uint8"
143
+ }
144
+ ],
145
+ "name": "ErrorNftNotObjectType",
146
+ "type": "error"
147
+ },
148
+ {
149
+ "inputs": [
150
+ {
151
+ "internalType": "NftId",
152
+ "name": "nftId",
153
+ "type": "uint96"
154
+ }
155
+ ],
156
+ "name": "ErrorNftOwnableAlreadyLinked",
157
+ "type": "error"
158
+ },
159
+ {
160
+ "inputs": [
161
+ {
162
+ "internalType": "address",
163
+ "name": "contractAddress",
164
+ "type": "address"
165
+ }
166
+ ],
167
+ "name": "ErrorNftOwnableContractNotRegistered",
168
+ "type": "error"
169
+ },
170
+ {
171
+ "inputs": [],
172
+ "name": "ErrorNftOwnableInitialOwnerZero",
173
+ "type": "error"
174
+ },
175
+ {
176
+ "inputs": [
177
+ {
178
+ "internalType": "address",
179
+ "name": "account",
180
+ "type": "address"
181
+ }
182
+ ],
183
+ "name": "ErrorNftOwnableNotOwner",
184
+ "type": "error"
185
+ },
186
+ {
187
+ "inputs": [
188
+ {
189
+ "internalType": "address",
190
+ "name": "registryAddress",
191
+ "type": "address"
192
+ }
193
+ ],
194
+ "name": "ErrorNotRegistry",
195
+ "type": "error"
196
+ },
197
+ {
198
+ "inputs": [
199
+ {
200
+ "internalType": "string",
201
+ "name": "methodName",
202
+ "type": "string"
203
+ }
204
+ ],
205
+ "name": "ErrorOracleNotImplemented",
206
+ "type": "error"
207
+ },
208
+ {
209
+ "inputs": [],
210
+ "name": "InvalidInitialization",
211
+ "type": "error"
212
+ },
213
+ {
214
+ "inputs": [],
215
+ "name": "NotInitializing",
216
+ "type": "error"
217
+ },
218
+ {
219
+ "anonymous": false,
220
+ "inputs": [
221
+ {
222
+ "indexed": false,
223
+ "internalType": "address",
224
+ "name": "authority",
225
+ "type": "address"
226
+ }
227
+ ],
228
+ "name": "AuthorityUpdated",
229
+ "type": "event"
230
+ },
231
+ {
232
+ "anonymous": false,
233
+ "inputs": [
234
+ {
235
+ "indexed": false,
236
+ "internalType": "uint64",
237
+ "name": "version",
238
+ "type": "uint64"
239
+ }
240
+ ],
241
+ "name": "Initialized",
242
+ "type": "event"
243
+ },
244
+ {
245
+ "anonymous": false,
246
+ "inputs": [
247
+ {
248
+ "indexed": false,
249
+ "internalType": "address",
250
+ "name": "token",
251
+ "type": "address"
252
+ },
253
+ {
254
+ "indexed": false,
255
+ "internalType": "Amount",
256
+ "name": "limit",
257
+ "type": "uint96"
258
+ }
259
+ ],
260
+ "name": "LogComponentTokenHandlerApproved",
261
+ "type": "event"
262
+ },
263
+ {
264
+ "anonymous": false,
265
+ "inputs": [
266
+ {
267
+ "indexed": false,
268
+ "internalType": "address",
269
+ "name": "oldWallet",
270
+ "type": "address"
271
+ },
272
+ {
273
+ "indexed": false,
274
+ "internalType": "address",
275
+ "name": "newWallet",
276
+ "type": "address"
277
+ }
278
+ ],
279
+ "name": "LogComponentWalletAddressChanged",
280
+ "type": "event"
281
+ },
282
+ {
283
+ "anonymous": false,
284
+ "inputs": [
285
+ {
286
+ "indexed": false,
287
+ "internalType": "address",
288
+ "name": "from",
289
+ "type": "address"
290
+ },
291
+ {
292
+ "indexed": false,
293
+ "internalType": "address",
294
+ "name": "to",
295
+ "type": "address"
296
+ },
297
+ {
298
+ "indexed": false,
299
+ "internalType": "uint256",
300
+ "name": "amount",
301
+ "type": "uint256"
302
+ }
303
+ ],
304
+ "name": "LogComponentWalletTokensTransferred",
305
+ "type": "event"
306
+ },
307
+ {
308
+ "anonymous": false,
309
+ "inputs": [
310
+ {
311
+ "indexed": false,
312
+ "internalType": "RequestId",
313
+ "name": "requestId",
314
+ "type": "uint64"
315
+ },
316
+ {
317
+ "indexed": false,
318
+ "internalType": "string",
319
+ "name": "responseText",
320
+ "type": "string"
321
+ }
322
+ ],
323
+ "name": "LogSimpleOracleAsyncResponseSent",
324
+ "type": "event"
325
+ },
326
+ {
327
+ "anonymous": false,
328
+ "inputs": [
329
+ {
330
+ "indexed": false,
331
+ "internalType": "RequestId",
332
+ "name": "requestId",
333
+ "type": "uint64"
334
+ }
335
+ ],
336
+ "name": "LogSimpleOracleCancellingReceived",
337
+ "type": "event"
338
+ },
339
+ {
340
+ "anonymous": false,
341
+ "inputs": [
342
+ {
343
+ "indexed": false,
344
+ "internalType": "RequestId",
345
+ "name": "requestId",
346
+ "type": "uint64"
347
+ },
348
+ {
349
+ "indexed": false,
350
+ "internalType": "NftId",
351
+ "name": "requesterId",
352
+ "type": "uint96"
353
+ },
354
+ {
355
+ "indexed": false,
356
+ "internalType": "bool",
357
+ "name": "synchronous",
358
+ "type": "bool"
359
+ },
360
+ {
361
+ "indexed": false,
362
+ "internalType": "string",
363
+ "name": "requestText",
364
+ "type": "string"
365
+ }
366
+ ],
367
+ "name": "LogSimpleOracleRequestReceived",
368
+ "type": "event"
369
+ },
370
+ {
371
+ "anonymous": false,
372
+ "inputs": [
373
+ {
374
+ "indexed": false,
375
+ "internalType": "RequestId",
376
+ "name": "requestId",
377
+ "type": "uint64"
378
+ },
379
+ {
380
+ "indexed": false,
381
+ "internalType": "string",
382
+ "name": "responseText",
383
+ "type": "string"
384
+ }
385
+ ],
386
+ "name": "LogSimpleOracleSyncResponseSent",
387
+ "type": "event"
388
+ },
389
+ {
390
+ "inputs": [],
391
+ "name": "ANSWER_SYNC",
392
+ "outputs": [
393
+ {
394
+ "internalType": "string",
395
+ "name": "",
396
+ "type": "string"
397
+ }
398
+ ],
399
+ "stateMutability": "view",
400
+ "type": "function"
401
+ },
402
+ {
403
+ "inputs": [],
404
+ "name": "COMPONENT_LOCATION_V1",
405
+ "outputs": [
406
+ {
407
+ "internalType": "bytes32",
408
+ "name": "",
409
+ "type": "bytes32"
410
+ }
411
+ ],
412
+ "stateMutability": "view",
413
+ "type": "function"
414
+ },
415
+ {
416
+ "inputs": [],
417
+ "name": "INSTANCE_LINKED_COMPONENT_LOCATION_V1",
418
+ "outputs": [
419
+ {
420
+ "internalType": "bytes32",
421
+ "name": "",
422
+ "type": "bytes32"
423
+ }
424
+ ],
425
+ "stateMutability": "view",
426
+ "type": "function"
427
+ },
428
+ {
429
+ "inputs": [],
430
+ "name": "NFT_OWNABLE_STORAGE_LOCATION_V1",
431
+ "outputs": [
432
+ {
433
+ "internalType": "bytes32",
434
+ "name": "",
435
+ "type": "bytes32"
436
+ }
437
+ ],
438
+ "stateMutability": "view",
439
+ "type": "function"
440
+ },
441
+ {
442
+ "inputs": [],
443
+ "name": "ORACLE_STORAGE_LOCATION_V1",
444
+ "outputs": [
445
+ {
446
+ "internalType": "bytes32",
447
+ "name": "",
448
+ "type": "bytes32"
449
+ }
450
+ ],
451
+ "stateMutability": "view",
452
+ "type": "function"
453
+ },
454
+ {
455
+ "inputs": [],
456
+ "name": "REGISTERABLE_LOCATION_V1",
457
+ "outputs": [
458
+ {
459
+ "internalType": "bytes32",
460
+ "name": "",
461
+ "type": "bytes32"
462
+ }
463
+ ],
464
+ "stateMutability": "view",
465
+ "type": "function"
466
+ },
467
+ {
468
+ "inputs": [
469
+ {
470
+ "internalType": "address",
471
+ "name": "token",
472
+ "type": "address"
473
+ },
474
+ {
475
+ "internalType": "Amount",
476
+ "name": "spendingLimitAmount",
477
+ "type": "uint96"
478
+ }
479
+ ],
480
+ "name": "approveTokenHandler",
481
+ "outputs": [],
482
+ "stateMutability": "nonpayable",
483
+ "type": "function"
484
+ },
485
+ {
486
+ "inputs": [
487
+ {
488
+ "internalType": "Amount",
489
+ "name": "spendingLimitAmount",
490
+ "type": "uint96"
491
+ }
492
+ ],
493
+ "name": "approveTokenHandler",
494
+ "outputs": [],
495
+ "stateMutability": "nonpayable",
496
+ "type": "function"
497
+ },
498
+ {
499
+ "inputs": [],
500
+ "name": "authority",
501
+ "outputs": [
502
+ {
503
+ "internalType": "address",
504
+ "name": "",
505
+ "type": "address"
506
+ }
507
+ ],
508
+ "stateMutability": "view",
509
+ "type": "function"
510
+ },
511
+ {
512
+ "inputs": [
513
+ {
514
+ "internalType": "RequestId",
515
+ "name": "requestId",
516
+ "type": "uint64"
517
+ }
518
+ ],
519
+ "name": "cancel",
520
+ "outputs": [],
521
+ "stateMutability": "nonpayable",
522
+ "type": "function"
523
+ },
524
+ {
525
+ "inputs": [],
526
+ "name": "getAuthorization",
527
+ "outputs": [
528
+ {
529
+ "internalType": "contract IAuthorization",
530
+ "name": "authorization",
531
+ "type": "address"
532
+ }
533
+ ],
534
+ "stateMutability": "view",
535
+ "type": "function"
536
+ },
537
+ {
538
+ "inputs": [],
539
+ "name": "getComponentInfo",
540
+ "outputs": [
541
+ {
542
+ "components": [
543
+ {
544
+ "internalType": "string",
545
+ "name": "name",
546
+ "type": "string"
547
+ },
548
+ {
549
+ "internalType": "NftId",
550
+ "name": "productNftId",
551
+ "type": "uint96"
552
+ },
553
+ {
554
+ "internalType": "contract IERC20Metadata",
555
+ "name": "token",
556
+ "type": "address"
557
+ },
558
+ {
559
+ "internalType": "contract TokenHandler",
560
+ "name": "tokenHandler",
561
+ "type": "address"
562
+ },
563
+ {
564
+ "internalType": "address",
565
+ "name": "wallet",
566
+ "type": "address"
567
+ },
568
+ {
569
+ "internalType": "bytes",
570
+ "name": "data",
571
+ "type": "bytes"
572
+ }
573
+ ],
574
+ "internalType": "struct IComponents.ComponentInfo",
575
+ "name": "info",
576
+ "type": "tuple"
577
+ }
578
+ ],
579
+ "stateMutability": "view",
580
+ "type": "function"
581
+ },
582
+ {
583
+ "inputs": [],
584
+ "name": "getInitialComponentInfo",
585
+ "outputs": [
586
+ {
587
+ "components": [
588
+ {
589
+ "internalType": "string",
590
+ "name": "name",
591
+ "type": "string"
592
+ },
593
+ {
594
+ "internalType": "NftId",
595
+ "name": "productNftId",
596
+ "type": "uint96"
597
+ },
598
+ {
599
+ "internalType": "contract IERC20Metadata",
600
+ "name": "token",
601
+ "type": "address"
602
+ },
603
+ {
604
+ "internalType": "contract TokenHandler",
605
+ "name": "tokenHandler",
606
+ "type": "address"
607
+ },
608
+ {
609
+ "internalType": "address",
610
+ "name": "wallet",
611
+ "type": "address"
612
+ },
613
+ {
614
+ "internalType": "bytes",
615
+ "name": "data",
616
+ "type": "bytes"
617
+ }
618
+ ],
619
+ "internalType": "struct IComponents.ComponentInfo",
620
+ "name": "info",
621
+ "type": "tuple"
622
+ }
623
+ ],
624
+ "stateMutability": "view",
625
+ "type": "function"
626
+ },
627
+ {
628
+ "inputs": [],
629
+ "name": "getInitialInfo",
630
+ "outputs": [
631
+ {
632
+ "components": [
633
+ {
634
+ "internalType": "NftId",
635
+ "name": "nftId",
636
+ "type": "uint96"
637
+ },
638
+ {
639
+ "internalType": "NftId",
640
+ "name": "parentNftId",
641
+ "type": "uint96"
642
+ },
643
+ {
644
+ "internalType": "ObjectType",
645
+ "name": "objectType",
646
+ "type": "uint8"
647
+ },
648
+ {
649
+ "internalType": "bool",
650
+ "name": "isInterceptor",
651
+ "type": "bool"
652
+ },
653
+ {
654
+ "internalType": "address",
655
+ "name": "objectAddress",
656
+ "type": "address"
657
+ },
658
+ {
659
+ "internalType": "address",
660
+ "name": "initialOwner",
661
+ "type": "address"
662
+ },
663
+ {
664
+ "internalType": "bytes",
665
+ "name": "data",
666
+ "type": "bytes"
667
+ }
668
+ ],
669
+ "internalType": "struct IRegistry.ObjectInfo",
670
+ "name": "info",
671
+ "type": "tuple"
672
+ }
673
+ ],
674
+ "stateMutability": "view",
675
+ "type": "function"
676
+ },
677
+ {
678
+ "inputs": [],
679
+ "name": "getInstance",
680
+ "outputs": [
681
+ {
682
+ "internalType": "contract IInstance",
683
+ "name": "instance",
684
+ "type": "address"
685
+ }
686
+ ],
687
+ "stateMutability": "view",
688
+ "type": "function"
689
+ },
690
+ {
691
+ "inputs": [],
692
+ "name": "getName",
693
+ "outputs": [
694
+ {
695
+ "internalType": "string",
696
+ "name": "name",
697
+ "type": "string"
698
+ }
699
+ ],
700
+ "stateMutability": "view",
701
+ "type": "function"
702
+ },
703
+ {
704
+ "inputs": [],
705
+ "name": "getNftId",
706
+ "outputs": [
707
+ {
708
+ "internalType": "NftId",
709
+ "name": "",
710
+ "type": "uint96"
711
+ }
712
+ ],
713
+ "stateMutability": "view",
714
+ "type": "function"
715
+ },
716
+ {
717
+ "inputs": [],
718
+ "name": "getOwner",
719
+ "outputs": [
720
+ {
721
+ "internalType": "address",
722
+ "name": "",
723
+ "type": "address"
724
+ }
725
+ ],
726
+ "stateMutability": "view",
727
+ "type": "function"
728
+ },
729
+ {
730
+ "inputs": [],
731
+ "name": "getProductNftId",
732
+ "outputs": [
733
+ {
734
+ "internalType": "NftId",
735
+ "name": "productNftId",
736
+ "type": "uint96"
737
+ }
738
+ ],
739
+ "stateMutability": "view",
740
+ "type": "function"
741
+ },
742
+ {
743
+ "inputs": [],
744
+ "name": "getRegistry",
745
+ "outputs": [
746
+ {
747
+ "internalType": "contract IRegistry",
748
+ "name": "",
749
+ "type": "address"
750
+ }
751
+ ],
752
+ "stateMutability": "view",
753
+ "type": "function"
754
+ },
755
+ {
756
+ "inputs": [],
757
+ "name": "getToken",
758
+ "outputs": [
759
+ {
760
+ "internalType": "contract IERC20Metadata",
761
+ "name": "token",
762
+ "type": "address"
763
+ }
764
+ ],
765
+ "stateMutability": "view",
766
+ "type": "function"
767
+ },
768
+ {
769
+ "inputs": [],
770
+ "name": "getTokenHandler",
771
+ "outputs": [
772
+ {
773
+ "internalType": "contract TokenHandler",
774
+ "name": "tokenHandler",
775
+ "type": "address"
776
+ }
777
+ ],
778
+ "stateMutability": "view",
779
+ "type": "function"
780
+ },
781
+ {
782
+ "inputs": [],
783
+ "name": "getWallet",
784
+ "outputs": [
785
+ {
786
+ "internalType": "address",
787
+ "name": "walletAddress",
788
+ "type": "address"
789
+ }
790
+ ],
791
+ "stateMutability": "view",
792
+ "type": "function"
793
+ },
794
+ {
795
+ "inputs": [
796
+ {
797
+ "internalType": "address",
798
+ "name": "registry",
799
+ "type": "address"
800
+ },
801
+ {
802
+ "internalType": "NftId",
803
+ "name": "instanceNftId",
804
+ "type": "uint96"
805
+ },
806
+ {
807
+ "internalType": "contract IAuthorization",
808
+ "name": "authorization",
809
+ "type": "address"
810
+ },
811
+ {
812
+ "internalType": "address",
813
+ "name": "initialOwner",
814
+ "type": "address"
815
+ },
816
+ {
817
+ "internalType": "string",
818
+ "name": "name",
819
+ "type": "string"
820
+ },
821
+ {
822
+ "internalType": "address",
823
+ "name": "token",
824
+ "type": "address"
825
+ }
826
+ ],
827
+ "name": "initialize",
828
+ "outputs": [],
829
+ "stateMutability": "nonpayable",
830
+ "type": "function"
831
+ },
832
+ {
833
+ "inputs": [],
834
+ "name": "isConsumingScheduledOp",
835
+ "outputs": [
836
+ {
837
+ "internalType": "bytes4",
838
+ "name": "",
839
+ "type": "bytes4"
840
+ }
841
+ ],
842
+ "stateMutability": "view",
843
+ "type": "function"
844
+ },
845
+ {
846
+ "inputs": [],
847
+ "name": "isNftInterceptor",
848
+ "outputs": [
849
+ {
850
+ "internalType": "bool",
851
+ "name": "isInterceptor",
852
+ "type": "bool"
853
+ }
854
+ ],
855
+ "stateMutability": "view",
856
+ "type": "function"
857
+ },
858
+ {
859
+ "inputs": [],
860
+ "name": "isRegistered",
861
+ "outputs": [
862
+ {
863
+ "internalType": "bool",
864
+ "name": "",
865
+ "type": "bool"
866
+ }
867
+ ],
868
+ "stateMutability": "view",
869
+ "type": "function"
870
+ },
871
+ {
872
+ "inputs": [],
873
+ "name": "isVerifying",
874
+ "outputs": [
875
+ {
876
+ "internalType": "bool",
877
+ "name": "verifying",
878
+ "type": "bool"
879
+ }
880
+ ],
881
+ "stateMutability": "view",
882
+ "type": "function"
883
+ },
884
+ {
885
+ "inputs": [],
886
+ "name": "linkToRegisteredNftId",
887
+ "outputs": [
888
+ {
889
+ "internalType": "NftId",
890
+ "name": "nftId",
891
+ "type": "uint96"
892
+ }
893
+ ],
894
+ "stateMutability": "nonpayable",
895
+ "type": "function"
896
+ },
897
+ {
898
+ "inputs": [],
899
+ "name": "lock",
900
+ "outputs": [],
901
+ "stateMutability": "nonpayable",
902
+ "type": "function"
903
+ },
904
+ {
905
+ "inputs": [
906
+ {
907
+ "internalType": "address",
908
+ "name": "to",
909
+ "type": "address"
910
+ },
911
+ {
912
+ "internalType": "uint256",
913
+ "name": "tokenId",
914
+ "type": "uint256"
915
+ }
916
+ ],
917
+ "name": "nftMint",
918
+ "outputs": [],
919
+ "stateMutability": "nonpayable",
920
+ "type": "function"
921
+ },
922
+ {
923
+ "inputs": [
924
+ {
925
+ "internalType": "address",
926
+ "name": "from",
927
+ "type": "address"
928
+ },
929
+ {
930
+ "internalType": "address",
931
+ "name": "to",
932
+ "type": "address"
933
+ },
934
+ {
935
+ "internalType": "uint256",
936
+ "name": "tokenId",
937
+ "type": "uint256"
938
+ }
939
+ ],
940
+ "name": "nftTransferFrom",
941
+ "outputs": [],
942
+ "stateMutability": "nonpayable",
943
+ "type": "function"
944
+ },
945
+ {
946
+ "inputs": [],
947
+ "name": "register",
948
+ "outputs": [],
949
+ "stateMutability": "nonpayable",
950
+ "type": "function"
951
+ },
952
+ {
953
+ "inputs": [
954
+ {
955
+ "internalType": "RequestId",
956
+ "name": "requestId",
957
+ "type": "uint64"
958
+ },
959
+ {
960
+ "internalType": "NftId",
961
+ "name": "requesterId",
962
+ "type": "uint96"
963
+ },
964
+ {
965
+ "internalType": "bytes",
966
+ "name": "requestData",
967
+ "type": "bytes"
968
+ },
969
+ {
970
+ "internalType": "Timestamp",
971
+ "name": "expiryAt",
972
+ "type": "uint40"
973
+ }
974
+ ],
975
+ "name": "request",
976
+ "outputs": [],
977
+ "stateMutability": "nonpayable",
978
+ "type": "function"
979
+ },
980
+ {
981
+ "inputs": [
982
+ {
983
+ "internalType": "RequestId",
984
+ "name": "requestId",
985
+ "type": "uint64"
986
+ },
987
+ {
988
+ "internalType": "bytes",
989
+ "name": "responseData",
990
+ "type": "bytes"
991
+ }
992
+ ],
993
+ "name": "respond",
994
+ "outputs": [],
995
+ "stateMutability": "nonpayable",
996
+ "type": "function"
997
+ },
998
+ {
999
+ "inputs": [
1000
+ {
1001
+ "internalType": "RequestId",
1002
+ "name": "requestId",
1003
+ "type": "uint64"
1004
+ },
1005
+ {
1006
+ "internalType": "string",
1007
+ "name": "responseText",
1008
+ "type": "string"
1009
+ },
1010
+ {
1011
+ "internalType": "bool",
1012
+ "name": "revertInCall",
1013
+ "type": "bool"
1014
+ },
1015
+ {
1016
+ "internalType": "Timestamp",
1017
+ "name": "revertUntil",
1018
+ "type": "uint40"
1019
+ }
1020
+ ],
1021
+ "name": "respondAsync",
1022
+ "outputs": [],
1023
+ "stateMutability": "nonpayable",
1024
+ "type": "function"
1025
+ },
1026
+ {
1027
+ "inputs": [
1028
+ {
1029
+ "internalType": "address",
1030
+ "name": "newAuthority",
1031
+ "type": "address"
1032
+ }
1033
+ ],
1034
+ "name": "setAuthority",
1035
+ "outputs": [],
1036
+ "stateMutability": "nonpayable",
1037
+ "type": "function"
1038
+ },
1039
+ {
1040
+ "inputs": [
1041
+ {
1042
+ "internalType": "address",
1043
+ "name": "newWallet",
1044
+ "type": "address"
1045
+ }
1046
+ ],
1047
+ "name": "setWallet",
1048
+ "outputs": [],
1049
+ "stateMutability": "nonpayable",
1050
+ "type": "function"
1051
+ },
1052
+ {
1053
+ "inputs": [
1054
+ {
1055
+ "internalType": "bytes4",
1056
+ "name": "interfaceId",
1057
+ "type": "bytes4"
1058
+ }
1059
+ ],
1060
+ "name": "supportsInterface",
1061
+ "outputs": [
1062
+ {
1063
+ "internalType": "bool",
1064
+ "name": "",
1065
+ "type": "bool"
1066
+ }
1067
+ ],
1068
+ "stateMutability": "view",
1069
+ "type": "function"
1070
+ },
1071
+ {
1072
+ "inputs": [],
1073
+ "name": "unlock",
1074
+ "outputs": [],
1075
+ "stateMutability": "nonpayable",
1076
+ "type": "function"
1077
+ },
1078
+ {
1079
+ "inputs": [
1080
+ {
1081
+ "internalType": "Amount",
1082
+ "name": "amount",
1083
+ "type": "uint96"
1084
+ }
1085
+ ],
1086
+ "name": "withdrawFees",
1087
+ "outputs": [
1088
+ {
1089
+ "internalType": "Amount",
1090
+ "name": "withdrawnAmount",
1091
+ "type": "uint96"
1092
+ }
1093
+ ],
1094
+ "stateMutability": "nonpayable",
1095
+ "type": "function"
1096
+ }
1097
+ ],
1098
+ "bytecode": "0x608060405234801561000f575f80fd5b5060405161426b38038061426b83398101604081905261002e91610b0a565b610066858585856040518060400160405280600c81526020016b53696d706c654f7261636c6560a01b8152508661007060201b60201c565b5050505050610d32565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03165f811580156100b95750825b90505f826001600160401b031660011480156100d45750303b155b9050811580156100e2575080155b156101005760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561012e57845460ff60401b1916680100000000000000001785555b61013c8b8b8b8b8b8b61018f565b831561018257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b6101976101d1565b6101c986868686868660405180602001604052805f81525060405180602001604052805f81525061022160201b60201c565b505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661021f57604051631afcd79f60e31b815260040160405180910390fd5b565b6102296101d1565b61023d88888686600d8b60018c8a8a6102d0565b7faab7c0ea03d290e56d6c060e0733d3ebcbe647f7694616a2ec52738a64b2f90061026d600d61057d565b61057d565b6001820180546001600160a01b0319166001600160a01b039290921691909117905561029a610268600b90565b81546001600160a01b0319166001600160a01b03919091161781556102c563c0d4275760e01b610698565b505050505050505050565b6102d86101d1565b5f7fffe3d4462bded26a47154f4b8f6db494d2f772496965791d25bd456e342b7f0060405163bf8e179760e01b81526001600160601b038c1660048201529091506001600160a01b038c169063bf8e179790602401602060405180830381865afa158015610348573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061036c9190610b86565b81546001600160a01b0319166001600160a01b039190911690811782556040516301ffc9a760e01b8152632b1cb34b60e11b60048201526301ffc9a790602401602060405180830381865afa1580156103c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103eb9190610ba1565b61041857604051637db5183160e11b81526001600160601b038b1660048201526024015b60405180910390fd5b80546040805163bf7e214f60e01b81529051610492926001600160a01b03169163bf7e214f9160048083019260209291908290030181865afa158015610460573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104849190610b86565b8c8c8c8c8c8b8b8b8b6106c4565b8054604080516302cd307160e01b815290516001600160a01b03909216916302cd3071916004808201926020929091908290030181865afa1580156104d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104fd9190610b86565b6001820180546001600160a01b03199081166001600160a01b039384161790915560028301805490911691881691909117905561053b610268600b90565b6003820180546001600160a01b0319166001600160a01b039290921691909117905561056d634a531f3360e01b610698565b6101826376c9b41160e11b610698565b5f807fffe3d4462bded26a47154f4b8f6db494d2f772496965791d25bd456e342b7f005460408051633379d27d60e21b815290516001600160a01b039092169163cde749f4916004808201926020929091908290030181865afa1580156105e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061060a9190610bc0565b905061061e6001546001600160a01b031690565b60405163d39e604360e01b815260ff8086166004830152831660248201526001600160a01b03919091169063d39e604390604401602060405180830381865afa15801561066d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106919190610b86565b9392505050565b6106a06101d1565b6001600160e01b0319165f908152602081905260409020805460ff19166001179055565b6106cc6101d1565b6106da8989878787876107c9565b6106e38a61087b565b6001600160a01b03861661070a576040516327eab2e360e11b815260040160405180910390fd5b86515f0361072b5760405163591eebf360e11b815260040160405180910390fd5b7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f00806107578982610c78565b506001810180546001600160a01b0319166001600160a01b0389161790556002810180546001600160a81b0319163060ff60a01b191617600160a01b87151502179055600381016107a88382610c78565b506107b9634a531f3360e01b610698565b610182632986755f60e11b610698565b6107d16101d1565b6107db828761088f565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166001600160681b0319909116176c0100000000000000000000000060ff8716021760ff60681b19166d0100000000000000000000000000851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3016108718382610c78565b5050505050505050565b6108836101d1565b61088c81610921565b50565b6108976101d1565b6108a081610932565b6108a8610a3e565b6001600160a01b0382166108cf5760405163f17ef42d60e01b815260040160405180910390fd5b507f07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f0080546001600160601b03166c010000000000000000000000006001600160a01b0390931692909202919091179055565b6109296101d1565b61088c81610a83565b61093a6101d1565b806001600160a01b03163b5f0361096f5760405163fdeac91f60e01b81526001600160a01b038216600482015260240161040f565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152634871d8b760e11b60048201526301ffc9a790602401602060405180830381865afa9250505080156109e9575060408051601f3d908101601f191682019092526109e691810190610ba1565b60015b610a115760405163fdeac91f60e01b81526001600160a01b038216600482015260240161040f565b80610a3a5760405163fdeac91f60e01b81526001600160a01b038316600482015260240161040f565b5050565b610a466101d1565b6301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b7ff3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a0080546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b6001600160a01b038116811461088c575f80fd5b5f805f805f60a08688031215610b1e575f80fd5b8551610b2981610af6565b60208701519095506001600160601b0381168114610b45575f80fd5b6040870151909450610b5681610af6565b6060870151909350610b6781610af6565b6080870151909250610b7881610af6565b809150509295509295909350565b5f60208284031215610b96575f80fd5b815161069181610af6565b5f60208284031215610bb1575f80fd5b81518015158114610691575f80fd5b5f60208284031215610bd0575f80fd5b815160ff81168114610691575f80fd5b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680610c0857607f821691505b602082108103610c2657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610c7357805f5260205f20601f840160051c81016020851015610c515750805b601f840160051c820191505b81811015610c70575f8155600101610c5d565b50505b505050565b81516001600160401b03811115610c9157610c91610be0565b610ca581610c9f8454610bf4565b84610c2c565b6020601f821160018114610cd7575f8315610cc05750848201515b5f19600385901b1c1916600184901b178455610c70565b5f84815260208120601f198516915b82811015610d065787850151825560209485019460019092019101610ce6565b5084821015610d2357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b61352c80610d3f5f395ff3fe608060405234801561000f575f80fd5b5060043610610249575f3560e01c8063644c45e011610140578063b423086c116100bf578063de7b5d1411610084578063de7b5d141461054f578063deaa59df1461056c578063e7f7fb861461057f578063ea15869f14610592578063f83d08ba146105b9578063f86664d2146105c1575f80fd5b8063b423086c14610506578063bae99c991461050e578063bb1e0e5914610521578063bf7e214f14610534578063cf4ee77a1461053c575f80fd5b80638fb36037116101055780638fb360371461047857806390edbd3514610499578063a69df4b5146104ae578063a8b81cd8146104b6578063ada9652e146104f2575f80fd5b8063644c45e01461040a5780636bd1c0eb146104275780637a9e5e4b1461045757806387ef9ba01461046a578063893d20e814610470575f80fd5b80631eff4b22116101cc57806343d752d31161019157806343d752d3146103af5780634bd100e4146103b75780634c125e79146103de5780635741e5e9146103f15780635ab1bd53146103f9575f80fd5b80631eff4b221461034357806321df0da71461037857806322366844146103805780632eb3e6f414610388578063419197fe1461039c575f80fd5b8063132996041161021257806313299604146102eb578063138461e01461030b57806317d7de7c146103135780631aa3a008146103285780631c6b219014610330575f80fd5b806251884a1461024d57806301ffc9a71461027257806306caeae4146102ae5780630b29e28e146102c35780630fec111c146102d6575b5f80fd5b6102556105d4565b6040516001600160601b0390911681526020015b60405180910390f35b61029e6102803660046128a5565b6001600160e01b0319165f9081526020819052604090205460ff1690565b6040519015158152602001610269565b6102c16102bc366004612a15565b6105e6565b005b6102c16102d1366004612a95565b610676565b6102de610696565b6040516102699190612b62565b6102f3610854565b6040516001600160a01b039091168152602001610269565b610255610866565b61031b610875565b6040516102699190612bf6565b6102c1610885565b61025561033e366004612c08565b610940565b61036a7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610269565b6102f36109bd565b61029e6109cf565b61036a5f805160206134d783398151915281565b6102c16103aa366004612c37565b610ac5565b6102f3610c85565b61036a7faab7c0ea03d290e56d6c060e0733d3ebcbe647f7694616a2ec52738a64b2f90081565b6102c16103ec366004612c6e565b610c97565b61029e610cac565b6001546001600160a01b03166102f3565b5f80516020613497833981519152546001600160601b0316610255565b7fffe3d4462bded26a47154f4b8f6db494d2f772496965791d25bd456e342b7f02546001600160a01b03166102f3565b6102c1610465366004612c87565b610d60565b5f61029e565b6102f3610de6565b610480610f17565b6040516001600160e01b03199091168152602001610269565b6104a1610f4c565b6040516102699190612ca2565b6102c1610f71565b61031b6040518060400160405280601b81526020017f6f7261636c6520636f6e7374616e742073796e6320616e73776572000000000081525081565b61036a5f8051602061349783398151915281565b6104a1610ff7565b6102c161051c366004612c08565b611007565b6102c161052f366004612d35565b611053565b6102f36110f0565b6102c161054a366004612d5f565b61110b565b5f805160206134d7833981519152546001600160a01b03166102f3565b6102c161057a366004612c87565b61111e565b6102c161058d366004612dbc565b611394565b61036a7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f0081565b6102c1611431565b6102c16105cf366004612dfa565b6114a5565b5f6105dd610f4c565b60200151905090565b5f604051806060016040528084151581526020018364ffffffffff1681526020018581525060405160200161061b9190612e8f565b604051602081830303815290604052905061063685826115bb565b7f925e3838f1b49d365407bb3580a651fc78742e3bd3eb1063171421beb4a6b4958585604051610667929190612ec6565b60405180910390a15050505050565b610682335b5f3661160c565b61068f858585858561170a565b5050505050565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091525f7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610746573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076a9190612ef2565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a0016107b2610de6565b6001600160a01b031681526020018260010180546107cf90612f0d565b80601f01602080910402602001604051908101604052809291908181526020018280546107fb90612f0d565b80156108465780601f1061081d57610100808354040283529160200191610846565b820191905f5260205f20905b81548152906001019060200180831161082957829003601f168201915b505050505081525091505090565b5f61085d610f4c565b60800151905090565b5f61087030611775565b905090565b606061087f610f4c565b51919050565b61088d610de6565b6001600160a01b0316336001600160a01b0316146108c55760405163086391f760e31b81523360048201526024015b60405180910390fd5b7faab7c0ea03d290e56d6c060e0733d3ebcbe647f7694616a2ec52738a64b2f9005460408051630339d25960e41b815290516001600160a01b039092169163339d2590916004808201925f9290919082900301818387803b158015610928575f80fd5b505af115801561093a573d5f803e3d5ffd5b50505050565b5f610949610de6565b6001600160a01b0316336001600160a01b03161461097c5760405163086391f760e31b81523360048201526024016108bc565b6109853361067b565b60405163ca49882f60e01b815260206004820152600c60248201526b77697468647261774665657360a01b60448201526064016108bc565b5f6109c6610f4c565b60400151905090565b5f6109e26001546001600160a01b031690565b604051632f2a35f760e11b81523060048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015610a26573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a4a9190612ef2565b6040516330b8415f60e01b81526001600160601b03909116600482015273__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015610aa1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108709190612f50565b610acd610de6565b6001600160a01b0316336001600160a01b031614610b005760405163086391f760e31b81523360048201526024016108bc565b30610b09610854565b6001600160a01b031614610b305760405163b6d7537f60e01b815260040160405180910390fd5b7ff1220014fdb8b69aee438722b1fe13ee4a807811a472467cee162f7b866e704e610b59610c85565b604080516001600160a01b0390921682526001600160601b03841660208301520160405180910390a1816001600160a01b031663095ea7b3610b99610c85565b60405163046e44af60e11b81526001600160601b038516600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906308dc895e90602401602060405180830381865af4158015610bef573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c139190612f6b565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015b6020604051808303815f875af1158015610c5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c809190612f50565b505050565b5f610c8e610f4c565b60600151905090565b610ca03361067b565b610ca98161196e565b50565b5f610cb56109cf565b15610d30576001546001600160a01b03166040516308b09a5f60e41b81523060048201526001600160a01b039190911690638b09a5f0906024015f60405180830381865afa158015610d09573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c8e9190810190612ff5565b507fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f0254600160a01b900460ff1690565b33610d696110f0565b6001600160a01b0316816001600160a01b031614610da45760405162d1953b60e31b81526001600160a01b03821660048201526024016108bc565b816001600160a01b03163b5f03610dd9576040516361798f2f60e11b81526001600160a01b03831660048201526024016108bc565b610de2826119ad565b5050565b5f805f8051602061349783398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015610e52573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e769190612f50565b15610f01576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015610ed7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efb91906130c5565b91505090565b54600160601b90046001600160a01b0316919050565b5f805160206134b783398151915280545f9190600160a01b900460ff16610f3e575f610efb565b638fb3603760e01b91505090565b610f5461284f565b610f5c6109cf565b15610f6957610870611a0e565b610870610ff7565b610f79610de6565b6001600160a01b0316336001600160a01b031614610fac5760405163086391f760e31b81523360048201526024016108bc565b610fb6600a611bf4565b60405163581e954760e11b81525f60048201526001600160a01b03919091169063b03d2a8e906024015b5f604051808303815f87803b158015610928575f80fd5b610fff61284f565b610870611a0e565b61100f610de6565b6001600160a01b0316336001600160a01b0316146110425760405163086391f760e31b81523360048201526024016108bc565b610ca961104d6109bd565b82610ac5565b6001546001600160a01b03166001600160a01b031663120726c36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561109a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110be91906130c5565b6001600160a01b0316336001600160a01b031614610de25760405162f0630960e01b81523360048201526024016108bc565b5f805160206134b7833981519152546001600160a01b031690565b6111143361067b565b610de282826115bb565b611126610de6565b6001600160a01b0316336001600160a01b0316146111595760405163086391f760e31b81523360048201526024016108bc565b5f611162610854565b90505f61116d6109bd565b6040516370a0823160e01b81526001600160a01b03848116600483015291909116906370a0823190602401602060405180830381865afa1580156111b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d79190612f6b565b90506111e283611cfc565b8015610c8057604080516001600160a01b038085168252851660208201529081018290527f8f925ed35e36754081a3353f30c5686c405280f94d1cfe322ee5707833d898679060600160405180910390a1306001600160a01b038316036113435761124b610c85565b6001600160a01b03166354f0d84c838573__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd96866040518263ffffffff1660e01b815260040161129491815260200190565b602060405180830381865af41580156112af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112d39190612ef2565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526001600160601b031660448201526064015f604051808303815f87803b158015611328575f80fd5b505af115801561133a573d5f803e3d5ffd5b50505050505050565b61134b610c85565b6001600160a01b031663c7d63d57838573__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd96866040518263ffffffff1660e01b815260040161129491815260200190565b6001546001600160a01b03166001600160a01b031663120726c36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ff91906130c5565b6001600160a01b0316336001600160a01b031614610c805760405162f0630960e01b81523360048201526024016108bc565b611439610de6565b6001600160a01b0316336001600160a01b03161461146c5760405163086391f760e31b81523360048201526024016108bc565b611476600a611bf4565b60405163581e954760e11b8152600160048201526001600160a01b03919091169063b03d2a8e90602401610fe0565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156114e95750825b90505f826001600160401b031660011480156115045750303b155b905081158015611512575080155b156115305760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561155a57845460ff60401b1916600160401b1785555b6115688b8b8b8b8b8b611d95565b83156115ae57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b7faab7c0ea03d290e56d6c060e0733d3ebcbe647f7694616a2ec52738a64b2f901546040516367a773bd60e11b81526001600160a01b039091169063cf4ee77a90610c409085908590600401612ec6565b5f805160206134b78339815191525f806116446116276110f0565b873061163660045f8a8c6130e0565b61163f91613107565b611dc9565b91509150816117025763ffffffff8116156116df57825460ff60a01b1916600160a01b1783556116726110f0565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016116a19392919061313f565b5f604051808303815f87803b1580156116b8575f80fd5b505af11580156116ca573d5f803e3d5ffd5b5050845460ff60a01b19168555506117029050565b60405162d1953b60e31b81526001600160a01b03871660048201526024016108bc565b505050505050565b5f6117178385018561317e565b80519091501561172a5761172a86611ed1565b805160208201516040517f79ebe5a74e4370f670722a495368b194369cfc7be8997d68517841c3c307a3e892611765928a928a929190613218565b60405180910390a1505050505050565b5f805f8051602061349783398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af41580156117e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118059190612f50565b156118315780546040516301ab8b6760e21b81526001600160601b0390911660048201526024016108bc565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa158015611883573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118a79190612f50565b6118cf5760405163b9304b0d60e01b81526001600160a01b03841660048201526024016108bc565b6001546001600160a01b0316604051632f2a35f760e11b81526001600160a01b0385811660048301529190911690635e546bee90602401602060405180830381865afa158015611921573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119459190612ef2565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b6040516001600160401b03821681527fb63fd0f73fdf39db6db268f3ff7ee59fdad31d592b7faff69608adc0312225ab9060200160405180910390a150565b5f805160206134b783398151915280546001600160a01b0319166001600160a01b03831690811782556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad906020015b60405180910390a15050565b611a1661284f565b5f611a296001546001600160a01b031690565b604051632f2a35f760e11b81523060048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015611a6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a919190612ef2565b6040516330b8415f60e01b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015611aea573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b0e9190612f50565b15611bec577fffe3d4462bded26a47154f4b8f6db494d2f772496965791d25bd456e342b7f01546001600160a01b03166001600160a01b031663f0ea17c3611b6a5f80516020613497833981519152546001600160601b031690565b6040516001600160e01b031960e084901b1681526001600160601b0390911660048201526024015f60405180830381865afa158015611bab573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611bd2919081019061325a565b60808101519092506001600160a01b031615611bec575090565b610efb611f99565b5f805f805160206134d78339815191525460408051633379d27d60e21b815290516001600160a01b039092169163cde749f4916004808201926020929091908290030181865afa158015611c4a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c6e9190613332565b9050611c826001546001600160a01b031690565b60405163d39e604360e01b815260ff8086166004830152831660248201526001600160a01b03919091169063d39e604390604401602060405180830381865afa158015611cd1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cf591906130c5565b9392505050565b611d04610de6565b6001600160a01b0316336001600160a01b031614611d375760405163086391f760e31b81523360048201526024016108bc565b611d41600b611bf4565b60405163deaa59df60e01b81526001600160a01b038381166004830152919091169063deaa59df906024015f604051808303815f87803b158015611d83575f80fd5b505af115801561068f573d5f803e3d5ffd5b611d9d612110565b61170286868686868660405180602001604052805f81525060405180602001604052805f81525061215b565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b17905251611e37919061334d565b5f60405180830381855afa9150503d805f8114611e6f576040519150601f19603f3d011682016040523d82523d5f602084013e611e74565b606091505b50915091508115611ec6576040815110611ea65780806020019051810190611e9c9190613363565b9094509250611ec6565b6020815110611ec65780806020019051810190611ec39190612f50565b93505b505094509492505050565b5f6040518060400160405280601b81526020017f6f7261636c6520636f6e7374616e742073796e6320616e737765720000000000815250604051602001611f189190612bf6565b6040516020818303038152906040529050611f3382826115bb565b7f0a858417ad6c170851e15bdb7f5fef061814ba176a976d7468e9e97588608fbc826040518060400160405280601b81526020017f6f7261636c6520636f6e7374616e742073796e6320616e737765720000000000815250604051611a02929190612ec6565b611fa161284f565b5f7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f0090506040518060c00160405280825f018054611fde90612f0d565b80601f016020809104026020016040519081016040528092919081815260200182805461200a90612f0d565b80156120555780601f1061202c57610100808354040283529160200191612055565b820191905f5260205f20905b81548152906001019060200180831161203857829003601f168201915b5050505050815260200173__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156120a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120ca9190612ef2565b6001600160601b0316815260018301546001600160a01b0390811660208301525f604083015260028401541660608201526003830180546080909201916107cf90612f0d565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661215957604051631afcd79f60e31b815260040160405180910390fd5b565b612163612110565b61217788888686600d8b60018c8a8a612204565b7faab7c0ea03d290e56d6c060e0733d3ebcbe647f7694616a2ec52738a64b2f9006121a2600d611bf4565b6001820180546001600160a01b0319166001600160a01b03929092169190911790556121ce600b611bf4565b81546001600160a01b0319166001600160a01b03919091161781556121f963c0d4275760e01b612494565b505050505050505050565b61220c612110565b5f5f805160206134d783398151915260405163bf8e179760e01b81526001600160601b038c1660048201529091506001600160a01b038c169063bf8e179790602401602060405180830381865afa158015612269573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061228d91906130c5565b81546001600160a01b0319166001600160a01b039190911690811782556040516301ffc9a760e01b8152632b1cb34b60e11b60048201526301ffc9a790602401602060405180830381865afa1580156122e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061230c9190612f50565b61233457604051637db5183160e11b81526001600160601b038b1660048201526024016108bc565b80546040805163bf7e214f60e01b815290516123ae926001600160a01b03169163bf7e214f9160048083019260209291908290030181865afa15801561237c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123a091906130c5565b8c8c8c8c8c8b8b8b8b6124c0565b8054604080516302cd307160e01b815290516001600160a01b03909216916302cd3071916004808201926020929091908290030181865afa1580156123f5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061241991906130c5565b6001820180546001600160a01b03199081166001600160a01b0393841617909155600283018054909116918816919091179055612456600b611bf4565b6003820180546001600160a01b0319166001600160a01b0392909216919091179055612488634a531f3360e01b612494565b6115ae6376c9b41160e11b5b61249c612110565b6001600160e01b0319165f908152602081905260409020805460ff19166001179055565b6124c8612110565b6124d68989878787876125c5565b6124df8a61266a565b6001600160a01b038616612506576040516327eab2e360e11b815260040160405180910390fd5b86515f036125275760405163591eebf360e11b815260040160405180910390fd5b7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f008061255389826133dc565b506001810180546001600160a01b0319166001600160a01b0389161790556002810180546001600160a81b0319163060ff60a01b191617600160a01b87151502179055600381016125a483826133dc565b506125b5634a531f3360e01b612494565b6115ae632986755f60e11b612494565b6125cd612110565b6125d7828761267b565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30161266083826133dc565b5050505050505050565b612672612110565b610ca9816126f1565b612683612110565b61268c81612702565b61269461280a565b6001600160a01b0382166126bb5760405163f17ef42d60e01b815260040160405180910390fd5b505f8051602061349783398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b6126f9612110565b610ca9816119ad565b61270a612110565b806001600160a01b03163b5f0361273f5760405163fdeac91f60e01b81526001600160a01b03821660048201526024016108bc565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152634871d8b760e11b60048201526301ffc9a790602401602060405180830381865afa9250505080156127b9575060408051601f3d908101601f191682019092526127b691810190612f50565b60015b6127e15760405163fdeac91f60e01b81526001600160a01b03821660048201526024016108bc565b80610de25760405163fdeac91f60e01b81526001600160a01b03831660048201526024016108bc565b612812612110565b6301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b6040518060c00160405280606081526020015f6001600160601b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b03168152602001606081525090565b5f602082840312156128b5575f80fd5b81356001600160e01b031981168114611cf5575f80fd5b80356001600160401b03811681146128e2575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b038111828210171561291d5761291d6128e7565b60405290565b60405160c081016001600160401b038111828210171561291d5761291d6128e7565b604051601f8201601f191681016001600160401b038111828210171561296d5761296d6128e7565b604052919050565b5f6001600160401b0382111561298d5761298d6128e7565b50601f01601f191660200190565b5f6129ad6129a884612975565b612945565b90508281528383830111156129c0575f80fd5b828260208301375f602084830101529392505050565b5f82601f8301126129e5575f80fd5b611cf58383356020850161299b565b8015158114610ca9575f80fd5b803564ffffffffff811681146128e2575f80fd5b5f805f8060808587031215612a28575f80fd5b612a31856128cc565b935060208501356001600160401b03811115612a4b575f80fd5b612a57878288016129d6565b9350506040850135612a68816129f4565b9150612a7660608601612a01565b905092959194509250565b6001600160601b0381168114610ca9575f80fd5b5f805f805f60808688031215612aa9575f80fd5b612ab2866128cc565b94506020860135612ac281612a81565b935060408601356001600160401b03811115612adc575f80fd5b8601601f81018813612aec575f80fd5b80356001600160401b03811115612b01575f80fd5b886020828401011115612b12575f80fd5b60209190910193509150612b2860608701612a01565b90509295509295909350565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081526001600160601b0382511660208201526001600160601b03602083015116604082015260ff60408301511660608201525f6060830151612baa608084018215159052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e080840152612bee610100840182612b34565b949350505050565b602081525f611cf56020830184612b34565b5f60208284031215612c18575f80fd5b8135611cf581612a81565b6001600160a01b0381168114610ca9575f80fd5b5f8060408385031215612c48575f80fd5b8235612c5381612c23565b91506020830135612c6381612a81565b809150509250929050565b5f60208284031215612c7e575f80fd5b611cf5826128cc565b5f60208284031215612c97575f80fd5b8135611cf581612c23565b602081525f825160c06020840152612cbd60e0840182612b34565b90506001600160601b03602085015116604084015260018060a01b03604085015116606084015260018060a01b0360608501511660808401526080840151612d1060a08501826001600160a01b03169052565b5060a0840151838203601f190160c0850152612d2c8282612b34565b95945050505050565b5f8060408385031215612d46575f80fd5b8235612d5181612c23565b946020939093013593505050565b5f8060408385031215612d70575f80fd5b612d79836128cc565b915060208301356001600160401b03811115612d93575f80fd5b8301601f81018513612da3575f80fd5b612db28582356020840161299b565b9150509250929050565b5f805f60608486031215612dce575f80fd5b8335612dd981612c23565b92506020840135612de981612c23565b929592945050506040919091013590565b5f805f805f8060c08789031215612e0f575f80fd5b8635612e1a81612c23565b95506020870135612e2a81612a81565b94506040870135612e3a81612c23565b93506060870135612e4a81612c23565b925060808701356001600160401b03811115612e64575f80fd5b612e7089828a016129d6565b92505060a0870135612e8181612c23565b809150509295509295509295565b6020815281511515602082015264ffffffffff60208301511660408201525f6040830151606080840152612bee6080840182612b34565b6001600160401b0383168152604060208201525f612bee6040830184612b34565b80516128e281612a81565b5f60208284031215612f02575f80fd5b8151611cf581612a81565b600181811c90821680612f2157607f821691505b602082108103612f3f57634e487b7160e01b5f52602260045260245ffd5b50919050565b80516128e2816129f4565b5f60208284031215612f60575f80fd5b8151611cf5816129f4565b5f60208284031215612f7b575f80fd5b5051919050565b60ff81168114610ca9575f80fd5b80516128e281612f82565b80516128e281612c23565b5f82601f830112612fb5575f80fd5b8151602083015f612fc86129a884612975565b9050828152858383011115612fdb575f80fd5b8282602083015e5f92810160200192909252509392505050565b5f60208284031215613005575f80fd5b81516001600160401b0381111561301a575f80fd5b820160e0818503121561302b575f80fd5b6130336128fb565b61303c82612ee7565b815261304a60208301612ee7565b602082015261305b60408301612f90565b604082015261306c60608301612f45565b606082015261307d60808301612f9b565b608082015261308e60a08301612f9b565b60a082015260c08201516001600160401b038111156130ab575f80fd5b6130b786828501612fa6565b60c083015250949350505050565b5f602082840312156130d5575f80fd5b8151611cf581612c23565b5f80858511156130ee575f80fd5b838611156130fa575f80fd5b5050820193919092039150565b80356001600160e01b03198116906004841015613138576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f6020828403121561318e575f80fd5b81356001600160401b038111156131a3575f80fd5b8201604081850312156131b4575f80fd5b604080519081016001600160401b03811182821017156131d6576131d66128e7565b60405281356131e4816129f4565b815260208201356001600160401b038111156131fe575f80fd5b61320a868285016129d6565b602083015250949350505050565b6001600160401b03851681526001600160601b03841660208201528215156040820152608060608201525f6132506080830184612b34565b9695505050505050565b5f6020828403121561326a575f80fd5b81516001600160401b0381111561327f575f80fd5b820160c08185031215613290575f80fd5b613298612923565b81516001600160401b038111156132ad575f80fd5b6132b986828501612fa6565b8252506132c860208301612ee7565b60208201526132d960408301612f9b565b60408201526132ea60608301612f9b565b60608201526132fb60808301612f9b565b608082015260a08201516001600160401b03811115613318575f80fd5b61332486828501612fa6565b60a083015250949350505050565b5f60208284031215613342575f80fd5b8151611cf581612f82565b5f82518060208501845e5f920191825250919050565b5f8060408385031215613374575f80fd5b825161337f816129f4565b602084015190925063ffffffff81168114612c63575f80fd5b601f821115610c8057805f5260205f20601f840160051c810160208510156133bd5750805b601f840160051c820191505b8181101561068f575f81556001016133c9565b81516001600160401b038111156133f5576133f56128e7565b613409816134038454612f0d565b84613398565b6020601f82116001811461343b575f83156134245750848201515b5f19600385901b1c1916600184901b17845561068f565b5f84815260208120601f198516915b8281101561346a578785015182556020948501946001909201910161344a565b508482101561348757868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00ffe3d4462bded26a47154f4b8f6db494d2f772496965791d25bd456e342b7f00a2646970667358221220ae770a5f71dd5d8a457de09a0627d900f598653612e7a22ca77b4aba6011fa3a64736f6c634300081a0033",
1099
+ "deployedBytecode": "0x608060405234801561000f575f80fd5b5060043610610249575f3560e01c8063644c45e011610140578063b423086c116100bf578063de7b5d1411610084578063de7b5d141461054f578063deaa59df1461056c578063e7f7fb861461057f578063ea15869f14610592578063f83d08ba146105b9578063f86664d2146105c1575f80fd5b8063b423086c14610506578063bae99c991461050e578063bb1e0e5914610521578063bf7e214f14610534578063cf4ee77a1461053c575f80fd5b80638fb36037116101055780638fb360371461047857806390edbd3514610499578063a69df4b5146104ae578063a8b81cd8146104b6578063ada9652e146104f2575f80fd5b8063644c45e01461040a5780636bd1c0eb146104275780637a9e5e4b1461045757806387ef9ba01461046a578063893d20e814610470575f80fd5b80631eff4b22116101cc57806343d752d31161019157806343d752d3146103af5780634bd100e4146103b75780634c125e79146103de5780635741e5e9146103f15780635ab1bd53146103f9575f80fd5b80631eff4b221461034357806321df0da71461037857806322366844146103805780632eb3e6f414610388578063419197fe1461039c575f80fd5b8063132996041161021257806313299604146102eb578063138461e01461030b57806317d7de7c146103135780631aa3a008146103285780631c6b219014610330575f80fd5b806251884a1461024d57806301ffc9a71461027257806306caeae4146102ae5780630b29e28e146102c35780630fec111c146102d6575b5f80fd5b6102556105d4565b6040516001600160601b0390911681526020015b60405180910390f35b61029e6102803660046128a5565b6001600160e01b0319165f9081526020819052604090205460ff1690565b6040519015158152602001610269565b6102c16102bc366004612a15565b6105e6565b005b6102c16102d1366004612a95565b610676565b6102de610696565b6040516102699190612b62565b6102f3610854565b6040516001600160a01b039091168152602001610269565b610255610866565b61031b610875565b6040516102699190612bf6565b6102c1610885565b61025561033e366004612c08565b610940565b61036a7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610269565b6102f36109bd565b61029e6109cf565b61036a5f805160206134d783398151915281565b6102c16103aa366004612c37565b610ac5565b6102f3610c85565b61036a7faab7c0ea03d290e56d6c060e0733d3ebcbe647f7694616a2ec52738a64b2f90081565b6102c16103ec366004612c6e565b610c97565b61029e610cac565b6001546001600160a01b03166102f3565b5f80516020613497833981519152546001600160601b0316610255565b7fffe3d4462bded26a47154f4b8f6db494d2f772496965791d25bd456e342b7f02546001600160a01b03166102f3565b6102c1610465366004612c87565b610d60565b5f61029e565b6102f3610de6565b610480610f17565b6040516001600160e01b03199091168152602001610269565b6104a1610f4c565b6040516102699190612ca2565b6102c1610f71565b61031b6040518060400160405280601b81526020017f6f7261636c6520636f6e7374616e742073796e6320616e73776572000000000081525081565b61036a5f8051602061349783398151915281565b6104a1610ff7565b6102c161051c366004612c08565b611007565b6102c161052f366004612d35565b611053565b6102f36110f0565b6102c161054a366004612d5f565b61110b565b5f805160206134d7833981519152546001600160a01b03166102f3565b6102c161057a366004612c87565b61111e565b6102c161058d366004612dbc565b611394565b61036a7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f0081565b6102c1611431565b6102c16105cf366004612dfa565b6114a5565b5f6105dd610f4c565b60200151905090565b5f604051806060016040528084151581526020018364ffffffffff1681526020018581525060405160200161061b9190612e8f565b604051602081830303815290604052905061063685826115bb565b7f925e3838f1b49d365407bb3580a651fc78742e3bd3eb1063171421beb4a6b4958585604051610667929190612ec6565b60405180910390a15050505050565b610682335b5f3661160c565b61068f858585858561170a565b5050505050565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091525f7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610746573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076a9190612ef2565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a0016107b2610de6565b6001600160a01b031681526020018260010180546107cf90612f0d565b80601f01602080910402602001604051908101604052809291908181526020018280546107fb90612f0d565b80156108465780601f1061081d57610100808354040283529160200191610846565b820191905f5260205f20905b81548152906001019060200180831161082957829003601f168201915b505050505081525091505090565b5f61085d610f4c565b60800151905090565b5f61087030611775565b905090565b606061087f610f4c565b51919050565b61088d610de6565b6001600160a01b0316336001600160a01b0316146108c55760405163086391f760e31b81523360048201526024015b60405180910390fd5b7faab7c0ea03d290e56d6c060e0733d3ebcbe647f7694616a2ec52738a64b2f9005460408051630339d25960e41b815290516001600160a01b039092169163339d2590916004808201925f9290919082900301818387803b158015610928575f80fd5b505af115801561093a573d5f803e3d5ffd5b50505050565b5f610949610de6565b6001600160a01b0316336001600160a01b03161461097c5760405163086391f760e31b81523360048201526024016108bc565b6109853361067b565b60405163ca49882f60e01b815260206004820152600c60248201526b77697468647261774665657360a01b60448201526064016108bc565b5f6109c6610f4c565b60400151905090565b5f6109e26001546001600160a01b031690565b604051632f2a35f760e11b81523060048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015610a26573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a4a9190612ef2565b6040516330b8415f60e01b81526001600160601b03909116600482015273__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015610aa1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108709190612f50565b610acd610de6565b6001600160a01b0316336001600160a01b031614610b005760405163086391f760e31b81523360048201526024016108bc565b30610b09610854565b6001600160a01b031614610b305760405163b6d7537f60e01b815260040160405180910390fd5b7ff1220014fdb8b69aee438722b1fe13ee4a807811a472467cee162f7b866e704e610b59610c85565b604080516001600160a01b0390921682526001600160601b03841660208301520160405180910390a1816001600160a01b031663095ea7b3610b99610c85565b60405163046e44af60e11b81526001600160601b038516600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906308dc895e90602401602060405180830381865af4158015610bef573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c139190612f6b565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015b6020604051808303815f875af1158015610c5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c809190612f50565b505050565b5f610c8e610f4c565b60600151905090565b610ca03361067b565b610ca98161196e565b50565b5f610cb56109cf565b15610d30576001546001600160a01b03166040516308b09a5f60e41b81523060048201526001600160a01b039190911690638b09a5f0906024015f60405180830381865afa158015610d09573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c8e9190810190612ff5565b507fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f0254600160a01b900460ff1690565b33610d696110f0565b6001600160a01b0316816001600160a01b031614610da45760405162d1953b60e31b81526001600160a01b03821660048201526024016108bc565b816001600160a01b03163b5f03610dd9576040516361798f2f60e11b81526001600160a01b03831660048201526024016108bc565b610de2826119ad565b5050565b5f805f8051602061349783398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015610e52573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e769190612f50565b15610f01576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015610ed7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efb91906130c5565b91505090565b54600160601b90046001600160a01b0316919050565b5f805160206134b783398151915280545f9190600160a01b900460ff16610f3e575f610efb565b638fb3603760e01b91505090565b610f5461284f565b610f5c6109cf565b15610f6957610870611a0e565b610870610ff7565b610f79610de6565b6001600160a01b0316336001600160a01b031614610fac5760405163086391f760e31b81523360048201526024016108bc565b610fb6600a611bf4565b60405163581e954760e11b81525f60048201526001600160a01b03919091169063b03d2a8e906024015b5f604051808303815f87803b158015610928575f80fd5b610fff61284f565b610870611a0e565b61100f610de6565b6001600160a01b0316336001600160a01b0316146110425760405163086391f760e31b81523360048201526024016108bc565b610ca961104d6109bd565b82610ac5565b6001546001600160a01b03166001600160a01b031663120726c36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561109a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110be91906130c5565b6001600160a01b0316336001600160a01b031614610de25760405162f0630960e01b81523360048201526024016108bc565b5f805160206134b7833981519152546001600160a01b031690565b6111143361067b565b610de282826115bb565b611126610de6565b6001600160a01b0316336001600160a01b0316146111595760405163086391f760e31b81523360048201526024016108bc565b5f611162610854565b90505f61116d6109bd565b6040516370a0823160e01b81526001600160a01b03848116600483015291909116906370a0823190602401602060405180830381865afa1580156111b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d79190612f6b565b90506111e283611cfc565b8015610c8057604080516001600160a01b038085168252851660208201529081018290527f8f925ed35e36754081a3353f30c5686c405280f94d1cfe322ee5707833d898679060600160405180910390a1306001600160a01b038316036113435761124b610c85565b6001600160a01b03166354f0d84c838573__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd96866040518263ffffffff1660e01b815260040161129491815260200190565b602060405180830381865af41580156112af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112d39190612ef2565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526001600160601b031660448201526064015f604051808303815f87803b158015611328575f80fd5b505af115801561133a573d5f803e3d5ffd5b50505050505050565b61134b610c85565b6001600160a01b031663c7d63d57838573__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd96866040518263ffffffff1660e01b815260040161129491815260200190565b6001546001600160a01b03166001600160a01b031663120726c36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ff91906130c5565b6001600160a01b0316336001600160a01b031614610c805760405162f0630960e01b81523360048201526024016108bc565b611439610de6565b6001600160a01b0316336001600160a01b03161461146c5760405163086391f760e31b81523360048201526024016108bc565b611476600a611bf4565b60405163581e954760e11b8152600160048201526001600160a01b03919091169063b03d2a8e90602401610fe0565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156114e95750825b90505f826001600160401b031660011480156115045750303b155b905081158015611512575080155b156115305760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561155a57845460ff60401b1916600160401b1785555b6115688b8b8b8b8b8b611d95565b83156115ae57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b7faab7c0ea03d290e56d6c060e0733d3ebcbe647f7694616a2ec52738a64b2f901546040516367a773bd60e11b81526001600160a01b039091169063cf4ee77a90610c409085908590600401612ec6565b5f805160206134b78339815191525f806116446116276110f0565b873061163660045f8a8c6130e0565b61163f91613107565b611dc9565b91509150816117025763ffffffff8116156116df57825460ff60a01b1916600160a01b1783556116726110f0565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016116a19392919061313f565b5f604051808303815f87803b1580156116b8575f80fd5b505af11580156116ca573d5f803e3d5ffd5b5050845460ff60a01b19168555506117029050565b60405162d1953b60e31b81526001600160a01b03871660048201526024016108bc565b505050505050565b5f6117178385018561317e565b80519091501561172a5761172a86611ed1565b805160208201516040517f79ebe5a74e4370f670722a495368b194369cfc7be8997d68517841c3c307a3e892611765928a928a929190613218565b60405180910390a1505050505050565b5f805f8051602061349783398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af41580156117e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118059190612f50565b156118315780546040516301ab8b6760e21b81526001600160601b0390911660048201526024016108bc565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa158015611883573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118a79190612f50565b6118cf5760405163b9304b0d60e01b81526001600160a01b03841660048201526024016108bc565b6001546001600160a01b0316604051632f2a35f760e11b81526001600160a01b0385811660048301529190911690635e546bee90602401602060405180830381865afa158015611921573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119459190612ef2565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b6040516001600160401b03821681527fb63fd0f73fdf39db6db268f3ff7ee59fdad31d592b7faff69608adc0312225ab9060200160405180910390a150565b5f805160206134b783398151915280546001600160a01b0319166001600160a01b03831690811782556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad906020015b60405180910390a15050565b611a1661284f565b5f611a296001546001600160a01b031690565b604051632f2a35f760e11b81523060048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015611a6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a919190612ef2565b6040516330b8415f60e01b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015611aea573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b0e9190612f50565b15611bec577fffe3d4462bded26a47154f4b8f6db494d2f772496965791d25bd456e342b7f01546001600160a01b03166001600160a01b031663f0ea17c3611b6a5f80516020613497833981519152546001600160601b031690565b6040516001600160e01b031960e084901b1681526001600160601b0390911660048201526024015f60405180830381865afa158015611bab573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611bd2919081019061325a565b60808101519092506001600160a01b031615611bec575090565b610efb611f99565b5f805f805160206134d78339815191525460408051633379d27d60e21b815290516001600160a01b039092169163cde749f4916004808201926020929091908290030181865afa158015611c4a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c6e9190613332565b9050611c826001546001600160a01b031690565b60405163d39e604360e01b815260ff8086166004830152831660248201526001600160a01b03919091169063d39e604390604401602060405180830381865afa158015611cd1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cf591906130c5565b9392505050565b611d04610de6565b6001600160a01b0316336001600160a01b031614611d375760405163086391f760e31b81523360048201526024016108bc565b611d41600b611bf4565b60405163deaa59df60e01b81526001600160a01b038381166004830152919091169063deaa59df906024015f604051808303815f87803b158015611d83575f80fd5b505af115801561068f573d5f803e3d5ffd5b611d9d612110565b61170286868686868660405180602001604052805f81525060405180602001604052805f81525061215b565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b17905251611e37919061334d565b5f60405180830381855afa9150503d805f8114611e6f576040519150601f19603f3d011682016040523d82523d5f602084013e611e74565b606091505b50915091508115611ec6576040815110611ea65780806020019051810190611e9c9190613363565b9094509250611ec6565b6020815110611ec65780806020019051810190611ec39190612f50565b93505b505094509492505050565b5f6040518060400160405280601b81526020017f6f7261636c6520636f6e7374616e742073796e6320616e737765720000000000815250604051602001611f189190612bf6565b6040516020818303038152906040529050611f3382826115bb565b7f0a858417ad6c170851e15bdb7f5fef061814ba176a976d7468e9e97588608fbc826040518060400160405280601b81526020017f6f7261636c6520636f6e7374616e742073796e6320616e737765720000000000815250604051611a02929190612ec6565b611fa161284f565b5f7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f0090506040518060c00160405280825f018054611fde90612f0d565b80601f016020809104026020016040519081016040528092919081815260200182805461200a90612f0d565b80156120555780601f1061202c57610100808354040283529160200191612055565b820191905f5260205f20905b81548152906001019060200180831161203857829003601f168201915b5050505050815260200173__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156120a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120ca9190612ef2565b6001600160601b0316815260018301546001600160a01b0390811660208301525f604083015260028401541660608201526003830180546080909201916107cf90612f0d565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661215957604051631afcd79f60e31b815260040160405180910390fd5b565b612163612110565b61217788888686600d8b60018c8a8a612204565b7faab7c0ea03d290e56d6c060e0733d3ebcbe647f7694616a2ec52738a64b2f9006121a2600d611bf4565b6001820180546001600160a01b0319166001600160a01b03929092169190911790556121ce600b611bf4565b81546001600160a01b0319166001600160a01b03919091161781556121f963c0d4275760e01b612494565b505050505050505050565b61220c612110565b5f5f805160206134d783398151915260405163bf8e179760e01b81526001600160601b038c1660048201529091506001600160a01b038c169063bf8e179790602401602060405180830381865afa158015612269573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061228d91906130c5565b81546001600160a01b0319166001600160a01b039190911690811782556040516301ffc9a760e01b8152632b1cb34b60e11b60048201526301ffc9a790602401602060405180830381865afa1580156122e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061230c9190612f50565b61233457604051637db5183160e11b81526001600160601b038b1660048201526024016108bc565b80546040805163bf7e214f60e01b815290516123ae926001600160a01b03169163bf7e214f9160048083019260209291908290030181865afa15801561237c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123a091906130c5565b8c8c8c8c8c8b8b8b8b6124c0565b8054604080516302cd307160e01b815290516001600160a01b03909216916302cd3071916004808201926020929091908290030181865afa1580156123f5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061241991906130c5565b6001820180546001600160a01b03199081166001600160a01b0393841617909155600283018054909116918816919091179055612456600b611bf4565b6003820180546001600160a01b0319166001600160a01b0392909216919091179055612488634a531f3360e01b612494565b6115ae6376c9b41160e11b5b61249c612110565b6001600160e01b0319165f908152602081905260409020805460ff19166001179055565b6124c8612110565b6124d68989878787876125c5565b6124df8a61266a565b6001600160a01b038616612506576040516327eab2e360e11b815260040160405180910390fd5b86515f036125275760405163591eebf360e11b815260040160405180910390fd5b7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f008061255389826133dc565b506001810180546001600160a01b0319166001600160a01b0389161790556002810180546001600160a81b0319163060ff60a01b191617600160a01b87151502179055600381016125a483826133dc565b506125b5634a531f3360e01b612494565b6115ae632986755f60e11b612494565b6125cd612110565b6125d7828761267b565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30161266083826133dc565b5050505050505050565b612672612110565b610ca9816126f1565b612683612110565b61268c81612702565b61269461280a565b6001600160a01b0382166126bb5760405163f17ef42d60e01b815260040160405180910390fd5b505f8051602061349783398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b6126f9612110565b610ca9816119ad565b61270a612110565b806001600160a01b03163b5f0361273f5760405163fdeac91f60e01b81526001600160a01b03821660048201526024016108bc565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152634871d8b760e11b60048201526301ffc9a790602401602060405180830381865afa9250505080156127b9575060408051601f3d908101601f191682019092526127b691810190612f50565b60015b6127e15760405163fdeac91f60e01b81526001600160a01b03821660048201526024016108bc565b80610de25760405163fdeac91f60e01b81526001600160a01b03831660048201526024016108bc565b612812612110565b6301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b6040518060c00160405280606081526020015f6001600160601b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b03168152602001606081525090565b5f602082840312156128b5575f80fd5b81356001600160e01b031981168114611cf5575f80fd5b80356001600160401b03811681146128e2575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b038111828210171561291d5761291d6128e7565b60405290565b60405160c081016001600160401b038111828210171561291d5761291d6128e7565b604051601f8201601f191681016001600160401b038111828210171561296d5761296d6128e7565b604052919050565b5f6001600160401b0382111561298d5761298d6128e7565b50601f01601f191660200190565b5f6129ad6129a884612975565b612945565b90508281528383830111156129c0575f80fd5b828260208301375f602084830101529392505050565b5f82601f8301126129e5575f80fd5b611cf58383356020850161299b565b8015158114610ca9575f80fd5b803564ffffffffff811681146128e2575f80fd5b5f805f8060808587031215612a28575f80fd5b612a31856128cc565b935060208501356001600160401b03811115612a4b575f80fd5b612a57878288016129d6565b9350506040850135612a68816129f4565b9150612a7660608601612a01565b905092959194509250565b6001600160601b0381168114610ca9575f80fd5b5f805f805f60808688031215612aa9575f80fd5b612ab2866128cc565b94506020860135612ac281612a81565b935060408601356001600160401b03811115612adc575f80fd5b8601601f81018813612aec575f80fd5b80356001600160401b03811115612b01575f80fd5b886020828401011115612b12575f80fd5b60209190910193509150612b2860608701612a01565b90509295509295909350565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081526001600160601b0382511660208201526001600160601b03602083015116604082015260ff60408301511660608201525f6060830151612baa608084018215159052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e080840152612bee610100840182612b34565b949350505050565b602081525f611cf56020830184612b34565b5f60208284031215612c18575f80fd5b8135611cf581612a81565b6001600160a01b0381168114610ca9575f80fd5b5f8060408385031215612c48575f80fd5b8235612c5381612c23565b91506020830135612c6381612a81565b809150509250929050565b5f60208284031215612c7e575f80fd5b611cf5826128cc565b5f60208284031215612c97575f80fd5b8135611cf581612c23565b602081525f825160c06020840152612cbd60e0840182612b34565b90506001600160601b03602085015116604084015260018060a01b03604085015116606084015260018060a01b0360608501511660808401526080840151612d1060a08501826001600160a01b03169052565b5060a0840151838203601f190160c0850152612d2c8282612b34565b95945050505050565b5f8060408385031215612d46575f80fd5b8235612d5181612c23565b946020939093013593505050565b5f8060408385031215612d70575f80fd5b612d79836128cc565b915060208301356001600160401b03811115612d93575f80fd5b8301601f81018513612da3575f80fd5b612db28582356020840161299b565b9150509250929050565b5f805f60608486031215612dce575f80fd5b8335612dd981612c23565b92506020840135612de981612c23565b929592945050506040919091013590565b5f805f805f8060c08789031215612e0f575f80fd5b8635612e1a81612c23565b95506020870135612e2a81612a81565b94506040870135612e3a81612c23565b93506060870135612e4a81612c23565b925060808701356001600160401b03811115612e64575f80fd5b612e7089828a016129d6565b92505060a0870135612e8181612c23565b809150509295509295509295565b6020815281511515602082015264ffffffffff60208301511660408201525f6040830151606080840152612bee6080840182612b34565b6001600160401b0383168152604060208201525f612bee6040830184612b34565b80516128e281612a81565b5f60208284031215612f02575f80fd5b8151611cf581612a81565b600181811c90821680612f2157607f821691505b602082108103612f3f57634e487b7160e01b5f52602260045260245ffd5b50919050565b80516128e2816129f4565b5f60208284031215612f60575f80fd5b8151611cf5816129f4565b5f60208284031215612f7b575f80fd5b5051919050565b60ff81168114610ca9575f80fd5b80516128e281612f82565b80516128e281612c23565b5f82601f830112612fb5575f80fd5b8151602083015f612fc86129a884612975565b9050828152858383011115612fdb575f80fd5b8282602083015e5f92810160200192909252509392505050565b5f60208284031215613005575f80fd5b81516001600160401b0381111561301a575f80fd5b820160e0818503121561302b575f80fd5b6130336128fb565b61303c82612ee7565b815261304a60208301612ee7565b602082015261305b60408301612f90565b604082015261306c60608301612f45565b606082015261307d60808301612f9b565b608082015261308e60a08301612f9b565b60a082015260c08201516001600160401b038111156130ab575f80fd5b6130b786828501612fa6565b60c083015250949350505050565b5f602082840312156130d5575f80fd5b8151611cf581612c23565b5f80858511156130ee575f80fd5b838611156130fa575f80fd5b5050820193919092039150565b80356001600160e01b03198116906004841015613138576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f6020828403121561318e575f80fd5b81356001600160401b038111156131a3575f80fd5b8201604081850312156131b4575f80fd5b604080519081016001600160401b03811182821017156131d6576131d66128e7565b60405281356131e4816129f4565b815260208201356001600160401b038111156131fe575f80fd5b61320a868285016129d6565b602083015250949350505050565b6001600160401b03851681526001600160601b03841660208201528215156040820152608060608201525f6132506080830184612b34565b9695505050505050565b5f6020828403121561326a575f80fd5b81516001600160401b0381111561327f575f80fd5b820160c08185031215613290575f80fd5b613298612923565b81516001600160401b038111156132ad575f80fd5b6132b986828501612fa6565b8252506132c860208301612ee7565b60208201526132d960408301612f9b565b60408201526132ea60608301612f9b565b60608201526132fb60808301612f9b565b608082015260a08201516001600160401b03811115613318575f80fd5b61332486828501612fa6565b60a083015250949350505050565b5f60208284031215613342575f80fd5b8151611cf581612f82565b5f82518060208501845e5f920191825250919050565b5f8060408385031215613374575f80fd5b825161337f816129f4565b602084015190925063ffffffff81168114612c63575f80fd5b601f821115610c8057805f5260205f20601f840160051c810160208510156133bd5750805b601f840160051c820191505b8181101561068f575f81556001016133c9565b81516001600160401b038111156133f5576133f56128e7565b613409816134038454612f0d565b84613398565b6020601f82116001811461343b575f83156134245750848201515b5f19600385901b1c1916600184901b17845561068f565b5f84815260208120601f198516915b8281101561346a578785015182556020948501946001909201910161344a565b508482101561348757868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00ffe3d4462bded26a47154f4b8f6db494d2f772496965791d25bd456e342b7f00a2646970667358221220ae770a5f71dd5d8a457de09a0627d900f598653612e7a22ca77b4aba6011fa3a64736f6c634300081a0033",
1100
+ "linkReferences": {
1101
+ "contracts/type/Amount.sol": {
1102
+ "AmountLib": [
1103
+ {
1104
+ "length": 20,
1105
+ "start": 6390
1106
+ },
1107
+ {
1108
+ "length": 20,
1109
+ "start": 8092
1110
+ },
1111
+ {
1112
+ "length": 20,
1113
+ "start": 8348
1114
+ }
1115
+ ]
1116
+ },
1117
+ "contracts/type/NftId.sol": {
1118
+ "NftIdLib": [
1119
+ {
1120
+ "length": 20,
1121
+ "start": 5184
1122
+ },
1123
+ {
1124
+ "length": 20,
1125
+ "start": 6056
1126
+ },
1127
+ {
1128
+ "length": 20,
1129
+ "start": 7001
1130
+ },
1131
+ {
1132
+ "length": 20,
1133
+ "start": 9448
1134
+ },
1135
+ {
1136
+ "length": 20,
1137
+ "start": 10225
1138
+ },
1139
+ {
1140
+ "length": 20,
1141
+ "start": 11680
1142
+ }
1143
+ ]
1144
+ }
1145
+ },
1146
+ "deployedLinkReferences": {
1147
+ "contracts/type/Amount.sol": {
1148
+ "AmountLib": [
1149
+ {
1150
+ "length": 20,
1151
+ "start": 2999
1152
+ },
1153
+ {
1154
+ "length": 20,
1155
+ "start": 4701
1156
+ },
1157
+ {
1158
+ "length": 20,
1159
+ "start": 4957
1160
+ }
1161
+ ]
1162
+ },
1163
+ "contracts/type/NftId.sol": {
1164
+ "NftIdLib": [
1165
+ {
1166
+ "length": 20,
1167
+ "start": 1793
1168
+ },
1169
+ {
1170
+ "length": 20,
1171
+ "start": 2665
1172
+ },
1173
+ {
1174
+ "length": 20,
1175
+ "start": 3610
1176
+ },
1177
+ {
1178
+ "length": 20,
1179
+ "start": 6057
1180
+ },
1181
+ {
1182
+ "length": 20,
1183
+ "start": 6834
1184
+ },
1185
+ {
1186
+ "length": 20,
1187
+ "start": 8289
1188
+ }
1189
+ ]
1190
+ }
1191
+ }
1192
+ }