@etherisc/gif-next 0.0.2-e37834a-021 → 0.0.2-e46206a-486

Sign up to get free protection for your applications and to get access to all the features.
Files changed (257) hide show
  1. package/README.md +104 -1
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +90 -2
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +118 -6
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +80 -3
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  10. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  12. package/artifacts/contracts/components/Pool.sol/Pool.json +120 -6
  13. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  14. package/artifacts/contracts/components/Product.sol/Product.json +118 -6
  15. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
  16. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
  17. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
  21. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  33. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  37. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  39. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  40. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  42. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +54 -286
  43. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +1 -1
  44. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  45. package/artifacts/contracts/instance/Instance.sol/Instance.json +171 -396
  46. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +90 -2
  48. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  49. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  50. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  51. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +1 -1
  52. package/artifacts/contracts/instance/base/IService.sol/IService.json +80 -3
  53. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +1 -1
  54. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +90 -2
  55. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  56. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +22 -14
  57. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  58. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  59. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +1 -1
  60. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +1 -1
  61. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +90 -2
  62. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +1 -1
  63. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +1 -1
  64. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +1 -1
  65. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +1 -1
  66. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +2 -2
  70. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +1 -1
  74. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -13
  75. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +1 -1
  76. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -13
  77. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +1 -1
  79. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +1 -1
  80. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +2 -2
  84. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +1 -1
  86. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  87. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +2 -2
  88. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +194 -41
  91. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +136 -16
  93. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +81 -4
  95. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  96. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +80 -3
  97. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  98. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +80 -3
  99. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +80 -3
  101. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  102. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +138 -18
  103. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +154 -42
  105. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  106. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +47 -2
  107. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  108. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +42 -156
  109. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  110. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +214 -10
  111. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  112. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  113. package/artifacts/contracts/registry/Registry.sol/Registry.json +62 -184
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +410 -34
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +86 -42
  118. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  119. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  120. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  121. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  122. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
  123. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  124. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +80 -3
  125. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  126. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  127. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +32 -6
  128. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  129. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +21 -16
  130. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  131. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +120 -6
  132. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  133. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  134. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  135. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +1 -1
  136. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +118 -6
  137. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  138. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  139. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +1 -1
  140. package/artifacts/contracts/test/TestPool.sol/TestPool.json +120 -6
  141. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +1 -1
  142. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +120 -8
  143. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  144. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +120 -6
  145. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  146. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  147. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  148. package/artifacts/contracts/test/TestService.sol/TestService.json +142 -14
  149. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  150. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  151. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  153. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +18 -2
  154. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  155. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  156. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  157. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  158. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  159. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  160. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  161. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  162. package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
  163. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  164. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  165. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  167. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  168. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  169. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  170. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  171. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  173. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  174. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  175. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  177. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  179. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  181. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
  183. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  184. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  185. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  186. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  187. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  189. package/contracts/components/BaseComponent.sol +1 -1
  190. package/contracts/components/Distribution.sol +1 -1
  191. package/contracts/components/IBaseComponent.sol +1 -1
  192. package/contracts/components/IDistributionComponent.sol +1 -1
  193. package/contracts/components/IProductComponent.sol +1 -1
  194. package/contracts/components/Product.sol +2 -2
  195. package/contracts/experiment/cloning/Cloner.sol +47 -0
  196. package/contracts/instance/IInstance.sol +4 -6
  197. package/contracts/instance/Instance.sol +4 -6
  198. package/contracts/instance/base/KeyValueStore.sol +3 -2
  199. package/contracts/instance/base/ModuleBase.sol +1 -1
  200. package/contracts/instance/base/ServiceBase.sol +1 -0
  201. package/contracts/instance/module/bundle/BundleModule.sol +2 -2
  202. package/contracts/instance/module/component/ComponentModule.sol +1 -1
  203. package/contracts/instance/module/component/IComponent.sol +1 -1
  204. package/contracts/instance/module/policy/IPolicy.sol +2 -2
  205. package/contracts/instance/module/policy/PolicyModule.sol +2 -2
  206. package/contracts/instance/module/treasury/ITreasury.sol +1 -1
  207. package/contracts/instance/module/treasury/TokenHandler.sol +1 -1
  208. package/contracts/instance/module/treasury/TreasuryModule.sol +4 -4
  209. package/contracts/instance/service/ComponentOwnerService.sol +73 -30
  210. package/contracts/instance/service/IProductService.sol +1 -1
  211. package/contracts/instance/service/ProductService.sol +3 -3
  212. package/contracts/registry/ChainNft.sol +40 -25
  213. package/contracts/registry/IRegistry.sol +9 -25
  214. package/contracts/registry/IRegistryService.sol +9 -3
  215. package/contracts/registry/Registry.sol +90 -157
  216. package/contracts/registry/RegistryService.sol +167 -101
  217. package/contracts/registry/RegistryServiceManager.sol +22 -10
  218. package/contracts/shared/ERC165.sol +1 -1
  219. package/contracts/shared/INftOwnable.sol +22 -0
  220. package/contracts/shared/IRegisterable.sol +3 -8
  221. package/contracts/shared/NftOwnable.sol +83 -34
  222. package/contracts/shared/ProxyManager.sol +3 -12
  223. package/contracts/shared/Registerable.sol +14 -42
  224. package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
  225. package/contracts/shared/Versionable.sol +3 -3
  226. package/contracts/test/TestFee.sol +2 -2
  227. package/contracts/test/TestProduct.sol +2 -2
  228. package/contracts/test/TestRoleId.sol +1 -1
  229. package/contracts/types/DistributorType.sol +55 -0
  230. package/contracts/types/Fee.sol +3 -3
  231. package/contracts/types/Key32.sol +8 -3
  232. package/contracts/types/NumberId.sol +52 -0
  233. package/contracts/types/ObjectType.sol +35 -14
  234. package/contracts/types/Referral.sol +85 -0
  235. package/contracts/types/RoleId.sol +53 -9
  236. package/contracts/types/StateId.sol +1 -1
  237. package/contracts/types/Timestamp.sol +7 -3
  238. package/contracts/types/UFixed.sol +128 -12
  239. package/package.json +4 -3
  240. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  241. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  242. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  243. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +0 -10
  244. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  245. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  246. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  247. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  248. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  249. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  250. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  251. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  252. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  253. package/contracts/instance/module/access/Access.sol +0 -149
  254. package/contracts/instance/module/access/IAccess.sol +0 -53
  255. package/contracts/registry/IChainNft.sol +0 -22
  256. package/contracts/shared/IOwnable.sol +0 -6
  257. package/contracts/types/ReferralId.sol +0 -48
@@ -7,48 +7,151 @@
7
7
  "inputs": [
8
8
  {
9
9
  "internalType": "address",
10
- "name": "registerableAddress",
10
+ "name": "authority",
11
11
  "type": "address"
12
12
  }
13
13
  ],
14
- "name": "InvalidAddress",
14
+ "name": "AccessManagedInvalidAuthority",
15
15
  "type": "error"
16
16
  },
17
17
  {
18
18
  "inputs": [
19
19
  {
20
20
  "internalType": "address",
21
- "name": "initialOwner",
21
+ "name": "caller",
22
22
  "type": "address"
23
+ },
24
+ {
25
+ "internalType": "uint32",
26
+ "name": "delay",
27
+ "type": "uint32"
23
28
  }
24
29
  ],
25
- "name": "InvalidInitialOwner",
30
+ "name": "AccessManagedRequiredDelay",
31
+ "type": "error"
32
+ },
33
+ {
34
+ "inputs": [
35
+ {
36
+ "internalType": "address",
37
+ "name": "caller",
38
+ "type": "address"
39
+ }
40
+ ],
41
+ "name": "AccessManagedUnauthorized",
42
+ "type": "error"
43
+ },
44
+ {
45
+ "inputs": [
46
+ {
47
+ "internalType": "address",
48
+ "name": "registry",
49
+ "type": "address"
50
+ },
51
+ {
52
+ "internalType": "NftId",
53
+ "name": "nftId",
54
+ "type": "uint96"
55
+ }
56
+ ],
57
+ "name": "ErrorAlreadyLinked",
58
+ "type": "error"
59
+ },
60
+ {
61
+ "inputs": [
62
+ {
63
+ "internalType": "address",
64
+ "name": "contractAddress",
65
+ "type": "address"
66
+ }
67
+ ],
68
+ "name": "ErrorContractNotRegistered",
69
+ "type": "error"
70
+ },
71
+ {
72
+ "inputs": [
73
+ {
74
+ "internalType": "address",
75
+ "name": "account",
76
+ "type": "address"
77
+ }
78
+ ],
79
+ "name": "ErrorNotOwner",
80
+ "type": "error"
81
+ },
82
+ {
83
+ "inputs": [
84
+ {
85
+ "internalType": "address",
86
+ "name": "registryAddress",
87
+ "type": "address"
88
+ }
89
+ ],
90
+ "name": "ErrorNotRegistry",
91
+ "type": "error"
92
+ },
93
+ {
94
+ "inputs": [
95
+ {
96
+ "internalType": "address",
97
+ "name": "registryAddress",
98
+ "type": "address"
99
+ }
100
+ ],
101
+ "name": "ErrorRegisterableNotRegistry",
26
102
  "type": "error"
27
103
  },
28
104
  {
29
105
  "inputs": [],
30
- "name": "InvalidInitialization",
106
+ "name": "ErrorRegistryAddressZero",
31
107
  "type": "error"
32
108
  },
33
109
  {
34
110
  "inputs": [
35
111
  {
36
- "internalType": "ObjectType",
37
- "name": "objectType",
38
- "type": "uint8"
112
+ "internalType": "address",
113
+ "name": "registry",
114
+ "type": "address"
115
+ }
116
+ ],
117
+ "name": "ErrorRegistryAlreadyInitialized",
118
+ "type": "error"
119
+ },
120
+ {
121
+ "inputs": [],
122
+ "name": "ErrorRegistryNotInitialized",
123
+ "type": "error"
124
+ },
125
+ {
126
+ "inputs": [
127
+ {
128
+ "internalType": "address",
129
+ "name": "registerableAddress",
130
+ "type": "address"
131
+ }
132
+ ],
133
+ "name": "InvalidAddress",
134
+ "type": "error"
135
+ },
136
+ {
137
+ "inputs": [
138
+ {
139
+ "internalType": "address",
140
+ "name": "initialOwner",
141
+ "type": "address"
39
142
  }
40
143
  ],
41
- "name": "InvalidType",
144
+ "name": "InvalidInitialOwner",
42
145
  "type": "error"
43
146
  },
44
147
  {
45
148
  "inputs": [],
46
- "name": "MissingAllowance",
149
+ "name": "InvalidInitialization",
47
150
  "type": "error"
48
151
  },
49
152
  {
50
153
  "inputs": [],
51
- "name": "NotComponent",
154
+ "name": "NotDistribution",
52
155
  "type": "error"
53
156
  },
54
157
  {
@@ -61,6 +164,27 @@
61
164
  "name": "NotInstance",
62
165
  "type": "error"
63
166
  },
167
+ {
168
+ "inputs": [],
169
+ "name": "NotPool",
170
+ "type": "error"
171
+ },
172
+ {
173
+ "inputs": [],
174
+ "name": "NotProduct",
175
+ "type": "error"
176
+ },
177
+ {
178
+ "inputs": [
179
+ {
180
+ "internalType": "address",
181
+ "name": "expectedOwner",
182
+ "type": "address"
183
+ }
184
+ ],
185
+ "name": "NotRegisterableOwner",
186
+ "type": "error"
187
+ },
64
188
  {
65
189
  "inputs": [],
66
190
  "name": "NotRegistryOwner",
@@ -76,11 +200,50 @@
76
200
  "name": "NotToken",
77
201
  "type": "error"
78
202
  },
203
+ {
204
+ "inputs": [],
205
+ "name": "RegisterableOwnerIsRegistered",
206
+ "type": "error"
207
+ },
208
+ {
209
+ "inputs": [],
210
+ "name": "RegisterableOwnerIsZero",
211
+ "type": "error"
212
+ },
79
213
  {
80
214
  "inputs": [],
81
215
  "name": "SelfRegistration",
82
216
  "type": "error"
83
217
  },
