@etherisc/gif-next 0.0.2-a6faeb6-912 → 0.0.2-a733491-751

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/README.md +73 -1
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +853 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +887 -242
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +160 -100
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +791 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +655 -43
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +654 -5
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +600 -217
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +543 -152
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +1 -1
  19. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +15 -15
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +38 -62
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  23. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +908 -109
  25. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +201 -167
  27. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  28. package/artifacts/contracts/instance/Instance.sol/Instance.json +814 -956
  29. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +465 -184
  31. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +61 -97
  33. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +375 -369
  35. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +295 -126
  37. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -32
  39. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  40. package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +180 -179
  41. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  42. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
  45. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  47. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  48. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +65 -44
  49. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  52. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  53. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  54. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  55. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  56. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +858 -0
  57. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  58. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +657 -0
  59. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  60. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1085 -0
  61. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  62. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
  63. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  64. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +743 -0
  65. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  66. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  67. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  68. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +441 -214
  69. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  70. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +317 -80
  71. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IApplicationService.sol/IApplicationService.json} +200 -204
  73. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  74. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +622 -0
  75. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  76. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → instance/service/IClaimService.sol/IClaimService.json} +154 -124
  77. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +197 -163
  79. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  80. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +572 -0
  81. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  82. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +24 -416
  83. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  84. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +30 -417
  85. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1109 -0
  87. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  88. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +717 -0
  89. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +179 -504
  91. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +294 -105
  93. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +189 -570
  95. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  96. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +286 -125
  97. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  98. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  99. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  100. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +244 -133
  101. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  102. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +149 -217
  103. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  104. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  105. package/artifacts/contracts/registry/Registry.sol/Registry.json +257 -235
  106. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  107. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  108. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  109. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +195 -322
  110. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +298 -145
  112. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  113. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  114. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  115. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +141 -53
  116. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  117. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  118. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  119. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  120. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  121. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  122. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  123. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  124. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
  125. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  126. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  127. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  128. package/artifacts/contracts/shared/IService.sol/IService.json +23 -186
  129. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  130. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  131. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  132. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
  133. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  134. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  135. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  136. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
  137. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
  139. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  140. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  141. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  142. package/artifacts/contracts/shared/Service.sol/Service.json +119 -173
  143. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  144. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  145. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  146. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  147. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  148. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  149. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  150. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
  151. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
  153. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestService.sol/TestService.json +140 -230
  155. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  157. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  158. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
  159. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  160. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  161. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  162. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  163. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  164. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  165. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  167. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  168. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  169. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  170. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  171. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  172. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  173. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  174. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  175. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  177. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  178. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  179. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
  181. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  183. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  184. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  185. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  191. package/contracts/components/Component.sol +241 -0
  192. package/contracts/components/Distribution.sol +209 -64
  193. package/contracts/components/IComponent.sol +54 -0
  194. package/contracts/components/IDistributionComponent.sol +59 -3
  195. package/contracts/components/IPoolComponent.sol +50 -29
  196. package/contracts/components/IProductComponent.sol +7 -3
  197. package/contracts/components/Pool.sol +136 -149
  198. package/contracts/components/Product.sol +115 -119
  199. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +2 -12
  200. package/contracts/instance/BundleManager.sol +7 -11
  201. package/contracts/instance/IInstance.sol +48 -10
  202. package/contracts/instance/IInstanceService.sol +35 -4
  203. package/contracts/instance/Instance.sol +102 -260
  204. package/contracts/instance/InstanceAccessManager.sol +463 -171
  205. package/contracts/instance/InstanceReader.sol +3 -25
  206. package/contracts/instance/InstanceService.sol +328 -114
  207. package/contracts/instance/InstanceServiceManager.sol +6 -9
  208. package/contracts/instance/ObjectManager.sol +7 -24
  209. package/contracts/instance/base/ComponentService.sol +134 -0
  210. package/contracts/instance/module/IAccess.sol +36 -20
  211. package/contracts/instance/module/IPolicy.sol +4 -2
  212. package/contracts/instance/module/ISetup.sol +5 -4
  213. package/contracts/instance/service/ApplicationService.sol +268 -0
  214. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  215. package/contracts/instance/service/BundleService.sol +298 -0
  216. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  217. package/contracts/instance/service/ClaimService.sol +151 -0
  218. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  219. package/contracts/instance/service/DistributionService.sol +235 -28
  220. package/contracts/instance/service/DistributionServiceManager.sol +7 -10
  221. package/contracts/instance/service/IApplicationService.sol +82 -0
  222. package/contracts/instance/service/IBundleService.sol +54 -0
  223. package/contracts/instance/service/IClaimService.sol +61 -0
  224. package/contracts/instance/service/IDistributionService.sol +53 -0
  225. package/contracts/instance/service/IPolicyService.sol +89 -0
  226. package/contracts/instance/service/IPoolService.sol +2 -33
  227. package/contracts/instance/service/IProductService.sol +2 -72
  228. package/contracts/instance/service/PolicyService.sol +474 -0
  229. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  230. package/contracts/instance/service/PoolService.sol +51 -213
  231. package/contracts/instance/service/PoolServiceManager.sol +6 -9
  232. package/contracts/instance/service/ProductService.sol +131 -460
  233. package/contracts/instance/service/ProductServiceManager.sol +2 -2
  234. package/contracts/registry/ChainNft.sol +1 -1
  235. package/contracts/registry/IRegistry.sol +39 -19
  236. package/contracts/registry/IRegistryService.sol +30 -13
  237. package/contracts/registry/Registry.sol +246 -225
  238. package/contracts/registry/RegistryAccessManager.sol +216 -0
  239. package/contracts/registry/RegistryService.sol +96 -171
  240. package/contracts/registry/RegistryServiceManager.sol +21 -39
  241. package/contracts/registry/ReleaseManager.sol +322 -0
  242. package/contracts/registry/TokenRegistry.sol +22 -17
  243. package/contracts/shared/ERC165.sol +14 -12
  244. package/contracts/shared/INftOwnable.sol +11 -10
  245. package/contracts/shared/IPolicyHolder.sol +26 -0
  246. package/contracts/shared/IRegisterable.sol +4 -6
  247. package/contracts/shared/IRegistryLinked.sol +12 -0
  248. package/contracts/shared/IService.sol +2 -1
  249. package/contracts/shared/IVersionable.sol +4 -47
  250. package/contracts/shared/NftOwnable.sol +66 -80
  251. package/contracts/shared/PolicyHolder.sol +81 -0
  252. package/contracts/shared/ProxyManager.sol +100 -25
  253. package/contracts/shared/Registerable.sol +14 -30
  254. package/contracts/shared/RegistryLinked.sol +48 -0
  255. package/contracts/shared/Service.sol +25 -22
  256. package/contracts/shared/Versionable.sol +4 -92
  257. package/contracts/test/TestRegisterable.sol +1 -1
  258. package/contracts/test/TestService.sol +4 -3
  259. package/contracts/types/ClaimId.sol +52 -0
  260. package/contracts/types/DistributorType.sol +2 -2
  261. package/contracts/types/ObjectType.sol +9 -5
  262. package/contracts/types/PayoutId.sol +54 -0
  263. package/contracts/types/RoleId.sol +22 -19
  264. package/package.json +3 -3
  265. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  266. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  267. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  268. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  269. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  270. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  271. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  272. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  273. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  274. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  275. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  276. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  277. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  278. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  279. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  280. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  281. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  282. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  283. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  284. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  285. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  286. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  287. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  288. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  289. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  290. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  291. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  292. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  293. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  294. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  295. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  296. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  297. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  298. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  299. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  300. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  301. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  302. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  303. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  304. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  305. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  306. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  307. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  308. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  309. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
  310. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  311. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  312. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  313. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  314. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  315. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  316. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  317. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  318. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  319. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  320. package/contracts/components/BaseComponent.sol +0 -132
  321. package/contracts/components/IBaseComponent.sol +0 -31
  322. package/contracts/experiment/cloning/Cloner.sol +0 -47
  323. package/contracts/experiment/errors/Require.sol +0 -38
  324. package/contracts/experiment/errors/Revert.sol +0 -44
  325. package/contracts/experiment/inheritance/A.sol +0 -53
  326. package/contracts/experiment/inheritance/B.sol +0 -28
  327. package/contracts/experiment/inheritance/C.sol +0 -34
  328. package/contracts/experiment/inheritance/IA.sol +0 -13
  329. package/contracts/experiment/inheritance/IB.sol +0 -10
  330. package/contracts/experiment/inheritance/IC.sol +0 -12
  331. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  332. package/contracts/experiment/statemachine/ISM.sol +0 -25
  333. package/contracts/experiment/statemachine/SM.sol +0 -57
  334. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  335. package/contracts/experiment/types/TypeA.sol +0 -47
  336. package/contracts/experiment/types/TypeB.sol +0 -29
  337. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  338. package/contracts/instance/IInstanceBase.sol +0 -26
  339. package/contracts/instance/InstanceBase.sol +0 -41
  340. package/contracts/instance/base/ComponentServiceBase.sol +0 -134
  341. package/contracts/instance/base/IInstanceBase.sol +0 -23
  342. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  343. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  344. package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -3,17 +3,6 @@
3
3
  "contractName": "InstanceAccessManager",
4
4
  "sourceName": "contracts/instance/InstanceAccessManager.sol",
5
5
  "abi": [
6
- {
7
- "inputs": [
8
- {
9
- "internalType": "address",
10
- "name": "accessManager",
11
- "type": "address"
12
- }
13
- ],
14
- "stateMutability": "nonpayable",
15
- "type": "constructor"
16
- },
17
6
  {
18
7
  "inputs": [
19
8
  {
@@ -55,34 +44,17 @@
55
44
  {
56
45
  "inputs": [
57
46
  {
58
- "internalType": "RoleId",
59
- "name": "roleId",
60
- "type": "uint64"
61
- }
62
- ],
63
- "name": "ErrorGrantNonexstentRole",
64
- "type": "error"
65
- },
66
- {
67
- "inputs": [
68
- {
69
- "internalType": "RoleId",
70
- "name": "roleId",
71
- "type": "uint64"
72
- }
73
- ],
74
- "name": "ErrorRenounceNonexstentRole",
75
- "type": "error"
76
- },
77
- {
78
- "inputs": [
47
+ "internalType": "address",
48
+ "name": "caller",
49
+ "type": "address"
50
+ },
79
51
  {
80
52
  "internalType": "RoleId",
81
53
  "name": "roleId",
82
54
  "type": "uint64"
83
55
  }
84
56
  ],
85
- "name": "ErrorRevokeNonexstentRole",
57
+ "name": "ErrorIAccessCallerIsNotRoleAdmin",
86
58
  "type": "error"
87
59
  },
88
60
  {
@@ -91,14 +63,9 @@
91
63
  "internalType": "RoleId",
92
64
  "name": "roleId",
93
65
  "type": "uint64"
94
- },
95
- {
96
- "internalType": "ShortString",
97
- "name": "name",
98
- "type": "bytes32"
99
66
  }
100
67
  ],
101
- "name": "ErrorRoleIdAlreadyExists",
68
+ "name": "ErrorIAccessRoleIdAlreadyExists",
102
69
  "type": "error"
103
70
  },
104
71
  {
@@ -109,7 +76,7 @@
109
76
  "type": "uint64"
110
77
  }
111
78
  ],
112
- "name": "ErrorRoleIdInvalid",
79
+ "name": "ErrorIAccessRoleIdInvalid",
113
80
  "type": "error"
114
81
  },
115
82
  {
@@ -120,7 +87,7 @@
120
87
  "type": "uint64"
121
88
  }
122
89
  ],
123
- "name": "ErrorRoleIdNotActive",
90
+ "name": "ErrorIAccessRoleIdTooBig",
124
91
  "type": "error"
125
92
  },
126
93
  {
@@ -131,7 +98,7 @@
131
98
  "type": "uint64"
132
99
  }
133
100
  ],
134
- "name": "ErrorRoleIdTooBig",
101
+ "name": "ErrorIAccessRoleIdTooSmall",
135
102
  "type": "error"
136
103
  },
137
104
  {
@@ -142,7 +109,7 @@
142
109
  "type": "uint64"
143
110
  }
144
111
  ],
145
- "name": "ErrorRoleIdTooSmall",
112
+ "name": "ErrorIAccessRoleNameEmpty",
146
113
  "type": "error"
147
114
  },
148
115
  {
@@ -153,12 +120,12 @@
153
120
  "type": "uint64"
154
121
  },
155
122
  {
156
- "internalType": "bool",
157
- "name": "isCustom",
158
- "type": "bool"
123
+ "internalType": "ShortString",
124
+ "name": "name",
125
+ "type": "bytes32"
159
126
  }
160
127
  ],
161
- "name": "ErrorRoleInvalidUpdate",
128
+ "name": "ErrorIAccessRoleNameNotUnique",
162
129
  "type": "error"
163
130
  },
164
131
  {
@@ -169,36 +136,20 @@
169
136
  "type": "uint64"
170
137
  },
171
138
  {
172
- "internalType": "bool",
173
- "name": "isCustom",
174
- "type": "bool"
175
- },
176
- {
177
- "internalType": "bool",
178
- "name": "isCustomExisting",
179
- "type": "bool"
180
- }
181
- ],
182
- "name": "ErrorRoleIsCustomIsImmutable",
183
- "type": "error"
184
- },
185
- {
186
- "inputs": [
187
- {
188
- "internalType": "RoleId",
189
- "name": "roleId",
190
- "type": "uint64"
139
+ "internalType": "enum IAccess.Type",
140
+ "name": "rtype",
141
+ "type": "uint8"
191
142
  }
192
143
  ],
193
- "name": "ErrorRoleNameEmpty",
144
+ "name": "ErrorIAccessRoleTypeInvalid",
194
145
  "type": "error"
195
146
  },
196
147
  {
197
148
  "inputs": [
198
149
  {
199
- "internalType": "RoleId",
200
- "name": "roleId",
201
- "type": "uint64"
150
+ "internalType": "address",
151
+ "name": "target",
152
+ "type": "address"
202
153
  },
203
154
  {
204
155
  "internalType": "ShortString",
@@ -206,34 +157,34 @@
206
157
  "type": "bytes32"
207
158
  }
208
159
  ],
209
- "name": "ErrorRoleNameNotUnique",
160
+ "name": "ErrorIAccessTargetAlreadyExists",
210
161
  "type": "error"
211
162
  },