218
+ {
219
+ "inputs": [
220
+ {
221
+ "internalType": "ObjectType",
222
+ "name": "expected",
223
+ "type": "uint8"
224
+ },
225
+ {
226
+ "internalType": "ObjectType",
227
+ "name": "found",
228
+ "type": "uint8"
229
+ }
230
+ ],
231
+ "name": "UnexpectedRegisterableType",
232
+ "type": "error"
233
+ },
234
+ {
235
+ "anonymous": false,
236
+ "inputs": [
237
+ {
238
+ "indexed": false,
239
+ "internalType": "address",
240
+ "name": "authority",
241
+ "type": "address"
242
+ }
243
+ ],
244
+ "name": "AuthorityUpdated",
245
+ "type": "event"
246
+ },
84
247
  {
85
248
  "anonymous": false,
86
249
  "inputs": [
@@ -171,6 +334,19 @@
171
334
  "stateMutability": "view",
172
335
  "type": "function"
173
336
  },
337
+ {
338
+ "inputs": [],
339
+ "name": "authority",
340
+ "outputs": [
341
+ {
342
+ "internalType": "address",
343
+ "name": "",
344
+ "type": "address"
345
+ }
346
+ ],
347
+ "stateMutability": "view",
348
+ "type": "function"
349
+ },
174
350
  {
175
351
  "inputs": [],
176
352
  "name": "getInitialInfo",
@@ -271,7 +447,7 @@
271
447
  "outputs": [
272
448
  {
273
449
  "internalType": "NftId",
274
- "name": "nftId",
450
+ "name": "",
275
451
  "type": "uint96"
276
452
  }
277
453
  ],
@@ -297,7 +473,7 @@
297
473
  "outputs": [
298
474
  {
299
475
  "internalType": "contract IRegistry",
300
- "name": "registry",
476
+ "name": "",
301
477
  "type": "address"
302
478
  }
303
479
  ],
@@ -418,6 +594,19 @@
418
594
  "stateMutability": "nonpayable",
419
595
  "type": "function"
420
596
  },
597
+ {
598
+ "inputs": [],
599
+ "name": "isConsumingScheduledOp",
600
+ "outputs": [
601
+ {
602
+ "internalType": "bytes4",
603
+ "name": "",
604
+ "type": "bytes4"
605
+ }
606
+ ],
607
+ "stateMutability": "view",
608
+ "type": "function"
609
+ },
421
610
  {
422
611
  "inputs": [
423
612
  {
@@ -437,6 +626,13 @@
437
626
  "stateMutability": "view",
438
627
  "type": "function"
439
628
  },
629
+ {
630
+ "inputs": [],
631
+ "name": "linkToRegisteredNftId",
632
+ "outputs": [],
633
+ "stateMutability": "nonpayable",
634
+ "type": "function"
635
+ },
440
636
  {
441
637
  "inputs": [
442
638
  {
@@ -497,21 +693,16 @@
497
693
  "inputs": [
498
694
  {
499
695
  "internalType": "contract IBaseComponent",
500
- "name": "component",
696
+ "name": "distribution",
501
697
  "type": "address"
502
698
  },
503
- {
504
- "internalType": "ObjectType",
505
- "name": "componentType",
506
- "type": "uint8"
507
- },
508
699
  {
509
700
  "internalType": "address",
510
701
  "name": "owner",
511
702
  "type": "address"
512
703
  }
513
704
  ],
514
- "name": "registerComponent",
705
+ "name": "registerDistribution",
515
706
  "outputs": [
516
707
  {
517
708
  "components": [
@@ -681,6 +872,138 @@
681
872
  "stateMutability": "nonpayable",
682
873
  "type": "function"
683
874
  },
875
+ {
876
+ "inputs": [
877
+ {
878
+ "internalType": "contract IBaseComponent",
879
+ "name": "pool",
880
+ "type": "address"
881
+ },
882
+ {
883
+ "internalType": "address",
884
+ "name": "owner",
885
+ "type": "address"
886
+ }
887
+ ],
888
+ "name": "registerPool",
889
+ "outputs": [
890
+ {
891
+ "components": [
892
+ {
893
+ "internalType": "NftId",
894
+ "name": "nftId",
895
+ "type": "uint96"
896
+ },
897
+ {
898
+ "internalType": "NftId",
899
+ "name": "parentNftId",
900
+ "type": "uint96"
901
+ },
902
+ {
903
+ "internalType": "ObjectType",
904
+ "name": "objectType",
905
+ "type": "uint8"
906
+ },
907
+ {
908
+ "internalType": "bool",
909
+ "name": "isInterceptor",
910
+ "type": "bool"
911
+ },
912
+ {
913
+ "internalType": "address",
914
+ "name": "objectAddress",
915
+ "type": "address"
916
+ },
917
+ {
918
+ "internalType": "address",
919
+ "name": "initialOwner",
920
+ "type": "address"
921
+ },
922
+ {
923
+ "internalType": "bytes",
924
+ "name": "data",
925
+ "type": "bytes"
926
+ }
927
+ ],
928
+ "internalType": "struct IRegistry.ObjectInfo",
929
+ "name": "info",
930
+ "type": "tuple"
931
+ },
932
+ {
933
+ "internalType": "bytes",
934
+ "name": "data",
935
+ "type": "bytes"
936
+ }
937
+ ],
938
+ "stateMutability": "nonpayable",
939
+ "type": "function"
940
+ },
941
+ {
942
+ "inputs": [
943
+ {
944
+ "internalType": "contract IBaseComponent",
945
+ "name": "product",
946
+ "type": "address"
947
+ },
948
+ {
949
+ "internalType": "address",
950
+ "name": "owner",
951
+ "type": "address"
952
+ }
953
+ ],
954
+ "name": "registerProduct",
955
+ "outputs": [
956
+ {
957
+ "components": [
958
+ {
959
+ "internalType": "NftId",
960
+ "name": "nftId",
961
+ "type": "uint96"
962
+ },
963
+ {
964
+ "internalType": "NftId",
965
+ "name": "parentNftId",
966
+ "type": "uint96"
967
+ },
968
+ {
969
+ "internalType": "ObjectType",
970
+ "name": "objectType",
971
+ "type": "uint8"
972
+ },
973
+ {
974
+ "internalType": "bool",
975
+ "name": "isInterceptor",
976
+ "type": "bool"
977
+ },
978
+ {
979
+ "internalType": "address",
980
+ "name": "objectAddress",
981
+ "type": "address"
982
+ },
983
+ {
984
+ "internalType": "address",
985
+ "name": "initialOwner",
986
+ "type": "address"
987
+ },
988
+ {
989
+ "internalType": "bytes",
990
+ "name": "data",
991
+ "type": "bytes"
992
+ }
993
+ ],
994
+ "internalType": "struct IRegistry.ObjectInfo",
995
+ "name": "info",
996
+ "type": "tuple"
997
+ },
998
+ {
999
+ "internalType": "bytes",
1000
+ "name": "data",
1001
+ "type": "bytes"
1002
+ }
1003
+ ],
1004
+ "stateMutability": "nonpayable",
1005
+ "type": "function"
1006
+ },
684
1007
  {
685
1008
  "inputs": [
686
1009
  {
@@ -761,6 +1084,19 @@
761
1084
  "stateMutability": "nonpayable",
762
1085
  "type": "function"
763
1086
  },
1087
+ {
1088
+ "inputs": [
1089
+ {
1090
+ "internalType": "address",
1091
+ "name": "newAuthority",
1092
+ "type": "address"
1093
+ }
1094
+ ],
1095
+ "name": "setAuthority",
1096
+ "outputs": [],
1097
+ "stateMutability": "nonpayable",
1098
+ "type": "function"
1099
+ },
764
1100
  {
765
1101
  "inputs": [
766
1102
  {
@@ -804,18 +1140,18 @@
804
1140
  "type": "function"
805
1141
  }
806
1142
  ],
807
- "bytecode": "0x60806040523480156200001157600080fd5b506301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055620000586200005e565b62000112565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000af5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146200010f5780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b612ace80620001226000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c8063893d20e8116100de578063c2bf08c811610097578063d943342d11610071578063d943342d146104cd578063e285c9c4146104e0578063ed841d0c146104e8578063fdd9ec7d146104f057600080fd5b8063c2bf08c81461048d578063cde749f4146104a0578063cf7a1d77146104ba57600080fd5b8063893d20e8146103e8578063946dfcfe146103f0578063a3f4df7e14610417578063a745e3df14610445578063b3c650151461045a578063b88da7591461047a57600080fd5b80634d459c90116101305780634d459c901461026e5780634f421333146103875780635ab1bd531461039a5780635c992fed146103ba578063644c45e0146103cd578063834af153146103d557600080fd5b806301ffc9a71461017857806309824a80146101ba5780630d8e6e2c146101e55780630fec111c1461020157806317d7de7c146102175780631eff4b221461024b575b600080fd5b6101a561018636600461216d565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101cd6101c83660046121c6565b610503565b6040516001600160601b0390911681526020016101b1565b6101ed610795565b60405162ffffff90911681526020016101b1565b61020961081f565b6040516101b19291906122a4565b60408051808201909152600f81526e52656769737472795365727669636560881b60208201525b6040516101b191906122d2565b610260600080516020612a3983398151915281565b6040519081526020016101b1565b61032a61027c3660046122f6565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152600080516020612a7983398151915262ffffff92831660009081526020918252604090819020815160a0810183528154958616815263010000009095046001600160a01b03908116938601939093526001015491821690840152600160a01b810464ffffffffff166060840152600160c81b900463ffffffff1660808301525090565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015164ffffffffff169082015260809182015163ffffffff169181019190915260a0016101b1565b6101a56103953660046122f6565b610953565b6103a2610a06565b6040516001600160a01b0390911681526020016101b1565b6101cd6103c8366004612451565b610a22565b6101cd610bc3565b6102096103e33660046121c6565b610c3e565b6103a2610d80565b7f4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed90154610260565b61023e6040518060400160405280600f81526020016e52656769737472795365727669636560881b81525081565b610458610453366004612523565b610dfb565b005b610462610f55565b6040516001600160401b0390911681526020016101b1565b6101ed610488366004612584565b610f76565b6101cd61049b366004612451565b610fc7565b6104a86110f1565b60405160ff90911681526020016101b1565b6104586104c8366004612523565b611174565b6102096104db36600461259d565b61127d565b6103a2600181565b610260600081565b6102096104fe3660046121c6565b6114ca565b6040516301ffc9a760e01b8152600090829082906001600160a01b038316906301ffc9a79061053d90633111e9af60e01b906004016125e8565b602060405180830381865afa925050508015610576575060408051601f3d908101601f1916820190925261057391810190612608565b60015b61058257506000610585565b90505b80156105a45760405163087cada760e21b815260040160405180910390fd5b60006105ae610a06565b604051630a57ebcf60e11b81526001600160a01b038216600482018190529192506314afd79e90602401602060405180830381865afa1580156105f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106199190612630565b6001600160a01b0316336001600160a01b03161461064a5760405163778d468d60e11b815260040160405180910390fd5b60006040518060e0016040528061065f600090565b6001600160601b03168152604051636939560f60e11b81526001600160a01b038516600482018190526020909201919063d272ac1e90602401602060405180830381865afa1580156106b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190612658565b6001600160601b03168152602001601e60ff168152600060208083018290526001600160a01b03808b166040808601919091526001606086015280519283018152928252608090930152516352efcf2760e11b815291925083169063a5df9e4e90610748908490600401612675565b6020604051808303816000875af1158015610767573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078b9190612658565b9695505050505050565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af41580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190612688565b905090565b61082761212f565b60606000600080516020612a3983398151915290506040518060e0016040528061084f600090565b6001600160601b0390811682528354600160a01b908190049091166020830152600184015490810460ff9081166040840152600160a81b820416151560608301523060808301526001600160a01b031660a082015260028301805460c0909201916108b9906126a5565b80601f01602080910402602001604051908101604052809291908181526020018280546108e5906126a5565b80156109325780601f1061090757610100808354040283529160200191610932565b820191906000526020600020905b81548152906001019060200180831161091557829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b600080600080516020612a7983398151915262ffffff84166000908152602091909152604090819020600101549051631bbffab160e21b8152600160c81b90910463ffffffff16600482015273__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af41580156109db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ff91906126df565b1192915050565b600080516020612a39833981519152546001600160a01b031690565b600080610a2d610a06565b604051636939560f60e11b81523360048201529091506000906001600160a01b0383169063d272ac1e90602401602060405180830381865afa158015610a77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9b9190612658565b90506001600160a01b038216635f1561518260d26040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865afa158015610afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1f9190612608565b1515600003610b4157604051632bb46a5f60e01b815260040160405180910390fd5b610b4c8460d2611654565b6040516352efcf2760e11b81526001600160a01b0383169063a5df9e4e90610b78908790600401612675565b6020604051808303816000875af1158015610b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbb9190612658565b949350505050565b6000600080516020612a3983398151915254604051636939560f60e11b81523060048201526001600160a01b039091169063d272ac1e90602401602060405180830381865afa158015610c1a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190612658565b610c4661212f565b6040516301ffc9a760e01b81526060906001600160a01b038416906301ffc9a790610c7c90630de7806f60e41b906004016125e8565b602060405180830381865afa158015610c99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbd9190612608565b1515600003610cdf57604051636795c76360e01b815260040160405180910390fd5b610cec8360325b3361178b565b90925090506000610cfb610a06565b6040516352efcf2760e11b81529091506001600160a01b0382169063a5df9e4e90610d2a908690600401612675565b6020604051808303816000875af1158015610d49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6d9190612658565b6001600160601b03168352509092909150565b6000600080516020612a3983398151915254604051630a57ebcf60e11b81523060048201526001600160a01b03909116906314afd79e90602401602060405180830381865afa158015610dd7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190612630565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c610e1d610795565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610e5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8191906126f8565b600080516020612a598339815191528054600160401b900460ff1680610eb4575080546001600160401b03808416911610155b15610ed25760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610efd8585611963565b610f0683611b9e565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15050505050565b600061081a600080516020612a59833981519152546001600160401b031690565b6000600080516020612a798339815191526001018281548110610f9b57610f9b612721565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b600080610fd2610a06565b604051636939560f60e11b81523360048201529091506000906001600160a01b0383169063d272ac1e90602401602060405180830381865afa15801561101c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110409190612658565b90506001600160a01b038216635f1561518260dc6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c49190612608565b15156000036110e657604051632bb46a5f60e01b815260040160405180910390fd5b610b4c8460dc611654565b60006110fb610795565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015611150573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190612742565b600080516020612a598339815191528054600160401b810460ff1615906001600160401b03166000811580156111a75750825b90506000826001600160401b031660011480156111c35750303b155b9050811580156111d1575080155b156111ef5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561121957845460ff60401b1916600160401b1785555b6112238888611963565b61122d8787611ba6565b831561127357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b61128561212f565b6040516301ffc9a760e01b81526060906001600160a01b038616906301ffc9a7906112bb90631b1599eb60e21b906004016125e8565b602060405180830381865afa1580156112d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fc9190612608565b151560000361131e57604051634138dc2760e11b815260040160405180910390fd5b61132985858561178b565b90925090506000611338610a06565b604051636939560f60e11b81523360048201529091506000906001600160a01b0383169063d272ac1e90602401602060405180830381865afa158015611382573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a69190612658565b604051635f15615160e01b81526001600160601b038216600482015260ff881660248201529091506001600160a01b03831690635f15615190604401602060405180830381865afa1580156113ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114239190612608565b151560000361144557604051632bb46a5f60e01b815260040160405180910390fd5b6040516352efcf2760e11b81526001600160a01b0383169063a5df9e4e90611471908790600401612675565b6020604051808303816000875af1158015611490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b49190612658565b6001600160601b0316845250505b935093915050565b6114d261212f565b6040516301ffc9a760e01b81526060906001600160a01b038416906301ffc9a79061150890631b4612f160e31b906004016125e8565b602060405180830381865afa158015611525573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115499190612608565b151560000361156b57604051635458064d60e11b815260040160405180910390fd5b611576836028610ce6565b90925090506000611585610a06565b604051630a57ebcf60e11b81526001600160a01b038216600482018190529192506314afd79e90602401602060405180830381865afa1580156115cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f09190612630565b6001600160a01b0316336001600160a01b0316146116215760405163778d468d60e11b815260040160405180910390fd5b600160a08401526040516352efcf2760e11b81526001600160a01b0382169063a5df9e4e90610d2a908690600401612675565b60808201516001600160a01b031615611696576080820151604051634726455360e11b81526001600160a01b0390911660048201526024015b60405180910390fd5b61169e610a06565b60a083015160405163c3c5a54760e01b81526001600160a01b03918216600482015291169063c3c5a54790602401602060405180830381865afa1580156116e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170d9190612608565b80611723575060a08201516001600160a01b0316155b156117525760a082015160405163711c133360e01b81526001600160a01b03909116600482015260240161168d565b604082015160ff82811691161461178757604080830151905163f503452760e01b815260ff909116600482015260240161168d565b5050565b61179361212f565b6060846001600160a01b0316630fec111c6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156117d3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117fb91908101906127a4565b608082015191935091506001600160a01b03868116911614611841576080820151604051634726455360e11b81526001600160a01b03909116600482015260240161168d565b611849610a06565b60405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa158015611891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b59190612608565b806118d65750826001600160a01b03168260a001516001600160a01b031614155b156119055760a082015160405163711c133360e01b81526001600160a01b03909116600482015260240161168d565b6001600160a01b038516330361192e576040516317faf4db60e11b815260040160405180910390fd5b604082015160ff8581169116146114c257604080830151905163f503452760e01b815260ff909116600482015260240161168d565b61196b611e68565b600080516020612a79833981519152600061199b600080516020612a59833981519152546001600160401b031690565b905060006119a7610795565b9050816001600160401b03166001036119d45760028301805462ffffff191662ffffff8316179055611a22565b600283015462ffffff90811690821611611a225760405162461bcd60e51b815260206004820152600f60248201526e24a72b20a624a2102b22a929a4a7a760891b604482015260640161168d565b6001808401805491820181556000908152602090819020600a808404909101805462ffffff808716600394909606939093026101000a858102930219169190911790556040805160a0810182529283526001600160a01b03808916928401929092529086169082015260608101611a964290565b64ffffffffff1681526020014363ffffffff90811690915262ffffff8084166000908152602087815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c81b0263ffffffff60c81b1964ffffffffff909716600160a01b026001600160c81b031990961692909416919091179390931793909316179055517fad0a0fc10465a8dd9da3ad5f43e1a7fff4b4578551c76f0ae8deb844f0d0bf6890610f469083908890889062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b610173611e68565b600080516020612a598339815191528054600160401b810460ff1615906001600160401b0316600081158015611bd95750825b90506000826001600160401b03166001148015611bf55750303b155b905081158015611c03575080155b15611c215760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611c4b57845460ff60401b1916600160401b1785555b600087611c566110f1565b604080516001600160a01b03909316602084015260ff9091169082015260600160408051601f1981840301815290829052631585e94960e21b8252915060009073__$b2e3f5fb9dc49bcf3e057142c7696ab68d$__90635617a52490611cc2908b90869060040161289c565b600060405180830381865af4158015611cdf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d0791908101906128af565b60405163257b1f8160e11b815290915060009073__$b2e3f5fb9dc49bcf3e057142c7696ab68d$__90634af63f0290611d4690859085906004016128e3565b602060405180830381865af4158015611d63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d879190612630565b604051636939560f60e11b81526001600160a01b03821660048201819052919250829160009163d272ac1e90602401602060405180830381865afa158015611dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df79190612658565b9050611e0483828e611ea1565b611e1463183a225360e11b611f25565b50505050508315611e5f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b600080516020612a5983398151915254600160401b900460ff16611e9f57604051631afcd79f60e31b815260040160405180910390fd5b565b6000611ecf60408051808201909152600f81526e52656769737472795365727669636560881b602082015290565b611ed76110f1565b604051602001611ee8929190612905565b6040516020818303038152906040529050611f0f8484611f06602890565b60008686611f4a565b611f1f631b4612f160e31b611f25565b50505050565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b6001600160a01b038616611fa05760405162461bcd60e51b815260206004820152601b60248201527f4552524f523a5247422d3031303a52454749535452595f5a45524f0000000000604482015260640161168d565b6040516301ffc9a760e01b815286906001600160a01b038216906301ffc9a790611fd590636882e63f60e11b906004016125e8565b602060405180830381865afa158015611ff2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120169190612608565b6120625760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a5247422d3031313a4e4f545f5245474953545259000000000000604482015260640161168d565b6001600160a01b03818116600160a01b6001600160601b038916810291909117600080516020612a398339815191529081557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30180546001600160a01b031961ffff60a01b1990911660ff8b1690940260ff60a81b191693909317600160a81b8915150217929092169286169290921790557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30261211e8482612979565b5061127363a6d3826560e01b611f25565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b60006020828403121561217f57600080fd5b81356001600160e01b03198116811461219757600080fd5b9392505050565b6001600160a01b03811681146121b357600080fd5b50565b80356121c18161219e565b919050565b6000602082840312156121d857600080fd5b81356121978161219e565b60005b838110156121fe5781810151838201526020016121e6565b50506000910152565b6000815180845261221f8160208601602086016121e3565b601f01601f19169290920160200192915050565b60006001600160601b038083511684528060208401511660208501525060ff6040830151166040840152606082015115156060840152608082015160018060a01b0380821660808601528060a08501511660a0860152505060c082015160e060c0850152610bbb60e0850182612207565b6040815260006122b76040830185612233565b82810360208401526122c98185612207565b95945050505050565b6020815260006121976020830184612207565b62ffffff811681146121b357600080fd5b60006020828403121561230857600080fd5b8135612197816122e5565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b038111828210171561234b5761234b612313565b60405290565b604051601f8201601f191681016001600160401b038111828210171561237957612379612313565b604052919050565b6001600160601b03811681146121b357600080fd5b80356121c181612381565b60ff811681146121b357600080fd5b80356121c1816123a1565b80151581146121b357600080fd5b80356121c1816123bb565b60006001600160401b038211156123ed576123ed612313565b50601f01601f191660200190565b600082601f83011261240c57600080fd5b813561241f61241a826123d4565b612351565b81815284602083860101111561243457600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561246357600080fd5b81356001600160401b038082111561247a57600080fd5b9083019060e0828603121561248e57600080fd5b612496612329565b61249f83612396565b81526124ad60208401612396565b60208201526124be604084016123b0565b60408201526124cf606084016123c9565b60608201526124e0608084016121b6565b60808201526124f160a084016121b6565b60a082015260c08301358281111561250857600080fd5b612514878286016123fb565b60c08301525095945050505050565b60008060006060848603121561253857600080fd5b83356125438161219e565b925060208401356125538161219e565b915060408401356001600160401b0381111561256e57600080fd5b61257a868287016123fb565b9150509250925092565b60006020828403121561259657600080fd5b5035919050565b6000806000606084860312156125b257600080fd5b83356125bd8161219e565b925060208401356125cd816123a1565b915060408401356125dd8161219e565b809150509250925092565b6001600160e01b031991909116815260200190565b80516121c1816123bb565b60006020828403121561261a57600080fd5b8151612197816123bb565b80516121c18161219e565b60006020828403121561264257600080fd5b81516121978161219e565b80516121c181612381565b60006020828403121561266a57600080fd5b815161219781612381565b6020815260006121976020830184612233565b60006020828403121561269a57600080fd5b8151612197816122e5565b600181811c908216806126b957607f821691505b6020821081036126d957634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156126f157600080fd5b5051919050565b60006020828403121561270a57600080fd5b81516001600160401b038116811461219757600080fd5b634e487b7160e01b600052603260045260246000fd5b80516121c1816123a1565b60006020828403121561275457600080fd5b8151612197816123a1565b600082601f83011261277057600080fd5b815161277e61241a826123d4565b81815284602083860101111561279357600080fd5b610bbb8260208301602087016121e3565b600080604083850312156127b757600080fd5b82516001600160401b03808211156127ce57600080fd5b9084019060e082870312156127e257600080fd5b6127ea612329565b6127f38361264d565b81526128016020840161264d565b602082015261281260408401612737565b6040820152612823606084016125fd565b606082015261283460808401612625565b608082015261284560a08401612625565b60a082015260c08301518281111561285c57600080fd5b6128688882860161275f565b60c083015250602086015190945091508082111561288557600080fd5b506128928582860161275f565b9150509250929050565b6040815260006122b76040830185612207565b6000602082840312156128c157600080fd5b81516001600160401b038111156128d757600080fd5b610bbb8482850161275f565b6040815260006128f66040830185612207565b90508260208301529392505050565b6040815260006129186040830185612207565b905060ff831660208301529392505050565b601f82111561297457600081815260208120601f850160051c810160208610156129515750805b601f850160051c820191505b818110156129705782815560010161295d565b5050505b505050565b81516001600160401b0381111561299257612992612313565b6129a6816129a084546126a5565b8461292a565b602080601f8311600181146129db57600084156129c35750858301515b600019600386901b1c1916600185901b178555612970565b600085815260208120601f198616915b82811015612a0a578886015182559484019460019091019084016129eb565b5085821015612a285787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fe6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a004f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900a26469706673582212204a8fa0eba55f83835553358a2ffeba5593573f4d3a21080e5857243634768a1164736f6c63430008140033",
808
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101735760003560e01c8063893d20e8116100de578063c2bf08c811610097578063d943342d11610071578063d943342d146104cd578063e285c9c4146104e0578063ed841d0c146104e8578063fdd9ec7d146104f057600080fd5b8063c2bf08c81461048d578063cde749f4146104a0578063cf7a1d77146104ba57600080fd5b8063893d20e8146103e8578063946dfcfe146103f0578063a3f4df7e14610417578063a745e3df14610445578063b3c650151461045a578063b88da7591461047a57600080fd5b80634d459c90116101305780634d459c901461026e5780634f421333146103875780635ab1bd531461039a5780635c992fed146103ba578063644c45e0146103cd578063834af153146103d557600080fd5b806301ffc9a71461017857806309824a80146101ba5780630d8e6e2c146101e55780630fec111c1461020157806317d7de7c146102175780631eff4b221461024b575b600080fd5b6101a561018636600461216d565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101cd6101c83660046121c6565b610503565b6040516001600160601b0390911681526020016101b1565b6101ed610795565b60405162ffffff90911681526020016101b1565b61020961081f565b6040516101b19291906122a4565b60408051808201909152600f81526e52656769737472795365727669636560881b60208201525b6040516101b191906122d2565b610260600080516020612a3983398151915281565b6040519081526020016101b1565b61032a61027c3660046122f6565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152600080516020612a7983398151915262ffffff92831660009081526020918252604090819020815160a0810183528154958616815263010000009095046001600160a01b03908116938601939093526001015491821690840152600160a01b810464ffffffffff166060840152600160c81b900463ffffffff1660808301525090565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015164ffffffffff169082015260809182015163ffffffff169181019190915260a0016101b1565b6101a56103953660046122f6565b610953565b6103a2610a06565b6040516001600160a01b0390911681526020016101b1565b6101cd6103c8366004612451565b610a22565b6101cd610bc3565b6102096103e33660046121c6565b610c3e565b6103a2610d80565b7f4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed90154610260565b61023e6040518060400160405280600f81526020016e52656769737472795365727669636560881b81525081565b610458610453366004612523565b610dfb565b005b610462610f55565b6040516001600160401b0390911681526020016101b1565b6101ed610488366004612584565b610f76565b6101cd61049b366004612451565b610fc7565b6104a86110f1565b60405160ff90911681526020016101b1565b6104586104c8366004612523565b611174565b6102096104db36600461259d565b61127d565b6103a2600181565b610260600081565b6102096104fe3660046121c6565b6114ca565b6040516301ffc9a760e01b8152600090829082906001600160a01b038316906301ffc9a79061053d90633111e9af60e01b906004016125e8565b602060405180830381865afa925050508015610576575060408051601f3d908101601f1916820190925261057391810190612608565b60015b61058257506000610585565b90505b80156105a45760405163087cada760e21b815260040160405180910390fd5b60006105ae610a06565b604051630a57ebcf60e11b81526001600160a01b038216600482018190529192506314afd79e90602401602060405180830381865afa1580156105f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106199190612630565b6001600160a01b0316336001600160a01b03161461064a5760405163778d468d60e11b815260040160405180910390fd5b60006040518060e0016040528061065f600090565b6001600160601b03168152604051636939560f60e11b81526001600160a01b038516600482018190526020909201919063d272ac1e90602401602060405180830381865afa1580156106b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190612658565b6001600160601b03168152602001601e60ff168152600060208083018290526001600160a01b03808b166040808601919091526001606086015280519283018152928252608090930152516352efcf2760e11b815291925083169063a5df9e4e90610748908490600401612675565b6020604051808303816000875af1158015610767573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078b9190612658565b9695505050505050565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af41580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190612688565b905090565b61082761212f565b60606000600080516020612a3983398151915290506040518060e0016040528061084f600090565b6001600160601b0390811682528354600160a01b908190049091166020830152600184015490810460ff9081166040840152600160a81b820416151560608301523060808301526001600160a01b031660a082015260028301805460c0909201916108b9906126a5565b80601f01602080910402602001604051908101604052809291908181526020018280546108e5906126a5565b80156109325780601f1061090757610100808354040283529160200191610932565b820191906000526020600020905b81548152906001019060200180831161091557829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b600080600080516020612a7983398151915262ffffff84166000908152602091909152604090819020600101549051631bbffab160e21b8152600160c81b90910463ffffffff16600482015273__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af41580156109db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ff91906126df565b1192915050565b600080516020612a39833981519152546001600160a01b031690565b600080610a2d610a06565b604051636939560f60e11b81523360048201529091506000906001600160a01b0383169063d272ac1e90602401602060405180830381865afa158015610a77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9b9190612658565b90506001600160a01b038216635f1561518260d26040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865afa158015610afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1f9190612608565b1515600003610b4157604051632bb46a5f60e01b815260040160405180910390fd5b610b4c8460d2611654565b6040516352efcf2760e11b81526001600160a01b0383169063a5df9e4e90610b78908790600401612675565b6020604051808303816000875af1158015610b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbb9190612658565b949350505050565b6000600080516020612a3983398151915254604051636939560f60e11b81523060048201526001600160a01b039091169063d272ac1e90602401602060405180830381865afa158015610c1a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190612658565b610c4661212f565b6040516301ffc9a760e01b81526060906001600160a01b038416906301ffc9a790610c7c90630de7806f60e41b906004016125e8565b602060405180830381865afa158015610c99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbd9190612608565b1515600003610cdf57604051636795c76360e01b815260040160405180910390fd5b610cec8360325b3361178b565b90925090506000610cfb610a06565b6040516352efcf2760e11b81529091506001600160a01b0382169063a5df9e4e90610d2a908690600401612675565b6020604051808303816000875af1158015610d49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6d9190612658565b6001600160601b03168352509092909150565b6000600080516020612a3983398151915254604051630a57ebcf60e11b81523060048201526001600160a01b03909116906314afd79e90602401602060405180830381865afa158015610dd7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190612630565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c610e1d610795565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610e5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8191906126f8565b600080516020612a598339815191528054600160401b900460ff1680610eb4575080546001600160401b03808416911610155b15610ed25760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610efd8585611963565b610f0683611b9e565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15050505050565b600061081a600080516020612a59833981519152546001600160401b031690565b6000600080516020612a798339815191526001018281548110610f9b57610f9b612721565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b600080610fd2610a06565b604051636939560f60e11b81523360048201529091506000906001600160a01b0383169063d272ac1e90602401602060405180830381865afa15801561101c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110409190612658565b90506001600160a01b038216635f1561518260dc6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c49190612608565b15156000036110e657604051632bb46a5f60e01b815260040160405180910390fd5b610b4c8460dc611654565b60006110fb610795565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015611150573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190612742565b600080516020612a598339815191528054600160401b810460ff1615906001600160401b03166000811580156111a75750825b90506000826001600160401b031660011480156111c35750303b155b9050811580156111d1575080155b156111ef5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561121957845460ff60401b1916600160401b1785555b6112238888611963565b61122d8787611ba6565b831561127357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b61128561212f565b6040516301ffc9a760e01b81526060906001600160a01b038616906301ffc9a7906112bb90631b1599eb60e21b906004016125e8565b602060405180830381865afa1580156112d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fc9190612608565b151560000361131e57604051634138dc2760e11b815260040160405180910390fd5b61132985858561178b565b90925090506000611338610a06565b604051636939560f60e11b81523360048201529091506000906001600160a01b0383169063d272ac1e90602401602060405180830381865afa158015611382573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a69190612658565b604051635f15615160e01b81526001600160601b038216600482015260ff881660248201529091506001600160a01b03831690635f15615190604401602060405180830381865afa1580156113ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114239190612608565b151560000361144557604051632bb46a5f60e01b815260040160405180910390fd5b6040516352efcf2760e11b81526001600160a01b0383169063a5df9e4e90611471908790600401612675565b6020604051808303816000875af1158015611490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b49190612658565b6001600160601b0316845250505b935093915050565b6114d261212f565b6040516301ffc9a760e01b81526060906001600160a01b038416906301ffc9a79061150890631b4612f160e31b906004016125e8565b602060405180830381865afa158015611525573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115499190612608565b151560000361156b57604051635458064d60e11b815260040160405180910390fd5b611576836028610ce6565b90925090506000611585610a06565b604051630a57ebcf60e11b81526001600160a01b038216600482018190529192506314afd79e90602401602060405180830381865afa1580156115cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f09190612630565b6001600160a01b0316336001600160a01b0316146116215760405163778d468d60e11b815260040160405180910390fd5b600160a08401526040516352efcf2760e11b81526001600160a01b0382169063a5df9e4e90610d2a908690600401612675565b60808201516001600160a01b031615611696576080820151604051634726455360e11b81526001600160a01b0390911660048201526024015b60405180910390fd5b61169e610a06565b60a083015160405163c3c5a54760e01b81526001600160a01b03918216600482015291169063c3c5a54790602401602060405180830381865afa1580156116e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170d9190612608565b80611723575060a08201516001600160a01b0316155b156117525760a082015160405163711c133360e01b81526001600160a01b03909116600482015260240161168d565b604082015160ff82811691161461178757604080830151905163f503452760e01b815260ff909116600482015260240161168d565b5050565b61179361212f565b6060846001600160a01b0316630fec111c6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156117d3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117fb91908101906127a4565b608082015191935091506001600160a01b03868116911614611841576080820151604051634726455360e11b81526001600160a01b03909116600482015260240161168d565b611849610a06565b60405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa158015611891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b59190612608565b806118d65750826001600160a01b03168260a001516001600160a01b031614155b156119055760a082015160405163711c133360e01b81526001600160a01b03909116600482015260240161168d565b6001600160a01b038516330361192e576040516317faf4db60e11b815260040160405180910390fd5b604082015160ff8581169116146114c257604080830151905163f503452760e01b815260ff909116600482015260240161168d565b61196b611e68565b600080516020612a79833981519152600061199b600080516020612a59833981519152546001600160401b031690565b905060006119a7610795565b9050816001600160401b03166001036119d45760028301805462ffffff191662ffffff8316179055611a22565b600283015462ffffff90811690821611611a225760405162461bcd60e51b815260206004820152600f60248201526e24a72b20a624a2102b22a929a4a7a760891b604482015260640161168d565b6001808401805491820181556000908152602090819020600a808404909101805462ffffff808716600394909606939093026101000a858102930219169190911790556040805160a0810182529283526001600160a01b03808916928401929092529086169082015260608101611a964290565b64ffffffffff1681526020014363ffffffff90811690915262ffffff8084166000908152602087815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c81b0263ffffffff60c81b1964ffffffffff909716600160a01b026001600160c81b031990961692909416919091179390931793909316179055517fad0a0fc10465a8dd9da3ad5f43e1a7fff4b4578551c76f0ae8deb844f0d0bf6890610f469083908890889062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b610173611e68565b600080516020612a598339815191528054600160401b810460ff1615906001600160401b0316600081158015611bd95750825b90506000826001600160401b03166001148015611bf55750303b155b905081158015611c03575080155b15611c215760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611c4b57845460ff60401b1916600160401b1785555b600087611c566110f1565b604080516001600160a01b03909316602084015260ff9091169082015260600160408051601f1981840301815290829052631585e94960e21b8252915060009073__$b2e3f5fb9dc49bcf3e057142c7696ab68d$__90635617a52490611cc2908b90869060040161289c565b600060405180830381865af4158015611cdf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d0791908101906128af565b60405163257b1f8160e11b815290915060009073__$b2e3f5fb9dc49bcf3e057142c7696ab68d$__90634af63f0290611d4690859085906004016128e3565b602060405180830381865af4158015611d63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d879190612630565b604051636939560f60e11b81526001600160a01b03821660048201819052919250829160009163d272ac1e90602401602060405180830381865afa158015611dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df79190612658565b9050611e0483828e611ea1565b611e1463183a225360e11b611f25565b50505050508315611e5f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b600080516020612a5983398151915254600160401b900460ff16611e9f57604051631afcd79f60e31b815260040160405180910390fd5b565b6000611ecf60408051808201909152600f81526e52656769737472795365727669636560881b602082015290565b611ed76110f1565b604051602001611ee8929190612905565b6040516020818303038152906040529050611f0f8484611f06602890565b60008686611f4a565b611f1f631b4612f160e31b611f25565b50505050565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b6001600160a01b038616611fa05760405162461bcd60e51b815260206004820152601b60248201527f4552524f523a5247422d3031303a52454749535452595f5a45524f0000000000604482015260640161168d565b6040516301ffc9a760e01b815286906001600160a01b038216906301ffc9a790611fd590636882e63f60e11b906004016125e8565b602060405180830381865afa158015611ff2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120169190612608565b6120625760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a5247422d3031313a4e4f545f5245474953545259000000000000604482015260640161168d565b6001600160a01b03818116600160a01b6001600160601b038916810291909117600080516020612a398339815191529081557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30180546001600160a01b031961ffff60a01b1990911660ff8b1690940260ff60a81b191693909317600160a81b8915150217929092169286169290921790557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30261211e8482612979565b5061127363a6d3826560e01b611f25565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b60006020828403121561217f57600080fd5b81356001600160e01b03198116811461219757600080fd5b9392505050565b6001600160a01b03811681146121b357600080fd5b50565b80356121c18161219e565b919050565b6000602082840312156121d857600080fd5b81356121978161219e565b60005b838110156121fe5781810151838201526020016121e6565b50506000910152565b6000815180845261221f8160208601602086016121e3565b601f01601f19169290920160200192915050565b60006001600160601b038083511684528060208401511660208501525060ff6040830151166040840152606082015115156060840152608082015160018060a01b0380821660808601528060a08501511660a0860152505060c082015160e060c0850152610bbb60e0850182612207565b6040815260006122b76040830185612233565b82810360208401526122c98185612207565b95945050505050565b6020815260006121976020830184612207565b62ffffff811681146121b357600080fd5b60006020828403121561230857600080fd5b8135612197816122e5565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b038111828210171561234b5761234b612313565b60405290565b604051601f8201601f191681016001600160401b038111828210171561237957612379612313565b604052919050565b6001600160601b03811681146121b357600080fd5b80356121c181612381565b60ff811681146121b357600080fd5b80356121c1816123a1565b80151581146121b357600080fd5b80356121c1816123bb565b60006001600160401b038211156123ed576123ed612313565b50601f01601f191660200190565b600082601f83011261240c57600080fd5b813561241f61241a826123d4565b612351565b81815284602083860101111561243457600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561246357600080fd5b81356001600160401b038082111561247a57600080fd5b9083019060e0828603121561248e57600080fd5b612496612329565b61249f83612396565b81526124ad60208401612396565b60208201526124be604084016123b0565b60408201526124cf606084016123c9565b60608201526124e0608084016121b6565b60808201526124f160a084016121b6565b60a082015260c08301358281111561250857600080fd5b612514878286016123fb565b60c08301525095945050505050565b60008060006060848603121561253857600080fd5b83356125438161219e565b925060208401356125538161219e565b915060408401356001600160401b0381111561256e57600080fd5b61257a868287016123fb565b9150509250925092565b60006020828403121561259657600080fd5b5035919050565b6000806000606084860312156125b257600080fd5b83356125bd8161219e565b925060208401356125cd816123a1565b915060408401356125dd8161219e565b809150509250925092565b6001600160e01b031991909116815260200190565b80516121c1816123bb565b60006020828403121561261a57600080fd5b8151612197816123bb565b80516121c18161219e565b60006020828403121561264257600080fd5b81516121978161219e565b80516121c181612381565b60006020828403121561266a57600080fd5b815161219781612381565b6020815260006121976020830184612233565b60006020828403121561269a57600080fd5b8151612197816122e5565b600181811c908216806126b957607f821691505b6020821081036126d957634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156126f157600080fd5b5051919050565b60006020828403121561270a57600080fd5b81516001600160401b038116811461219757600080fd5b634e487b7160e01b600052603260045260246000fd5b80516121c1816123a1565b60006020828403121561275457600080fd5b8151612197816123a1565b600082601f83011261277057600080fd5b815161277e61241a826123d4565b81815284602083860101111561279357600080fd5b610bbb8260208301602087016121e3565b600080604083850312156127b757600080fd5b82516001600160401b03808211156127ce57600080fd5b9084019060e082870312156127e257600080fd5b6127ea612329565b6127f38361264d565b81526128016020840161264d565b602082015261281260408401612737565b6040820152612823606084016125fd565b606082015261283460808401612625565b608082015261284560a08401612625565b60a082015260c08301518281111561285c57600080fd5b6128688882860161275f565b60c083015250602086015190945091508082111561288557600080fd5b506128928582860161275f565b9150509250929050565b6040815260006122b76040830185612207565b6000602082840312156128c157600080fd5b81516001600160401b038111156128d757600080fd5b610bbb8482850161275f565b6040815260006128f66040830185612207565b90508260208301529392505050565b6040815260006129186040830185612207565b905060ff831660208301529392505050565b601f82111561297457600081815260208120601f850160051c810160208610156129515750805b601f850160051c820191505b818110156129705782815560010161295d565b5050505b505050565b81516001600160401b0381111561299257612992612313565b6129a6816129a084546126a5565b8461292a565b602080601f8311600181146129db57600084156129c35750858301515b600019600386901b1c1916600185901b178555612970565b600085815260208120601f198616915b82811015612a0a578886015182559484019460019091019084016129eb565b5085821015612a285787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fe6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a004f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900a26469706673582212204a8fa0eba55f83835553358a2ffeba5593573f4d3a21080e5857243634768a1164736f6c63430008140033",
1143
+ "bytecode": "0x60806040523480156200001157600080fd5b506301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055600280546001600160a01b031916331790556200006a62000070565b62000124565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000c15760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001215780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b61341180620001346000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c8063834af1531161010f578063b88da759116100a2578063cf7a1d7711610071578063cf7a1d77146105c4578063e285c9c4146105d7578063ed841d0c146105df578063fdd9ec7d146105e757600080fd5b8063b88da7591461057c578063bf7e214f1461058f578063c2bf08c814610597578063cde749f4146105aa57600080fd5b8063946dfcfe116100de578063946dfcfe146104f4578063a3f4df7e1461051b578063a745e3df14610549578063b3c650151461055c57600080fd5b8063834af153146104b1578063893d20e8146104c45780638fb36037146104cc5780638fbc2d81146104e157600080fd5b80634d459c90116101875780635d966289116101565780635d96628914610460578063644c45e0146104735780637286e5e51461048b5780637a9e5e4b1461049e57600080fd5b80634d459c90146102fc5780634f421333146104155780635ab1bd53146104285780635c992fed1461044d57600080fd5b80630fec111c116101c35780630fec111c14610273578063138461e01461028957806317d7de7c146102935780631eff4b22146102c757600080fd5b806301ffc9a7146101ea57806309824a801461022c5780630d8e6e2c14610257575b600080fd5b6102176101f8366004612975565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61023f61023a3660046129c4565b6105fa565b6040516001600160601b039091168152602001610223565b61025f610867565b60405162ffffff9091168152602001610223565b61027b6108f1565b604051610223929190612aa2565b610291610a44565b005b60408051808201909152600f81526e52656769737472795365727669636560881b60208201525b6040516102239190612ad0565b6102ee7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610223565b6103b861030a366004612af4565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526000805160206133bc83398151915262ffffff92831660009081526020918252604090819020815160a0810183528154958616815263010000009095046001600160a01b03908116938601939093526001015491821690840152600160a01b810464ffffffffff166060840152600160c81b900463ffffffff1660808301525090565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015164ffffffffff169082015260809182015163ffffffff169181019190915260a001610223565b610217610423366004612af4565b610c66565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610223565b61023f61045b366004612c4f565b610d19565b61027b61046e366004612d21565b610e1c565b600154600160a01b90046001600160601b031661023f565b61027b610499366004612d21565b611021565b6102916104ac3660046129c4565b6110d0565b61027b6104bf3660046129c4565b611157565b6104356112df565b6104d46113f8565b6040516102239190612d5a565b61027b6104ef366004612d21565b611431565b7f4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed901546102ee565b6102ba6040518060400160405280600f81526020016e52656769737472795365727669636560881b81525081565b610291610557366004612d6f565b6114e0565b61056461163a565b6040516001600160401b039091168152602001610223565b61025f61058a366004612dd0565b61165b565b6104356116ac565b61023f6105a5366004612c4f565b6116c8565b6105b261174d565b60405160ff9091168152602001610223565b6102916105d2366004612d6f565b6117d0565b610435600181565b6102ee600081565b61027b6105f53660046129c4565b6118d9565b60006001600160a01b0382163303610625576040516317faf4db60e11b815260040160405180910390fd5b6001600160a01b0382163b15806106485750610648826303fb044760e21b611a53565b156106665760405163087cada760e21b815260040160405180910390fd5b600154604051636939560f60e11b81526001600160a01b039091166004820181905260009163d272ac1e90602401602060405180830381865afa1580156106b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d59190612df4565b600154604051631c5da14d60e11b81526001600160601b03831660048201529192506001600160a01b0316906338bb429a90602401602060405180830381865afa158015610727573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074b9190612e1c565b6001600160a01b0316336001600160a01b03161461077c5760405163778d468d60e11b815260040160405180910390fd5b60006040518060e00160405280610791600090565b6001600160601b03168152602001836001600160601b031681526020016107b6603290565b60ff168152600060208083018290526001600160a01b0380891660408086019190915260016060860181905281519384018252938352608090940191909152905491516352efcf2760e11b8152929350169063a5df9e4e9061081c908490600401612e39565b6020604051808303816000875af115801561083b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085f9190612df4565b949350505050565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af41580156108c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ec9190612e4c565b905090565b6108f9612937565b606060007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e001604052806109456001546001600160601b03600160a01b9091041690565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a00161098d6112df565b6001600160a01b031681526020018260010180546109aa90612e69565b80601f01602080910402602001604051908101604052809291908181526020018280546109d690612e69565b8015610a235780601f106109f857610100808354040283529160200191610a23565b820191906000526020600020905b815481529060010190602001808311610a0657829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610aa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aca9190612eae565b15610b11576001546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b031660248201526044015b60405180910390fd5b6001546001600160a01b0316610b3a5760405163cf29926160e01b815260040160405180910390fd5b60015460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa158015610b83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba79190612eae565b610bcf576040516372657a5160e01b81526001600160a01b0382166004820152602401610b08565b600154604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa158015610c19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3d9190612df4565b600160146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b6000806000805160206133bc83398151915262ffffff84166000908152602091909152604090819020600101549051631bbffab160e21b8152600160c81b90910463ffffffff16600482015273__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af4158015610cee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d129190612ecb565b1192915050565b6000610d28335b600036611a6f565b600154604051636939560f60e11b81523360048201526000916001600160a01b03169063d272ac1e90602401602060405180830381865afa158015610d71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d959190612df4565b9050610da28360d2611b75565b6001546040516352efcf2760e11b81526001600160a01b039091169063a5df9e4e90610dd2908690600401612e39565b6020604051808303816000875af1158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e159190612df4565b9392505050565b610e24612937565b6060610e2f33610d20565b6040516301ffc9a760e01b81526001600160a01b038516906301ffc9a790610e62906379fc0e7160e11b90600401612d5a565b602060405180830381865afa158015610e7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea39190612eae565b610ec057604051637a71998760e01b815260040160405180910390fd5b610ecd84606e5b85611c72565b600154604051636939560f60e11b81523360048201529294509092506000916001600160a01b039091169063d272ac1e90602401602060405180830381865afa158015610f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f429190612df4565b6001546040516352efcf2760e11b81529192506001600160a01b03169063a5df9e4e90610f73908690600401612e39565b6020604051808303816000875af1158015610f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb69190612df4565b6001600160601b0316835260408051629c230f60e51b815290516001600160a01b0387169163138461e091600480830192600092919082900301818387803b15801561100157600080fd5b505af1158015611015573d6000803e3d6000fd5b50505050509250929050565b611029612937565b606061103433610d20565b6040516301ffc9a760e01b81526001600160a01b038516906301ffc9a79061106790638165cf9760e01b90600401612d5a565b602060405180830381865afa158015611084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a89190612eae565b6110c557604051636f61f64160e01b815260040160405180910390fd5b610ecd84608c610ec7565b336110d96116ac565b6001600160a01b0316816001600160a01b0316146111145760405162d1953b60e31b81526001600160a01b0382166004820152602401610b08565b816001600160a01b03163b60000361114a576040516361798f2f60e11b81526001600160a01b0383166004820152602401610b08565b61115382611e67565b5050565b61115f612937565b6040516301ffc9a760e01b81526060906001600160a01b038416906301ffc9a79061119590630de7806f60e41b90600401612d5a565b602060405180830381865afa1580156111b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d69190612eae565b6111f357604051636795c76360e01b815260040160405180910390fd5b6112008360465b33611c72565b6001546040516352efcf2760e11b81529294509092506001600160a01b03169063a5df9e4e90611234908590600401612e39565b6020604051808303816000875af1158015611253573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112779190612df4565b6001600160601b0316825260408051629c230f60e51b815290516001600160a01b0385169163138461e091600480830192600092919082900301818387803b1580156112c257600080fd5b505af11580156112d6573d6000803e3d6000fd5b50505050915091565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015611344573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113689190612eae565b156113e857600154604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a90602401602060405180830381865afa1580156113c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ec9190612e1c565b506002546001600160a01b031690565b60008051602061337c833981519152805460009190600160a01b900460ff1661142257600061142b565b638fb3603760e01b5b91505090565b611439612937565b606061144433610d20565b6040516301ffc9a760e01b81526001600160a01b038516906301ffc9a7906114779063b4d7c7a360e01b90600401612d5a565b602060405180830381865afa158015611494573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b89190612eae565b6114d5576040516308707e3160e41b815260040160405180910390fd5b610ecd846078610ec7565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c611502610867565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015611542573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115669190612ee4565b60008051602061339c8339815191528054600160401b900460ff1680611599575080546001600160401b03808416911610155b156115b75760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556115e28585611ec8565b6115eb83612167565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15050505050565b60006108ec60008051602061339c833981519152546001600160401b031690565b60006000805160206133bc833981519152600101828154811061168057611680612f0d565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b60008051602061337c833981519152546001600160a01b031690565b60006116d333610d20565b600154604051636939560f60e11b81523360048201526000916001600160a01b03169063d272ac1e90602401602060405180830381865afa15801561171c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117409190612df4565b9050610da28360dc611b75565b6000611757610867565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af41580156117ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ec9190612f2e565b60008051602061339c8339815191528054600160401b810460ff1615906001600160401b03166000811580156118035750825b90506000826001600160401b0316600114801561181f5750303b155b90508115801561182d575080155b1561184b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561187557845460ff60401b1916600160401b1785555b61187f8888611ec8565b611889878761216f565b83156118cf57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b6118e1612937565b6040516301ffc9a760e01b81526060906001600160a01b038416906301ffc9a79061191790631b4612f160e31b90600401612d5a565b602060405180830381865afa158015611934573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119589190612eae565b61197557604051635458064d60e11b815260040160405180910390fd5b61198083603c6111fa565b60015460408051631127a41d60e31b815290519395509193506001600160a01b03169163893d20e8916004808201926020929091908290030181865afa1580156119ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f29190612e1c565b6001600160a01b0316336001600160a01b031614611a235760405163778d468d60e11b815260040160405180910390fd5b6001546040516352efcf2760e11b81526001600160a01b039091169063a5df9e4e90611234908590600401612e39565b6000611a5e8361245d565b8015610e155750610e158383612491565b60008051602061337c833981519152600080611aaa611a8c6116ac565b8730611a9c600460008a8c612f4b565b611aa591612f75565b612514565b9150915081611b6d5763ffffffff811615611b4a57825460ff60a01b1916600160a01b178355611ad86116ac565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b8152600401611b0793929190612fa5565b600060405180830381600087803b158015611b2157600080fd5b505af1158015611b35573d6000803e3d6000fd5b5050845460ff60a01b1916855550611b6d9050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610b08565b505050505050565b60808201516001600160a01b031615611bb2576080820151604051634726455360e11b81526001600160a01b039091166004820152602401610b08565b6001546001600160a01b031660a083015160405163c3c5a54760e01b81526001600160a01b03918216600482015291169063c3c5a54790602401602060405180830381865afa158015611c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2d9190612eae565b80611c43575060a08201516001600160a01b0316155b156111535760a082015160405163711c133360e01b81526001600160a01b039091166004820152602401610b08565b611c7a612937565b6060846001600160a01b0316630fec111c6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611cba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ce2919081019061302a565b6001600160a01b03871660808301526040820151919350915060ff858116911614611d33576040808301519051632208245760e11b815260ff80871660048301529091166024820152604401610b08565b60a08201516001600160a01b0380821690851614611d6f5760405163dfc430cb60e01b81526001600160a01b0385166004820152602401610b08565b856001600160a01b0316816001600160a01b031603611da1576040516317faf4db60e11b815260040160405180910390fd5b6001600160a01b038116611dc857604051630fd187d360e01b815260040160405180910390fd5b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa158015611e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e409190612eae565b15611e5e57604051637142ceb360e11b815260040160405180910390fd5b50935093915050565b60008051602061337c83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b611ed0612620565b6000805160206133bc8339815191526000611f0060008051602061339c833981519152546001600160401b031690565b90506000611f0c610867565b9050816001600160401b0316600103611f395760028301805462ffffff191662ffffff8316179055611f87565b600283015462ffffff90811690821611611f875760405162461bcd60e51b815260206004820152600f60248201526e24a72b20a624a2102b22a929a4a7a760891b6044820152606401610b08565b6001808401805491820181556000908152602090819020600a808404909101805462ffffff808716600394909606939093026101000a858102930219169190911790556040805160a0810182529283526001600160a01b038089168484015287168382015280516356db0c1960e11b81529051606084019273__$d53880c81dc91c20799140d711e5ab8718$__9263adb6183292600480830193928290030181865af415801561203b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205f9190613122565b64ffffffffff1681526020014363ffffffff90811690915262ffffff8084166000908152602087815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c81b0263ffffffff60c81b1964ffffffffff909716600160a01b026001600160c81b031990961692909416919091179390931793909316179055517fad0a0fc10465a8dd9da3ad5f43e1a7fff4b4578551c76f0ae8deb844f0d0bf689061162b9083908890889062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b6101e5612620565b60008051602061339c8339815191528054600160401b810460ff1615906001600160401b03166000811580156121a25750825b90506000826001600160401b031660011480156121be5750303b155b9050811580156121cc575080155b156121ea5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561221457845460ff60401b1916600160401b1785555b6000808780602001905181019061222b9190613149565b9150915061223882612659565b60008961224361174d565b604080516001600160a01b03909316602084015260ff9091169082015260600160408051601f1981840301815290829052631585e94960e21b8252915060009073__$b2e3f5fb9dc49bcf3e057142c7696ab68d$__90635617a524906122af908690869060040161318f565b600060405180830381865af41580156122cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122f491908101906131a2565b60405163257b1f8160e11b815290915060009073__$b2e3f5fb9dc49bcf3e057142c7696ab68d$__90634af63f029061233390859085906004016131d6565b602060405180830381865af4158015612350573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123749190612e1c565b604051636939560f60e11b81526001600160a01b038216600482018190529192506000919063d272ac1e90602401602060405180830381865afa1580156123bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e39190612df4565b90506123f082828f61266d565b6123f8610a44565b6124086324cded3360e11b6126f1565b505050505050831561245457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6000612470826301ffc9a760e01b612491565b801561248b5750612489826001600160e01b0319612491565b155b92915050565b600080826040516024016124a59190612d5a565b60408051601f19818403018152919052602080820180516001600160e01b03166301ffc9a760e01b178152825192935060009283928392909183918a617530fa92503d915060005190508280156124fd575060208210155b80156125095750600081115b979650505050505050565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b1790525161258391906131f8565b600060405180830381855afa9150503d80600081146125be576040519150601f19603f3d011682016040523d82523d6000602084013e6125c3565b606091505b509150915081156126155760408151106125f557808060200190518101906125eb9190613214565b9094509250612615565b602081511061261557808060200190518101906126129190612eae565b93505b505094509492505050565b60008051602061339c83398151915254600160401b900460ff1661265757604051631afcd79f60e31b815260040160405180910390fd5b565b612661612620565b61266a81612716565b50565b600061269b60408051808201909152600f81526e52656769737472795365727669636560881b602082015290565b6126a361174d565b6040516020016126b492919061324c565b60405160208183030381529060405290506126db84846126d2603c90565b60008686612727565b6126eb631b4612f160e31b6126f1565b50505050565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b61271e612620565b61266a81611e67565b61273182876127b2565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b861515021781559050600181016127a183826132bc565b506124546303fb044760e21b6126f1565b600280546001600160a01b0319166001600160a01b038416179055611153816001546001600160a01b03161561280a5760015460405163fcdbf2d960e01b81526001600160a01b039091166004820152602401610b08565b6001600160a01b0381166128315760405163f5c4d07d60e01b815260040160405180910390fd5b806001600160a01b03163b6000036128675760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610b08565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b81526301ffc9a7906128ad9063350fb35160e11b90600401612d5a565b602060405180830381865afa9250505080156128e6575060408051601f3d908101601f191682019092526128e391810190612eae565b60015b61290e5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610b08565b806111535760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610b08565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b60006020828403121561298757600080fd5b81356001600160e01b031981168114610e1557600080fd5b6001600160a01b038116811461266a57600080fd5b80356129bf8161299f565b919050565b6000602082840312156129d657600080fd5b8135610e158161299f565b60005b838110156129fc5781810151838201526020016129e4565b50506000910152565b60008151808452612a1d8160208601602086016129e1565b601f01601f19169290920160200192915050565b60006001600160601b038083511684528060208401511660208501525060ff6040830151166040840152606082015115156060840152608082015160018060a01b0380821660808601528060a08501511660a0860152505060c082015160e060c085015261085f60e0850182612a05565b604081526000612ab56040830185612a31565b8281036020840152612ac78185612a05565b95945050505050565b602081526000610e156020830184612a05565b62ffffff8116811461266a57600080fd5b600060208284031215612b0657600080fd5b8135610e1581612ae3565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715612b4957612b49612b11565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612b7757612b77612b11565b604052919050565b6001600160601b038116811461266a57600080fd5b80356129bf81612b7f565b60ff8116811461266a57600080fd5b80356129bf81612b9f565b801515811461266a57600080fd5b80356129bf81612bb9565b60006001600160401b03821115612beb57612beb612b11565b50601f01601f191660200190565b600082601f830112612c0a57600080fd5b8135612c1d612c1882612bd2565b612b4f565b818152846020838601011115612c3257600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612c6157600080fd5b81356001600160401b0380821115612c7857600080fd5b9083019060e08286031215612c8c57600080fd5b612c94612b27565b612c9d83612b94565b8152612cab60208401612b94565b6020820152612cbc60408401612bae565b6040820152612ccd60608401612bc7565b6060820152612cde608084016129b4565b6080820152612cef60a084016129b4565b60a082015260c083013582811115612d0657600080fd5b612d1287828601612bf9565b60c08301525095945050505050565b60008060408385031215612d3457600080fd5b8235612d3f8161299f565b91506020830135612d4f8161299f565b809150509250929050565b6001600160e01b031991909116815260200190565b600080600060608486031215612d8457600080fd5b8335612d8f8161299f565b92506020840135612d9f8161299f565b915060408401356001600160401b03811115612dba57600080fd5b612dc686828701612bf9565b9150509250925092565b600060208284031215612de257600080fd5b5035919050565b80516129bf81612b7f565b600060208284031215612e0657600080fd5b8151610e1581612b7f565b80516129bf8161299f565b600060208284031215612e2e57600080fd5b8151610e158161299f565b602081526000610e156020830184612a31565b600060208284031215612e5e57600080fd5b8151610e1581612ae3565b600181811c90821680612e7d57607f821691505b602082108103612e9d57634e487b7160e01b600052602260045260246000fd5b50919050565b80516129bf81612bb9565b600060208284031215612ec057600080fd5b8151610e1581612bb9565b600060208284031215612edd57600080fd5b5051919050565b600060208284031215612ef657600080fd5b81516001600160401b0381168114610e1557600080fd5b634e487b7160e01b600052603260045260246000fd5b80516129bf81612b9f565b600060208284031215612f4057600080fd5b8151610e1581612b9f565b60008085851115612f5b57600080fd5b83861115612f6857600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015612f9d5780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b600082601f830112612ff657600080fd5b8151613004612c1882612bd2565b81815284602083860101111561301957600080fd5b61085f8260208301602087016129e1565b6000806040838503121561303d57600080fd5b82516001600160401b038082111561305457600080fd5b9084019060e0828703121561306857600080fd5b613070612b27565b61307983612de9565b815261308760208401612de9565b602082015261309860408401612f23565b60408201526130a960608401612ea3565b60608201526130ba60808401612e11565b60808201526130cb60a08401612e11565b60a082015260c0830151828111156130e257600080fd5b6130ee88828601612fe5565b60c083015250602086015190945091508082111561310b57600080fd5b5061311885828601612fe5565b9150509250929050565b60006020828403121561313457600080fd5b815164ffffffffff81168114610e1557600080fd5b6000806040838503121561315c57600080fd5b82516131678161299f565b60208401519092506001600160401b0381111561318357600080fd5b61311885828601612fe5565b604081526000612ab56040830185612a05565b6000602082840312156131b457600080fd5b81516001600160401b038111156131ca57600080fd5b61085f84828501612fe5565b6040815260006131e96040830185612a05565b90508260208301529392505050565b6000825161320a8184602087016129e1565b9190910192915050565b6000806040838503121561322757600080fd5b825161323281612bb9565b602084015190925063ffffffff81168114612d4f57600080fd5b60408152600061325f6040830185612a05565b905060ff831660208301529392505050565b601f8211156132b757600081815260208120601f850160051c810160208610156132985750805b601f850160051c820191505b81811015611b6d578281556001016132a4565b505050565b81516001600160401b038111156132d5576132d5612b11565b6132e9816132e38454612e69565b84613271565b602080601f83116001811461331e57600084156133065750858301515b600019600386901b1c1916600185901b178555611b6d565b600085815260208120601f198616915b8281101561334d5788860151825594840194600190910190840161332e565b508582101561336b5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a004f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900a26469706673582212209efa492222e50de6cfb89d7a6df6293cab02a04b1dce536a4fd6389eb9b5943e64736f6c63430008140033",
1144
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101e55760003560e01c8063834af1531161010f578063b88da759116100a2578063cf7a1d7711610071578063cf7a1d77146105c4578063e285c9c4146105d7578063ed841d0c146105df578063fdd9ec7d146105e757600080fd5b8063b88da7591461057c578063bf7e214f1461058f578063c2bf08c814610597578063cde749f4146105aa57600080fd5b8063946dfcfe116100de578063946dfcfe146104f4578063a3f4df7e1461051b578063a745e3df14610549578063b3c650151461055c57600080fd5b8063834af153146104b1578063893d20e8146104c45780638fb36037146104cc5780638fbc2d81146104e157600080fd5b80634d459c90116101875780635d966289116101565780635d96628914610460578063644c45e0146104735780637286e5e51461048b5780637a9e5e4b1461049e57600080fd5b80634d459c90146102fc5780634f421333146104155780635ab1bd53146104285780635c992fed1461044d57600080fd5b80630fec111c116101c35780630fec111c14610273578063138461e01461028957806317d7de7c146102935780631eff4b22146102c757600080fd5b806301ffc9a7146101ea57806309824a801461022c5780630d8e6e2c14610257575b600080fd5b6102176101f8366004612975565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61023f61023a3660046129c4565b6105fa565b6040516001600160601b039091168152602001610223565b61025f610867565b60405162ffffff9091168152602001610223565b61027b6108f1565b604051610223929190612aa2565b610291610a44565b005b60408051808201909152600f81526e52656769737472795365727669636560881b60208201525b6040516102239190612ad0565b6102ee7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610223565b6103b861030a366004612af4565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526000805160206133bc83398151915262ffffff92831660009081526020918252604090819020815160a0810183528154958616815263010000009095046001600160a01b03908116938601939093526001015491821690840152600160a01b810464ffffffffff166060840152600160c81b900463ffffffff1660808301525090565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015164ffffffffff169082015260809182015163ffffffff169181019190915260a001610223565b610217610423366004612af4565b610c66565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610223565b61023f61045b366004612c4f565b610d19565b61027b61046e366004612d21565b610e1c565b600154600160a01b90046001600160601b031661023f565b61027b610499366004612d21565b611021565b6102916104ac3660046129c4565b6110d0565b61027b6104bf3660046129c4565b611157565b6104356112df565b6104d46113f8565b6040516102239190612d5a565b61027b6104ef366004612d21565b611431565b7f4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed901546102ee565b6102ba6040518060400160405280600f81526020016e52656769737472795365727669636560881b81525081565b610291610557366004612d6f565b6114e0565b61056461163a565b6040516001600160401b039091168152602001610223565b61025f61058a366004612dd0565b61165b565b6104356116ac565b61023f6105a5366004612c4f565b6116c8565b6105b261174d565b60405160ff9091168152602001610223565b6102916105d2366004612d6f565b6117d0565b610435600181565b6102ee600081565b61027b6105f53660046129c4565b6118d9565b60006001600160a01b0382163303610625576040516317faf4db60e11b815260040160405180910390fd5b6001600160a01b0382163b15806106485750610648826303fb044760e21b611a53565b156106665760405163087cada760e21b815260040160405180910390fd5b600154604051636939560f60e11b81526001600160a01b039091166004820181905260009163d272ac1e90602401602060405180830381865afa1580156106b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d59190612df4565b600154604051631c5da14d60e11b81526001600160601b03831660048201529192506001600160a01b0316906338bb429a90602401602060405180830381865afa158015610727573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074b9190612e1c565b6001600160a01b0316336001600160a01b03161461077c5760405163778d468d60e11b815260040160405180910390fd5b60006040518060e00160405280610791600090565b6001600160601b03168152602001836001600160601b031681526020016107b6603290565b60ff168152600060208083018290526001600160a01b0380891660408086019190915260016060860181905281519384018252938352608090940191909152905491516352efcf2760e11b8152929350169063a5df9e4e9061081c908490600401612e39565b6020604051808303816000875af115801561083b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085f9190612df4565b949350505050565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af41580156108c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ec9190612e4c565b905090565b6108f9612937565b606060007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e001604052806109456001546001600160601b03600160a01b9091041690565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a00161098d6112df565b6001600160a01b031681526020018260010180546109aa90612e69565b80601f01602080910402602001604051908101604052809291908181526020018280546109d690612e69565b8015610a235780601f106109f857610100808354040283529160200191610a23565b820191906000526020600020905b815481529060010190602001808311610a0657829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610aa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aca9190612eae565b15610b11576001546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b031660248201526044015b60405180910390fd5b6001546001600160a01b0316610b3a5760405163cf29926160e01b815260040160405180910390fd5b60015460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa158015610b83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba79190612eae565b610bcf576040516372657a5160e01b81526001600160a01b0382166004820152602401610b08565b600154604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa158015610c19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3d9190612df4565b600160146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b6000806000805160206133bc83398151915262ffffff84166000908152602091909152604090819020600101549051631bbffab160e21b8152600160c81b90910463ffffffff16600482015273__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af4158015610cee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d129190612ecb565b1192915050565b6000610d28335b600036611a6f565b600154604051636939560f60e11b81523360048201526000916001600160a01b03169063d272ac1e90602401602060405180830381865afa158015610d71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d959190612df4565b9050610da28360d2611b75565b6001546040516352efcf2760e11b81526001600160a01b039091169063a5df9e4e90610dd2908690600401612e39565b6020604051808303816000875af1158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e159190612df4565b9392505050565b610e24612937565b6060610e2f33610d20565b6040516301ffc9a760e01b81526001600160a01b038516906301ffc9a790610e62906379fc0e7160e11b90600401612d5a565b602060405180830381865afa158015610e7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea39190612eae565b610ec057604051637a71998760e01b815260040160405180910390fd5b610ecd84606e5b85611c72565b600154604051636939560f60e11b81523360048201529294509092506000916001600160a01b039091169063d272ac1e90602401602060405180830381865afa158015610f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f429190612df4565b6001546040516352efcf2760e11b81529192506001600160a01b03169063a5df9e4e90610f73908690600401612e39565b6020604051808303816000875af1158015610f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb69190612df4565b6001600160601b0316835260408051629c230f60e51b815290516001600160a01b0387169163138461e091600480830192600092919082900301818387803b15801561100157600080fd5b505af1158015611015573d6000803e3d6000fd5b50505050509250929050565b611029612937565b606061103433610d20565b6040516301ffc9a760e01b81526001600160a01b038516906301ffc9a79061106790638165cf9760e01b90600401612d5a565b602060405180830381865afa158015611084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a89190612eae565b6110c557604051636f61f64160e01b815260040160405180910390fd5b610ecd84608c610ec7565b336110d96116ac565b6001600160a01b0316816001600160a01b0316146111145760405162d1953b60e31b81526001600160a01b0382166004820152602401610b08565b816001600160a01b03163b60000361114a576040516361798f2f60e11b81526001600160a01b0383166004820152602401610b08565b61115382611e67565b5050565b61115f612937565b6040516301ffc9a760e01b81526060906001600160a01b038416906301ffc9a79061119590630de7806f60e41b90600401612d5a565b602060405180830381865afa1580156111b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d69190612eae565b6111f357604051636795c76360e01b815260040160405180910390fd5b6112008360465b33611c72565b6001546040516352efcf2760e11b81529294509092506001600160a01b03169063a5df9e4e90611234908590600401612e39565b6020604051808303816000875af1158015611253573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112779190612df4565b6001600160601b0316825260408051629c230f60e51b815290516001600160a01b0385169163138461e091600480830192600092919082900301818387803b1580156112c257600080fd5b505af11580156112d6573d6000803e3d6000fd5b50505050915091565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015611344573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113689190612eae565b156113e857600154604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a90602401602060405180830381865afa1580156113c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ec9190612e1c565b506002546001600160a01b031690565b60008051602061337c833981519152805460009190600160a01b900460ff1661142257600061142b565b638fb3603760e01b5b91505090565b611439612937565b606061144433610d20565b6040516301ffc9a760e01b81526001600160a01b038516906301ffc9a7906114779063b4d7c7a360e01b90600401612d5a565b602060405180830381865afa158015611494573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b89190612eae565b6114d5576040516308707e3160e41b815260040160405180910390fd5b610ecd846078610ec7565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c611502610867565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015611542573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115669190612ee4565b60008051602061339c8339815191528054600160401b900460ff1680611599575080546001600160401b03808416911610155b156115b75760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556115e28585611ec8565b6115eb83612167565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15050505050565b60006108ec60008051602061339c833981519152546001600160401b031690565b60006000805160206133bc833981519152600101828154811061168057611680612f0d565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b60008051602061337c833981519152546001600160a01b031690565b60006116d333610d20565b600154604051636939560f60e11b81523360048201526000916001600160a01b03169063d272ac1e90602401602060405180830381865afa15801561171c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117409190612df4565b9050610da28360dc611b75565b6000611757610867565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af41580156117ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ec9190612f2e565b60008051602061339c8339815191528054600160401b810460ff1615906001600160401b03166000811580156118035750825b90506000826001600160401b0316600114801561181f5750303b155b90508115801561182d575080155b1561184b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561187557845460ff60401b1916600160401b1785555b61187f8888611ec8565b611889878761216f565b83156118cf57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b6118e1612937565b6040516301ffc9a760e01b81526060906001600160a01b038416906301ffc9a79061191790631b4612f160e31b90600401612d5a565b602060405180830381865afa158015611934573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119589190612eae565b61197557604051635458064d60e11b815260040160405180910390fd5b61198083603c6111fa565b60015460408051631127a41d60e31b815290519395509193506001600160a01b03169163893d20e8916004808201926020929091908290030181865afa1580156119ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f29190612e1c565b6001600160a01b0316336001600160a01b031614611a235760405163778d468d60e11b815260040160405180910390fd5b6001546040516352efcf2760e11b81526001600160a01b039091169063a5df9e4e90611234908590600401612e39565b6000611a5e8361245d565b8015610e155750610e158383612491565b60008051602061337c833981519152600080611aaa611a8c6116ac565b8730611a9c600460008a8c612f4b565b611aa591612f75565b612514565b9150915081611b6d5763ffffffff811615611b4a57825460ff60a01b1916600160a01b178355611ad86116ac565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b8152600401611b0793929190612fa5565b600060405180830381600087803b158015611b2157600080fd5b505af1158015611b35573d6000803e3d6000fd5b5050845460ff60a01b1916855550611b6d9050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610b08565b505050505050565b60808201516001600160a01b031615611bb2576080820151604051634726455360e11b81526001600160a01b039091166004820152602401610b08565b6001546001600160a01b031660a083015160405163c3c5a54760e01b81526001600160a01b03918216600482015291169063c3c5a54790602401602060405180830381865afa158015611c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2d9190612eae565b80611c43575060a08201516001600160a01b0316155b156111535760a082015160405163711c133360e01b81526001600160a01b039091166004820152602401610b08565b611c7a612937565b6060846001600160a01b0316630fec111c6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611cba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ce2919081019061302a565b6001600160a01b03871660808301526040820151919350915060ff858116911614611d33576040808301519051632208245760e11b815260ff80871660048301529091166024820152604401610b08565b60a08201516001600160a01b0380821690851614611d6f5760405163dfc430cb60e01b81526001600160a01b0385166004820152602401610b08565b856001600160a01b0316816001600160a01b031603611da1576040516317faf4db60e11b815260040160405180910390fd5b6001600160a01b038116611dc857604051630fd187d360e01b815260040160405180910390fd5b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa158015611e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e409190612eae565b15611e5e57604051637142ceb360e11b815260040160405180910390fd5b50935093915050565b60008051602061337c83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b611ed0612620565b6000805160206133bc8339815191526000611f0060008051602061339c833981519152546001600160401b031690565b90506000611f0c610867565b9050816001600160401b0316600103611f395760028301805462ffffff191662ffffff8316179055611f87565b600283015462ffffff90811690821611611f875760405162461bcd60e51b815260206004820152600f60248201526e24a72b20a624a2102b22a929a4a7a760891b6044820152606401610b08565b6001808401805491820181556000908152602090819020600a808404909101805462ffffff808716600394909606939093026101000a858102930219169190911790556040805160a0810182529283526001600160a01b038089168484015287168382015280516356db0c1960e11b81529051606084019273__$d53880c81dc91c20799140d711e5ab8718$__9263adb6183292600480830193928290030181865af415801561203b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205f9190613122565b64ffffffffff1681526020014363ffffffff90811690915262ffffff8084166000908152602087815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c81b0263ffffffff60c81b1964ffffffffff909716600160a01b026001600160c81b031990961692909416919091179390931793909316179055517fad0a0fc10465a8dd9da3ad5f43e1a7fff4b4578551c76f0ae8deb844f0d0bf689061162b9083908890889062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b6101e5612620565b60008051602061339c8339815191528054600160401b810460ff1615906001600160401b03166000811580156121a25750825b90506000826001600160401b031660011480156121be5750303b155b9050811580156121cc575080155b156121ea5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561221457845460ff60401b1916600160401b1785555b6000808780602001905181019061222b9190613149565b9150915061223882612659565b60008961224361174d565b604080516001600160a01b03909316602084015260ff9091169082015260600160408051601f1981840301815290829052631585e94960e21b8252915060009073__$b2e3f5fb9dc49bcf3e057142c7696ab68d$__90635617a524906122af908690869060040161318f565b600060405180830381865af41580156122cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122f491908101906131a2565b60405163257b1f8160e11b815290915060009073__$b2e3f5fb9dc49bcf3e057142c7696ab68d$__90634af63f029061233390859085906004016131d6565b602060405180830381865af4158015612350573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123749190612e1c565b604051636939560f60e11b81526001600160a01b038216600482018190529192506000919063d272ac1e90602401602060405180830381865afa1580156123bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e39190612df4565b90506123f082828f61266d565b6123f8610a44565b6124086324cded3360e11b6126f1565b505050505050831561245457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6000612470826301ffc9a760e01b612491565b801561248b5750612489826001600160e01b0319612491565b155b92915050565b600080826040516024016124a59190612d5a565b60408051601f19818403018152919052602080820180516001600160e01b03166301ffc9a760e01b178152825192935060009283928392909183918a617530fa92503d915060005190508280156124fd575060208210155b80156125095750600081115b979650505050505050565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b1790525161258391906131f8565b600060405180830381855afa9150503d80600081146125be576040519150601f19603f3d011682016040523d82523d6000602084013e6125c3565b606091505b509150915081156126155760408151106125f557808060200190518101906125eb9190613214565b9094509250612615565b602081511061261557808060200190518101906126129190612eae565b93505b505094509492505050565b60008051602061339c83398151915254600160401b900460ff1661265757604051631afcd79f60e31b815260040160405180910390fd5b565b612661612620565b61266a81612716565b50565b600061269b60408051808201909152600f81526e52656769737472795365727669636560881b602082015290565b6126a361174d565b6040516020016126b492919061324c565b60405160208183030381529060405290506126db84846126d2603c90565b60008686612727565b6126eb631b4612f160e31b6126f1565b50505050565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b61271e612620565b61266a81611e67565b61273182876127b2565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b861515021781559050600181016127a183826132bc565b506124546303fb044760e21b6126f1565b600280546001600160a01b0319166001600160a01b038416179055611153816001546001600160a01b03161561280a5760015460405163fcdbf2d960e01b81526001600160a01b039091166004820152602401610b08565b6001600160a01b0381166128315760405163f5c4d07d60e01b815260040160405180910390fd5b806001600160a01b03163b6000036128675760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610b08565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b81526301ffc9a7906128ad9063350fb35160e11b90600401612d5a565b602060405180830381865afa9250505080156128e6575060408051601f3d908101601f191682019092526128e391810190612eae565b60015b61290e5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610b08565b806111535760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610b08565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b60006020828403121561298757600080fd5b81356001600160e01b031981168114610e1557600080fd5b6001600160a01b038116811461266a57600080fd5b80356129bf8161299f565b919050565b6000602082840312156129d657600080fd5b8135610e158161299f565b60005b838110156129fc5781810151838201526020016129e4565b50506000910152565b60008151808452612a1d8160208601602086016129e1565b601f01601f19169290920160200192915050565b60006001600160601b038083511684528060208401511660208501525060ff6040830151166040840152606082015115156060840152608082015160018060a01b0380821660808601528060a08501511660a0860152505060c082015160e060c085015261085f60e0850182612a05565b604081526000612ab56040830185612a31565b8281036020840152612ac78185612a05565b95945050505050565b602081526000610e156020830184612a05565b62ffffff8116811461266a57600080fd5b600060208284031215612b0657600080fd5b8135610e1581612ae3565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715612b4957612b49612b11565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612b7757612b77612b11565b604052919050565b6001600160601b038116811461266a57600080fd5b80356129bf81612b7f565b60ff8116811461266a57600080fd5b80356129bf81612b9f565b801515811461266a57600080fd5b80356129bf81612bb9565b60006001600160401b03821115612beb57612beb612b11565b50601f01601f191660200190565b600082601f830112612c0a57600080fd5b8135612c1d612c1882612bd2565b612b4f565b818152846020838601011115612c3257600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612c6157600080fd5b81356001600160401b0380821115612c7857600080fd5b9083019060e08286031215612c8c57600080fd5b612c94612b27565b612c9d83612b94565b8152612cab60208401612b94565b6020820152612cbc60408401612bae565b6040820152612ccd60608401612bc7565b6060820152612cde608084016129b4565b6080820152612cef60a084016129b4565b60a082015260c083013582811115612d0657600080fd5b612d1287828601612bf9565b60c08301525095945050505050565b60008060408385031215612d3457600080fd5b8235612d3f8161299f565b91506020830135612d4f8161299f565b809150509250929050565b6001600160e01b031991909116815260200190565b600080600060608486031215612d8457600080fd5b8335612d8f8161299f565b92506020840135612d9f8161299f565b915060408401356001600160401b03811115612dba57600080fd5b612dc686828701612bf9565b9150509250925092565b600060208284031215612de257600080fd5b5035919050565b80516129bf81612b7f565b600060208284031215612e0657600080fd5b8151610e1581612b7f565b80516129bf8161299f565b600060208284031215612e2e57600080fd5b8151610e158161299f565b602081526000610e156020830184612a31565b600060208284031215612e5e57600080fd5b8151610e1581612ae3565b600181811c90821680612e7d57607f821691505b602082108103612e9d57634e487b7160e01b600052602260045260246000fd5b50919050565b80516129bf81612bb9565b600060208284031215612ec057600080fd5b8151610e1581612bb9565b600060208284031215612edd57600080fd5b5051919050565b600060208284031215612ef657600080fd5b81516001600160401b0381168114610e1557600080fd5b634e487b7160e01b600052603260045260246000fd5b80516129bf81612b9f565b600060208284031215612f4057600080fd5b8151610e1581612b9f565b60008085851115612f5b57600080fd5b83861115612f6857600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015612f9d5780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b600082601f830112612ff657600080fd5b8151613004612c1882612bd2565b81815284602083860101111561301957600080fd5b61085f8260208301602087016129e1565b6000806040838503121561303d57600080fd5b82516001600160401b038082111561305457600080fd5b9084019060e0828703121561306857600080fd5b613070612b27565b61307983612de9565b815261308760208401612de9565b602082015261309860408401612f23565b60408201526130a960608401612ea3565b60608201526130ba60808401612e11565b60808201526130cb60a08401612e11565b60a082015260c0830151828111156130e257600080fd5b6130ee88828601612fe5565b60c083015250602086015190945091508082111561310b57600080fd5b5061311885828601612fe5565b9150509250929050565b60006020828403121561313457600080fd5b815164ffffffffff81168114610e1557600080fd5b6000806040838503121561315c57600080fd5b82516131678161299f565b60208401519092506001600160401b0381111561318357600080fd5b61311885828601612fe5565b604081526000612ab56040830185612a05565b6000602082840312156131b457600080fd5b81516001600160401b038111156131ca57600080fd5b61085f84828501612fe5565b6040815260006131e96040830185612a05565b90508260208301529392505050565b6000825161320a8184602087016129e1565b9190910192915050565b6000806040838503121561322757600080fd5b825161323281612bb9565b602084015190925063ffffffff81168114612d4f57600080fd5b60408152600061325f6040830185612a05565b905060ff831660208301529392505050565b601f8211156132b757600081815260208120601f850160051c810160208610156132985750805b601f850160051c820191505b81811015611b6d578281556001016132a4565b505050565b81516001600160401b038111156132d5576132d5612b11565b6132e9816132e38454612e69565b84613271565b602080601f83116001811461331e57600084156133065750858301515b600019600386901b1c1916600185901b178555611b6d565b600085815260208120601f198616915b8281101561334d5788860151825594840194600190910190840161332e565b508582101561336b5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a004f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900a26469706673582212209efa492222e50de6cfb89d7a6df6293cab02a04b1dce536a4fd6389eb9b5943e64736f6c63430008140033",
809
1145
  "linkReferences": {
810
1146
  "contracts/shared/ContractDeployerLib.sol": {
811
1147
  "ContractDeployerLib": [
812
1148
  {
813
1149
  "length": 20,
814
- "start": 7610
1150
+ "start": 9145
815
1151
  },
816
1152
  {
817
1153
  "length": 20,
818
- "start": 7742
1154
+ "start": 9277
819
1155
  }
820
1156
  ]
821
1157
  },
@@ -823,7 +1159,27 @@
823
1159
  "BlocknumberLib": [
824
1160
  {
825
1161
  "length": 20,
826
- "start": 2755
1162
+ "start": 3560
1163
+ }
1164
+ ]
1165
+ },
1166
+ "contracts/types/NftId.sol": {
1167
+ "NftIdLib": [
1168
+ {
1169
+ "length": 20,
1170
+ "start": 2976
1171
+ },
1172
+ {
1173
+ "length": 20,
1174
+ "start": 5182
1175
+ }
1176
+ ]
1177
+ },
1178
+ "contracts/types/Timestamp.sol": {
1179
+ "TimestampLib": [
1180
+ {
1181
+ "length": 20,
1182
+ "start": 8501
827
1183
  }
828
1184
  ]
829
1185
  },
@@ -831,15 +1187,15 @@
831
1187
  "VersionLib": [
832
1188
  {
833
1189
  "length": 20,
834
- "start": 2270
1190
+ "start": 2498
835
1191
  },
836
1192
  {
837
1193
  "length": 20,
838
- "start": 3871
1194
+ "start": 5654
839
1195
  },
840
1196
  {
841
1197
  "length": 20,
842
- "start": 4664
1198
+ "start": 6310
843
1199
  }
844
1200
  ]
845
1201
  }
@@ -849,11 +1205,11 @@
849
1205
  "ContractDeployerLib": [
850
1206
  {
851
1207
  "length": 20,
852
- "start": 7320
1208
+ "start": 8837
853
1209
  },
854
1210
  {
855
1211
  "length": 20,
856
- "start": 7452
1212
+ "start": 8969
857
1213
  }
858
1214
  ]
859
1215
  },
@@ -861,7 +1217,27 @@
861
1217
  "BlocknumberLib": [
862
1218
  {
863
1219
  "length": 20,
864
- "start": 2465
1220
+ "start": 3252
1221
+ }
1222
+ ]
1223
+ },
1224
+ "contracts/types/NftId.sol": {
1225
+ "NftIdLib": [
1226
+ {
1227
+ "length": 20,
1228
+ "start": 2668
1229
+ },
1230
+ {
1231
+ "length": 20,
1232
+ "start": 4874
1233
+ }
1234
+ ]
1235
+ },
1236
+ "contracts/types/Timestamp.sol": {
1237
+ "TimestampLib": [
1238
+ {
1239
+ "length": 20,
1240
+ "start": 8193
865
1241
  }
866
1242
  ]
867
1243
  },
@@ -869,15 +1245,15 @@
869
1245
  "VersionLib": [
870
1246
  {
871
1247
  "length": 20,
872
- "start": 1980
1248
+ "start": 2190
873
1249
  },
874
1250
  {
875
1251
  "length": 20,
876
- "start": 3581
1252
+ "start": 5346
877
1253
  },
878
1254
  {
879
1255
  "length": 20,
880
- "start": 4374
1256
+ "start": 6002
881
1257
  }
882
1258
  ]
883
1259
  }