212
163
  {
213
164
  "inputs": [
214
165
  {
215
- "internalType": "RoleId",
216
- "name": "roleId",
217
- "type": "uint64"
166
+ "internalType": "address",
167
+ "name": "target",
168
+ "type": "address"
169
+ },
170
+ {
171
+ "internalType": "address",
172
+ "name": "targetAuthority",
173
+ "type": "address"
218
174
  }
219
175
  ],
220
- "name": "ErrorSetLockedForNonexstentRole",
176
+ "name": "ErrorIAccessTargetAuthorityInvalid",
221
177
  "type": "error"
222
178
  },
223
179
  {
224
180
  "inputs": [
225
181
  {
226
- "internalType": "address",
227
- "name": "target",
228
- "type": "address"
182
+ "internalType": "ShortString",
183
+ "name": "name",
184
+ "type": "bytes32"
229
185
  }
230
186
  ],
231
- "name": "ErrorSetLockedForNonexstentTarget",
232
- "type": "error"
233
- },
234
- {
235
- "inputs": [],
236
- "name": "ErrorTargetAddressZero",
187
+ "name": "ErrorIAccessTargetDoesNotExist",
237
188
  "type": "error"
238
189
  },
239
190
  {
@@ -242,14 +193,9 @@
242
193
  "internalType": "address",
243
194
  "name": "target",
244
195
  "type": "address"
245
- },
246
- {
247
- "internalType": "ShortString",
248
- "name": "name",
249
- "type": "bytes32"
250
196
  }
251
197
  ],
252
- "name": "ErrorTargetAlreadyExists",
198
+ "name": "ErrorIAccessTargetIsRegistered",
253
199
  "type": "error"
254
200
  },
255
201
  {
@@ -260,7 +206,7 @@
260
206
  "type": "address"
261
207
  }
262
208
  ],
263
- "name": "ErrorTargetNameEmpty",
209
+ "name": "ErrorIAccessTargetNameEmpty",
264
210
  "type": "error"
265
211
  },
266
212
  {
@@ -281,7 +227,23 @@
281
227
  "type": "bytes32"
282
228
  }
283
229
  ],
284
- "name": "ErrorTargetNameExists",
230
+ "name": "ErrorIAccessTargetNameExists",
231
+ "type": "error"
232
+ },
233
+ {
234
+ "inputs": [
235
+ {
236
+ "internalType": "ShortString",
237
+ "name": "name",
238
+ "type": "bytes32"
239
+ },
240
+ {
241
+ "internalType": "enum IAccess.Type",
242
+ "name": "ttype",
243
+ "type": "uint8"
244
+ }
245
+ ],
246
+ "name": "ErrorIAccessTargetTypeInvalid",
285
247
  "type": "error"
286
248
  },
287
249
  {
@@ -403,18 +365,117 @@
403
365
  },
404
366
  {
405
367
  "inputs": [
368
+ {
369
+ "internalType": "address",
370
+ "name": "caller",
371
+ "type": "address"
372
+ },
373
+ {
374
+ "internalType": "address",
375
+ "name": "target",
376
+ "type": "address"
377
+ },
378
+ {
379
+ "internalType": "bytes4",
380
+ "name": "selector",
381
+ "type": "bytes4"
382
+ }
383
+ ],
384
+ "name": "canCall",
385
+ "outputs": [
386
+ {
387
+ "internalType": "bool",
388
+ "name": "immediate",
389
+ "type": "bool"
390
+ },
391
+ {
392
+ "internalType": "uint32",
393
+ "name": "delay",
394
+ "type": "uint32"
395
+ }
396
+ ],
397
+ "stateMutability": "view",
398
+ "type": "function"
399
+ },
400
+ {
401
+ "inputs": [
402
+ {
403
+ "internalType": "RoleId",
404
+ "name": "roleId",
405
+ "type": "uint64"
406
+ },
407
+ {
408
+ "internalType": "string",
409
+ "name": "name",
410
+ "type": "string"
411
+ }
412
+ ],
413
+ "name": "createCoreRole",
414
+ "outputs": [],
415
+ "stateMutability": "nonpayable",
416
+ "type": "function"
417
+ },
418
+ {
419
+ "inputs": [
420
+ {
421
+ "internalType": "address",
422
+ "name": "target",
423
+ "type": "address"
424
+ },
425
+ {
426
+ "internalType": "string",
427
+ "name": "name",
428
+ "type": "string"
429
+ }
430
+ ],
431
+ "name": "createCoreTarget",
432
+ "outputs": [],
433
+ "stateMutability": "nonpayable",
434
+ "type": "function"
435
+ },
436
+ {
437
+ "inputs": [
438
+ {
439
+ "internalType": "string",
440
+ "name": "roleName",
441
+ "type": "string"
442
+ },
443
+ {
444
+ "internalType": "string",
445
+ "name": "adminName",
446
+ "type": "string"
447
+ }
448
+ ],
449
+ "name": "createCustomRole",
450
+ "outputs": [
406
451
  {
407
452
  "internalType": "RoleId",
408
453
  "name": "roleId",
409
454
  "type": "uint64"
410
455
  },
456
+ {
457
+ "internalType": "RoleId",
458
+ "name": "admin",
459
+ "type": "uint64"
460
+ }
461
+ ],
462
+ "stateMutability": "nonpayable",
463
+ "type": "function"
464
+ },
465
+ {
466
+ "inputs": [
467
+ {
468
+ "internalType": "address",
469
+ "name": "target",
470
+ "type": "address"
471
+ },
411
472
  {
412
473
  "internalType": "string",
413
474
  "name": "name",
414
475
  "type": "string"
415
476
  }
416
477
  ],
417
- "name": "createDefaultRole",
478
+ "name": "createCustomTarget",
418
479
  "outputs": [],
419
480
  "stateMutability": "nonpayable",
420
481
  "type": "function"
@@ -430,9 +491,14 @@
430
491
  "internalType": "string",
431
492
  "name": "name",
432
493
  "type": "string"
494
+ },
495
+ {
496
+ "internalType": "RoleId",
497
+ "name": "admin",
498
+ "type": "uint64"
433
499
  }
434
500
  ],
435
- "name": "createRole",
501
+ "name": "createGifRole",
436
502
  "outputs": [],
437
503
  "stateMutability": "nonpayable",
438
504
  "type": "function"
@@ -450,7 +516,7 @@
450
516
  "type": "string"
451
517
  }
452
518
  ],
453
- "name": "createTarget",
519
+ "name": "createGifTarget",
454
520
  "outputs": [],
455
521
  "stateMutability": "nonpayable",
456
522
  "type": "function"
@@ -463,39 +529,12 @@
463
529
  "type": "uint64"
464
530
  }
465
531
  ],
466
- "name": "getRole",
532
+ "name": "getRoleAdmin",
467
533
  "outputs": [
468
534
  {
469
- "components": [
470
- {
471
- "internalType": "ShortString",
472
- "name": "name",
473
- "type": "bytes32"
474
- },
475
- {
476
- "internalType": "bool",
477
- "name": "isCustom",
478
- "type": "bool"
479
- },
480
- {
481
- "internalType": "bool",
482
- "name": "isLocked",
483
- "type": "bool"
484
- },
485
- {
486
- "internalType": "Timestamp",
487
- "name": "createdAt",
488
- "type": "uint40"
489
- },
490
- {
491
- "internalType": "Timestamp",
492
- "name": "updatedAt",
493
- "type": "uint40"
494
- }
495
- ],
496
- "internalType": "struct InstanceAccessManager.RoleInfo",
497
- "name": "role",
498
- "type": "tuple"
535
+ "internalType": "RoleId",
536
+ "name": "admin",
537
+ "type": "uint64"
499
538
  }
500
539
  ],
501
540
  "stateMutability": "view",
@@ -545,21 +584,89 @@
545
584
  "internalType": "RoleId",
546
585
  "name": "roleId",
547
586
  "type": "uint64"
548
- },
549
- {
550
- "internalType": "uint256",
551
- "name": "idx",
552
- "type": "uint256"
553
587
  }
554
588
  ],
555
- "name": "getRoleMember",
589
+ "name": "getRoleInfo",
556
590
  "outputs": [
591
+ {
592
+ "components": [
593
+ {
594
+ "internalType": "ShortString",
595
+ "name": "name",
596
+ "type": "bytes32"
597
+ },
598
+ {
599
+ "internalType": "enum IAccess.Type",
600
+ "name": "rtype",
601
+ "type": "uint8"
602
+ },
603
+ {
604
+ "internalType": "RoleId",
605
+ "name": "admin",
606
+ "type": "uint64"
607
+ },
608
+ {
609
+ "internalType": "Timestamp",
610
+ "name": "createdAt",
611
+ "type": "uint40"
612
+ },
613
+ {
614
+ "internalType": "Timestamp",
615
+ "name": "updatedAt",
616
+ "type": "uint40"
617
+ }
618
+ ],
619
+ "internalType": "struct IAccess.RoleInfo",
620
+ "name": "role",
621
+ "type": "tuple"
622
+ }
623
+ ],
624
+ "stateMutability": "view",
625
+ "type": "function"
626
+ },
627
+ {
628
+ "inputs": [
557
629
  {
558
630
  "internalType": "address",
559
- "name": "roleMember",
631
+ "name": "target",
560
632
  "type": "address"
561
633
  }
562
634
  ],
635
+ "name": "getTargetInfo",
636
+ "outputs": [
637
+ {
638
+ "components": [
639
+ {
640
+ "internalType": "ShortString",
641
+ "name": "name",
642
+ "type": "bytes32"
643
+ },
644
+ {
645
+ "internalType": "enum IAccess.Type",
646
+ "name": "ttype",
647
+ "type": "uint8"
648
+ },
649
+ {
650
+ "internalType": "bool",
651
+ "name": "isLocked",
652
+ "type": "bool"
653
+ },
654
+ {
655
+ "internalType": "Timestamp",
656
+ "name": "createdAt",
657
+ "type": "uint40"
658
+ },
659
+ {
660
+ "internalType": "Timestamp",
661
+ "name": "updatedAt",
662
+ "type": "uint40"
663
+ }
664
+ ],
665
+ "internalType": "struct IAccess.TargetInfo",
666
+ "name": "",
667
+ "type": "tuple"
668
+ }
669
+ ],
563
670
  "stateMutability": "view",
564
671
  "type": "function"
565
672
  },
@@ -611,6 +718,24 @@
611
718
  "stateMutability": "view",
612
719
  "type": "function"
613
720
  },
721
+ {
722
+ "inputs": [
723
+ {
724
+ "internalType": "address",
725
+ "name": "ozAccessManager",
726
+ "type": "address"
727
+ },
728
+ {
729
+ "internalType": "address",
730
+ "name": "registry",
731
+ "type": "address"
732
+ }
733
+ ],
734
+ "name": "initialize",
735
+ "outputs": [],
736
+ "stateMutability": "nonpayable",
737
+ "type": "function"
738
+ },
614
739
  {
615
740
  "inputs": [],
616
741
  "name": "isConsumingScheduledOp",
@@ -624,6 +749,44 @@
624
749
  "stateMutability": "view",
625
750
  "type": "function"
626
751
  },
752
+ {
753
+ "inputs": [
754
+ {
755
+ "internalType": "RoleId",
756
+ "name": "roleId",
757
+ "type": "uint64"
758
+ }
759
+ ],
760
+ "name": "isCustomRoleAdmin",
761
+ "outputs": [
762
+ {
763
+ "internalType": "bool",
764
+ "name": "",
765
+ "type": "bool"
766
+ }
767
+ ],
768
+ "stateMutability": "pure",
769
+ "type": "function"
770
+ },
771
+ {
772
+ "inputs": [
773
+ {
774
+ "internalType": "address",
775
+ "name": "target",
776
+ "type": "address"
777
+ }
778
+ ],
779
+ "name": "isTargetLocked",
780
+ "outputs": [
781
+ {
782
+ "internalType": "bool",
783
+ "name": "locked",
784
+ "type": "bool"
785
+ }
786
+ ],
787
+ "stateMutability": "view",
788
+ "type": "function"
789
+ },
627
790
  {
628
791
  "inputs": [
629
792
  {
@@ -636,7 +799,7 @@
636
799
  "outputs": [
637
800
  {
638
801
  "internalType": "bool",
639
- "name": "revoked",
802
+ "name": "",
640
803
  "type": "bool"
641
804
  }
642
805
  ],
@@ -660,7 +823,7 @@
660
823
  "outputs": [
661
824
  {
662
825
  "internalType": "bool",
663
- "name": "revoked",
826
+ "name": "",
664
827
  "type": "bool"
665
828
  }
666
829
  ],
@@ -686,6 +849,30 @@
686
849
  "stateMutability": "view",
687
850
  "type": "function"
688
851
  },
852
+ {
853
+ "inputs": [
854
+ {
855
+ "internalType": "RoleId",
856
+ "name": "roleId",
857
+ "type": "uint64"
858
+ },
859
+ {
860
+ "internalType": "uint256",
861
+ "name": "idx",
862
+ "type": "uint256"
863
+ }
864
+ ],
865
+ "name": "roleMember",
866
+ "outputs": [
867
+ {
868
+ "internalType": "address",
869
+ "name": "roleMember",
870
+ "type": "address"
871
+ }
872
+ ],
873
+ "stateMutability": "view",
874
+ "type": "function"
875
+ },
689
876
  {
690
877
  "inputs": [
691
878
  {
@@ -739,12 +926,12 @@
739
926
  "type": "uint64"
740
927
  },
741
928
  {
742
- "internalType": "bool",
743
- "name": "locked",
744
- "type": "bool"
929
+ "internalType": "RoleId",
930
+ "name": "admin",
931
+ "type": "uint64"
745
932
  }
746
933
  ],
747
- "name": "setRoleLocked",
934
+ "name": "setRoleAdmin",
748
935
  "outputs": [],
749
936
  "stateMutability": "nonpayable",
750
937
  "type": "function"
@@ -752,9 +939,55 @@
752
939
  {
753
940
  "inputs": [
754
941
  {
755
- "internalType": "address",
756
- "name": "target",
757
- "type": "address"
942
+ "internalType": "string",
943
+ "name": "targetName",
944
+ "type": "string"
945
+ },
946
+ {
947
+ "internalType": "bytes4[]",
948
+ "name": "selectors",
949
+ "type": "bytes4[]"
950
+ },
951
+ {
952
+ "internalType": "RoleId",
953
+ "name": "roleId",
954
+ "type": "uint64"
955
+ }
956
+ ],
957
+ "name": "setTargetFunctionCustomRole",
958
+ "outputs": [],
959
+ "stateMutability": "nonpayable",
960
+ "type": "function"
961
+ },
962
+ {
963
+ "inputs": [
964
+ {
965
+ "internalType": "string",
966
+ "name": "targetName",
967
+ "type": "string"
968
+ },
969
+ {
970
+ "internalType": "bytes4[]",
971
+ "name": "selectors",
972
+ "type": "bytes4[]"
973
+ },
974
+ {
975
+ "internalType": "RoleId",
976
+ "name": "roleId",
977
+ "type": "uint64"
978
+ }
979
+ ],
980
+ "name": "setTargetFunctionRole",
981
+ "outputs": [],
982
+ "stateMutability": "nonpayable",
983
+ "type": "function"
984
+ },
985
+ {
986
+ "inputs": [
987
+ {
988
+ "internalType": "string",
989
+ "name": "targetName",
990
+ "type": "string"
758
991
  },
759
992
  {
760
993
  "internalType": "bool",
@@ -787,90 +1020,102 @@
787
1020
  "type": "function"
788
1021
  }
789
1022
  ],
790
- "bytecode": "0x60806040523480156200001157600080fd5b5060405162002ebb38038062002ebb833981016040819052620000349162000afd565b600780546001600160a01b0319166001600160a01b0383161790556200005a81620002ba565b6200018673__$cd131c2b3ba46b9dbe046aaf4458b9777d$__6368aebf7b600760009054906101000a90046001600160a01b03166001600160a01b03166375b238fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f2919062000b45565b6040516001600160e01b031960e084901b1681526001600160401b039091166004820152602401602060405180830381865af415801562000137573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015d919062000b45565b60408051808201909152600981526841646d696e526f6c6560b81b6020820152600080620002d2565b620002b373__$cd131c2b3ba46b9dbe046aaf4458b9777d$__6368aebf7b600760009054906101000a90046001600160a01b03166001600160a01b0316633ca7c02a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021e919062000b45565b6040516001600160e01b031960e084901b1681526001600160401b039091166004820152602401602060405180830381865af415801562000263573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000289919062000b45565b60408051808201909152600a8152695075626c6963526f6c6560b01b6020820152600080620002d2565b5062000c2a565b620002c462000518565b620002cf8162000569565b50565b8015620002e857620002e68484846200057e565b505b60006040518060a00160405280620003068662000a1860201b60201c565b8152602001841515815260200160001515815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af415801562000366573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038c919062000b65565b64ffffffffff16815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015620003e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000408919062000b65565b64ffffffffff9081169091526001600160401b03968716600081815260208181526040808320865180825587840151600192830180548a86015160608c01516080909c015161ffff1990921693151561ff0019169390931761010093151584021762010000600160601b031916620100009b8b169b909b0264ffffffffff60381b19169a909a176701000000000000009a90991699909902979097179097559583526002909152812080546001600160401b03191683179055600380549485018155908190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b600485040180549490911660080290920a97880219909216969091029590951790945550505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166200056757604051631afcd79f60e31b815260040160405180910390fd5b565b6200057362000518565b620002cf8162000a5b565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260075460408051631d6c8e3f60e21b8152905186926001600160a01b0316916375b238fc9160048083019260209291908290030181865afa158015620005f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000619919062000b45565b6001600160401b0316816001600160401b03161480620006c35750600760009054906101000a90046001600160a01b03166001600160a01b0316633ca7c02a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000688573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006ae919062000b45565b6001600160401b0316816001600160401b0316145b15620006f25760405163981bf42160e01b81526001600160401b03861660048201526024015b60405180910390fd5b6001600160401b03851660009081526020818152604091829020825160a0810184528154815260019091015460ff808216151593830193909352610100810490921615158184015264ffffffffff6201000083048116606083018190526701000000000000009093041660808201529151638d38cd4b60e01b8152600481019190915290925073__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401602060405180830381865af4158015620007b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007db919062000b8e565b8015620007f057508160200151151583151514155b156200082f57602082015160405162d1cd9360e51b81526001600160401b038716600482015284151560248201529015156044820152606401620006e9565b8280156200084757506127106001600160401b038216105b156200087257604051633119b9df60e21b81526001600160401b0386166004820152602401620006e9565b821580156200088c57506127106001600160401b03821610155b15620008b75760405163094fb39160e01b81526001600160401b0386166004820152602401620006e9565b6000620008c48562000a18565b9050620008d18162000ace565b600003620008fe576040516321ab17ab60e01b81526001600160401b0387166004820152602401620006e9565b60008181526002602090815260409182902054825163bc1b392d60e01b81529251620009a5936001600160401b039092169273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9263bc1b392d92600480830193928290030181865af41580156200096d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000993919062000b45565b6001600160401b039081169116141590565b8015620009cc57506000818152600260205260409020546001600160401b03878116911614155b1562000a0f5760008181526002602052604090819020549051631660fb9360e21b81526001600160401b03909116600482015260248101829052604401620006e9565b50509392505050565b600080829050601f8151111562000a46578260405163305a27a960e01b8152600401620006e9919062000bb2565b805162000a538262000c02565b179392505050565b7ff3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a0080546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b600060ff8216601f81111562000af757604051632cd44ac360e21b815260040160405180910390fd5b92915050565b60006020828403121562000b1057600080fd5b81516001600160a01b038116811462000b2857600080fd5b9392505050565b6001600160401b0381168114620002cf57600080fd5b60006020828403121562000b5857600080fd5b815162000b288162000b2f565b60006020828403121562000b7857600080fd5b815164ffffffffff8116811462000b2857600080fd5b60006020828403121562000ba157600080fd5b8151801515811462000b2857600080fd5b600060208083528351808285015260005b8181101562000be15785810183015185820160400152820162000bc3565b506000604082860101526040601f19601f8301168501019250505092915050565b8051602080830151919081101562000c24576000198160200360031b1b821691505b50919050565b6122818062000c3a6000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806386892313116100c3578063bc62a0a51161007c578063bc62a0a5146103db578063bcfb11b014610410578063bf7e214f14610439578063c6a0017914610459578063d1f856ee1461046c578063d78a83b11461047f57600080fd5b8063868923131461027357806386f0c47b146102865780638fb3603714610381578063af8d729e146103a2578063b428b0b0146103b5578063b7d2b162146103c857600080fd5b80635dfa73db116101155780635dfa73db146102095780635fa8aad414610212578063605aa10a146102275780636270b7c31461023a57806368ed5d2e1461024d5780637a9e5e4b1461026057600080fd5b8063030149741461015d57806337f135d714610183578063384c9a57146101a0578063392f5f64146101c35780633fd85561146101cb5780635511a6f3146101f6575b600080fd5b61017061016b366004611d97565b610492565b6040519081526020015b60405180910390f35b61018b600081565b60405163ffffffff909116815260200161017a565b6101b36101ae366004611d97565b6104b9565b604051901515815260200161017a565b600354610170565b6101de6101d9366004611db4565b610646565b6040516001600160401b03909116815260200161017a565b6101de610204366004611e6f565b61068b565b6101de61271081565b610225610220366004611ec7565b6106ba565b005b6101b3610235366004611f14565b6106d8565b610225610248366004611f2f565b610779565b61022561025b366004611f2f565b610790565b61022561026e366004611f14565b6107a6565b610225610281366004611f5b565b610829565b61032e610294366004611d97565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506001600160401b031660009081526020818152604091829020825160a0810184528154815260019091015460ff808216151593830193909352610100810490921615159281019290925264ffffffffff62010000820481166060840152600160381b90910416608082015290565b60405161017a9190600060a08201905082518252602083015115156020830152604083015115156040830152606083015164ffffffffff8082166060850152806080860151166080850152505092915050565b6103896108fb565b6040516001600160e01b0319909116815260200161017a565b6102256103b0366004611f92565b610934565b6101b36103c3366004611fb0565b610a50565b6101b36103d6366004611fb0565b610c2b565b6104036040518060400160405280600981526020016841646d696e526f6c6560b81b81525081565b60405161017a9190612009565b6104036040518060400160405280600a8152602001695075626c6963526f6c6560b01b81525081565b610441610da9565b6040516001600160a01b03909116815260200161017a565b6101b3610467366004611d97565b610dc5565b6101b361047a366004611fb0565b610e25565b61044161048d36600461203c565b610f35565b6001600160401b03811660009081526001602052604081206104b390610f5e565b92915050565b6000336104c583610dc5565b6104f157604051627a416f60e01b81526001600160401b03841660048201526024015b60405180910390fd5b6001600160401b03831660009081526001602052604090206105139082610f68565b1561063d57600754604051631517388760e21b81526001600160401b03851660048201526001600160a01b039091169063b7d2b1629073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015610585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a99190612068565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b0384166024820152604401600060405180830381600087803b1580156105f957600080fd5b505af115801561060d573d6000803e3d6000fd5b5050506001600160401b0384166000908152600160205260409020610633915082610f8a565b5060019392505050565b50600092915050565b60006003828154811061065b5761065b612085565b90600052602060002090600491828204019190066008029054906101000a90046001600160401b03169050919050565b60006002600061069a84610f9f565b81526020810191909152604001600020546001600160401b031692915050565b6106c7335b600036610fdd565b6106d482826001806110db565b5050565b6001600160a01b0381166000908152600460208190526040808320600101549051638d38cd4b60e01b81526201000090910464ffffffffff169181019190915273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b906024015b602060405180830381865af4158015610755573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b3919061209b565b610782336106bf565b6106d48282600060016113b8565b610799336106bf565b6106d482826001806113b8565b336107af610da9565b6001600160a01b0316816001600160a01b0316146107ea5760405162d1953b60e31b81526001600160a01b03821660048201526024016104e8565b816001600160a01b03163b600003610820576040516361798f2f60e11b81526001600160a01b03831660048201526024016104e8565b6106d4826115ed565b610832336106bf565b61083b826106d8565b6108635760405163ba52b0f160e01b81526001600160a01b03831660048201526024016104e8565b6001600160a01b03828116600081815260046020819052604091829020600101805461ff00191661010087151590810291909117909155600754925163167bd39560e01b81529182019390935260248101929092529091169063167bd39590604401600060405180830381600087803b1580156108df57600080fd5b505af11580156108f3573d6000803e3d6000fd5b505050505050565b60008051602061222c833981519152805460009190600160a01b900460ff1661092557600061092e565b638fb3603760e01b5b91505090565b61093d336106bf565b61094682610dc5565b61096e5760405163135c79b760e21b81526001600160401b03831660048201526024016104e8565b6001600160401b03821660009081526020818152604091829020600101805461ff0019166101008515150217905581516356db0c1960e11b8152915173__$d53880c81dc91c20799140d711e5ab8718$__9263adb618329260048083019391928290030181865af41580156109e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0b91906120b8565b6001600160401b039092166000908152602081905260409020600101805464ffffffffff93909316600160381b0264ffffffffff60381b199093169290921790915550565b6000610a5b336106bf565b610a6483610dc5565b610a8c57604051636777365b60e01b81526001600160401b03841660048201526024016104e8565b6001600160401b038316600090815260208190526040902060010154610100900460ff1615610ad95760405163fe229d5d60e01b81526001600160401b03841660048201526024016104e8565b6001600160401b0383166000908152600160205260409020610afb9083610f68565b61063d57600754604051631517388760e21b81526001600160401b03851660048201526001600160a01b03909116906325c471a09073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015610b6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b909190612068565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b038516602482015260006044820152606401600060405180830381600087803b158015610be757600080fd5b505af1158015610bfb573d6000803e3d6000fd5b5050506001600160401b0384166000908152600160205260409020610c2191508361164e565b50600190506104b3565b6000610c36336106bf565b610c3f83610dc5565b610c6757604051634cee277360e11b81526001600160401b03841660048201526024016104e8565b6001600160401b0383166000908152600160205260409020610c899083610f68565b1561063d57600754604051631517388760e21b81526001600160401b03851660048201526001600160a01b039091169063b7d2b1629073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015610cfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1f9190612068565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b0385166024820152604401600060405180830381600087803b158015610d6f57600080fd5b505af1158015610d83573d6000803e3d6000fd5b5050506001600160401b0384166000908152600160205260409020610c21915083610f8a565b60008051602061222c833981519152546001600160a01b031690565b6001600160401b038116600090815260208190526040808220600101549051638d38cd4b60e01b81526201000090910464ffffffffff16600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401610738565b600754604051631517388760e21b81526001600160401b03841660048201526000916001600160a01b03169063d1f856ee9073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015610e93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb79190612068565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b03851660248201526044016040805180830381865afa158015610f09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2d91906120df565b509392505050565b6001600160401b0382166000908152600160205260408120610f579083611663565b9392505050565b60006104b3825490565b6001600160a01b03811660009081526001830160205260408120541515610f57565b6000610f57836001600160a01b03841661166f565b600080829050601f81511115610fca578260405163305a27a960e01b81526004016104e89190612009565b8051610fd582612117565b179392505050565b60008051602061222c833981519152600080611018610ffa610da9565b873061100a600460008a8c61213e565b61101391612168565b611762565b91509150816108f35763ffffffff8116156110b857825460ff60a01b1916600160a01b178355611046610da9565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b815260040161107593929190612198565b600060405180830381600087803b15801561108f57600080fd5b505af11580156110a3573d6000803e3d6000fd5b5050845460ff60a01b19168555506108f39050565b60405162d1953b60e31b81526001600160a01b03871660048201526024016104e8565b60006040518060a001604052806110f186610f9f565b815284151560208201526007546040805163a166aa8960e01b81526001600160a01b038a81166004830152919093019291169063a166aa8990602401602060405180830381865afa15801561114a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116e919061209b565b1515815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af41580156111be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e291906120b8565b64ffffffffff16815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125b91906120b8565b64ffffffffff1681525090508060046000876001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff02191690831515021790555060408201518160010160016101000a81548160ff02191690831515021790555060608201518160010160026101000a81548164ffffffffff021916908364ffffffffff16021790555060808201518160010160076101000a81548164ffffffffff021916908364ffffffffff16021790555090505084600560008360000151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055506006859080600181540180825580915050600190039060005260206000200160009091909190916101000a8154816001600160a01b0302191690836001600160a01b031602179055505050505050565b80156113cb576113c984848461186e565b505b60006040518060a001604052806113e186610f9f565b8152602001841515815260200160001515815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611440573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146491906120b8565b64ffffffffff16815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af41580156114b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114dd91906120b8565b64ffffffffff9081169091526001600160401b03968716600081815260208181526040808320865180825587840151600192830180548a86015160608c01516080909c015161ffff1990921693151561ff001916939093176101009315158402176bffffffffffffffffffff00001916620100009b8b169b909b0264ffffffffff60381b19169a909a17600160381b9a909916999099029790971790975595835260029091528120805467ffffffffffffffff191683179055600380549485018155908190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b600485040180549490911660080290920a97880219909216969091029590951790945550505050565b60008051602061222c83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b6000610f57836001600160a01b038416611cde565b6000610f578383611d2d565b600081815260018301602052604081205480156117585760006116936001836121d8565b85549091506000906116a7906001906121d8565b905080821461170c5760008660000182815481106116c7576116c7612085565b90600052602060002001549050808760000184815481106116ea576116ea612085565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061171d5761171d6121f9565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506104b3565b60009150506104b3565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516117d1919061220f565b600060405180830381855afa9150503d806000811461180c576040519150601f19603f3d011682016040523d82523d6000602084013e611811565b606091505b50915091508115611863576040815110611843578080602001905181019061183991906120df565b9094509250611863565b60208151106118635780806020019051810190611860919061209b565b93505b505094509492505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260075460408051631d6c8e3f60e21b8152905186926001600160a01b0316916375b238fc9160048083019260209291908290030181865afa1580156118e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119069190612068565b6001600160401b0316816001600160401b031614806119ac5750600760009054906101000a90046001600160a01b03166001600160a01b0316633ca7c02a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611973573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119979190612068565b6001600160401b0316816001600160401b0316145b156119d55760405163981bf42160e01b81526001600160401b03861660048201526024016104e8565b6001600160401b03851660009081526020818152604091829020825160a0810184528154815260019091015460ff808216151593830193909352610100810490921615158184015264ffffffffff620100008304811660608301819052600160381b9093041660808201529151638d38cd4b60e01b8152600481019190915290925073__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401602060405180830381865af4158015611a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab7919061209b565b8015611acb57508160200151151583151514155b15611b0857602082015160405162d1cd9360e51b81526001600160401b0387166004820152841515602482015290151560448201526064016104e8565b828015611b1f57506127106001600160401b038216105b15611b4857604051633119b9df60e21b81526001600160401b03861660048201526024016104e8565b82158015611b6157506127106001600160401b03821610155b15611b8a5760405163094fb39160e01b81526001600160401b03861660048201526024016104e8565b6000611b9585610f9f565b9050611ba081611d57565b600003611bcb576040516321ab17ab60e01b81526001600160401b03871660048201526024016104e8565b60008181526002602090815260409182902054825163bc1b392d60e01b81529251611c6e936001600160401b039092169273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9263bc1b392d92600480830193928290030181865af4158015611c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5c9190612068565b6001600160401b039081169116141590565b8015611c9457506000818152600260205260409020546001600160401b03878116911614155b15611cd55760008181526002602052604090819020549051631660fb9360e21b81526001600160401b039091166004820152602481018290526044016104e8565b50509392505050565b6000818152600183016020526040812054611d25575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556104b3565b5060006104b3565b6000826000018281548110611d4457611d44612085565b9060005260206000200154905092915050565b600060ff8216601f8111156104b357604051632cd44ac360e21b815260040160405180910390fd5b6001600160401b0381168114611d9457600080fd5b50565b600060208284031215611da957600080fd5b8135610f5781611d7f565b600060208284031215611dc657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611df457600080fd5b81356001600160401b0380821115611e0e57611e0e611dcd565b604051601f8301601f19908116603f01168101908282118183101715611e3657611e36611dcd565b81604052838152866020858801011115611e4f57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060208284031215611e8157600080fd5b81356001600160401b03811115611e9757600080fd5b611ea384828501611de3565b949350505050565b80356001600160a01b0381168114611ec257600080fd5b919050565b60008060408385031215611eda57600080fd5b611ee383611eab565b915060208301356001600160401b03811115611efe57600080fd5b611f0a85828601611de3565b9150509250929050565b600060208284031215611f2657600080fd5b610f5782611eab565b60008060408385031215611f4257600080fd5b8235611ee381611d7f565b8015158114611d9457600080fd5b60008060408385031215611f6e57600080fd5b611f7783611eab565b91506020830135611f8781611f4d565b809150509250929050565b60008060408385031215611fa557600080fd5b8235611f7781611d7f565b60008060408385031215611fc357600080fd5b8235611fce81611d7f565b9150611fdc60208401611eab565b90509250929050565b60005b83811015612000578181015183820152602001611fe8565b50506000910152565b6020815260008251806020840152612028816040850160208701611fe5565b601f01601f19169190910160400192915050565b6000806040838503121561204f57600080fd5b823561205a81611d7f565b946020939093013593505050565b60006020828403121561207a57600080fd5b8151610f5781611d7f565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156120ad57600080fd5b8151610f5781611f4d565b6000602082840312156120ca57600080fd5b815164ffffffffff81168114610f5757600080fd5b600080604083850312156120f257600080fd5b82516120fd81611f4d565b602084015190925063ffffffff81168114611f8757600080fd5b80516020808301519190811015612138576000198160200360031b1b821691505b50919050565b6000808585111561214e57600080fd5b8386111561215b57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156121905780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b818103818111156104b357634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60008251612221818460208701611fe5565b919091019291505056fef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a26469706673582212204e94a12f5b0c64e1b9ce6b5dd5012c431b9220902da898b56430104ee877ca8c64736f6c63430008140033",
791
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101585760003560e01c806386892313116100c3578063bc62a0a51161007c578063bc62a0a5146103db578063bcfb11b014610410578063bf7e214f14610439578063c6a0017914610459578063d1f856ee1461046c578063d78a83b11461047f57600080fd5b8063868923131461027357806386f0c47b146102865780638fb3603714610381578063af8d729e146103a2578063b428b0b0146103b5578063b7d2b162146103c857600080fd5b80635dfa73db116101155780635dfa73db146102095780635fa8aad414610212578063605aa10a146102275780636270b7c31461023a57806368ed5d2e1461024d5780637a9e5e4b1461026057600080fd5b8063030149741461015d57806337f135d714610183578063384c9a57146101a0578063392f5f64146101c35780633fd85561146101cb5780635511a6f3146101f6575b600080fd5b61017061016b366004611d97565b610492565b6040519081526020015b60405180910390f35b61018b600081565b60405163ffffffff909116815260200161017a565b6101b36101ae366004611d97565b6104b9565b604051901515815260200161017a565b600354610170565b6101de6101d9366004611db4565b610646565b6040516001600160401b03909116815260200161017a565b6101de610204366004611e6f565b61068b565b6101de61271081565b610225610220366004611ec7565b6106ba565b005b6101b3610235366004611f14565b6106d8565b610225610248366004611f2f565b610779565b61022561025b366004611f2f565b610790565b61022561026e366004611f14565b6107a6565b610225610281366004611f5b565b610829565b61032e610294366004611d97565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152506001600160401b031660009081526020818152604091829020825160a0810184528154815260019091015460ff808216151593830193909352610100810490921615159281019290925264ffffffffff62010000820481166060840152600160381b90910416608082015290565b60405161017a9190600060a08201905082518252602083015115156020830152604083015115156040830152606083015164ffffffffff8082166060850152806080860151166080850152505092915050565b6103896108fb565b6040516001600160e01b0319909116815260200161017a565b6102256103b0366004611f92565b610934565b6101b36103c3366004611fb0565b610a50565b6101b36103d6366004611fb0565b610c2b565b6104036040518060400160405280600981526020016841646d696e526f6c6560b81b81525081565b60405161017a9190612009565b6104036040518060400160405280600a8152602001695075626c6963526f6c6560b01b81525081565b610441610da9565b6040516001600160a01b03909116815260200161017a565b6101b3610467366004611d97565b610dc5565b6101b361047a366004611fb0565b610e25565b61044161048d36600461203c565b610f35565b6001600160401b03811660009081526001602052604081206104b390610f5e565b92915050565b6000336104c583610dc5565b6104f157604051627a416f60e01b81526001600160401b03841660048201526024015b60405180910390fd5b6001600160401b03831660009081526001602052604090206105139082610f68565b1561063d57600754604051631517388760e21b81526001600160401b03851660048201526001600160a01b039091169063b7d2b1629073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015610585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a99190612068565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b0384166024820152604401600060405180830381600087803b1580156105f957600080fd5b505af115801561060d573d6000803e3d6000fd5b5050506001600160401b0384166000908152600160205260409020610633915082610f8a565b5060019392505050565b50600092915050565b60006003828154811061065b5761065b612085565b90600052602060002090600491828204019190066008029054906101000a90046001600160401b03169050919050565b60006002600061069a84610f9f565b81526020810191909152604001600020546001600160401b031692915050565b6106c7335b600036610fdd565b6106d482826001806110db565b5050565b6001600160a01b0381166000908152600460208190526040808320600101549051638d38cd4b60e01b81526201000090910464ffffffffff169181019190915273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b906024015b602060405180830381865af4158015610755573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b3919061209b565b610782336106bf565b6106d48282600060016113b8565b610799336106bf565b6106d482826001806113b8565b336107af610da9565b6001600160a01b0316816001600160a01b0316146107ea5760405162d1953b60e31b81526001600160a01b03821660048201526024016104e8565b816001600160a01b03163b600003610820576040516361798f2f60e11b81526001600160a01b03831660048201526024016104e8565b6106d4826115ed565b610832336106bf565b61083b826106d8565b6108635760405163ba52b0f160e01b81526001600160a01b03831660048201526024016104e8565b6001600160a01b03828116600081815260046020819052604091829020600101805461ff00191661010087151590810291909117909155600754925163167bd39560e01b81529182019390935260248101929092529091169063167bd39590604401600060405180830381600087803b1580156108df57600080fd5b505af11580156108f3573d6000803e3d6000fd5b505050505050565b60008051602061222c833981519152805460009190600160a01b900460ff1661092557600061092e565b638fb3603760e01b5b91505090565b61093d336106bf565b61094682610dc5565b61096e5760405163135c79b760e21b81526001600160401b03831660048201526024016104e8565b6001600160401b03821660009081526020818152604091829020600101805461ff0019166101008515150217905581516356db0c1960e11b8152915173__$d53880c81dc91c20799140d711e5ab8718$__9263adb618329260048083019391928290030181865af41580156109e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0b91906120b8565b6001600160401b039092166000908152602081905260409020600101805464ffffffffff93909316600160381b0264ffffffffff60381b199093169290921790915550565b6000610a5b336106bf565b610a6483610dc5565b610a8c57604051636777365b60e01b81526001600160401b03841660048201526024016104e8565b6001600160401b038316600090815260208190526040902060010154610100900460ff1615610ad95760405163fe229d5d60e01b81526001600160401b03841660048201526024016104e8565b6001600160401b0383166000908152600160205260409020610afb9083610f68565b61063d57600754604051631517388760e21b81526001600160401b03851660048201526001600160a01b03909116906325c471a09073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015610b6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b909190612068565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b038516602482015260006044820152606401600060405180830381600087803b158015610be757600080fd5b505af1158015610bfb573d6000803e3d6000fd5b5050506001600160401b0384166000908152600160205260409020610c2191508361164e565b50600190506104b3565b6000610c36336106bf565b610c3f83610dc5565b610c6757604051634cee277360e11b81526001600160401b03841660048201526024016104e8565b6001600160401b0383166000908152600160205260409020610c899083610f68565b1561063d57600754604051631517388760e21b81526001600160401b03851660048201526001600160a01b039091169063b7d2b1629073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015610cfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1f9190612068565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b0385166024820152604401600060405180830381600087803b158015610d6f57600080fd5b505af1158015610d83573d6000803e3d6000fd5b5050506001600160401b0384166000908152600160205260409020610c21915083610f8a565b60008051602061222c833981519152546001600160a01b031690565b6001600160401b038116600090815260208190526040808220600101549051638d38cd4b60e01b81526201000090910464ffffffffff16600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401610738565b600754604051631517388760e21b81526001600160401b03841660048201526000916001600160a01b03169063d1f856ee9073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015610e93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb79190612068565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b03851660248201526044016040805180830381865afa158015610f09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2d91906120df565b509392505050565b6001600160401b0382166000908152600160205260408120610f579083611663565b9392505050565b60006104b3825490565b6001600160a01b03811660009081526001830160205260408120541515610f57565b6000610f57836001600160a01b03841661166f565b600080829050601f81511115610fca578260405163305a27a960e01b81526004016104e89190612009565b8051610fd582612117565b179392505050565b60008051602061222c833981519152600080611018610ffa610da9565b873061100a600460008a8c61213e565b61101391612168565b611762565b91509150816108f35763ffffffff8116156110b857825460ff60a01b1916600160a01b178355611046610da9565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b815260040161107593929190612198565b600060405180830381600087803b15801561108f57600080fd5b505af11580156110a3573d6000803e3d6000fd5b5050845460ff60a01b19168555506108f39050565b60405162d1953b60e31b81526001600160a01b03871660048201526024016104e8565b60006040518060a001604052806110f186610f9f565b815284151560208201526007546040805163a166aa8960e01b81526001600160a01b038a81166004830152919093019291169063a166aa8990602401602060405180830381865afa15801561114a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116e919061209b565b1515815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af41580156111be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e291906120b8565b64ffffffffff16815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125b91906120b8565b64ffffffffff1681525090508060046000876001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff02191690831515021790555060408201518160010160016101000a81548160ff02191690831515021790555060608201518160010160026101000a81548164ffffffffff021916908364ffffffffff16021790555060808201518160010160076101000a81548164ffffffffff021916908364ffffffffff16021790555090505084600560008360000151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055506006859080600181540180825580915050600190039060005260206000200160009091909190916101000a8154816001600160a01b0302191690836001600160a01b031602179055505050505050565b80156113cb576113c984848461186e565b505b60006040518060a001604052806113e186610f9f565b8152602001841515815260200160001515815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611440573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146491906120b8565b64ffffffffff16815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af41580156114b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114dd91906120b8565b64ffffffffff9081169091526001600160401b03968716600081815260208181526040808320865180825587840151600192830180548a86015160608c01516080909c015161ffff1990921693151561ff001916939093176101009315158402176bffffffffffffffffffff00001916620100009b8b169b909b0264ffffffffff60381b19169a909a17600160381b9a909916999099029790971790975595835260029091528120805467ffffffffffffffff191683179055600380549485018155908190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b600485040180549490911660080290920a97880219909216969091029590951790945550505050565b60008051602061222c83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b6000610f57836001600160a01b038416611cde565b6000610f578383611d2d565b600081815260018301602052604081205480156117585760006116936001836121d8565b85549091506000906116a7906001906121d8565b905080821461170c5760008660000182815481106116c7576116c7612085565b90600052602060002001549050808760000184815481106116ea576116ea612085565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061171d5761171d6121f9565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506104b3565b60009150506104b3565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516117d1919061220f565b600060405180830381855afa9150503d806000811461180c576040519150601f19603f3d011682016040523d82523d6000602084013e611811565b606091505b50915091508115611863576040815110611843578080602001905181019061183991906120df565b9094509250611863565b60208151106118635780806020019051810190611860919061209b565b93505b505094509492505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915260075460408051631d6c8e3f60e21b8152905186926001600160a01b0316916375b238fc9160048083019260209291908290030181865afa1580156118e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119069190612068565b6001600160401b0316816001600160401b031614806119ac5750600760009054906101000a90046001600160a01b03166001600160a01b0316633ca7c02a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611973573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119979190612068565b6001600160401b0316816001600160401b0316145b156119d55760405163981bf42160e01b81526001600160401b03861660048201526024016104e8565b6001600160401b03851660009081526020818152604091829020825160a0810184528154815260019091015460ff808216151593830193909352610100810490921615158184015264ffffffffff620100008304811660608301819052600160381b9093041660808201529151638d38cd4b60e01b8152600481019190915290925073__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401602060405180830381865af4158015611a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab7919061209b565b8015611acb57508160200151151583151514155b15611b0857602082015160405162d1cd9360e51b81526001600160401b0387166004820152841515602482015290151560448201526064016104e8565b828015611b1f57506127106001600160401b038216105b15611b4857604051633119b9df60e21b81526001600160401b03861660048201526024016104e8565b82158015611b6157506127106001600160401b03821610155b15611b8a5760405163094fb39160e01b81526001600160401b03861660048201526024016104e8565b6000611b9585610f9f565b9050611ba081611d57565b600003611bcb576040516321ab17ab60e01b81526001600160401b03871660048201526024016104e8565b60008181526002602090815260409182902054825163bc1b392d60e01b81529251611c6e936001600160401b039092169273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9263bc1b392d92600480830193928290030181865af4158015611c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5c9190612068565b6001600160401b039081169116141590565b8015611c9457506000818152600260205260409020546001600160401b03878116911614155b15611cd55760008181526002602052604090819020549051631660fb9360e21b81526001600160401b039091166004820152602481018290526044016104e8565b50509392505050565b6000818152600183016020526040812054611d25575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556104b3565b5060006104b3565b6000826000018281548110611d4457611d44612085565b9060005260206000200154905092915050565b600060ff8216601f8111156104b357604051632cd44ac360e21b815260040160405180910390fd5b6001600160401b0381168114611d9457600080fd5b50565b600060208284031215611da957600080fd5b8135610f5781611d7f565b600060208284031215611dc657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611df457600080fd5b81356001600160401b0380821115611e0e57611e0e611dcd565b604051601f8301601f19908116603f01168101908282118183101715611e3657611e36611dcd565b81604052838152866020858801011115611e4f57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060208284031215611e8157600080fd5b81356001600160401b03811115611e9757600080fd5b611ea384828501611de3565b949350505050565b80356001600160a01b0381168114611ec257600080fd5b919050565b60008060408385031215611eda57600080fd5b611ee383611eab565b915060208301356001600160401b03811115611efe57600080fd5b611f0a85828601611de3565b9150509250929050565b600060208284031215611f2657600080fd5b610f5782611eab565b60008060408385031215611f4257600080fd5b8235611ee381611d7f565b8015158114611d9457600080fd5b60008060408385031215611f6e57600080fd5b611f7783611eab565b91506020830135611f8781611f4d565b809150509250929050565b60008060408385031215611fa557600080fd5b8235611f7781611d7f565b60008060408385031215611fc357600080fd5b8235611fce81611d7f565b9150611fdc60208401611eab565b90509250929050565b60005b83811015612000578181015183820152602001611fe8565b50506000910152565b6020815260008251806020840152612028816040850160208701611fe5565b601f01601f19169190910160400192915050565b6000806040838503121561204f57600080fd5b823561205a81611d7f565b946020939093013593505050565b60006020828403121561207a57600080fd5b8151610f5781611d7f565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156120ad57600080fd5b8151610f5781611f4d565b6000602082840312156120ca57600080fd5b815164ffffffffff81168114610f5757600080fd5b600080604083850312156120f257600080fd5b82516120fd81611f4d565b602084015190925063ffffffff81168114611f8757600080fd5b80516020808301519190811015612138576000198160200360031b1b821691505b50919050565b6000808585111561214e57600080fd5b8386111561215b57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156121905780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b818103818111156104b357634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60008251612221818460208701611fe5565b919091019291505056fef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a26469706673582212204e94a12f5b0c64e1b9ce6b5dd5012c431b9220902da898b56430104ee877ca8c64736f6c63430008140033",
1023
+ "bytecode": "0x608060405234801561001057600080fd5b50613711806100206000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c80635bfa502711610125578063b7d2b162116100ad578063c6a001791161007c578063c6a001791461054c578063d1f856ee1461055f578063d45f8f9214610572578063eaf09b3714610585578063f2345aea1461059857600080fd5b8063b7d2b162146104bb578063bc62a0a5146104ce578063bcfb11b014610503578063bf7e214f1461052c57600080fd5b80637a9e5e4b116100f45780637a9e5e4b146104125780637b33d4fe146104255780638fb3603714610458578063b428b0b014610479578063b70096131461048c57600080fd5b80635bfa5027146103c35780635dfa73db146103e3578063605aa10a146103ec57806363709eaf146103ff57600080fd5b8063392f5f64116101a8578063495ea56411610177578063495ea564146103435780634a3a1e0014610356578063530dd456146103695780635511a6f31461039d57806356eedb4a146103b057600080fd5b8063392f5f64146102ea5780633fd85561146102f257806344ec4c301461031d578063485cc9551461033057600080fd5b806329db8c3d116101e457806329db8c3d1461029457806330cae187146102a757806337f135d7146102ba578063384c9a57146102d757600080fd5b8063030149741461021657806312e1ebc51461023c57806312f48f151461025c57806326decd4014610271575b600080fd5b610229610224366004612d9e565b6105ab565b6040519081526020015b60405180910390f35b61024f61024a366004612dd0565b6105d2565b6040516102339190612e25565b61026f61026a366004612f16565b610690565b005b61028461027f366004612dd0565b6106ad565b6040519015158152602001610233565b61026f6102a2366004612f65565b61071c565b61026f6102b536600461300f565b610854565b6102c2600081565b60405163ffffffff9091168152602001610233565b6102846102e5366004612d9e565b610956565b600354610229565b610305610300366004613048565b61096a565b6040516001600160401b039091168152602001610233565b61026f61032b366004612f16565b6109af565b61026f61033e366004613061565b6109c4565b610284610351366004612d9e565b610bdd565b61026f61036436600461308f565b610c8b565b610305610377366004612d9e565b6001600160401b0390811660009081526020819052604090206001015461010090041690565b6103056103ab3660046130ad565b610ca0565b61026f6103be366004612f65565b610ccf565b6103d66103d1366004612d9e565b610d7a565b60405161023391906130e9565b61030561271081565b6102846103fa366004612dd0565b610e40565b61026f61040d36600461314d565b610eb9565b61026f610420366004612dd0565b611014565b610438610433366004613193565b611097565b604080516001600160401b03938416815292909116602083015201610233565b6104606110e5565b6040516001600160e01b03199091168152602001610233565b6102846104873660046131ec565b61111e565b61049f61049a366004613222565b6113fd565b60408051921515835263ffffffff909116602083015201610233565b6102846104c93660046131ec565b611482565b6104f66040518060400160405280600981526020016841646d696e526f6c6560b81b81525081565b604051610233919061328d565b6104f66040518060400160405280600a8152602001695075626c6963526f6c6560b01b81525081565b6105346115e0565b6040516001600160a01b039091168152602001610233565b61028461055a366004612d9e565b6115fc565b61028461056d3660046131ec565b61165d565b61026f610580366004612f16565b611755565b6105346105933660046132c0565b611801565b61026f6105a63660046132ec565b611823565b6001600160401b03811660009081526001602052604081206105cc90611847565b92915050565b6040805160a080820183526000808352602080840182905283850182905260608401829052608084018290526001600160a01b038616825260058152908490208451928301909452835482526001840154929391929083019060ff16600381111561063f5761063f612ded565b600381111561065057610650612ded565b81526001919091015460ff6101008204161515602083015264ffffffffff62010000820481166040840152600160381b9091041660609091015292915050565b61069d335b600036611851565b6106a98282600161194f565b5050565b60085460405163a166aa8960e01b81526001600160a01b038381166004830152600092169063a166aa8990602401602060405180830381865afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cc919061334f565b61072533610695565b600061073085611d60565b6000818152600660205260409020549091506001600160a01b031660036001600160a01b03821660009081526005602052604090206001015460ff16600381111561077d5761077d612ded565b036107c9576001600160a01b03811660009081526005602052604090819020600101549051632d50ace560e11b81526107c091849160ff9091169060040161336c565b60405180910390fd5b60035b6001600160401b03841660009081526020819052604090206001015460ff1660038111156107fc576107fc612ded565b0361083f576001600160401b03831660009081526020819052604090819020600101549051630bb1a0c760e01b81526107c091859160ff90911690600401613380565b61084c8183878787611d9e565b505050505050565b61085d33610695565b610866826115fc565b61088e576040516368f4b88960e01b81526001600160401b03831660048201526024016107c0565b60016001600160401b03831660009081526020819052604090206001015460ff1660038111156108c0576108c0612ded565b036108e9576040516368f4b88960e01b81526001600160401b03831660048201526024016107c0565b6108f2816115fc565b61091a576040516368f4b88960e01b81526001600160401b03821660048201526024016107c0565b6001600160401b0391821660009081526020819052604090206001018054929091166101000268ffffffffffffffff0019909216919091179055565b6000336109638382611e69565b9392505050565b60006003828154811061097f5761097f61339d565b90600052602060002090600491828204019190066008029054906101000a90046001600160401b03169050919050565b6109b833610695565b6106a98282600261194f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610a095750825b90506000826001600160401b03166001148015610a255750303b155b905081158015610a33575080155b15610a515760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610a7b57845460ff60401b1916600160401b1785555b6001600160a01b038716610a8e57600080fd5b6001600160a01b038616610aa157600080fd5b610aaa8761214d565b600880546001600160a01b03808a166001600160a01b03199283161790925560098054928916929091169190911790556004805467ffffffffffffffff1916612710179055610b23610afa612161565b6040518060400160405280600981526020016841646d696e526f6c6560b81b81525060016121de565b610b58610b2e612562565b6040518060400160405280600a8152602001695075626c6963526f6c6560b01b81525060016121de565b610b8d60016000610b67612161565b6001600160401b03166001600160401b03168152602001908152602001600020306125a3565b508315610bd457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b604051631517388760e21b81526001600160401b0382166004820152600090819073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015610c3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5e91906133b3565b6001600160401b0316905061271081108015906109635750610c816002826133d0565b6001149392505050565b610c9433610695565b6106a9828260016121de565b600060026000610caf84611d60565b81526020810191909152604001600020546001600160401b031692915050565b610cd833610695565b6000610ce385611d60565b6000818152600660205260409020549091506001600160a01b031660016001600160a01b03821660009081526005602052604090206001015460ff166003811115610d3057610d30612ded565b03610d73576001600160a01b03811660009081526005602052604090819020600101549051632d50ace560e11b81526107c091849160ff9091169060040161336c565b60016107cc565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526001600160401b03821660009081526020818152604091829020825160a08101909352805483526001810154909183019060ff166003811115610dea57610dea612ded565b6003811115610dfb57610dfb612ded565b8152600191909101546001600160401b03610100820416602083015264ffffffffff600160481b820481166040840152600160701b9091041660609091015292915050565b6001600160a01b038116600090815260056020526040808220600101549051638d38cd4b60e01b81526201000090910464ffffffffff16600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b906024015b602060405180830381865af41580156106f8573d6000803e3d6000fd5b610ec233610695565b6000610ecd83611d60565b6000818152600660205260409020549091506001600160a01b031680610f095760405163c3ab297f60e01b8152600481018390526024016107c0565b60016001600160a01b03821660009081526005602052604090206001015460ff166003811115610f3b57610f3b612ded565b03610f7e576001600160a01b03811660009081526005602052604090819020600101549051632d50ace560e11b81526107c091849160ff9091169060040161336c565b6001600160a01b0381811660008181526005602052604090819020600101805461ff00191661010088151590810291909117909155600854915163167bd39560e01b8152600481019390935260248301529091169063167bd39590604401600060405180830381600087803b158015610ff657600080fd5b505af115801561100a573d6000803e3d6000fd5b5050505050505050565b3361101d6115e0565b6001600160a01b0316816001600160a01b0316146110585760405162d1953b60e31b81526001600160a01b03821660048201526024016107c0565b816001600160a01b03163b60000361108e576040516361798f2f60e11b81526001600160a01b03831660048201526024016107c0565b6106a9826125b8565b6000806110a333610695565b6110ab612619565b90925090506110bc828560036121de565b6110c8818460036121de565b6110d28282610854565b6110de816102b561275b565b9250929050565b6000805160206136bc833981519152805460009190600160a01b900460ff1661110f576000611118565b638fb3603760e01b5b91505090565b600082600061114d826001600160401b0390811660009081526020819052604090206001015461010090041690565b600854604051631517388760e21b81526001600160401b038316600482015291925060009182916001600160a01b03169063d1f856ee9073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af41580156111c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e491906133b3565b336040518363ffffffff1660e01b81526004016112029291906133f2565b6040805180830381865afa15801561121e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112429190613414565b915091508063ffffffff1660001461125c5761125c61344c565b8161129757335b6040516366c7cee960e01b81526001600160a01b0390911660048201526001600160401b03851660248201526044016107c0565b6112a0876115fc565b6112c8576040516368f4b88960e01b81526001600160401b03881660048201526024016107c0565b6001600160401b03871660009081526001602052604090206112ea90876125a3565b945084156113f357600854604051631517388760e21b81526001600160401b03891660048201526001600160a01b03909116906325c471a09073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af415801561135f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138391906133b3565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b038916602482015260006044820152606401600060405180830381600087803b1580156113da57600080fd5b505af11580156113ee573d6000803e3d6000fd5b505050505b5050505092915050565b60085460405163b700961360e01b815260009182916001600160a01b039091169063b70096139061143690889088908890600401613462565b6040805180830381865afa158015611452573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114769190613414565b91509150935093915050565b60008260006114b1826001600160401b0390811660009081526020819052604090206001015461010090041690565b600854604051631517388760e21b81526001600160401b038316600482015291925060009182916001600160a01b03169063d1f856ee9073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015611524573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154891906133b3565b336040518363ffffffff1660e01b81526004016115669291906133f2565b6040805180830381865afa158015611582573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a69190613414565b915091508063ffffffff166000146115c0576115c061344c565b816115cb5733611263565b6115d58787611e69565b979650505050505050565b6000805160206136bc833981519152546001600160a01b031690565b6001600160401b038116600090815260208190526040808220600101549051638d38cd4b60e01b8152600160481b90910464ffffffffff16600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401610e9c565b600854604051631517388760e21b81526001600160401b03841660048201526000916001600160a01b03169063d1f856ee9073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af41580156116cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ef91906133b3565b846040518363ffffffff1660e01b815260040161170d9291906133f2565b6040805180830381865afa158015611729573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174d9190613414565b509392505050565b61175e33610695565b60095460405163c3c5a54760e01b81526001600160a01b0384811660048301529091169063c3c5a54790602401602060405180830381865afa1580156117a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cc919061334f565b156117f557604051631d53345160e21b81526001600160a01b03831660048201526024016107c0565b6106a98282600361194f565b6001600160401b03821660009081526001602052604081206109639083612796565b61182c33610695565b611838838360026121de565b6118428382610854565b505050565b60006105cc825490565b6000805160206136bc83398151915260008061188c61186e6115e0565b873061187e600460008a8c61348f565b611887916134b9565b6127a2565b915091508161084c5763ffffffff81161561192c57825460ff60a01b1916600160a01b1783556118ba6115e0565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016118e9939291906134e9565b600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b5050845460ff60a01b191685555061084c9050565b60405162d1953b60e31b81526001600160a01b03871660048201526024016107c0565b600061195a83611d60565b9050611967848284612899565b6001600160a01b03841660009081526005602052604090819020600101549051638d38cd4b60e01b81526201000090910464ffffffffff16600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401602060405180830381865af41580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061334f565b15611a45576001600160a01b03841660008181526005602052604090819020549051630e0a57d560e11b8152600481019290925260248201526044016107c0565b6000818152600660205260409020546001600160a01b031615611aa657600081815260066020526040908190205490516361c0558f60e01b81526001600160a01b0380871660048301529091166024820152604481018290526064016107c0565b60006040518060a00160405280838152602001846003811115611acb57611acb612ded565b815260085460405163a166aa8960e01b81526001600160a01b0389811660048301526020909301929091169063a166aa8990602401602060405180830381865afa158015611b1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b41919061334f565b1515815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb59190613529565b64ffffffffff16815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2e9190613529565b64ffffffffff1690526001600160a01b03861660009081526005602090815260409091208251815590820151600180830180549495508594909160ff1990911690836003811115611c8157611c81612ded565b021790555060408281015160019283018054606086015160809096015166ffffffffffff00199091166101009315159390930266ffffffffff00001916929092176201000064ffffffffff96871602176bffffffffff000000000000001916600160381b95909216949094021790925591516000908152600660205290812080546001600160a01b03199081166001600160a01b03989098169788179091556007805493840181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6889091018054909116909417909355505050565b600080829050601f81511115611d8b578260405163305a27a960e01b81526004016107c0919061328d565b8051611d9682613550565b179392505050565b6001600160a01b038516611dc85760405163c3ab297f60e01b8152600481018590526024016107c0565b611dd1816115fc565b611df9576040516368f4b88960e01b81526001600160401b03821660048201526024016107c0565b6008546040516308d6122d60e01b815282916001600160a01b0316906308d6122d90611e2f908990889088908790600401613577565b600060405180830381600087803b158015611e4957600080fd5b505af1158015611e5d573d6000803e3d6000fd5b50505050505050505050565b6000611e74836115fc565b611e9c576040516368f4b88960e01b81526001600160401b03841660048201526024016107c0565b6001600160401b0383166000908152600160205260409020611ebe9083612985565b905080156105cc57604051631517388760e21b81526001600160401b038416600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015611f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4591906133b3565b600854604051635be958b160e11b81529192506001600160a01b03169063b7d2b16290611f7890849087906004016133f2565b600060405180830381600087803b158015611f9257600080fd5b505af1158015611fa6573d6000803e3d6000fd5b50505050611fb384610bdd565b15612146576000611fc5600183613600565b6040516368aebf7b60e01b81526001600160401b038216600482015290915060009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af4158015612023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204791906133b3565b6001600160401b03811660009081526001602052604081209192509061206c90611847565b905060005b81811015612141576001600160401b038316600090815260016020526040902061209b9082612796565b6001600160401b0384166000908152600160205260408120919850906120c19089612985565b9050801561212e57600854604051635be958b160e11b81526001600160a01b039091169063b7d2b162906120fb9088908c906004016133f2565b600060405180830381600087803b15801561211557600080fd5b505af1158015612129573d6000803e3d6000fd5b505050505b508061213981613620565b915050612071565b505050505b5092915050565b61215561299a565b61215e816129e5565b50565b6040516368aebf7b60e01b81526000600482018190529073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b906024015b602060405180830381865af41580156121b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d991906133b3565b905090565b60006121e983611d60565b90506121f68482846129f6565b6121ff846115fc565b1561222857604051631aacd43160e21b81526001600160401b03851660048201526024016107c0565b6000818152600260205260409081902054905163a42e52e960e01b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063a42e52e990602401602060405180830381865af4158015612291573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b5919061334f565b156122f65760008181526002602052604090819020549051637169291360e11b81526001600160401b039091166004820152602481018290526044016107c0565b60006040518060a0016040528083815260200184600381111561231b5761231b612ded565b8152602001612328612161565b6001600160401b0316815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af415801561237f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a39190613529565b64ffffffffff16815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af41580156123f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241c9190613529565b64ffffffffff1690526001600160401b0386166000908152602081815260409091208251815590820151600180830180549495508594909160ff199091169083600381111561246d5761246d612ded565b02179055506040828101516001928301805460608601516080909601516dffffffffffffffffffffffffff00199091166101006001600160401b0394851681026dffffffffff000000000000000000191691909117600160481b64ffffffffff988916021764ffffffffff60701b1916600160701b9790921696909602179055935160009081526002602052908120805467ffffffffffffffff19169885169889179055600380549283018155908190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b600483040180549290911660080290920a92830219169190950217909355505050565b6040516368aebf7b60e01b81526001600160401b03600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401612198565b6000610963836001600160a01b038416612be5565b6000805160206136bc83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b60045460009081906001600160401b031681612636826001613639565b9050612643826002613639565b6004805467ffffffffffffffff19166001600160401b039283161781556040516368aebf7b60e01b81529184169082015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af41580156126b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d491906133b3565b6040516368aebf7b60e01b81526001600160401b038316600482015290945073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af415801561272f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275391906133b3565b925050509091565b6040516368aebf7b60e01b81526001600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401612198565b60006109638383612c34565b600080600080876001600160a01b03168787876040516024016127c793929190613462565b60408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516127fc9190613659565b600060405180830381855afa9150503d8060008114612837576040519150601f19603f3d011682016040523d82523d6000602084013e61283c565b606091505b5091509150811561288e57604081511061286e57808060200190518101906128649190613414565b909450925061288e565b602081511061288e578080602001905181019061288b919061334f565b93505b505094509492505050565b6000836001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128fd9190613675565b90506129076115e0565b6001600160a01b0316816001600160a01b03161461294b57604051631db0625160e01b81526001600160a01b038086166004830152821660248201526044016107c0565b61295483612c5e565b60000361297f5760405163a12ddedf60e01b81526001600160a01b03851660048201526024016107c0565b50505050565b6000610963836001600160a01b038416612c86565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166129e357604051631afcd79f60e31b815260040160405180910390fd5b565b6129ed61299a565b61215e816125b8565b604051631517388760e21b81526001600160401b038416600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7591906133b3565b6001600160401b031690506003826003811115612a9457612a94612ded565b148015612aa2575061271081105b15612acb5760405163be511cc160e01b81526001600160401b03851660048201526024016107c0565b6003826003811115612adf57612adf612ded565b14158015612aef57506127108110155b8015612b885750612afe612562565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7b91906133b3565b6001600160401b03168114155b15612bb157604051630e08ff2d60e11b81526001600160401b03851660048201526024016107c0565b612bba83612c5e565b60000361297f57604051631367e80d60e31b81526001600160401b03851660048201526024016107c0565b6000818152600183016020526040812054612c2c575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105cc565b5060006105cc565b6000826000018281548110612c4b57612c4b61339d565b9060005260206000200154905092915050565b600060ff8216601f8111156105cc57604051632cd44ac360e21b815260040160405180910390fd5b60008181526001830160205260408120548015612d6f576000612caa600183613692565b8554909150600090612cbe90600190613692565b9050808214612d23576000866000018281548110612cde57612cde61339d565b9060005260206000200154905080876000018481548110612d0157612d0161339d565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612d3457612d346136a5565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506105cc565b60009150506105cc565b6001600160401b038116811461215e57600080fd5b8035612d9981612d79565b919050565b600060208284031215612db057600080fd5b813561096381612d79565b6001600160a01b038116811461215e57600080fd5b600060208284031215612de257600080fd5b813561096381612dbb565b634e487b7160e01b600052602160045260246000fd5b60048110612e2157634e487b7160e01b600052602160045260246000fd5b9052565b8151815260208083015160a0830191612e4090840182612e03565b50604083015115156040830152606083015164ffffffffff8082166060850152806080860151166080850152505092915050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612e9b57600080fd5b81356001600160401b0380821115612eb557612eb5612e74565b604051601f8301601f19908116603f01168101908282118183101715612edd57612edd612e74565b81604052838152866020858801011115612ef657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060408385031215612f2957600080fd5b8235612f3481612dbb565b915060208301356001600160401b03811115612f4f57600080fd5b612f5b85828601612e8a565b9150509250929050565b60008060008060608587031215612f7b57600080fd5b84356001600160401b0380821115612f9257600080fd5b612f9e88838901612e8a565b95506020870135915080821115612fb457600080fd5b818701915087601f830112612fc857600080fd5b813581811115612fd757600080fd5b8860208260051b8501011115612fec57600080fd5b60208301955080945050505061300460408601612d8e565b905092959194509250565b6000806040838503121561302257600080fd5b823561302d81612d79565b9150602083013561303d81612d79565b809150509250929050565b60006020828403121561305a57600080fd5b5035919050565b6000806040838503121561307457600080fd5b823561307f81612dbb565b9150602083013561303d81612dbb565b600080604083850312156130a257600080fd5b8235612f3481612d79565b6000602082840312156130bf57600080fd5b81356001600160401b038111156130d557600080fd5b6130e184828501612e8a565b949350505050565b8151815260208083015160a083019161310490840182612e03565b506001600160401b036040840151166040830152606083015164ffffffffff8082166060850152806080860151166080850152505092915050565b801515811461215e57600080fd5b6000806040838503121561316057600080fd5b82356001600160401b0381111561317657600080fd5b61318285828601612e8a565b925050602083013561303d8161313f565b600080604083850312156131a657600080fd5b82356001600160401b03808211156131bd57600080fd5b6131c986838701612e8a565b935060208501359150808211156131df57600080fd5b50612f5b85828601612e8a565b600080604083850312156131ff57600080fd5b823561307f81612d79565b80356001600160e01b031981168114612d9957600080fd5b60008060006060848603121561323757600080fd5b833561324281612dbb565b9250602084013561325281612dbb565b91506132606040850161320a565b90509250925092565b60005b8381101561328457818101518382015260200161326c565b50506000910152565b60208152600082518060208401526132ac816040850160208701613269565b601f01601f19169190910160400192915050565b600080604083850312156132d357600080fd5b82356132de81612d79565b946020939093013593505050565b60008060006060848603121561330157600080fd5b833561330c81612d79565b925060208401356001600160401b0381111561332757600080fd5b61333386828701612e8a565b925050604084013561334481612d79565b809150509250925092565b60006020828403121561336157600080fd5b81516109638161313f565b828152604081016109636020830184612e03565b6001600160401b0383168152604081016109636020830184612e03565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156133c557600080fd5b815161096381612d79565b6000826133ed57634e487b7160e01b600052601260045260246000fd5b500690565b6001600160401b039290921682526001600160a01b0316602082015260400190565b6000806040838503121561342757600080fd5b82516134328161313f565b602084015190925063ffffffff8116811461303d57600080fd5b634e487b7160e01b600052600160045260246000fd5b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b6000808585111561349f57600080fd5b838611156134ac57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156134e15780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b60006020828403121561353b57600080fd5b815164ffffffffff8116811461096357600080fd5b80516020808301519190811015613571576000198160200360031b1b821691505b50919050565b6001600160a01b038516815260606020808301829052908201849052600090859060808401835b878110156135cb576001600160e01b03196135b88561320a565b168252928201929082019060010161359e565b508093505050506001600160401b038316604083015295945050505050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b03828116828216039080821115612146576121466135ea565b600060018201613632576136326135ea565b5060010190565b6001600160401b03818116838216019080821115612146576121466135ea565b6000825161366b818460208701613269565b9190910192915050565b60006020828403121561368757600080fd5b815161096381612dbb565b818103818111156105cc576105cc6135ea565b634e487b7160e01b600052603160045260246000fdfef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a2646970667358221220fd63678e2b212a7d8c1f67e70551ffdf9dd4a7f03336ce110a9a4461dd41e02a64736f6c63430008140033",
1024
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102115760003560e01c80635bfa502711610125578063b7d2b162116100ad578063c6a001791161007c578063c6a001791461054c578063d1f856ee1461055f578063d45f8f9214610572578063eaf09b3714610585578063f2345aea1461059857600080fd5b8063b7d2b162146104bb578063bc62a0a5146104ce578063bcfb11b014610503578063bf7e214f1461052c57600080fd5b80637a9e5e4b116100f45780637a9e5e4b146104125780637b33d4fe146104255780638fb3603714610458578063b428b0b014610479578063b70096131461048c57600080fd5b80635bfa5027146103c35780635dfa73db146103e3578063605aa10a146103ec57806363709eaf146103ff57600080fd5b8063392f5f64116101a8578063495ea56411610177578063495ea564146103435780634a3a1e0014610356578063530dd456146103695780635511a6f31461039d57806356eedb4a146103b057600080fd5b8063392f5f64146102ea5780633fd85561146102f257806344ec4c301461031d578063485cc9551461033057600080fd5b806329db8c3d116101e457806329db8c3d1461029457806330cae187146102a757806337f135d7146102ba578063384c9a57146102d757600080fd5b8063030149741461021657806312e1ebc51461023c57806312f48f151461025c57806326decd4014610271575b600080fd5b610229610224366004612d9e565b6105ab565b6040519081526020015b60405180910390f35b61024f61024a366004612dd0565b6105d2565b6040516102339190612e25565b61026f61026a366004612f16565b610690565b005b61028461027f366004612dd0565b6106ad565b6040519015158152602001610233565b61026f6102a2366004612f65565b61071c565b61026f6102b536600461300f565b610854565b6102c2600081565b60405163ffffffff9091168152602001610233565b6102846102e5366004612d9e565b610956565b600354610229565b610305610300366004613048565b61096a565b6040516001600160401b039091168152602001610233565b61026f61032b366004612f16565b6109af565b61026f61033e366004613061565b6109c4565b610284610351366004612d9e565b610bdd565b61026f61036436600461308f565b610c8b565b610305610377366004612d9e565b6001600160401b0390811660009081526020819052604090206001015461010090041690565b6103056103ab3660046130ad565b610ca0565b61026f6103be366004612f65565b610ccf565b6103d66103d1366004612d9e565b610d7a565b60405161023391906130e9565b61030561271081565b6102846103fa366004612dd0565b610e40565b61026f61040d36600461314d565b610eb9565b61026f610420366004612dd0565b611014565b610438610433366004613193565b611097565b604080516001600160401b03938416815292909116602083015201610233565b6104606110e5565b6040516001600160e01b03199091168152602001610233565b6102846104873660046131ec565b61111e565b61049f61049a366004613222565b6113fd565b60408051921515835263ffffffff909116602083015201610233565b6102846104c93660046131ec565b611482565b6104f66040518060400160405280600981526020016841646d696e526f6c6560b81b81525081565b604051610233919061328d565b6104f66040518060400160405280600a8152602001695075626c6963526f6c6560b01b81525081565b6105346115e0565b6040516001600160a01b039091168152602001610233565b61028461055a366004612d9e565b6115fc565b61028461056d3660046131ec565b61165d565b61026f610580366004612f16565b611755565b6105346105933660046132c0565b611801565b61026f6105a63660046132ec565b611823565b6001600160401b03811660009081526001602052604081206105cc90611847565b92915050565b6040805160a080820183526000808352602080840182905283850182905260608401829052608084018290526001600160a01b038616825260058152908490208451928301909452835482526001840154929391929083019060ff16600381111561063f5761063f612ded565b600381111561065057610650612ded565b81526001919091015460ff6101008204161515602083015264ffffffffff62010000820481166040840152600160381b9091041660609091015292915050565b61069d335b600036611851565b6106a98282600161194f565b5050565b60085460405163a166aa8960e01b81526001600160a01b038381166004830152600092169063a166aa8990602401602060405180830381865afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cc919061334f565b61072533610695565b600061073085611d60565b6000818152600660205260409020549091506001600160a01b031660036001600160a01b03821660009081526005602052604090206001015460ff16600381111561077d5761077d612ded565b036107c9576001600160a01b03811660009081526005602052604090819020600101549051632d50ace560e11b81526107c091849160ff9091169060040161336c565b60405180910390fd5b60035b6001600160401b03841660009081526020819052604090206001015460ff1660038111156107fc576107fc612ded565b0361083f576001600160401b03831660009081526020819052604090819020600101549051630bb1a0c760e01b81526107c091859160ff90911690600401613380565b61084c8183878787611d9e565b505050505050565b61085d33610695565b610866826115fc565b61088e576040516368f4b88960e01b81526001600160401b03831660048201526024016107c0565b60016001600160401b03831660009081526020819052604090206001015460ff1660038111156108c0576108c0612ded565b036108e9576040516368f4b88960e01b81526001600160401b03831660048201526024016107c0565b6108f2816115fc565b61091a576040516368f4b88960e01b81526001600160401b03821660048201526024016107c0565b6001600160401b0391821660009081526020819052604090206001018054929091166101000268ffffffffffffffff0019909216919091179055565b6000336109638382611e69565b9392505050565b60006003828154811061097f5761097f61339d565b90600052602060002090600491828204019190066008029054906101000a90046001600160401b03169050919050565b6109b833610695565b6106a98282600261194f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610a095750825b90506000826001600160401b03166001148015610a255750303b155b905081158015610a33575080155b15610a515760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610a7b57845460ff60401b1916600160401b1785555b6001600160a01b038716610a8e57600080fd5b6001600160a01b038616610aa157600080fd5b610aaa8761214d565b600880546001600160a01b03808a166001600160a01b03199283161790925560098054928916929091169190911790556004805467ffffffffffffffff1916612710179055610b23610afa612161565b6040518060400160405280600981526020016841646d696e526f6c6560b81b81525060016121de565b610b58610b2e612562565b6040518060400160405280600a8152602001695075626c6963526f6c6560b01b81525060016121de565b610b8d60016000610b67612161565b6001600160401b03166001600160401b03168152602001908152602001600020306125a3565b508315610bd457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b604051631517388760e21b81526001600160401b0382166004820152600090819073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015610c3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5e91906133b3565b6001600160401b0316905061271081108015906109635750610c816002826133d0565b6001149392505050565b610c9433610695565b6106a9828260016121de565b600060026000610caf84611d60565b81526020810191909152604001600020546001600160401b031692915050565b610cd833610695565b6000610ce385611d60565b6000818152600660205260409020549091506001600160a01b031660016001600160a01b03821660009081526005602052604090206001015460ff166003811115610d3057610d30612ded565b03610d73576001600160a01b03811660009081526005602052604090819020600101549051632d50ace560e11b81526107c091849160ff9091169060040161336c565b60016107cc565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526001600160401b03821660009081526020818152604091829020825160a08101909352805483526001810154909183019060ff166003811115610dea57610dea612ded565b6003811115610dfb57610dfb612ded565b8152600191909101546001600160401b03610100820416602083015264ffffffffff600160481b820481166040840152600160701b9091041660609091015292915050565b6001600160a01b038116600090815260056020526040808220600101549051638d38cd4b60e01b81526201000090910464ffffffffff16600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b906024015b602060405180830381865af41580156106f8573d6000803e3d6000fd5b610ec233610695565b6000610ecd83611d60565b6000818152600660205260409020549091506001600160a01b031680610f095760405163c3ab297f60e01b8152600481018390526024016107c0565b60016001600160a01b03821660009081526005602052604090206001015460ff166003811115610f3b57610f3b612ded565b03610f7e576001600160a01b03811660009081526005602052604090819020600101549051632d50ace560e11b81526107c091849160ff9091169060040161336c565b6001600160a01b0381811660008181526005602052604090819020600101805461ff00191661010088151590810291909117909155600854915163167bd39560e01b8152600481019390935260248301529091169063167bd39590604401600060405180830381600087803b158015610ff657600080fd5b505af115801561100a573d6000803e3d6000fd5b5050505050505050565b3361101d6115e0565b6001600160a01b0316816001600160a01b0316146110585760405162d1953b60e31b81526001600160a01b03821660048201526024016107c0565b816001600160a01b03163b60000361108e576040516361798f2f60e11b81526001600160a01b03831660048201526024016107c0565b6106a9826125b8565b6000806110a333610695565b6110ab612619565b90925090506110bc828560036121de565b6110c8818460036121de565b6110d28282610854565b6110de816102b561275b565b9250929050565b6000805160206136bc833981519152805460009190600160a01b900460ff1661110f576000611118565b638fb3603760e01b5b91505090565b600082600061114d826001600160401b0390811660009081526020819052604090206001015461010090041690565b600854604051631517388760e21b81526001600160401b038316600482015291925060009182916001600160a01b03169063d1f856ee9073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af41580156111c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e491906133b3565b336040518363ffffffff1660e01b81526004016112029291906133f2565b6040805180830381865afa15801561121e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112429190613414565b915091508063ffffffff1660001461125c5761125c61344c565b8161129757335b6040516366c7cee960e01b81526001600160a01b0390911660048201526001600160401b03851660248201526044016107c0565b6112a0876115fc565b6112c8576040516368f4b88960e01b81526001600160401b03881660048201526024016107c0565b6001600160401b03871660009081526001602052604090206112ea90876125a3565b945084156113f357600854604051631517388760e21b81526001600160401b03891660048201526001600160a01b03909116906325c471a09073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af415801561135f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138391906133b3565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b038916602482015260006044820152606401600060405180830381600087803b1580156113da57600080fd5b505af11580156113ee573d6000803e3d6000fd5b505050505b5050505092915050565b60085460405163b700961360e01b815260009182916001600160a01b039091169063b70096139061143690889088908890600401613462565b6040805180830381865afa158015611452573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114769190613414565b91509150935093915050565b60008260006114b1826001600160401b0390811660009081526020819052604090206001015461010090041690565b600854604051631517388760e21b81526001600160401b038316600482015291925060009182916001600160a01b03169063d1f856ee9073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015611524573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154891906133b3565b336040518363ffffffff1660e01b81526004016115669291906133f2565b6040805180830381865afa158015611582573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a69190613414565b915091508063ffffffff166000146115c0576115c061344c565b816115cb5733611263565b6115d58787611e69565b979650505050505050565b6000805160206136bc833981519152546001600160a01b031690565b6001600160401b038116600090815260208190526040808220600101549051638d38cd4b60e01b8152600160481b90910464ffffffffff16600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401610e9c565b600854604051631517388760e21b81526001600160401b03841660048201526000916001600160a01b03169063d1f856ee9073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af41580156116cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ef91906133b3565b846040518363ffffffff1660e01b815260040161170d9291906133f2565b6040805180830381865afa158015611729573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174d9190613414565b509392505050565b61175e33610695565b60095460405163c3c5a54760e01b81526001600160a01b0384811660048301529091169063c3c5a54790602401602060405180830381865afa1580156117a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cc919061334f565b156117f557604051631d53345160e21b81526001600160a01b03831660048201526024016107c0565b6106a98282600361194f565b6001600160401b03821660009081526001602052604081206109639083612796565b61182c33610695565b611838838360026121de565b6118428382610854565b505050565b60006105cc825490565b6000805160206136bc83398151915260008061188c61186e6115e0565b873061187e600460008a8c61348f565b611887916134b9565b6127a2565b915091508161084c5763ffffffff81161561192c57825460ff60a01b1916600160a01b1783556118ba6115e0565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016118e9939291906134e9565b600060405180830381600087803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b5050845460ff60a01b191685555061084c9050565b60405162d1953b60e31b81526001600160a01b03871660048201526024016107c0565b600061195a83611d60565b9050611967848284612899565b6001600160a01b03841660009081526005602052604090819020600101549051638d38cd4b60e01b81526201000090910464ffffffffff16600482015273__$d53880c81dc91c20799140d711e5ab8718$__90638d38cd4b90602401602060405180830381865af41580156119e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a04919061334f565b15611a45576001600160a01b03841660008181526005602052604090819020549051630e0a57d560e11b8152600481019290925260248201526044016107c0565b6000818152600660205260409020546001600160a01b031615611aa657600081815260066020526040908190205490516361c0558f60e01b81526001600160a01b0380871660048301529091166024820152604481018290526064016107c0565b60006040518060a00160405280838152602001846003811115611acb57611acb612ded565b815260085460405163a166aa8960e01b81526001600160a01b0389811660048301526020909301929091169063a166aa8990602401602060405180830381865afa158015611b1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b41919061334f565b1515815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb59190613529565b64ffffffffff16815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af4158015611c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2e9190613529565b64ffffffffff1690526001600160a01b03861660009081526005602090815260409091208251815590820151600180830180549495508594909160ff1990911690836003811115611c8157611c81612ded565b021790555060408281015160019283018054606086015160809096015166ffffffffffff00199091166101009315159390930266ffffffffff00001916929092176201000064ffffffffff96871602176bffffffffff000000000000001916600160381b95909216949094021790925591516000908152600660205290812080546001600160a01b03199081166001600160a01b03989098169788179091556007805493840181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6889091018054909116909417909355505050565b600080829050601f81511115611d8b578260405163305a27a960e01b81526004016107c0919061328d565b8051611d9682613550565b179392505050565b6001600160a01b038516611dc85760405163c3ab297f60e01b8152600481018590526024016107c0565b611dd1816115fc565b611df9576040516368f4b88960e01b81526001600160401b03821660048201526024016107c0565b6008546040516308d6122d60e01b815282916001600160a01b0316906308d6122d90611e2f908990889088908790600401613577565b600060405180830381600087803b158015611e4957600080fd5b505af1158015611e5d573d6000803e3d6000fd5b50505050505050505050565b6000611e74836115fc565b611e9c576040516368f4b88960e01b81526001600160401b03841660048201526024016107c0565b6001600160401b0383166000908152600160205260409020611ebe9083612985565b905080156105cc57604051631517388760e21b81526001600160401b038416600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015611f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4591906133b3565b600854604051635be958b160e11b81529192506001600160a01b03169063b7d2b16290611f7890849087906004016133f2565b600060405180830381600087803b158015611f9257600080fd5b505af1158015611fa6573d6000803e3d6000fd5b50505050611fb384610bdd565b15612146576000611fc5600183613600565b6040516368aebf7b60e01b81526001600160401b038216600482015290915060009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af4158015612023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204791906133b3565b6001600160401b03811660009081526001602052604081209192509061206c90611847565b905060005b81811015612141576001600160401b038316600090815260016020526040902061209b9082612796565b6001600160401b0384166000908152600160205260408120919850906120c19089612985565b9050801561212e57600854604051635be958b160e11b81526001600160a01b039091169063b7d2b162906120fb9088908c906004016133f2565b600060405180830381600087803b15801561211557600080fd5b505af1158015612129573d6000803e3d6000fd5b505050505b508061213981613620565b915050612071565b505050505b5092915050565b61215561299a565b61215e816129e5565b50565b6040516368aebf7b60e01b81526000600482018190529073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b906024015b602060405180830381865af41580156121b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d991906133b3565b905090565b60006121e983611d60565b90506121f68482846129f6565b6121ff846115fc565b1561222857604051631aacd43160e21b81526001600160401b03851660048201526024016107c0565b6000818152600260205260409081902054905163a42e52e960e01b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063a42e52e990602401602060405180830381865af4158015612291573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b5919061334f565b156122f65760008181526002602052604090819020549051637169291360e11b81526001600160401b039091166004820152602481018290526044016107c0565b60006040518060a0016040528083815260200184600381111561231b5761231b612ded565b8152602001612328612161565b6001600160401b0316815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af415801561237f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a39190613529565b64ffffffffff16815260200173__$d53880c81dc91c20799140d711e5ab8718$__63adb618326040518163ffffffff1660e01b8152600401602060405180830381865af41580156123f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241c9190613529565b64ffffffffff1690526001600160401b0386166000908152602081815260409091208251815590820151600180830180549495508594909160ff199091169083600381111561246d5761246d612ded565b02179055506040828101516001928301805460608601516080909601516dffffffffffffffffffffffffff00199091166101006001600160401b0394851681026dffffffffff000000000000000000191691909117600160481b64ffffffffff988916021764ffffffffff60701b1916600160701b9790921696909602179055935160009081526002602052908120805467ffffffffffffffff19169885169889179055600380549283018155908190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b600483040180549290911660080290920a92830219169190950217909355505050565b6040516368aebf7b60e01b81526001600160401b03600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401612198565b6000610963836001600160a01b038416612be5565b6000805160206136bc83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b60045460009081906001600160401b031681612636826001613639565b9050612643826002613639565b6004805467ffffffffffffffff19166001600160401b039283161781556040516368aebf7b60e01b81529184169082015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af41580156126b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d491906133b3565b6040516368aebf7b60e01b81526001600160401b038316600482015290945073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af415801561272f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275391906133b3565b925050509091565b6040516368aebf7b60e01b81526001600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401612198565b60006109638383612c34565b600080600080876001600160a01b03168787876040516024016127c793929190613462565b60408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516127fc9190613659565b600060405180830381855afa9150503d8060008114612837576040519150601f19603f3d011682016040523d82523d6000602084013e61283c565b606091505b5091509150811561288e57604081511061286e57808060200190518101906128649190613414565b909450925061288e565b602081511061288e578080602001905181019061288b919061334f565b93505b505094509492505050565b6000836001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128fd9190613675565b90506129076115e0565b6001600160a01b0316816001600160a01b03161461294b57604051631db0625160e01b81526001600160a01b038086166004830152821660248201526044016107c0565b61295483612c5e565b60000361297f5760405163a12ddedf60e01b81526001600160a01b03851660048201526024016107c0565b50505050565b6000610963836001600160a01b038416612c86565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166129e357604051631afcd79f60e31b815260040160405180910390fd5b565b6129ed61299a565b61215e816125b8565b604051631517388760e21b81526001600160401b038416600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7591906133b3565b6001600160401b031690506003826003811115612a9457612a94612ded565b148015612aa2575061271081105b15612acb5760405163be511cc160e01b81526001600160401b03851660048201526024016107c0565b6003826003811115612adf57612adf612ded565b14158015612aef57506127108110155b8015612b885750612afe612562565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7b91906133b3565b6001600160401b03168114155b15612bb157604051630e08ff2d60e11b81526001600160401b03851660048201526024016107c0565b612bba83612c5e565b60000361297f57604051631367e80d60e31b81526001600160401b03851660048201526024016107c0565b6000818152600183016020526040812054612c2c575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105cc565b5060006105cc565b6000826000018281548110612c4b57612c4b61339d565b9060005260206000200154905092915050565b600060ff8216601f8111156105cc57604051632cd44ac360e21b815260040160405180910390fd5b60008181526001830160205260408120548015612d6f576000612caa600183613692565b8554909150600090612cbe90600190613692565b9050808214612d23576000866000018281548110612cde57612cde61339d565b9060005260206000200154905080876000018481548110612d0157612d0161339d565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612d3457612d346136a5565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506105cc565b60009150506105cc565b6001600160401b038116811461215e57600080fd5b8035612d9981612d79565b919050565b600060208284031215612db057600080fd5b813561096381612d79565b6001600160a01b038116811461215e57600080fd5b600060208284031215612de257600080fd5b813561096381612dbb565b634e487b7160e01b600052602160045260246000fd5b60048110612e2157634e487b7160e01b600052602160045260246000fd5b9052565b8151815260208083015160a0830191612e4090840182612e03565b50604083015115156040830152606083015164ffffffffff8082166060850152806080860151166080850152505092915050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612e9b57600080fd5b81356001600160401b0380821115612eb557612eb5612e74565b604051601f8301601f19908116603f01168101908282118183101715612edd57612edd612e74565b81604052838152866020858801011115612ef657600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060408385031215612f2957600080fd5b8235612f3481612dbb565b915060208301356001600160401b03811115612f4f57600080fd5b612f5b85828601612e8a565b9150509250929050565b60008060008060608587031215612f7b57600080fd5b84356001600160401b0380821115612f9257600080fd5b612f9e88838901612e8a565b95506020870135915080821115612fb457600080fd5b818701915087601f830112612fc857600080fd5b813581811115612fd757600080fd5b8860208260051b8501011115612fec57600080fd5b60208301955080945050505061300460408601612d8e565b905092959194509250565b6000806040838503121561302257600080fd5b823561302d81612d79565b9150602083013561303d81612d79565b809150509250929050565b60006020828403121561305a57600080fd5b5035919050565b6000806040838503121561307457600080fd5b823561307f81612dbb565b9150602083013561303d81612dbb565b600080604083850312156130a257600080fd5b8235612f3481612d79565b6000602082840312156130bf57600080fd5b81356001600160401b038111156130d557600080fd5b6130e184828501612e8a565b949350505050565b8151815260208083015160a083019161310490840182612e03565b506001600160401b036040840151166040830152606083015164ffffffffff8082166060850152806080860151166080850152505092915050565b801515811461215e57600080fd5b6000806040838503121561316057600080fd5b82356001600160401b0381111561317657600080fd5b61318285828601612e8a565b925050602083013561303d8161313f565b600080604083850312156131a657600080fd5b82356001600160401b03808211156131bd57600080fd5b6131c986838701612e8a565b935060208501359150808211156131df57600080fd5b50612f5b85828601612e8a565b600080604083850312156131ff57600080fd5b823561307f81612d79565b80356001600160e01b031981168114612d9957600080fd5b60008060006060848603121561323757600080fd5b833561324281612dbb565b9250602084013561325281612dbb565b91506132606040850161320a565b90509250925092565b60005b8381101561328457818101518382015260200161326c565b50506000910152565b60208152600082518060208401526132ac816040850160208701613269565b601f01601f19169190910160400192915050565b600080604083850312156132d357600080fd5b82356132de81612d79565b946020939093013593505050565b60008060006060848603121561330157600080fd5b833561330c81612d79565b925060208401356001600160401b0381111561332757600080fd5b61333386828701612e8a565b925050604084013561334481612d79565b809150509250925092565b60006020828403121561336157600080fd5b81516109638161313f565b828152604081016109636020830184612e03565b6001600160401b0383168152604081016109636020830184612e03565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156133c557600080fd5b815161096381612d79565b6000826133ed57634e487b7160e01b600052601260045260246000fd5b500690565b6001600160401b039290921682526001600160a01b0316602082015260400190565b6000806040838503121561342757600080fd5b82516134328161313f565b602084015190925063ffffffff8116811461303d57600080fd5b634e487b7160e01b600052600160045260246000fd5b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b6000808585111561349f57600080fd5b838611156134ac57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156134e15780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b60006020828403121561353b57600080fd5b815164ffffffffff8116811461096357600080fd5b80516020808301519190811015613571576000198160200360031b1b821691505b50919050565b6001600160a01b038516815260606020808301829052908201849052600090859060808401835b878110156135cb576001600160e01b03196135b88561320a565b168252928201929082019060010161359e565b508093505050506001600160401b038316604083015295945050505050565b634e487b7160e01b600052601160045260246000fd5b6001600160401b03828116828216039080821115612146576121466135ea565b600060018201613632576136326135ea565b5060010190565b6001600160401b03818116838216019080821115612146576121466135ea565b6000825161366b818460208701613269565b9190910192915050565b60006020828403121561368757600080fd5b815161096381612dbb565b818103818111156105cc576105cc6135ea565b634e487b7160e01b600052603160045260246000fdfef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a2646970667358221220fd63678e2b212a7d8c1f67e70551ffdf9dd4a7f03336ce110a9a4461dd41e02a64736f6c63430008140033",
792
1025
  "linkReferences": {
793
1026
  "contracts/types/RoleId.sol": {
794
1027
  "RoleIdLib": [
795
1028
  {
796
1029
  "length": 20,
797
- "start": 96
1030
+ "start": 3104
798
1031
  },
799
1032
  {
800
1033
  "length": 20,
801
- "start": 396
1034
+ "start": 4518
802
1035
  },
803
1036
  {
804
1037
  "length": 20,
805
- "start": 2354
1038
+ "start": 4933
806
1039
  },
807
1040
  {
808
1041
  "length": 20,
809
- "start": 4485
1042
+ "start": 5386
810
1043
  },
811
1044
  {
812
1045
  "length": 20,
813
- "start": 5996
1046
+ "start": 5809
814
1047
  },
815
1048
  {
816
1049
  "length": 20,
817
- "start": 6395
1050
+ "start": 7943
818
1051
  },
819
1052
  {
820
1053
  "length": 20,
821
- "start": 6803
1054
+ "start": 8201
822
1055
  },
823
1056
  {
824
1057
  "length": 20,
825
- "start": 10296
826
- }
827
- ]
828
- },
829
- "contracts/types/Timestamp.sol": {
830
- "TimestampLib": [
1058
+ "start": 8602
1059
+ },
831
1060
  {
832
1061
  "length": 20,
833
- "start": 798
1062
+ "start": 8823
834
1063
  },
835
1064
  {
836
1065
  "length": 20,
837
- "start": 922
1066
+ "start": 9633
838
1067
  },
839
1068
  {
840
1069
  "length": 20,
841
- "start": 1914
1070
+ "start": 9878
842
1071
  },
843
1072
  {
844
1073
  "length": 20,
845
- "start": 4948
1074
+ "start": 10005
846
1075
  },
847
1076
  {
848
1077
  "length": 20,
849
- "start": 5606
1078
+ "start": 10132
850
1079
  },
851
1080
  {
852
1081
  "length": 20,
853
- "start": 6717
1082
+ "start": 10807
854
1083
  },
855
1084
  {
856
1085
  "length": 20,
857
- "start": 7601
1086
+ "start": 11069
1087
+ }
1088
+ ]
1089
+ },
1090
+ "contracts/types/Timestamp.sol": {
1091
+ "TimestampLib": [
1092
+ {
1093
+ "length": 20,
1094
+ "start": 3742
1095
+ },
1096
+ {
1097
+ "length": 20,
1098
+ "start": 5723
858
1099
  },
859
1100
  {
860
1101
  "length": 20,
861
- "start": 7722
1102
+ "start": 6598
862
1103
  },
863
1104
  {
864
1105
  "length": 20,
865
- "start": 8243
1106
+ "start": 7018
866
1107
  },
867
1108
  {
868
1109
  "length": 20,
869
- "start": 8364
1110
+ "start": 7139
870
1111
  },
871
1112
  {
872
1113
  "length": 20,
873
- "start": 9875
1114
+ "start": 9048
1115
+ },
1116
+ {
1117
+ "length": 20,
1118
+ "start": 9169
874
1119
  }
875
1120
  ]
876
1121
  }
@@ -880,23 +1125,63 @@
880
1125
  "RoleIdLib": [
881
1126
  {
882
1127
  "length": 20,
883
- "start": 1355
1128
+ "start": 3072
1129
+ },
1130
+ {
1131
+ "length": 20,
1132
+ "start": 4486
1133
+ },
1134
+ {
1135
+ "length": 20,
1136
+ "start": 4901
1137
+ },
1138
+ {
1139
+ "length": 20,
1140
+ "start": 5354
1141
+ },
1142
+ {
1143
+ "length": 20,
1144
+ "start": 5777
884
1145
  },
885
1146
  {
886
1147
  "length": 20,
887
- "start": 2866
1148
+ "start": 7911
888
1149
  },
889
1150
  {
890
1151
  "length": 20,
891
- "start": 3265
1152
+ "start": 8169
892
1153
  },
893
1154
  {
894
1155
  "length": 20,
895
- "start": 3673
1156
+ "start": 8570
896
1157
  },
897
1158
  {
898
1159
  "length": 20,
899
- "start": 7166
1160
+ "start": 8791
1161
+ },
1162
+ {
1163
+ "length": 20,
1164
+ "start": 9601
1165
+ },
1166
+ {
1167
+ "length": 20,
1168
+ "start": 9846
1169
+ },
1170
+ {
1171
+ "length": 20,
1172
+ "start": 9973
1173
+ },
1174
+ {
1175
+ "length": 20,
1176
+ "start": 10100
1177
+ },
1178
+ {
1179
+ "length": 20,
1180
+ "start": 10775
1181
+ },
1182
+ {
1183
+ "length": 20,
1184
+ "start": 11037
900
1185
  }
901
1186
  ]
902
1187
  },
@@ -904,35 +1189,31 @@
904
1189
  "TimestampLib": [
905
1190
  {
906
1191
  "length": 20,
907
- "start": 1818
908
- },
909
- {
910
- "length": 20,
911
- "start": 2476
1192
+ "start": 3710
912
1193
  },
913
1194
  {
914
1195
  "length": 20,
915
- "start": 3587
1196
+ "start": 5691
916
1197
  },
917
1198
  {
918
1199
  "length": 20,
919
- "start": 4471
1200
+ "start": 6566
920
1201
  },
921
1202
  {
922
1203
  "length": 20,
923
- "start": 4592
1204
+ "start": 6986
924
1205
  },
925
1206
  {
926
1207
  "length": 20,
927
- "start": 5113
1208
+ "start": 7107
928
1209
  },
929
1210
  {
930
1211
  "length": 20,
931
- "start": 5234
1212
+ "start": 9016
932
1213
  },
933
1214
  {
934
1215
  "length": 20,
935
- "start": 6745
1216
+ "start": 9137
936
1217
  }
937
1218
  ]
938
1219
  }