@etherisc/gif-next 0.0.2-98b8042-501 → 0.0.2-99c2cd1-219

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 (352) hide show
  1. package/README.md +136 -2
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +774 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +890 -198
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → components/IComponent.sol/IComponent.json} +164 -159
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +725 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +745 -58
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +592 -9
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +802 -251
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +562 -124
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
  20. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  21. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → Cloneable.sol/Cloneable.json} +86 -2
  22. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  23. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +954 -287
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +183 -165
  26. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  27. package/artifacts/contracts/instance/Instance.sol/Instance.json +831 -1157
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +211 -144
  30. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +91 -193
  32. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  33. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +410 -306
  34. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +297 -112
  36. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
  38. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +181 -180
  40. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  42. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
  44. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  46. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  47. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +59 -16
  48. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  52. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  53. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  54. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  55. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +858 -0
  56. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  57. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +657 -0
  58. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  59. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1085 -0
  60. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  61. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
  62. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  63. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +743 -0
  64. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  66. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +434 -215
  68. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  69. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +316 -83
  70. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IApplicationService.sol/IApplicationService.json} +200 -204
  72. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  73. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +622 -0
  74. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  75. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → instance/service/IClaimService.sol/IClaimService.json} +154 -83
  76. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +197 -163
  78. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  79. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +572 -0
  80. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +73 -325
  82. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +30 -417
  84. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1109 -0
  86. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +717 -0
  88. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +255 -421
  90. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +297 -104
  92. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +190 -571
  94. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +286 -125
  96. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  97. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  98. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  99. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +225 -133
  100. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  101. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +149 -217
  102. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  103. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  104. package/artifacts/contracts/registry/Registry.sol/Registry.json +238 -235
  105. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  106. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  107. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  108. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +195 -322
  109. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +298 -145
  111. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  112. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  113. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  114. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +141 -53
  115. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  116. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  117. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  118. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  119. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  120. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  121. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  122. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  123. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
  124. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  125. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  126. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  127. package/artifacts/contracts/shared/IService.sol/IService.json +23 -186
  128. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  129. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  130. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  131. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
  132. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  133. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  134. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  135. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
  136. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
  138. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  139. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  140. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  141. package/artifacts/contracts/shared/Service.sol/Service.json +120 -174
  142. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  143. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  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 +2 -2
  153. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestService.sol/TestService.json +141 -231
  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 +17 -4
  172. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  173. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  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/Seconds.sol/SecondsLib.dbg.json +4 -0
  186. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  187. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
  190. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  194. package/contracts/components/Component.sol +221 -0
  195. package/contracts/components/Distribution.sol +209 -64
  196. package/contracts/components/IComponent.sol +68 -0
  197. package/contracts/components/IDistributionComponent.sol +59 -3
  198. package/contracts/components/IPoolComponent.sol +93 -36
  199. package/contracts/components/IProductComponent.sol +10 -5
  200. package/contracts/components/Pool.sol +275 -161
  201. package/contracts/components/Product.sol +125 -121
  202. package/contracts/instance/BundleManager.sol +125 -0
  203. package/contracts/instance/Cloneable.sol +46 -0
  204. package/contracts/instance/IInstance.sol +50 -12
  205. package/contracts/instance/IInstanceService.sol +34 -4
  206. package/contracts/instance/Instance.sol +114 -265
  207. package/contracts/instance/InstanceAccessManager.sol +87 -78
  208. package/contracts/instance/InstanceReader.sol +6 -28
  209. package/contracts/instance/InstanceService.sol +398 -107
  210. package/contracts/instance/InstanceServiceManager.sol +6 -9
  211. package/contracts/instance/ObjectManager.sol +84 -0
  212. package/contracts/instance/base/ComponentService.sol +134 -0
  213. package/contracts/instance/module/IAccess.sol +27 -18
  214. package/contracts/instance/module/IBundle.sol +2 -1
  215. package/contracts/instance/module/IPolicy.sol +6 -3
  216. package/contracts/instance/module/ISetup.sol +32 -6
  217. package/contracts/instance/service/ApplicationService.sol +270 -0
  218. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  219. package/contracts/instance/service/BundleService.sol +301 -0
  220. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  221. package/contracts/instance/service/ClaimService.sol +151 -0
  222. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  223. package/contracts/instance/service/DistributionService.sol +216 -27
  224. package/contracts/instance/service/DistributionServiceManager.sol +7 -10
  225. package/contracts/instance/service/IApplicationService.sol +83 -0
  226. package/contracts/instance/service/IBundleService.sol +55 -0
  227. package/contracts/instance/service/IClaimService.sol +61 -0
  228. package/contracts/instance/service/IDistributionService.sol +53 -0
  229. package/contracts/instance/service/IPolicyService.sol +90 -0
  230. package/contracts/instance/service/IPoolService.sol +20 -28
  231. package/contracts/instance/service/IProductService.sol +2 -72
  232. package/contracts/instance/service/PolicyService.sol +490 -0
  233. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  234. package/contracts/instance/service/PoolService.sol +94 -135
  235. package/contracts/instance/service/PoolServiceManager.sol +6 -9
  236. package/contracts/instance/service/ProductService.sol +123 -451
  237. package/contracts/instance/service/ProductServiceManager.sol +2 -2
  238. package/contracts/registry/ChainNft.sol +1 -1
  239. package/contracts/registry/IRegistry.sol +37 -19
  240. package/contracts/registry/IRegistryService.sol +30 -13
  241. package/contracts/registry/Registry.sol +233 -217
  242. package/contracts/registry/RegistryAccessManager.sol +216 -0
  243. package/contracts/registry/RegistryService.sol +96 -171
  244. package/contracts/registry/RegistryServiceManager.sol +21 -39
  245. package/contracts/registry/ReleaseManager.sol +322 -0
  246. package/contracts/registry/TokenRegistry.sol +22 -17
  247. package/contracts/shared/ERC165.sol +14 -12
  248. package/contracts/shared/INftOwnable.sol +11 -10
  249. package/contracts/shared/IPolicyHolder.sol +26 -0
  250. package/contracts/shared/IRegisterable.sol +4 -6
  251. package/contracts/shared/IRegistryLinked.sol +12 -0
  252. package/contracts/shared/IService.sol +2 -1
  253. package/contracts/shared/IVersionable.sol +4 -47
  254. package/contracts/shared/NftOwnable.sol +66 -80
  255. package/contracts/shared/PolicyHolder.sol +81 -0
  256. package/contracts/shared/ProxyManager.sol +100 -25
  257. package/contracts/shared/Registerable.sol +16 -32
  258. package/contracts/shared/RegistryLinked.sol +48 -0
  259. package/contracts/shared/Service.sol +25 -22
  260. package/contracts/shared/TokenHandler.sol +11 -5
  261. package/contracts/shared/Versionable.sol +4 -92
  262. package/contracts/test/TestRegisterable.sol +1 -1
  263. package/contracts/test/TestService.sol +4 -3
  264. package/contracts/types/ClaimId.sol +52 -0
  265. package/contracts/types/DistributorType.sol +2 -2
  266. package/contracts/types/NftId.sol +7 -0
  267. package/contracts/types/NftIdSet.sol +26 -24
  268. package/contracts/types/ObjectType.sol +9 -5
  269. package/contracts/types/PayoutId.sol +54 -0
  270. package/contracts/types/RoleId.sol +19 -14
  271. package/contracts/types/Seconds.sol +54 -0
  272. package/contracts/types/Timestamp.sol +12 -13
  273. package/package.json +3 -3
  274. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  275. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  276. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  277. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  278. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  279. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  280. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  281. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  282. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  283. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  284. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  285. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  286. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  287. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  288. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  289. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  290. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  291. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  292. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  293. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  294. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  295. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  296. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  297. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  298. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  299. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  300. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  301. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  302. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  303. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  304. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  305. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  306. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  307. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  308. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  309. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  310. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  311. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  312. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  313. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  314. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  315. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  316. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  317. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  318. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  319. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  320. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  321. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  322. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  323. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  324. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  325. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  326. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  327. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  328. package/contracts/components/BaseComponent.sol +0 -91
  329. package/contracts/components/IBaseComponent.sol +0 -25
  330. package/contracts/experiment/cloning/Cloner.sol +0 -47
  331. package/contracts/experiment/errors/Require.sol +0 -38
  332. package/contracts/experiment/errors/Revert.sol +0 -44
  333. package/contracts/experiment/inheritance/A.sol +0 -53
  334. package/contracts/experiment/inheritance/B.sol +0 -28
  335. package/contracts/experiment/inheritance/C.sol +0 -34
  336. package/contracts/experiment/inheritance/IA.sol +0 -13
  337. package/contracts/experiment/inheritance/IB.sol +0 -10
  338. package/contracts/experiment/inheritance/IC.sol +0 -12
  339. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  340. package/contracts/experiment/statemachine/ISM.sol +0 -25
  341. package/contracts/experiment/statemachine/SM.sol +0 -57
  342. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  343. package/contracts/experiment/types/TypeA.sol +0 -47
  344. package/contracts/experiment/types/TypeB.sol +0 -29
  345. package/contracts/instance/AccessManagedSimple.sol +0 -115
  346. package/contracts/instance/AccessManagerSimple.sol +0 -692
  347. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  348. package/contracts/instance/base/ComponentServiceBase.sol +0 -134
  349. package/contracts/instance/base/IInstanceBase.sol +0 -23
  350. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  351. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  352. package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -3,27 +3,6 @@
3
3
  "contractName": "Instance",
4
4
  "sourceName": "contracts/instance/Instance.sol",
5
5
  "abi": [
6
- {
7
- "inputs": [
8
- {
9
- "internalType": "address",
10
- "name": "accessManagerAddress",
11
- "type": "address"
12
- },
13
- {
14
- "internalType": "address",
15
- "name": "registryAddress",
16
- "type": "address"
17
- },
18
- {
19
- "internalType": "NftId",
20
- "name": "registryNftId",
21
- "type": "uint96"
22
- }
23
- ],
24
- "stateMutability": "nonpayable",
25
- "type": "constructor"
26
- },
27
6
  {
28
7
  "inputs": [
29
8
  {
@@ -62,44 +41,6 @@
62
41
  "name": "AccessManagedUnauthorized",
63
42
  "type": "error"
64
43
  },
65
- {
66
- "inputs": [
67
- {
68
- "internalType": "address",
69
- "name": "registry",
70
- "type": "address"
71
- },
72
- {
73
- "internalType": "NftId",
74
- "name": "nftId",
75
- "type": "uint96"
76
- }
77
- ],
78
- "name": "ErrorAlreadyLinked",
79
- "type": "error"
80
- },
81
- {
82
- "inputs": [
83
- {
84
- "internalType": "address",
85
- "name": "contractAddress",
86
- "type": "address"
87
- }
88
- ],
89
- "name": "ErrorContractNotRegistered",
90
- "type": "error"
91
- },
92
- {
93
- "inputs": [
94
- {
95
- "internalType": "RoleId",
96
- "name": "roleId",
97
- "type": "uint64"
98
- }
99
- ],
100
- "name": "ErrorGrantNonexstentRole",
101
- "type": "error"
102
- },
103
44
  {
104
45
  "inputs": [
105
46
  {
@@ -127,172 +68,63 @@
127
68
  "internalType": "NftId",
128
69
  "name": "nftId",
129
70
  "type": "uint96"
130
- },
131
- {
132
- "internalType": "ObjectType",
133
- "name": "objectType",
134
- "type": "uint8"
135
- }
136
- ],
137
- "name": "ErrorNoLifecycle",
138
- "type": "error"
139
- },
140
- {
141
- "inputs": [
142
- {
143
- "internalType": "address",
144
- "name": "account",
145
- "type": "address"
146
- }
147
- ],
148
- "name": "ErrorNotOwner",
149
- "type": "error"
150
- },
151
- {
152
- "inputs": [
153
- {
154
- "internalType": "address",
155
- "name": "registryAddress",
156
- "type": "address"
157
71
  }
158
72
  ],
159
- "name": "ErrorNotRegistry",
73
+ "name": "ErrorNftOwnableAlreadyLinked",
160
74
  "type": "error"
161
75
  },
162
76
  {
163
77
  "inputs": [
164
78
  {
165
79
  "internalType": "address",
166
- "name": "registryAddress",
80
+ "name": "contractAddress",
167
81
  "type": "address"
168
82
  }
169
83
  ],
170
- "name": "ErrorRegisterableNotRegistry",
84
+ "name": "ErrorNftOwnableContractNotRegistered",
171
85
  "type": "error"
172
86
  },
173
87
  {
174
88
  "inputs": [],
175
- "name": "ErrorRegistryAddressZero",
89
+ "name": "ErrorNftOwnableInitialOwnerZero",
176
90
  "type": "error"
177
91
  },
178
92
  {
179
93
  "inputs": [
180
94
  {
181
95
  "internalType": "address",
182
- "name": "registry",
96
+ "name": "account",
183
97
  "type": "address"
184
98
  }
185
99
  ],
186
- "name": "ErrorRegistryAlreadyInitialized",
187
- "type": "error"
188
- },
189
- {
190
- "inputs": [],
191
- "name": "ErrorRegistryNotInitialized",
192
- "type": "error"
193
- },
194
- {
195
- "inputs": [
196
- {
197
- "internalType": "RoleId",
198
- "name": "roleId",
199
- "type": "uint64"
200
- }
201
- ],
202
- "name": "ErrorRenounceNonexstentRole",
203
- "type": "error"
204
- },
205
- {
206
- "inputs": [
207
- {
208
- "internalType": "RoleId",
209
- "name": "roleId",
210
- "type": "uint64"
211
- }
212
- ],
213
- "name": "ErrorRevokeNonexstentRole",
214
- "type": "error"
215
- },
216
- {
217
- "inputs": [
218
- {
219
- "internalType": "RoleId",
220
- "name": "roleId",
221
- "type": "uint64"
222
- }
223
- ],
224
- "name": "ErrorRoleIdInvalid",
225
- "type": "error"
226
- },
227
- {
228
- "inputs": [
229
- {
230
- "internalType": "RoleId",
231
- "name": "roleId",
232
- "type": "uint64"
233
- }
234
- ],
235
- "name": "ErrorRoleIdNotActive",
236
- "type": "error"
237
- },
238
- {
239
- "inputs": [
240
- {
241
- "internalType": "RoleId",
242
- "name": "roleId",
243
- "type": "uint64"
244
- }
245
- ],
246
- "name": "ErrorRoleIdTooBig",
247
- "type": "error"
248
- },
249
- {
250
- "inputs": [
251
- {
252
- "internalType": "RoleId",
253
- "name": "roleId",
254
- "type": "uint64"
255
- }
256
- ],
257
- "name": "ErrorRoleIdTooSmall",
258
- "type": "error"
259
- },
260
- {
261
- "inputs": [
262
- {
263
- "internalType": "RoleId",
264
- "name": "roleId",
265
- "type": "uint64"
266
- }
267
- ],
268
- "name": "ErrorRoleNameEmpty",
100
+ "name": "ErrorNftOwnableNotOwner",
269
101
  "type": "error"
270
102
  },
271
103
  {
272
104
  "inputs": [
273
105
  {
274
- "internalType": "RoleId",
275
- "name": "roleId",
276
- "type": "uint64"
106
+ "internalType": "NftId",
107
+ "name": "nftId",
108
+ "type": "uint96"
277
109
  },
278
110
  {
279
- "internalType": "ShortString",
280
- "name": "name",
281
- "type": "bytes32"
111
+ "internalType": "ObjectType",
112
+ "name": "objectType",
113
+ "type": "uint8"
282
114
  }
283
115
  ],
284
- "name": "ErrorRoleNameNotUnique",
116
+ "name": "ErrorNoLifecycle",
285
117
  "type": "error"
286
118
  },
287
119
  {
288
120
  "inputs": [
289
121
  {
290
122
  "internalType": "address",
291
- "name": "target",
123
+ "name": "registryAddress",
292
124
  "type": "address"
293
125
  }
294
126
  ],
295
- "name": "ErrorTargetDoesNotExist",
127
+ "name": "ErrorNotRegistry",
296
128
  "type": "error"
297
129
  },
298
130
  {
@@ -300,27 +132,11 @@
300
132
  "name": "InvalidInitialization",
301
133
  "type": "error"
302
134
  },
303
- {
304
- "inputs": [],
305
- "name": "InvalidShortString",
306
- "type": "error"
307
- },
308
135
  {
309
136
  "inputs": [],
310
137
  "name": "NotInitializing",
311
138
  "type": "error"
312
139
  },
313
- {
314
- "inputs": [
315
- {
316
- "internalType": "string",
317
- "name": "str",
318
- "type": "string"
319
- }
320
- ],
321
- "name": "StringTooLong",
322
- "type": "error"
323
- },
324
140
  {
325
141
  "anonymous": false,
326
142
  "inputs": [
@@ -515,6 +331,32 @@
515
331
  "stateMutability": "view",
516
332
  "type": "function"
517
333
  },
334
+ {
335
+ "inputs": [],
336
+ "name": "GIF_MAJOR_VERSION",
337
+ "outputs": [
338
+ {
339
+ "internalType": "uint256",
340
+ "name": "",
341
+ "type": "uint256"
342
+ }
343
+ ],
344
+ "stateMutability": "view",
345
+ "type": "function"
346
+ },
347
+ {
348
+ "inputs": [],
349
+ "name": "NFT_OWNABLE_STORAGE_LOCATION_V1",
350
+ "outputs": [
351
+ {
352
+ "internalType": "bytes32",
353
+ "name": "",
354
+ "type": "bytes32"
355
+ }
356
+ ],
357
+ "stateMutability": "view",
358
+ "type": "function"
359
+ },
518
360
  {
519
361
  "inputs": [],
520
362
  "name": "PUBLIC_ROLE",
@@ -581,66 +423,166 @@
581
423
  "inputs": [
582
424
  {
583
425
  "internalType": "NftId",
584
- "name": "bundleNftId",
426
+ "name": "applicationNftId",
585
427
  "type": "uint96"
586
428
  },
587
429
  {
588
430
  "components": [
589
431
  {
590
432
  "internalType": "NftId",
591
- "name": "poolNftId",
433
+ "name": "productNftId",
592
434
  "type": "uint96"
593
435
  },
594
436
  {
595
- "components": [
596
- {
597
- "internalType": "UFixed",
598
- "name": "fractionalFee",
599
- "type": "uint256"
600
- },
601
- {
602
- "internalType": "uint256",
603
- "name": "fixedFee",
604
- "type": "uint256"
605
- }
606
- ],
607
- "internalType": "struct Fee",
608
- "name": "fee",
609
- "type": "tuple"
437
+ "internalType": "NftId",
438
+ "name": "bundleNftId",
439
+ "type": "uint96"
610
440
  },
611
441
  {
612
- "internalType": "bytes",
613
- "name": "filter",
614
- "type": "bytes"
442
+ "internalType": "ReferralId",
443
+ "name": "referralId",
444
+ "type": "bytes8"
445
+ },
446
+ {
447
+ "internalType": "RiskId",
448
+ "name": "riskId",
449
+ "type": "bytes8"
615
450
  },
616
451
  {
617
452
  "internalType": "uint256",
618
- "name": "capitalAmount",
453
+ "name": "sumInsuredAmount",
619
454
  "type": "uint256"
620
455
  },
621
456
  {
622
457
  "internalType": "uint256",
623
- "name": "lockedAmount",
458
+ "name": "premiumAmount",
624
459
  "type": "uint256"
625
460
  },
626
461
  {
627
462
  "internalType": "uint256",
628
- "name": "balanceAmount",
463
+ "name": "premiumPaidAmount",
629
464
  "type": "uint256"
630
465
  },
631
466
  {
632
- "internalType": "uint256",
467
+ "internalType": "Seconds",
633
468
  "name": "lifetime",
469
+ "type": "uint40"
470
+ },
471
+ {
472
+ "internalType": "bytes",
473
+ "name": "applicationData",
474
+ "type": "bytes"
475
+ },
476
+ {
477
+ "internalType": "bytes",
478
+ "name": "policyData",
479
+ "type": "bytes"
480
+ },
481
+ {
482
+ "internalType": "uint16",
483
+ "name": "claimsCount",
484
+ "type": "uint16"
485
+ },
486
+ {
487
+ "internalType": "uint16",
488
+ "name": "openClaimsCount",
489
+ "type": "uint16"
490
+ },
491
+ {
492
+ "internalType": "uint256",
493
+ "name": "payoutAmount",
634
494
  "type": "uint256"
635
495
  },
636
496
  {
637
497
  "internalType": "Timestamp",
638
- "name": "expiredAt",
498
+ "name": "activatedAt",
639
499
  "type": "uint40"
640
500
  },
641
501
  {
642
502
  "internalType": "Timestamp",
643
- "name": "closedAt",
503
+ "name": "expiredAt",
504
+ "type": "uint40"
505
+ },
506
+ {
507
+ "internalType": "Timestamp",
508
+ "name": "closedAt",
509
+ "type": "uint40"
510
+ }
511
+ ],
512
+ "internalType": "struct IPolicy.PolicyInfo",
513
+ "name": "policy",
514
+ "type": "tuple"
515
+ }
516
+ ],
517
+ "name": "createApplication",
518
+ "outputs": [],
519
+ "stateMutability": "nonpayable",
520
+ "type": "function"
521
+ },
522
+ {
523
+ "inputs": [
524
+ {
525
+ "internalType": "NftId",
526
+ "name": "bundleNftId",
527
+ "type": "uint96"
528
+ },
529
+ {
530
+ "components": [
531
+ {
532
+ "internalType": "NftId",
533
+ "name": "poolNftId",
534
+ "type": "uint96"
535
+ },
536
+ {
537
+ "components": [
538
+ {
539
+ "internalType": "UFixed",
540
+ "name": "fractionalFee",
541
+ "type": "uint256"
542
+ },
543
+ {
544
+ "internalType": "uint256",
545
+ "name": "fixedFee",
546
+ "type": "uint256"
547
+ }
548
+ ],
549
+ "internalType": "struct Fee",
550
+ "name": "fee",
551
+ "type": "tuple"
552
+ },
553
+ {
554
+ "internalType": "bytes",
555
+ "name": "filter",
556
+ "type": "bytes"
557
+ },
558
+ {
559
+ "internalType": "uint256",
560
+ "name": "capitalAmount",
561
+ "type": "uint256"
562
+ },
563
+ {
564
+ "internalType": "uint256",
565
+ "name": "lockedAmount",
566
+ "type": "uint256"
567
+ },
568
+ {
569
+ "internalType": "uint256",
570
+ "name": "balanceAmount",
571
+ "type": "uint256"
572
+ },
573
+ {
574
+ "internalType": "Seconds",
575
+ "name": "lifetime",
576
+ "type": "uint40"
577
+ },
578
+ {
579
+ "internalType": "Timestamp",
580
+ "name": "expiredAt",
581
+ "type": "uint40"
582
+ },
583
+ {
584
+ "internalType": "Timestamp",
585
+ "name": "closedAt",
644
586
  "type": "uint40"
645
587
  }
646
588
  ],
@@ -662,9 +604,9 @@
662
604
  "type": "uint96"
663
605
  },
664
606
  {
665
- "internalType": "NumberId",
607
+ "internalType": "ClaimId",
666
608
  "name": "claimId",
667
- "type": "uint32"
609
+ "type": "uint16"
668
610
  },
669
611
  {
670
612
  "components": [
@@ -699,24 +641,6 @@
699
641
  "stateMutability": "nonpayable",
700
642
  "type": "function"
701
643
  },
702
- {
703
- "inputs": [
704
- {
705
- "internalType": "RoleId",
706
- "name": "roleId",
707
- "type": "uint64"
708
- },
709
- {
710
- "internalType": "string",
711
- "name": "name",
712
- "type": "string"
713
- }
714
- ],
715
- "name": "createCustomRole",
716
- "outputs": [],
717
- "stateMutability": "nonpayable",
718
- "type": "function"
719
- },
720
644
  {
721
645
  "inputs": [
722
646
  {
@@ -753,11 +677,6 @@
753
677
  "name": "distributionFee",
754
678
  "type": "tuple"
755
679
  },
756
- {
757
- "internalType": "bool",
758
- "name": "isIntercepting",
759
- "type": "bool"
760
- },
761
680
  {
762
681
  "internalType": "address",
763
682
  "name": "wallet",
@@ -778,39 +697,29 @@
778
697
  "inputs": [
779
698
  {
780
699
  "internalType": "NftId",
781
- "name": "policyNftId",
700
+ "name": "nftId",
782
701
  "type": "uint96"
783
702
  },
784
- {
785
- "internalType": "NumberId",
786
- "name": "payoutId",
787
- "type": "uint32"
788
- },
789
703
  {
790
704
  "components": [
791
705
  {
792
- "internalType": "NumberId",
793
- "name": "claimId",
794
- "type": "uint32"
706
+ "internalType": "DistributorType",
707
+ "name": "distributorType",
708
+ "type": "bytes8"
795
709
  },
796
710
  {
797
- "internalType": "uint256",
798
- "name": "amount",
799
- "type": "uint256"
711
+ "internalType": "bool",
712
+ "name": "active",
713
+ "type": "bool"
800
714
  },
801
715
  {
802
716
  "internalType": "bytes",
803
717
  "name": "data",
804
718
  "type": "bytes"
805
- },
806
- {
807
- "internalType": "Timestamp",
808
- "name": "paidAt",
809
- "type": "uint40"
810
719
  }
811
720
  ],
812
- "internalType": "struct IPolicy.PayoutInfo",
813
- "name": "payout",
721
+ "internalType": "struct IDistribution.DistributorInfo",
722
+ "name": "info",
814
723
  "type": "tuple"
815
724
  }
816
725
  ],
@@ -822,40 +731,60 @@
822
731
  {
823
732
  "inputs": [
824
733
  {
825
- "internalType": "NftId",
826
- "name": "policyNftId",
827
- "type": "uint96"
828
- },
829
- {
830
- "internalType": "NumberId",
831
- "name": "payoutId",
832
- "type": "uint32"
734
+ "internalType": "Key32",
735
+ "name": "distributorKey",
736
+ "type": "bytes32"
833
737
  },
834
738
  {
835
739
  "components": [
836
740
  {
837
- "internalType": "NumberId",
838
- "name": "claimId",
839
- "type": "uint32"
741
+ "internalType": "string",
742
+ "name": "name",
743
+ "type": "string"
840
744
  },
841
745
  {
842
- "internalType": "uint256",
843
- "name": "amount",
746
+ "internalType": "UFixed",
747
+ "name": "minDiscountPercentage",
748
+ "type": "uint256"
749
+ },
750
+ {
751
+ "internalType": "UFixed",
752
+ "name": "maxDiscountPercentage",
753
+ "type": "uint256"
754
+ },
755
+ {
756
+ "internalType": "UFixed",
757
+ "name": "commissionPercentage",
844
758
  "type": "uint256"
845
759
  },
760
+ {
761
+ "internalType": "uint32",
762
+ "name": "maxReferralCount",
763
+ "type": "uint32"
764
+ },
765
+ {
766
+ "internalType": "uint32",
767
+ "name": "maxReferralLifetime",
768
+ "type": "uint32"
769
+ },
770
+ {
771
+ "internalType": "bool",
772
+ "name": "allowSelfReferrals",
773
+ "type": "bool"
774
+ },
775
+ {
776
+ "internalType": "bool",
777
+ "name": "allowRenewals",
778
+ "type": "bool"
779
+ },
846
780
  {
847
781
  "internalType": "bytes",
848
782
  "name": "data",
849
783
  "type": "bytes"
850
- },
851
- {
852
- "internalType": "Timestamp",
853
- "name": "paidAt",
854
- "type": "uint40"
855
784
  }
856
785
  ],
857
- "internalType": "struct IPolicy.PayoutInfo",
858
- "name": "payout",
786
+ "internalType": "struct IDistribution.DistributorTypeInfo",
787
+ "name": "info",
859
788
  "type": "tuple"
860
789
  }
861
790
  ],
@@ -879,9 +808,9 @@
879
808
  {
880
809
  "components": [
881
810
  {
882
- "internalType": "NumberId",
811
+ "internalType": "ClaimId",
883
812
  "name": "claimId",
884
- "type": "uint32"
813
+ "type": "uint16"
885
814
  },
886
815
  {
887
816
  "internalType": "uint256",
@@ -913,98 +842,43 @@
913
842
  "inputs": [
914
843
  {
915
844
  "internalType": "NftId",
916
- "name": "policyNftId",
845
+ "name": "poolNftId",
917
846
  "type": "uint96"
918
847
  },
919
848
  {
920
849
  "components": [
921
850
  {
922
- "internalType": "NftId",
923
- "name": "productNftId",
924
- "type": "uint96"
925
- },
926
- {
927
- "internalType": "NftId",
928
- "name": "bundleNftId",
929
- "type": "uint96"
930
- },
931
- {
932
- "internalType": "ReferralId",
933
- "name": "referralId",
934
- "type": "bytes8"
935
- },
936
- {
937
- "internalType": "RiskId",
938
- "name": "riskId",
939
- "type": "bytes8"
940
- },
941
- {
942
- "internalType": "uint256",
943
- "name": "sumInsuredAmount",
944
- "type": "uint256"
945
- },
946
- {
947
- "internalType": "uint256",
948
- "name": "premiumAmount",
949
- "type": "uint256"
851
+ "internalType": "string",
852
+ "name": "name",
853
+ "type": "string"
950
854
  },
951
855
  {
952
- "internalType": "uint256",
953
- "name": "premiumPaidAmount",
954
- "type": "uint256"
856
+ "internalType": "contract IERC20Metadata",
857
+ "name": "token",
858
+ "type": "address"
955
859
  },
956
860
  {
957
- "internalType": "uint256",
958
- "name": "lifetime",
959
- "type": "uint256"
861
+ "internalType": "contract TokenHandler",
862
+ "name": "tokenHandler",
863
+ "type": "address"
960
864
  },
961
865
  {
962
- "internalType": "bytes",
963
- "name": "applicationData",
964
- "type": "bytes"
866
+ "internalType": "address",
867
+ "name": "wallet",
868
+ "type": "address"
965
869
  },
966
870
  {
967
871
  "internalType": "bytes",
968
- "name": "policyData",
872
+ "name": "data",
969
873
  "type": "bytes"
970
- },
971
- {
972
- "internalType": "uint16",
973
- "name": "claimsCount",
974
- "type": "uint16"
975
- },
976
- {
977
- "internalType": "uint16",
978
- "name": "openClaimsCount",
979
- "type": "uint16"
980
- },
981
- {
982
- "internalType": "uint256",
983
- "name": "payoutAmount",
984
- "type": "uint256"
985
- },
986
- {
987
- "internalType": "Timestamp",
988
- "name": "activatedAt",
989
- "type": "uint40"
990
- },
991
- {
992
- "internalType": "Timestamp",
993
- "name": "expiredAt",
994
- "type": "uint40"
995
- },
996
- {
997
- "internalType": "Timestamp",
998
- "name": "closedAt",
999
- "type": "uint40"
1000
874
  }
1001
875
  ],
1002
- "internalType": "struct IPolicy.PolicyInfo",
1003
- "name": "policy",
876
+ "internalType": "struct ISetup.ComponentInfo",
877
+ "name": "info",
1004
878
  "type": "tuple"
1005
879
  }
1006
880
  ],
1007
- "name": "createPolicy",
881
+ "name": "createPoolSetup",
1008
882
  "outputs": [],
1009
883
  "stateMutability": "nonpayable",
1010
884
  "type": "function"
@@ -1013,108 +887,7 @@
1013
887
  "inputs": [
1014
888
  {
1015
889
  "internalType": "NftId",
1016
- "name": "poolNftId",
1017
- "type": "uint96"
1018
- },
1019
- {
1020
- "components": [
1021
- {
1022
- "internalType": "NftId",
1023
- "name": "productNftId",
1024
- "type": "uint96"
1025
- },
1026
- {
1027
- "internalType": "contract TokenHandler",
1028
- "name": "tokenHandler",
1029
- "type": "address"
1030
- },
1031
- {
1032
- "internalType": "UFixed",
1033
- "name": "collateralizationLevel",
1034
- "type": "uint256"
1035
- },
1036
- {
1037
- "components": [
1038
- {
1039
- "internalType": "UFixed",
1040
- "name": "fractionalFee",
1041
- "type": "uint256"
1042
- },
1043
- {
1044
- "internalType": "uint256",
1045
- "name": "fixedFee",
1046
- "type": "uint256"
1047
- }
1048
- ],
1049
- "internalType": "struct Fee",
1050
- "name": "poolFee",
1051
- "type": "tuple"
1052
- },
1053
- {
1054
- "components": [
1055
- {
1056
- "internalType": "UFixed",
1057
- "name": "fractionalFee",
1058
- "type": "uint256"
1059
- },
1060
- {
1061
- "internalType": "uint256",
1062
- "name": "fixedFee",
1063
- "type": "uint256"
1064
- }
1065
- ],
1066
- "internalType": "struct Fee",
1067
- "name": "stakingFee",
1068
- "type": "tuple"
1069
- },
1070
- {
1071
- "components": [
1072
- {
1073
- "internalType": "UFixed",
1074
- "name": "fractionalFee",
1075
- "type": "uint256"
1076
- },
1077
- {
1078
- "internalType": "uint256",
1079
- "name": "fixedFee",
1080
- "type": "uint256"
1081
- }
1082
- ],
1083
- "internalType": "struct Fee",
1084
- "name": "performanceFee",
1085
- "type": "tuple"
1086
- },
1087
- {
1088
- "internalType": "bool",
1089
- "name": "isIntercepting",
1090
- "type": "bool"
1091
- },
1092
- {
1093
- "internalType": "bool",
1094
- "name": "isConfirmingApplication",
1095
- "type": "bool"
1096
- },
1097
- {
1098
- "internalType": "address",
1099
- "name": "wallet",
1100
- "type": "address"
1101
- }
1102
- ],
1103
- "internalType": "struct ISetup.PoolSetupInfo",
1104
- "name": "setup",
1105
- "type": "tuple"
1106
- }
1107
- ],
1108
- "name": "createPoolSetup",
1109
- "outputs": [],
1110
- "stateMutability": "nonpayable",
1111
- "type": "function"
1112
- },
1113
- {
1114
- "inputs": [
1115
- {
1116
- "internalType": "NftId",
1117
- "name": "productNftId",
890
+ "name": "productNftId",
1118
891
  "type": "uint96"
1119
892
  },
1120
893
  {
@@ -1265,40 +1038,50 @@
1265
1038
  {
1266
1039
  "inputs": [
1267
1040
  {
1268
- "internalType": "NftId",
1269
- "name": "policyNftId",
1270
- "type": "uint96"
1271
- },
1272
- {
1273
- "internalType": "NumberId",
1274
- "name": "payoutId",
1275
- "type": "uint32"
1041
+ "internalType": "Key32",
1042
+ "name": "referralKey",
1043
+ "type": "bytes32"
1276
1044
  },
1277
1045
  {
1278
1046
  "components": [
1279
1047
  {
1280
- "internalType": "NumberId",
1281
- "name": "claimId",
1282
- "type": "uint32"
1048
+ "internalType": "NftId",
1049
+ "name": "distributorNftId",
1050
+ "type": "uint96"
1283
1051
  },
1284
1052
  {
1285
- "internalType": "uint256",
1286
- "name": "amount",
1053
+ "internalType": "string",
1054
+ "name": "referralCode",
1055
+ "type": "string"
1056
+ },
1057
+ {
1058
+ "internalType": "UFixed",
1059
+ "name": "discountPercentage",
1287
1060
  "type": "uint256"
1288
1061
  },
1289
1062
  {
1290
- "internalType": "bytes",
1291
- "name": "data",
1292
- "type": "bytes"
1063
+ "internalType": "uint32",
1064
+ "name": "maxReferrals",
1065
+ "type": "uint32"
1066
+ },
1067
+ {
1068
+ "internalType": "uint32",
1069
+ "name": "usedReferrals",
1070
+ "type": "uint32"
1293
1071
  },
1294
1072
  {
1295
1073
  "internalType": "Timestamp",
1296
- "name": "paidAt",
1074
+ "name": "expiryAt",
1297
1075
  "type": "uint40"
1076
+ },
1077
+ {
1078
+ "internalType": "bytes",
1079
+ "name": "data",
1080
+ "type": "bytes"
1298
1081
  }
1299
1082
  ],
1300
- "internalType": "struct IPolicy.PayoutInfo",
1301
- "name": "payout",
1083
+ "internalType": "struct IDistribution.ReferralInfo",
1084
+ "name": "referralInfo",
1302
1085
  "type": "tuple"
1303
1086
  }
1304
1087
  ],
@@ -1337,54 +1120,6 @@
1337
1120
  "stateMutability": "nonpayable",
1338
1121
  "type": "function"
1339
1122
  },
1340
- {
1341
- "inputs": [
1342
- {
1343
- "internalType": "RoleId",
1344
- "name": "roleId",
1345
- "type": "uint64"
1346
- },
1347
- {
1348
- "internalType": "string",
1349
- "name": "name",
1350
- "type": "string"
1351
- }
1352
- ],
1353
- "name": "createStandardRole",
1354
- "outputs": [],
1355
- "stateMutability": "nonpayable",
1356
- "type": "function"
1357
- },
1358
- {
1359
- "inputs": [
1360
- {
1361
- "internalType": "address",
1362
- "name": "target",
1363
- "type": "address"
1364
- },
1365
- {
1366
- "components": [
1367
- {
1368
- "internalType": "ShortString",
1369
- "name": "name",
1370
- "type": "bytes32"
1371
- },
1372
- {
1373
- "internalType": "bool",
1374
- "name": "isCustom",
1375
- "type": "bool"
1376
- }
1377
- ],
1378
- "internalType": "struct IAccess.TargetInfo",
1379
- "name": "targetInfo",
1380
- "type": "tuple"
1381
- }
1382
- ],
1383
- "name": "createTarget",
1384
- "outputs": [],
1385
- "stateMutability": "nonpayable",
1386
- "type": "function"
1387
- },
1388
1123
  {
1389
1124
  "inputs": [
1390
1125
  {
@@ -1464,10 +1199,23 @@
1464
1199
  },
1465
1200
  {
1466
1201
  "inputs": [],
1467
- "name": "getComponentOwnerService",
1202
+ "name": "getBundleManager",
1203
+ "outputs": [
1204
+ {
1205
+ "internalType": "contract BundleManager",
1206
+ "name": "",
1207
+ "type": "address"
1208
+ }
1209
+ ],
1210
+ "stateMutability": "view",
1211
+ "type": "function"
1212
+ },
1213
+ {
1214
+ "inputs": [],
1215
+ "name": "getBundleService",
1468
1216
  "outputs": [
1469
1217
  {
1470
- "internalType": "contract IComponentOwnerService",
1218
+ "internalType": "contract IBundleService",
1471
1219
  "name": "",
1472
1220
  "type": "address"
1473
1221
  }
@@ -1550,13 +1298,8 @@
1550
1298
  }
1551
1299
  ],
1552
1300
  "internalType": "struct IRegistry.ObjectInfo",
1553
- "name": "",
1301
+ "name": "info",
1554
1302
  "type": "tuple"
1555
- },
1556
- {
1557
- "internalType": "bytes",
1558
- "name": "data",
1559
- "type": "bytes"
1560
1303
  }
1561
1304
  ],
1562
1305
  "stateMutability": "view",
@@ -1594,6 +1337,19 @@
1594
1337
  "stateMutability": "view",
1595
1338
  "type": "function"
1596
1339
  },
1340
+ {
1341
+ "inputs": [],
1342
+ "name": "getMajorVersion",
1343
+ "outputs": [
1344
+ {
1345
+ "internalType": "VersionPart",
1346
+ "name": "majorVersion",
1347
+ "type": "uint8"
1348
+ }
1349
+ ],
1350
+ "stateMutability": "pure",
1351
+ "type": "function"
1352
+ },
1597
1353
  {
1598
1354
  "inputs": [
1599
1355
  {
@@ -1668,10 +1424,10 @@
1668
1424
  },
1669
1425
  {
1670
1426
  "inputs": [],
1671
- "name": "getPoolService",
1427
+ "name": "getPolicyService",
1672
1428
  "outputs": [
1673
1429
  {
1674
- "internalType": "contract IPoolService",
1430
+ "internalType": "contract IPolicyService",
1675
1431
  "name": "",
1676
1432
  "type": "address"
1677
1433
  }
@@ -1681,10 +1437,10 @@
1681
1437
  },
1682
1438
  {
1683
1439
  "inputs": [],
1684
- "name": "getProductService",
1440
+ "name": "getPoolService",
1685
1441
  "outputs": [
1686
1442
  {
1687
- "internalType": "contract IProductService",
1443
+ "internalType": "contract IPoolService",
1688
1444
  "name": "",
1689
1445
  "type": "address"
1690
1446
  }
@@ -1694,10 +1450,10 @@
1694
1450
  },
1695
1451
  {
1696
1452
  "inputs": [],
1697
- "name": "getRegistry",
1453
+ "name": "getProductService",
1698
1454
  "outputs": [
1699
1455
  {
1700
- "internalType": "contract IRegistry",
1456
+ "internalType": "contract IProductService",
1701
1457
  "name": "",
1702
1458
  "type": "address"
1703
1459
  }
@@ -1706,73 +1462,25 @@
1706
1462
  "type": "function"
1707
1463
  },
1708
1464
  {
1709
- "inputs": [
1710
- {
1711
- "internalType": "RoleId",
1712
- "name": "roleId",
1713
- "type": "uint64"
1714
- }
1715
- ],
1716
- "name": "getRole",
1717
- "outputs": [
1718
- {
1719
- "components": [
1720
- {
1721
- "internalType": "ShortString",
1722
- "name": "name",
1723
- "type": "bytes32"
1724
- },
1725
- {
1726
- "internalType": "bool",
1727
- "name": "isCustom",
1728
- "type": "bool"
1729
- }
1730
- ],
1731
- "internalType": "struct IAccess.RoleInfo",
1732
- "name": "role",
1733
- "type": "tuple"
1734
- }
1735
- ],
1736
- "stateMutability": "view",
1737
- "type": "function"
1738
- },
1739
- {
1740
- "inputs": [
1741
- {
1742
- "internalType": "uint256",
1743
- "name": "idx",
1744
- "type": "uint256"
1745
- }
1746
- ],
1747
- "name": "getRoleId",
1465
+ "inputs": [],
1466
+ "name": "getRegistry",
1748
1467
  "outputs": [
1749
1468
  {
1750
- "internalType": "RoleId",
1751
- "name": "roleId",
1752
- "type": "uint64"
1469
+ "internalType": "contract IRegistry",
1470
+ "name": "",
1471
+ "type": "address"
1753
1472
  }
1754
1473
  ],
1755
1474
  "stateMutability": "view",
1756
1475
  "type": "function"
1757
1476
  },
1758
1477
  {
1759
- "inputs": [
1760
- {
1761
- "internalType": "RoleId",
1762
- "name": "roleId",
1763
- "type": "uint64"
1764
- },
1765
- {
1766
- "internalType": "uint256",
1767
- "name": "idx",
1768
- "type": "uint256"
1769
- }
1770
- ],
1771
- "name": "getRoleMember",
1478
+ "inputs": [],
1479
+ "name": "getRegistryAddress",
1772
1480
  "outputs": [
1773
1481
  {
1774
1482
  "internalType": "address",
1775
- "name": "roleMember",
1483
+ "name": "",
1776
1484
  "type": "address"
1777
1485
  }
1778
1486
  ],
@@ -1801,53 +1509,77 @@
1801
1509
  {
1802
1510
  "inputs": [
1803
1511
  {
1804
- "internalType": "RoleId",
1805
- "name": "roleId",
1806
- "type": "uint64"
1807
- },
1808
- {
1809
- "internalType": "address",
1810
- "name": "member",
1811
- "type": "address"
1512
+ "internalType": "ObjectType",
1513
+ "name": "objectType",
1514
+ "type": "uint8"
1812
1515
  }
1813
1516
  ],
1814
- "name": "grantRole",
1517
+ "name": "hasLifecycle",
1815
1518
  "outputs": [
1816
1519
  {
1817
1520
  "internalType": "bool",
1818
- "name": "granted",
1521
+ "name": "",
1819
1522
  "type": "bool"
1820
1523
  }
1821
1524
  ],
1822
- "stateMutability": "nonpayable",
1525
+ "stateMutability": "view",
1823
1526
  "type": "function"
1824
1527
  },
1825
1528
  {
1826
1529
  "inputs": [
1827
1530
  {
1828
- "internalType": "ObjectType",
1829
- "name": "objectType",
1830
- "type": "uint8"
1831
- }
1832
- ],
1833
- "name": "hasLifecycle",
1834
- "outputs": [
1531
+ "internalType": "address",
1532
+ "name": "accessManagerAddress",
1533
+ "type": "address"
1534
+ },
1835
1535
  {
1836
- "internalType": "bool",
1837
- "name": "",
1838
- "type": "bool"
1536
+ "internalType": "address",
1537
+ "name": "registryAddress",
1538
+ "type": "address"
1539
+ },
1540
+ {
1541
+ "internalType": "NftId",
1542
+ "name": "registryNftId",
1543
+ "type": "uint96"
1544
+ },
1545
+ {
1546
+ "internalType": "address",
1547
+ "name": "initialOwner",
1548
+ "type": "address"
1839
1549
  }
1840
1550
  ],
1841
- "stateMutability": "view",
1551
+ "name": "initialize",
1552
+ "outputs": [],
1553
+ "stateMutability": "nonpayable",
1554
+ "type": "function"
1555
+ },
1556
+ {
1557
+ "inputs": [],
1558
+ "name": "initializeERC165",
1559
+ "outputs": [],
1560
+ "stateMutability": "nonpayable",
1842
1561
  "type": "function"
1843
1562
  },
1844
1563
  {
1845
1564
  "inputs": [
1846
1565
  {
1847
1566
  "internalType": "address",
1848
- "name": "accessManagerAddress",
1567
+ "name": "initialOwner",
1849
1568
  "type": "address"
1850
1569
  },
1570
+ {
1571
+ "internalType": "address",
1572
+ "name": "registryAddress",
1573
+ "type": "address"
1574
+ }
1575
+ ],
1576
+ "name": "initializeNftOwnable",
1577
+ "outputs": [],
1578
+ "stateMutability": "nonpayable",
1579
+ "type": "function"
1580
+ },
1581
+ {
1582
+ "inputs": [
1851
1583
  {
1852
1584
  "internalType": "address",
1853
1585
  "name": "registryAddress",
@@ -1855,16 +1587,44 @@
1855
1587
  },
1856
1588
  {
1857
1589
  "internalType": "NftId",
1858
- "name": "registryNftId",
1590
+ "name": "parentNftId",
1859
1591
  "type": "uint96"
1860
1592
  },
1593
+ {
1594
+ "internalType": "ObjectType",
1595
+ "name": "objectType",
1596
+ "type": "uint8"
1597
+ },
1598
+ {
1599
+ "internalType": "bool",
1600
+ "name": "isInterceptor",
1601
+ "type": "bool"
1602
+ },
1861
1603
  {
1862
1604
  "internalType": "address",
1863
1605
  "name": "initialOwner",
1864
1606
  "type": "address"
1607
+ },
1608
+ {
1609
+ "internalType": "bytes",
1610
+ "name": "registryData",
1611
+ "type": "bytes"
1865
1612
  }
1866
1613
  ],
1867
- "name": "initialize",
1614
+ "name": "initializeRegisterable",
1615
+ "outputs": [],
1616
+ "stateMutability": "nonpayable",
1617
+ "type": "function"
1618
+ },
1619
+ {
1620
+ "inputs": [
1621
+ {
1622
+ "internalType": "address",
1623
+ "name": "registryAddress",
1624
+ "type": "address"
1625
+ }
1626
+ ],
1627
+ "name": "initializeRegistryLinked",
1868
1628
  "outputs": [],
1869
1629
  "stateMutability": "nonpayable",
1870
1630
  "type": "function"
@@ -1921,150 +1681,183 @@
1921
1681
  {
1922
1682
  "inputs": [
1923
1683
  {
1924
- "internalType": "RoleId",
1925
- "name": "roleId",
1926
- "type": "uint64"
1684
+ "internalType": "bytes4",
1685
+ "name": "interfaceId",
1686
+ "type": "bytes4"
1927
1687
  }
1928
1688
  ],
1929
- "name": "renounceRole",
1930
- "outputs": [
1689
+ "name": "registerInterface",
1690
+ "outputs": [],
1691
+ "stateMutability": "nonpayable",
1692
+ "type": "function"
1693
+ },
1694
+ {
1695
+ "inputs": [
1931
1696
  {
1932
- "internalType": "bool",
1933
- "name": "revoked",
1934
- "type": "bool"
1697
+ "internalType": "address",
1698
+ "name": "newAuthority",
1699
+ "type": "address"
1935
1700
  }
1936
1701
  ],
1702
+ "name": "setAuthority",
1703
+ "outputs": [],
1937
1704
  "stateMutability": "nonpayable",
1938
1705
  "type": "function"
1939
1706
  },
1940
1707
  {
1941
1708
  "inputs": [
1942
1709
  {
1943
- "internalType": "RoleId",
1944
- "name": "roleId",
1945
- "type": "uint64"
1946
- },
1947
- {
1948
- "internalType": "address",
1949
- "name": "member",
1710
+ "internalType": "contract BundleManager",
1711
+ "name": "bundleManager",
1950
1712
  "type": "address"
1951
1713
  }
1952
1714
  ],
1953
- "name": "revokeRole",
1954
- "outputs": [
1715
+ "name": "setBundleManager",
1716
+ "outputs": [],
1717
+ "stateMutability": "nonpayable",
1718
+ "type": "function"
1719
+ },
1720
+ {
1721
+ "inputs": [
1955
1722
  {
1956
- "internalType": "bool",
1957
- "name": "revoked",
1958
- "type": "bool"
1723
+ "internalType": "contract InstanceReader",
1724
+ "name": "instanceReader",
1725
+ "type": "address"
1959
1726
  }
1960
1727
  ],
1728
+ "name": "setInstanceReader",
1729
+ "outputs": [],
1961
1730
  "stateMutability": "nonpayable",
1962
1731
  "type": "function"
1963
1732
  },
1964
1733
  {
1965
1734
  "inputs": [
1966
1735
  {
1967
- "internalType": "RoleId",
1968
- "name": "roleId",
1969
- "type": "uint64"
1736
+ "internalType": "bytes4",
1737
+ "name": "interfaceId",
1738
+ "type": "bytes4"
1970
1739
  }
1971
1740
  ],
1972
- "name": "roleMembers",
1741
+ "name": "supportsInterface",
1973
1742
  "outputs": [
1974
1743
  {
1975
- "internalType": "uint256",
1976
- "name": "numberOfMembers",
1977
- "type": "uint256"
1744
+ "internalType": "bool",
1745
+ "name": "",
1746
+ "type": "bool"
1978
1747
  }
1979
1748
  ],
1980
1749
  "stateMutability": "view",
1981
1750
  "type": "function"
1982
1751
  },
1983
1752
  {
1984
- "inputs": [],
1985
- "name": "roles",
1753
+ "inputs": [
1754
+ {
1755
+ "internalType": "NftId",
1756
+ "name": "bundleNftId",
1757
+ "type": "uint96"
1758
+ }
1759
+ ],
1760
+ "name": "toBundleKey32",
1986
1761
  "outputs": [
1987
1762
  {
1988
- "internalType": "uint256",
1989
- "name": "numberOfRoles",
1990
- "type": "uint256"
1763
+ "internalType": "Key32",
1764
+ "name": "",
1765
+ "type": "bytes32"
1991
1766
  }
1992
1767
  ],
1993
- "stateMutability": "view",
1768
+ "stateMutability": "pure",
1994
1769
  "type": "function"
1995
1770
  },
1996
1771
  {
1997
1772
  "inputs": [
1998
1773
  {
1999
- "internalType": "address",
2000
- "name": "newAuthority",
2001
- "type": "address"
1774
+ "internalType": "NftId",
1775
+ "name": "distNftId",
1776
+ "type": "uint96"
2002
1777
  }
2003
1778
  ],
2004
- "name": "setAuthority",
2005
- "outputs": [],
2006
- "stateMutability": "nonpayable",
1779
+ "name": "toDistributionKey32",
1780
+ "outputs": [
1781
+ {
1782
+ "internalType": "Key32",
1783
+ "name": "",
1784
+ "type": "bytes32"
1785
+ }
1786
+ ],
1787
+ "stateMutability": "pure",
2007
1788
  "type": "function"
2008
1789
  },
2009
1790
  {
2010
1791
  "inputs": [
2011
1792
  {
2012
- "internalType": "contract InstanceReader",
2013
- "name": "instanceReader",
2014
- "type": "address"
1793
+ "internalType": "NftId",
1794
+ "name": "distNftId",
1795
+ "type": "uint96"
2015
1796
  }
2016
1797
  ],
2017
- "name": "setInstanceReader",
2018
- "outputs": [],
2019
- "stateMutability": "nonpayable",
1798
+ "name": "toDistributorKey32",
1799
+ "outputs": [
1800
+ {
1801
+ "internalType": "Key32",
1802
+ "name": "",
1803
+ "type": "bytes32"
1804
+ }
1805
+ ],
1806
+ "stateMutability": "pure",
2020
1807
  "type": "function"
2021
1808
  },
2022
1809
  {
2023
1810
  "inputs": [
2024
1811
  {
2025
- "internalType": "address",
2026
- "name": "target",
2027
- "type": "address"
2028
- },
1812
+ "internalType": "NftId",
1813
+ "name": "distNftId",
1814
+ "type": "uint96"
1815
+ }
1816
+ ],
1817
+ "name": "toDistributorTypeKey32",
1818
+ "outputs": [
2029
1819
  {
2030
- "internalType": "bool",
2031
- "name": "closed",
2032
- "type": "bool"
1820
+ "internalType": "Key32",
1821
+ "name": "",
1822
+ "type": "bytes32"
2033
1823
  }
2034
1824
  ],
2035
- "name": "setTargetClosed",
2036
- "outputs": [],
2037
- "stateMutability": "nonpayable",
1825
+ "stateMutability": "pure",
2038
1826
  "type": "function"
2039
1827
  },
2040
1828
  {
2041
1829
  "inputs": [
2042
1830
  {
2043
- "internalType": "bytes4",
2044
- "name": "interfaceId",
2045
- "type": "bytes4"
1831
+ "internalType": "ObjectType",
1832
+ "name": "objectType",
1833
+ "type": "uint8"
1834
+ },
1835
+ {
1836
+ "internalType": "KeyId",
1837
+ "name": "id",
1838
+ "type": "bytes31"
2046
1839
  }
2047
1840
  ],
2048
- "name": "supportsInterface",
1841
+ "name": "toKey32",
2049
1842
  "outputs": [
2050
1843
  {
2051
- "internalType": "bool",
1844
+ "internalType": "Key32",
2052
1845
  "name": "",
2053
- "type": "bool"
1846
+ "type": "bytes32"
2054
1847
  }
2055
1848
  ],
2056
- "stateMutability": "view",
1849
+ "stateMutability": "pure",
2057
1850
  "type": "function"
2058
1851
  },
2059
1852
  {
2060
1853
  "inputs": [
2061
1854
  {
2062
1855
  "internalType": "NftId",
2063
- "name": "bundleNftId",
1856
+ "name": "policyNftId",
2064
1857
  "type": "uint96"
2065
1858
  }
2066
1859
  ],
2067
- "name": "toBundleKey32",
1860
+ "name": "toPolicyKey32",
2068
1861
  "outputs": [
2069
1862
  {
2070
1863
  "internalType": "Key32",
@@ -2078,82 +1871,124 @@
2078
1871
  {
2079
1872
  "inputs": [
2080
1873
  {
2081
- "internalType": "ObjectType",
2082
- "name": "objectType",
2083
- "type": "uint8"
1874
+ "internalType": "NftId",
1875
+ "name": "applicationNftId",
1876
+ "type": "uint96"
1877
+ },
1878
+ {
1879
+ "components": [
1880
+ {
1881
+ "internalType": "NftId",
1882
+ "name": "productNftId",
1883
+ "type": "uint96"
1884
+ },
1885
+ {
1886
+ "internalType": "NftId",
1887
+ "name": "bundleNftId",
1888
+ "type": "uint96"
1889
+ },
1890
+ {
1891
+ "internalType": "ReferralId",
1892
+ "name": "referralId",
1893
+ "type": "bytes8"
1894
+ },
1895
+ {
1896
+ "internalType": "RiskId",
1897
+ "name": "riskId",
1898
+ "type": "bytes8"
1899
+ },
1900
+ {
1901
+ "internalType": "uint256",
1902
+ "name": "sumInsuredAmount",
1903
+ "type": "uint256"
1904
+ },
1905
+ {
1906
+ "internalType": "uint256",
1907
+ "name": "premiumAmount",
1908
+ "type": "uint256"
1909
+ },
1910
+ {
1911
+ "internalType": "uint256",
1912
+ "name": "premiumPaidAmount",
1913
+ "type": "uint256"
1914
+ },
1915
+ {
1916
+ "internalType": "Seconds",
1917
+ "name": "lifetime",
1918
+ "type": "uint40"
1919
+ },
1920
+ {
1921
+ "internalType": "bytes",
1922
+ "name": "applicationData",
1923
+ "type": "bytes"
1924
+ },
1925
+ {
1926
+ "internalType": "bytes",
1927
+ "name": "policyData",
1928
+ "type": "bytes"
1929
+ },
1930
+ {
1931
+ "internalType": "uint16",
1932
+ "name": "claimsCount",
1933
+ "type": "uint16"
1934
+ },
1935
+ {
1936
+ "internalType": "uint16",
1937
+ "name": "openClaimsCount",
1938
+ "type": "uint16"
1939
+ },
1940
+ {
1941
+ "internalType": "uint256",
1942
+ "name": "payoutAmount",
1943
+ "type": "uint256"
1944
+ },
1945
+ {
1946
+ "internalType": "Timestamp",
1947
+ "name": "activatedAt",
1948
+ "type": "uint40"
1949
+ },
1950
+ {
1951
+ "internalType": "Timestamp",
1952
+ "name": "expiredAt",
1953
+ "type": "uint40"
1954
+ },
1955
+ {
1956
+ "internalType": "Timestamp",
1957
+ "name": "closedAt",
1958
+ "type": "uint40"
1959
+ }
1960
+ ],
1961
+ "internalType": "struct IPolicy.PolicyInfo",
1962
+ "name": "policy",
1963
+ "type": "tuple"
2084
1964
  },
2085
1965
  {
2086
- "internalType": "KeyId",
2087
- "name": "id",
2088
- "type": "bytes31"
2089
- }
2090
- ],
2091
- "name": "toKey32",
2092
- "outputs": [
2093
- {
2094
- "internalType": "Key32",
2095
- "name": "",
2096
- "type": "bytes32"
1966
+ "internalType": "StateId",
1967
+ "name": "newState",
1968
+ "type": "uint8"
2097
1969
  }
2098
1970
  ],
2099
- "stateMutability": "pure",
1971
+ "name": "updateApplication",
1972
+ "outputs": [],
1973
+ "stateMutability": "nonpayable",
2100
1974
  "type": "function"
2101
1975
  },
2102
1976
  {
2103
1977
  "inputs": [
2104
1978
  {
2105
1979
  "internalType": "NftId",
2106
- "name": "policyNftId",
1980
+ "name": "applicationNftId",
2107
1981
  "type": "uint96"
2108
- }
2109
- ],
2110
- "name": "toPolicyKey32",
2111
- "outputs": [
2112
- {
2113
- "internalType": "Key32",
2114
- "name": "",
2115
- "type": "bytes32"
2116
- }
2117
- ],
2118
- "stateMutability": "pure",
2119
- "type": "function"
2120
- },
2121
- {
2122
- "inputs": [
2123
- {
2124
- "internalType": "RoleId",
2125
- "name": "roleId",
2126
- "type": "uint64"
2127
- }
2128
- ],
2129
- "name": "toRoleKey32",
2130
- "outputs": [
2131
- {
2132
- "internalType": "Key32",
2133
- "name": "",
2134
- "type": "bytes32"
2135
- }
2136
- ],
2137
- "stateMutability": "pure",
2138
- "type": "function"
2139
- },
2140
- {
2141
- "inputs": [
2142
- {
2143
- "internalType": "address",
2144
- "name": "target",
2145
- "type": "address"
2146
- }
2147
- ],
2148
- "name": "toTargetKey32",
2149
- "outputs": [
1982
+ },
2150
1983
  {
2151
- "internalType": "Key32",
2152
- "name": "",
2153
- "type": "bytes32"
1984
+ "internalType": "StateId",
1985
+ "name": "newState",
1986
+ "type": "uint8"
2154
1987
  }
2155
1988
  ],
2156
- "stateMutability": "pure",
1989
+ "name": "updateApplicationState",
1990
+ "outputs": [],
1991
+ "stateMutability": "nonpayable",
2157
1992
  "type": "function"
2158
1993
  },
2159
1994
  {
@@ -2208,9 +2043,9 @@
2208
2043
  "type": "uint256"
2209
2044
  },
2210
2045
  {
2211
- "internalType": "uint256",
2046
+ "internalType": "Seconds",
2212
2047
  "name": "lifetime",
2213
- "type": "uint256"
2048
+ "type": "uint40"
2214
2049
  },
2215
2050
  {
2216
2051
  "internalType": "Timestamp",
@@ -2264,9 +2099,9 @@
2264
2099
  "type": "uint96"
2265
2100
  },
2266
2101
  {
2267
- "internalType": "NumberId",
2102
+ "internalType": "ClaimId",
2268
2103
  "name": "claimId",
2269
- "type": "uint32"
2104
+ "type": "uint16"
2270
2105
  },
2271
2106
  {
2272
2107
  "components": [
@@ -2314,54 +2149,9 @@
2314
2149
  "type": "uint96"
2315
2150
  },
2316
2151
  {
2317
- "internalType": "NumberId",
2318
- "name": "payoutId",
2319
- "type": "uint32"
2320
- },
2321
- {
2322
- "components": [
2323
- {
2324
- "internalType": "NumberId",
2325
- "name": "claimId",
2326
- "type": "uint32"
2327
- },
2328
- {
2329
- "internalType": "uint256",
2330
- "name": "amount",
2331
- "type": "uint256"
2332
- },
2333
- {
2334
- "internalType": "bytes",
2335
- "name": "data",
2336
- "type": "bytes"
2337
- },
2338
- {
2339
- "internalType": "Timestamp",
2340
- "name": "paidAt",
2341
- "type": "uint40"
2342
- }
2343
- ],
2344
- "internalType": "struct IPolicy.PayoutInfo",
2345
- "name": "payout",
2346
- "type": "tuple"
2347
- },
2348
- {
2349
- "internalType": "StateId",
2350
- "name": "newState",
2351
- "type": "uint8"
2352
- }
2353
- ],
2354
- "name": "updateClaim",
2355
- "outputs": [],
2356
- "stateMutability": "nonpayable",
2357
- "type": "function"
2358
- },
2359
- {
2360
- "inputs": [
2361
- {
2362
- "internalType": "NftId",
2363
- "name": "policyNftId",
2364
- "type": "uint96"
2152
+ "internalType": "ClaimId",
2153
+ "name": "claimId",
2154
+ "type": "uint16"
2365
2155
  },
2366
2156
  {
2367
2157
  "internalType": "StateId",
@@ -2410,11 +2200,6 @@
2410
2200
  "name": "distributionFee",
2411
2201
  "type": "tuple"
2412
2202
  },
2413
- {
2414
- "internalType": "bool",
2415
- "name": "isIntercepting",
2416
- "type": "bool"
2417
- },
2418
2203
  {
2419
2204
  "internalType": "address",
2420
2205
  "name": "wallet",
@@ -2458,39 +2243,29 @@
2458
2243
  "inputs": [
2459
2244
  {
2460
2245
  "internalType": "NftId",
2461
- "name": "policyNftId",
2246
+ "name": "nftId",
2462
2247
  "type": "uint96"
2463
2248
  },
2464
- {
2465
- "internalType": "NumberId",
2466
- "name": "payoutId",
2467
- "type": "uint32"
2468
- },
2469
2249
  {
2470
2250
  "components": [
2471
2251
  {
2472
- "internalType": "NumberId",
2473
- "name": "claimId",
2474
- "type": "uint32"
2252
+ "internalType": "DistributorType",
2253
+ "name": "distributorType",
2254
+ "type": "bytes8"
2475
2255
  },
2476
2256
  {
2477
- "internalType": "uint256",
2478
- "name": "amount",
2479
- "type": "uint256"
2257
+ "internalType": "bool",
2258
+ "name": "active",
2259
+ "type": "bool"
2480
2260
  },
2481
2261
  {
2482
2262
  "internalType": "bytes",
2483
2263
  "name": "data",
2484
2264
  "type": "bytes"
2485
- },
2486
- {
2487
- "internalType": "Timestamp",
2488
- "name": "paidAt",
2489
- "type": "uint40"
2490
2265
  }
2491
2266
  ],
2492
- "internalType": "struct IPolicy.PayoutInfo",
2493
- "name": "payout",
2267
+ "internalType": "struct IDistribution.DistributorInfo",
2268
+ "name": "info",
2494
2269
  "type": "tuple"
2495
2270
  },
2496
2271
  {
@@ -2508,7 +2283,7 @@
2508
2283
  "inputs": [
2509
2284
  {
2510
2285
  "internalType": "NftId",
2511
- "name": "policyNftId",
2286
+ "name": "nftId",
2512
2287
  "type": "uint96"
2513
2288
  },
2514
2289
  {
@@ -2525,40 +2300,60 @@
2525
2300
  {
2526
2301
  "inputs": [
2527
2302
  {
2528
- "internalType": "NftId",
2529
- "name": "policyNftId",
2530
- "type": "uint96"
2531
- },
2532
- {
2533
- "internalType": "NumberId",
2534
- "name": "payoutId",
2535
- "type": "uint32"
2303
+ "internalType": "Key32",
2304
+ "name": "distributorKey",
2305
+ "type": "bytes32"
2536
2306
  },
2537
2307
  {
2538
2308
  "components": [
2539
2309
  {
2540
- "internalType": "NumberId",
2541
- "name": "claimId",
2542
- "type": "uint32"
2310
+ "internalType": "string",
2311
+ "name": "name",
2312
+ "type": "string"
2543
2313
  },
2544
2314
  {
2545
- "internalType": "uint256",
2546
- "name": "amount",
2315
+ "internalType": "UFixed",
2316
+ "name": "minDiscountPercentage",
2317
+ "type": "uint256"
2318
+ },
2319
+ {
2320
+ "internalType": "UFixed",
2321
+ "name": "maxDiscountPercentage",
2547
2322
  "type": "uint256"
2548
2323
  },
2324
+ {
2325
+ "internalType": "UFixed",
2326
+ "name": "commissionPercentage",
2327
+ "type": "uint256"
2328
+ },
2329
+ {
2330
+ "internalType": "uint32",
2331
+ "name": "maxReferralCount",
2332
+ "type": "uint32"
2333
+ },
2334
+ {
2335
+ "internalType": "uint32",
2336
+ "name": "maxReferralLifetime",
2337
+ "type": "uint32"
2338
+ },
2339
+ {
2340
+ "internalType": "bool",
2341
+ "name": "allowSelfReferrals",
2342
+ "type": "bool"
2343
+ },
2344
+ {
2345
+ "internalType": "bool",
2346
+ "name": "allowRenewals",
2347
+ "type": "bool"
2348
+ },
2549
2349
  {
2550
2350
  "internalType": "bytes",
2551
2351
  "name": "data",
2552
2352
  "type": "bytes"
2553
- },
2554
- {
2555
- "internalType": "Timestamp",
2556
- "name": "paidAt",
2557
- "type": "uint40"
2558
2353
  }
2559
2354
  ],
2560
- "internalType": "struct IPolicy.PayoutInfo",
2561
- "name": "payout",
2355
+ "internalType": "struct IDistribution.DistributorTypeInfo",
2356
+ "name": "info",
2562
2357
  "type": "tuple"
2563
2358
  },
2564
2359
  {
@@ -2572,6 +2367,24 @@
2572
2367
  "stateMutability": "nonpayable",
2573
2368
  "type": "function"
2574
2369
  },
2370
+ {
2371
+ "inputs": [
2372
+ {
2373
+ "internalType": "Key32",
2374
+ "name": "distributorKey",
2375
+ "type": "bytes32"
2376
+ },
2377
+ {
2378
+ "internalType": "StateId",
2379
+ "name": "newState",
2380
+ "type": "uint8"
2381
+ }
2382
+ ],
2383
+ "name": "updateDistributorTypeState",
2384
+ "outputs": [],
2385
+ "stateMutability": "nonpayable",
2386
+ "type": "function"
2387
+ },
2575
2388
  {
2576
2389
  "inputs": [
2577
2390
  {
@@ -2579,13 +2392,45 @@
2579
2392
  "name": "policyNftId",
2580
2393
  "type": "uint96"
2581
2394
  },
2395
+ {
2396
+ "internalType": "NumberId",
2397
+ "name": "payoutId",
2398
+ "type": "uint32"
2399
+ },
2400
+ {
2401
+ "components": [
2402
+ {
2403
+ "internalType": "ClaimId",
2404
+ "name": "claimId",
2405
+ "type": "uint16"
2406
+ },
2407
+ {
2408
+ "internalType": "uint256",
2409
+ "name": "amount",
2410
+ "type": "uint256"
2411
+ },
2412
+ {
2413
+ "internalType": "bytes",
2414
+ "name": "data",
2415
+ "type": "bytes"
2416
+ },
2417
+ {
2418
+ "internalType": "Timestamp",
2419
+ "name": "paidAt",
2420
+ "type": "uint40"
2421
+ }
2422
+ ],
2423
+ "internalType": "struct IPolicy.PayoutInfo",
2424
+ "name": "payout",
2425
+ "type": "tuple"
2426
+ },
2582
2427
  {
2583
2428
  "internalType": "StateId",
2584
2429
  "name": "newState",
2585
2430
  "type": "uint8"
2586
2431
  }
2587
2432
  ],
2588
- "name": "updateDistributorTypeState",
2433
+ "name": "updatePayout",
2589
2434
  "outputs": [],
2590
2435
  "stateMutability": "nonpayable",
2591
2436
  "type": "function"
@@ -2653,9 +2498,9 @@
2653
2498
  "type": "uint256"
2654
2499
  },
2655
2500
  {
2656
- "internalType": "uint256",
2501
+ "internalType": "Seconds",
2657
2502
  "name": "lifetime",
2658
- "type": "uint256"
2503
+ "type": "uint40"
2659
2504
  },
2660
2505
  {
2661
2506
  "internalType": "bytes",
@@ -2741,89 +2586,33 @@
2741
2586
  {
2742
2587
  "components": [
2743
2588
  {
2744
- "internalType": "NftId",
2745
- "name": "productNftId",
2746
- "type": "uint96"
2589
+ "internalType": "string",
2590
+ "name": "name",
2591
+ "type": "string"
2747
2592
  },
2748
2593
  {
2749
- "internalType": "contract TokenHandler",
2750
- "name": "tokenHandler",
2594
+ "internalType": "contract IERC20Metadata",
2595
+ "name": "token",
2751
2596
  "type": "address"
2752
2597
  },
2753
2598
  {
2754
- "internalType": "UFixed",
2755
- "name": "collateralizationLevel",
2756
- "type": "uint256"
2757
- },
2758
- {
2759
- "components": [
2760
- {
2761
- "internalType": "UFixed",
2762
- "name": "fractionalFee",
2763
- "type": "uint256"
2764
- },
2765
- {
2766
- "internalType": "uint256",
2767
- "name": "fixedFee",
2768
- "type": "uint256"
2769
- }
2770
- ],
2771
- "internalType": "struct Fee",
2772
- "name": "poolFee",
2773
- "type": "tuple"
2774
- },
2775
- {
2776
- "components": [
2777
- {
2778
- "internalType": "UFixed",
2779
- "name": "fractionalFee",
2780
- "type": "uint256"
2781
- },
2782
- {
2783
- "internalType": "uint256",
2784
- "name": "fixedFee",
2785
- "type": "uint256"
2786
- }
2787
- ],
2788
- "internalType": "struct Fee",
2789
- "name": "stakingFee",
2790
- "type": "tuple"
2791
- },
2792
- {
2793
- "components": [
2794
- {
2795
- "internalType": "UFixed",
2796
- "name": "fractionalFee",
2797
- "type": "uint256"
2798
- },
2799
- {
2800
- "internalType": "uint256",
2801
- "name": "fixedFee",
2802
- "type": "uint256"
2803
- }
2804
- ],
2805
- "internalType": "struct Fee",
2806
- "name": "performanceFee",
2807
- "type": "tuple"
2808
- },
2809
- {
2810
- "internalType": "bool",
2811
- "name": "isIntercepting",
2812
- "type": "bool"
2813
- },
2814
- {
2815
- "internalType": "bool",
2816
- "name": "isConfirmingApplication",
2817
- "type": "bool"
2599
+ "internalType": "contract TokenHandler",
2600
+ "name": "tokenHandler",
2601
+ "type": "address"
2818
2602
  },
2819
2603
  {
2820
2604
  "internalType": "address",
2821
2605
  "name": "wallet",
2822
2606
  "type": "address"
2607
+ },
2608
+ {
2609
+ "internalType": "bytes",
2610
+ "name": "data",
2611
+ "type": "bytes"
2823
2612
  }
2824
2613
  ],
2825
- "internalType": "struct ISetup.PoolSetupInfo",
2826
- "name": "setup",
2614
+ "internalType": "struct ISetup.ComponentInfo",
2615
+ "name": "info",
2827
2616
  "type": "tuple"
2828
2617
  },
2829
2618
  {
@@ -3033,40 +2822,50 @@
3033
2822
  {
3034
2823
  "inputs": [
3035
2824
  {
3036
- "internalType": "NftId",
3037
- "name": "policyNftId",
3038
- "type": "uint96"
3039
- },
3040
- {
3041
- "internalType": "NumberId",
3042
- "name": "payoutId",
3043
- "type": "uint32"
2825
+ "internalType": "Key32",
2826
+ "name": "referralKey",
2827
+ "type": "bytes32"
3044
2828
  },
3045
2829
  {
3046
2830
  "components": [
3047
2831
  {
3048
- "internalType": "NumberId",
3049
- "name": "claimId",
3050
- "type": "uint32"
2832
+ "internalType": "NftId",
2833
+ "name": "distributorNftId",
2834
+ "type": "uint96"
3051
2835
  },
3052
2836
  {
3053
- "internalType": "uint256",
3054
- "name": "amount",
2837
+ "internalType": "string",
2838
+ "name": "referralCode",
2839
+ "type": "string"
2840
+ },
2841
+ {
2842
+ "internalType": "UFixed",
2843
+ "name": "discountPercentage",
3055
2844
  "type": "uint256"
3056
2845
  },
3057
2846
  {
3058
- "internalType": "bytes",
3059
- "name": "data",
3060
- "type": "bytes"
2847
+ "internalType": "uint32",
2848
+ "name": "maxReferrals",
2849
+ "type": "uint32"
2850
+ },
2851
+ {
2852
+ "internalType": "uint32",
2853
+ "name": "usedReferrals",
2854
+ "type": "uint32"
3061
2855
  },
3062
2856
  {
3063
2857
  "internalType": "Timestamp",
3064
- "name": "paidAt",
2858
+ "name": "expiryAt",
3065
2859
  "type": "uint40"
2860
+ },
2861
+ {
2862
+ "internalType": "bytes",
2863
+ "name": "data",
2864
+ "type": "bytes"
3066
2865
  }
3067
2866
  ],
3068
- "internalType": "struct IPolicy.PayoutInfo",
3069
- "name": "payout",
2867
+ "internalType": "struct IDistribution.ReferralInfo",
2868
+ "name": "referralInfo",
3070
2869
  "type": "tuple"
3071
2870
  },
3072
2871
  {
@@ -3083,9 +2882,9 @@
3083
2882
  {
3084
2883
  "inputs": [
3085
2884
  {
3086
- "internalType": "NftId",
3087
- "name": "policyNftId",
3088
- "type": "uint96"
2885
+ "internalType": "Key32",
2886
+ "name": "referralKey",
2887
+ "type": "bytes32"
3089
2888
  },
3090
2889
  {
3091
2890
  "internalType": "StateId",
@@ -3150,133 +2949,88 @@
3150
2949
  "outputs": [],
3151
2950
  "stateMutability": "nonpayable",
3152
2951
  "type": "function"
3153
- },
3154
- {
3155
- "inputs": [
3156
- {
3157
- "internalType": "RoleId",
3158
- "name": "roleId",
3159
- "type": "uint64"
3160
- },
3161
- {
3162
- "internalType": "string",
3163
- "name": "name",
3164
- "type": "string"
3165
- },
3166
- {
3167
- "internalType": "StateId",
3168
- "name": "newState",
3169
- "type": "uint8"
3170
- }
3171
- ],
3172
- "name": "updateRole",
3173
- "outputs": [],
3174
- "stateMutability": "nonpayable",
3175
- "type": "function"
3176
- },
3177
- {
3178
- "inputs": [
3179
- {
3180
- "internalType": "RoleId",
3181
- "name": "roleId",
3182
- "type": "uint64"
3183
- },
3184
- {
3185
- "internalType": "StateId",
3186
- "name": "newState",
3187
- "type": "uint8"
3188
- }
3189
- ],
3190
- "name": "updateRoleState",
3191
- "outputs": [],
3192
- "stateMutability": "nonpayable",
3193
- "type": "function"
3194
2952
  }
3195
2953
  ],
3196
- "bytecode": "0x60806040523480156200001157600080fd5b50604051620074a6380380620074a6833981016040819052620000349162001867565b6200003e620000cd565b6200004862000284565b62000052620003be565b6200005c6200062b565b6200009e6301ffc9a760e01b60005260046020527f9fe05126d2d9ecf60592e254dead906a4b2e492f36cca727682c38e9008c6ac1805460ff19166001179055565b600680546001600160a01b03191633908117909155620000c49084908490849062000772565b50505062001bc6565b60dc6000908152600160208190527f81c2bf9f7c6e8ac9bd8bcd9d323e94b867d2f5054aff8759d884773c680ec1ec805460ff19166064179055906002906200011460dc90565b60ff1660ff16815260200190815260200160002060006200013a620009dc60201b60201c565b60ff1660ff168152602001908152602001600020600062000160620009e160201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906002906200019460dc90565b60ff1660ff1681526020019081526020016000206000620001ba620009e160201b60201c565b60ff1660ff1681526020019081526020016000206000620001e0620009dc60201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906002906200021460dc90565b60ff1660ff16815260200190815260200160002060006200023a620009e160201b60201c565b60ff1660ff168152602001908152602001600020600062000260620009e660201b60201c565b60ff1681526020810191909152604001600020805460ff1916911515919091179055565b7f1bd07f61ef326b4de236f5b68f225f46ff76ee2c375ae31a06da201c49c70c128054606460ff1991821681179092557f879b65b464eb639409179c76c21acf6fbada740970e2300d47ea857d08cacd3c8054909116600190811790915560009182526002602052907f7673bcbb3401a7cbae68f81d40eea2cf35afdaf7ecd016ebf3f02857fcc1260a9062000318606e90565b60ff1660ff16815260200190815260200160002060006200033e620009dc60201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019060029062000372606490565b60ff1660ff168152602001908152602001600020600062000398620009e160201b60201c565b60ff1660ff168152602001908152602001600020600062000260620009eb60201b60201c565b60d26000908152600160208190527fcfa08e49dd9e66a4af3cdf0c2ef56f411154768307cac6dc23ee77c0386825be805460ff1916600a179055906002906200040560d290565b60ff1660ff16815260200190815260200160002060006200042b620009f060201b60201c565b60ff1660ff168152602001908152602001600020600062000451620009f560201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906002906200048560d290565b60ff1660ff1681526020019081526020016000206000620004ab620009f060201b60201c565b60ff1660ff1681526020019081526020016000206000620004d1620009fa60201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906002906200050560d290565b60ff1660ff16815260200190815260200160002060006200052b620009f060201b60201c565b60ff1660ff168152602001908152602001600020600062000551620009ff60201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906002906200058560d290565b60ff1660ff1681526020019081526020016000206000620005ab620009ff60201b60201c565b60ff1660ff1681526020019081526020016000206000620005d1620009dc60201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906002906200060560d290565b60ff1660ff16815260200190815260200160002060006200023a620009dc60201b60201c565b60c86000908152600160208190527f345f7c6c888721344af4147de0834159e0b302300ba13c4e7b6c0b60d8f2314e805460ff19166064179055906002906200067260c890565b60ff1660ff168152602001908152602001600020600062000698620009dc60201b60201c565b60ff1660ff1681526020019081526020016000206000620006be620009e160201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600290620006f260c890565b60ff1660ff168152602001908152602001600020600062000718620009e160201b60201c565b60ff1660ff16815260200190815260200160002060006200073e620009dc60201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906002906200037260c890565b600654600160a01b900460ff1615620007e95760405162461bcd60e51b815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201526d195b881a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b620007f48462000a04565b600b80546001600160a01b0319166001600160a01b0386161790556040516368aebf7b60e01b815260006004820152620008b49073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af415801562000865573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200088b9190620018c1565b60408051808201909152600981526841646d696e526f6c6560b81b602082015260008062000a7f565b6040516368aebf7b60e01b81526001600160401b036004820152620009609073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af415801562000910573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009369190620018c1565b60408051808201909152600a8152695075626c6963526f6c6560b01b602082015260008062000a7f565b62000987838360466000856040518060200160405280600081525062000b6560201b60201c565b63aa67ed7b60e01b60005260046020527fb16bc835f846f1d28fffeb0fafc27765664f7efbddd96debd87d86e46639d088805460ff1916600117905550506006805460ff60a01b1916600160a01b1790555050565b606490565b606e90565b60c890565b60d290565b600a90565b601490565b601e90565b602890565b60005460ff161562000a645760405162461bcd60e51b815260206004820152602260248201527f4163636573734d616e616765643a20616c726561647920696e697469616c697a604482015261195960f21b6064820152608401620007e0565b62000a6f8162000c78565b506000805460ff19166001179055565b801562000a965762000a9384848462000cd4565b50505b600062000aa585858562000f5e565b8051600090815260076020526040812080546001600160401b0319166001600160401b038981169182179092556009805460018101825593527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af6004840401805460039094166008026101000a928302199093169102179055905062000b5e62000b2f8662000f9a565b604080518451602080830191909152850151151581830152815180820383018152606090910190915262001022565b5050505050565b62000ba76301ffc9a760e01b60005260046020527f9fe05126d2d9ecf60592e254dead906a4b2e492f36cca727682c38e9008c6ac1805460ff19166001179055565b62000bb3828762001032565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166001600160681b0319909116176c0100000000000000000000000060ff8816021760ff60681b19166d01000000000000000000000000008615150217815590506001810162000c32838262001998565b506303fb044760e21b60005260046020527f91a409085efa2cad9dad64790cb14ef1d9b61e9173e901d74242d27ef0ced4a1805460ff1916600117905550505050505050565b60008054610100600160a81b0319166101006001600160a01b038416908102919091179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b6000808062000ce38662000f9a565b905062000cf081620010b0565b9250821562000d255762000d04816200113e565b80602001905181019062000d19919062001a75565b60200151915062000d29565b8391505b856001600160401b038116158062000d4957506001600160401b03818116145b1562000d745760405163981bf42160e01b81526001600160401b0388166004820152602401620007e0565b82801562000d8c57506127106001600160401b038216105b1562000db757604051633119b9df60e21b81526001600160401b0388166004820152602401620007e0565b82801562000dd057506127106001600160401b03821610155b1562000dfb5760405163094fb39160e01b81526001600160401b0388166004820152602401620007e0565b600062000e0887620011eb565b905062000e15816200122e565b60000362000e42576040516321ab17ab60e01b81526001600160401b0389166004820152602401620007e0565b60008181526007602090815260409182902054825163bc1b392d60e01b8152925162000ee9936001600160401b039092169273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9263bc1b392d92600480830193928290030181865af415801562000eb1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ed79190620018c1565b6001600160401b039081169116141590565b801562000f1057506000818152600760205260409020546001600160401b03898116911614155b1562000f535760008181526007602052604090819020549051631660fb9360e21b81526001600160401b03909116600482015260248101829052604401620007e0565b505050935093915050565b604080518082018252600080825260208201528151808301909252908062000f8685620011eb565b815260200183151581525090509392505050565b604051630f37f38f60e41b81526001600160401b038216600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063f37f38f090602401602060405180830381865af415801562000ff6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200101c919062001ace565b92915050565b6200102e828262001257565b5050565b6001600160a01b0382166200108a5760405162461bcd60e51b815260206004820152601e60248201527f4e66744f776e61626c653a20696e697469616c206f776e6572206973203000006044820152606401620007e0565b600680546001600160a01b0319166001600160a01b0384161790556200102e816200168f565b60008181526003602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024015b602060405180830381865af415801562001118573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200101c919062001ae8565b6000818152600360205260409020600101805460609190620011609062001909565b80601f01602080910402602001604051908101604052809291908181526020018280546200118e9062001909565b8015620011df5780601f10620011b357610100808354040283529160200191620011df565b820191906000526020600020905b815481529060010190602001808311620011c157829003601f168201915b50505050509050919050565b600080829050601f8151111562001219578260405163305a27a960e01b8152600401620007e0919062001b06565b8051620012268262001b56565b179392505050565b600060ff8216601f8111156200101c57604051632cd44ac360e21b815260040160405180910390fd5b604051634b00e98f60e11b81526004810183905260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015620012ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012d1919062001b7b565b60405163b2466acf60e01b815260ff8216600482015290915073__$fb4566b39bd2075cb32f600f6f40bfaef2$__9063b2466acf90602401602060405180830381865af415801562001327573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200134d919062001ae8565b6200139b5760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a4b56532d3031303a545950455f554e444546494e4544000000006044820152606401620007e0565b600083815260036020526040908190208054915163037c8cb160e51b815261010090920460ff1660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af415801562001405573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200142b919062001ae8565b620014795760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3031323a414c52454144595f435245415445440000006044820152606401620007e0565b334360006200148885620017fc565b62001495576064620014ab565b60ff808616600090815260016020526040902054165b845460ff87811661ffff1990921691909117610100918316919091021762010000600160d01b031916620100006001600160a01b0386160263ffffffff60b01b191617600160b01b63ffffffff85169081029190911763ffffffff60d01b1916600160d01b91909102178555600088815260036020526040902090915060010162001537878262001998565b50604051634b00e98f60e11b8152600481018890527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015620015ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015d1919062001b7b565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af415801562001622573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001648919062001ba0565b6040805160ff938416815260ff19929092166020830152918416818301526001600160a01b038616606082015232608082015290519081900360a00190a150505050505050565b6005546001600160a01b031615620016ca5760055460405163fcdbf2d960e01b81526001600160a01b039091166004820152602401620007e0565b6001600160a01b038116620016f25760405163f5c4d07d60e01b815260040160405180910390fd5b806001600160a01b03163b6000036200172a5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401620007e0565b600580546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152632eaf856d60e11b60048201526301ffc9a790602401602060405180830381865afa925050508015620017a7575060408051601f3d908101601f19168201909252620017a49181019062001ae8565b60015b620017d15760405163fdeac91f60e01b81526001600160a01b0382166004820152602401620007e0565b806200102e5760405163fdeac91f60e01b81526001600160a01b0383166004820152602401620007e0565b60ff81811660009081526001602052604080822054905163b2466acf60e01b8152921660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401620010fa565b80516001600160a01b03811681146200186257600080fd5b919050565b6000806000606084860312156200187d57600080fd5b62001888846200184a565b925062001898602085016200184a565b60408501519092506001600160601b0381168114620018b657600080fd5b809150509250925092565b600060208284031215620018d457600080fd5b81516001600160401b0381168114620018ec57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200191e57607f821691505b6020821081036200193f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200199357600081815260208120601f850160051c810160208610156200196e5750805b601f850160051c820191505b818110156200198f578281556001016200197a565b5050505b505050565b81516001600160401b03811115620019b457620019b4620018f3565b620019cc81620019c5845462001909565b8462001945565b602080601f83116001811462001a045760008415620019eb5750858301515b600019600386901b1c1916600185901b1785556200198f565b600085815260208120601f198616915b8281101562001a355788860151825594840194600190910190840162001a14565b508582101562001a545787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b805180151581146200186257600080fd5b60006040828403121562001a8857600080fd5b604080519081016001600160401b038111828210171562001aad5762001aad620018f3565b6040528251815262001ac26020840162001a64565b60208201529392505050565b60006020828403121562001ae157600080fd5b5051919050565b60006020828403121562001afb57600080fd5b620018ec8262001a64565b600060208083528351808285015260005b8181101562001b355785810183015185820160400152820162001b17565b506000604082860101526040601f19601f8301168501019250505092915050565b805160208083015191908110156200193f5760001960209190910360031b1b16919050565b60006020828403121562001b8e57600080fd5b815160ff81168114620018ec57600080fd5b60006020828403121562001bb357600080fd5b815160ff1981168114620018ec57600080fd5b6158d08062001bd66000396000f3fe608060405234801561001057600080fd5b50600436106104965760003560e01c80637cef484211610262578063b428b0b011610151578063d2f21a29116100ce578063e8951ee611610092578063e8951ee6146105c1578063e9e96c7014610add578063f48016ce14610b1b578063f7bc431c14610b2e578063f8b648ac14610675578063fe1f18d614610b4157600080fd5b8063d2f21a2914610a91578063d5b221bd146105ef578063d78a83b114610aa4578063dee3262314610ab7578063e7cd37d414610aca57600080fd5b8063bf1db3f911610115578063bf1db3f914610a4d578063bf7e214f14610a60578063c2f1a2d2146105ef578063ca600b1c14610a76578063cd50b97e14610a7e57600080fd5b8063b428b0b014610a01578063b68ec14614610675578063b7d2b16214610a14578063bc8d400014610a27578063bd5947e314610a3a57600080fd5b8063950ad70b116101df578063a13df2ab116101a3578063a13df2ab14610904578063a5961b4c14610917578063a76ee018146109c8578063a8989675146109db578063a9cea142146109ee57600080fd5b8063950ad70b146108b8578063976b0a77146108cb5780639a960d52146108de5780639d7421f4146108f15780639df0280b146105c157600080fd5b8063893d20e811610226578063893d20e81461085c5780638dc77f42146105c15780638eaa6ac0146108645780638fb360371461088457806391ff6eaa146108a557600080fd5b80637cef48421461080357806382f65adb14610675578063835933c91461081657806386f0c47b146108295780638793a9ac1461084957600080fd5b806338a699a4116103895780635d4345cc116103065780636b9bf08b116102ca5780636b9bf08b146107c55780636fa29853146107cd57806375b238fc146107d557806375c82776146107dd5780637a415802146105ef5780637a9e5e4b146107f057600080fd5b80635d4345cc146105c15780635dfa73db1461076b5780636071a68e1461077457806360aa32aa14610787578063644c45e01461079a57600080fd5b806340529b0f1161034d57806340529b0f146105c15780634288121d1461071f578063468a18671461072757806354f6127f1461073a5780635ab1bd531461075a57600080fd5b806338a699a4146106b8578063392f5f64146106cb5780633ca7c02a146106d35780633fc5ab98146106f95780633fd855611461070c57600080fd5b8063167bd395116104175780632f61088a116103db5780632f61088a1461064f57806331d311a71461066257806333bb0a971461067557806337f135d714610688578063384c9a57146106a557600080fd5b8063167bd395146105dc5780631c45fe7a146105ef5780631e23a2f5146106025780631eff4b221461061557806322f46b841461063c57600080fd5b80630d3581811161045e5780630d358181146105725780630f526f7d146105985780630fec111c146105ab57806310203d2c146105c1578063138461e0146105d457600080fd5b806301ffc9a71461049b57806302cd3071146104dd578063030149741461050257806309648a9d146105235780630b24cf5f1461055d575b600080fd5b6104c86104a9366004613e5b565b6001600160e01b03191660009081526004602052604090205460ff1690565b60405190151581526020015b60405180910390f35b600c546001600160a01b03165b6040516001600160a01b0390911681526020016104d4565b610515610510366004613e9a565b610b54565b6040519081526020016104d4565b61054b610531366004613eb7565b600090815260036020526040902054610100900460ff1690565b60405160ff90911681526020016104d4565b61057061056b3660046140c1565b610b7b565b005b61054b610580366004614106565b60ff9081166000908152600160205260409020541690565b6105706105a6366004614123565b610bbf565b6105b3610bdc565b6040516104d49291906141ac565b6105706105cf366004614123565b610d5e565b610570610d73565b6105706105ea366004614253565b610f95565b6105706105fd3660046143a9565b61103d565b61057061061036600461441d565b61107e565b6105157f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b61057061064a36600461447e565b6110a4565b61057061065d366004614548565b6110ba565b61051561067036600461458d565b611155565b6105706106833660046145aa565b6111e6565b610690600081565b60405163ffffffff90911681526020016104d4565b6104c86106b3366004613e9a565b611211565b6104c86106c6366004613eb7565b6113a7565b600954610515565b6106e16001600160401b0381565b6040516001600160401b0390911681526020016104d4565b6105706107073660046146c2565b611432565b6106e161071a366004613eb7565b611458565b6104ea61149d565b610515610735366004614725565b611538565b61074d610748366004613eb7565b611595565b6040516104d49190614742565b6005546001600160a01b03166104ea565b6106e161271081565b610570610782366004614755565b61163a565b610570610795366004614850565b611660565b600554600160a01b90046001600160601b03166040516001600160601b0390911681526020016104d4565b6104ea611688565b6104ea6116de565b6106e1600081565b6105706107eb3660046148d4565b61173e565b6105706107fe36600461458d565b611764565b61057061081136600461492c565b6117df565b610515610824366004613e9a565b611869565b61083c610837366004613e9a565b6118ac565b6040516104d4919061494a565b610570610857366004614963565b611951565b6104ea611966565b610877610872366004613eb7565b611a43565b6040516104d491906149cb565b61088c611b84565b6040516001600160e01b031990911681526020016104d4565b6105706108b3366004614af7565b611ba8565b6105706108c6366004614b25565b611bd0565b6105706108d9366004614b6c565b611c32565b6105706108ec366004614d0a565b611e5a565b6105706108ff366004614d51565b611e80565b610515610912366004614725565b611ea6565b6109bb610925366004613eb7565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915250600090815260036020908152604091829020825160a081018452905460ff8082168352610100820416928201929092526001600160a01b03620100008304169281019290925263ffffffff600160b01b820481166060840152600160d01b90910416608082015290565b6040516104d49190614da8565b6105706109d6366004614db6565b611ed3565b6105706109e9366004614dfd565b611f6e565b6105706109fc366004614e3d565b61205f565b6104c8610a0f366004614e7e565b612087565b6104c8610a22366004614e7e565b61227b565b610570610a35366004614eac565b612406565b610570610a48366004614ef1565b61242c565b6104c8610a5b366004614106565b612454565b60005461010090046001600160a01b03166104ea565b6104ea6124a1565b610570610a8c36600461447e565b6124ff565b610570610a9f366004614123565b612516565b6104ea610ab2366004614f31565b61252d565b610570610ac5366004614123565b612556565b610570610ad8366004614f5d565b61256d565b6104c8610aeb366004614dfd565b60ff9283166000908152600260209081526040808320948616835293815283822092851682529190915220541690565b610515610b29366004614f9b565b612595565b610570610b3c36600461458d565b612619565b610570610b4f366004614123565b612695565b6001600160401b0381166000908152600860205260408120610b75906126aa565b92915050565b610b88335b6000366126b4565b610bbb610b968360786127c7565b82604051602001610ba79190614fc9565b604051602081830303815290604052612813565b5050565b610bc833610b80565b610bbb610bd683608c6127c7565b8261281d565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820181905290917f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e00160405280610c5f6005546001600160601b03600160a01b9091041690565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a001610ca7611966565b6001600160a01b03168152602001826001018054610cc490615029565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf090615029565b8015610d3d5780601f10610d1257610100808354040283529160200191610d3d565b820191906000526020600020905b815481529060010190602001808311610d2057829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b610d6733610b80565b610bbb610bd683611538565b6005546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610dd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df99190615063565b15610e40576005546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b031660248201526044015b60405180910390fd5b6005546001600160a01b0316610e695760405163cf29926160e01b815260040160405180910390fd5b60055460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa158015610eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed69190615063565b610efe576040516372657a5160e01b81526001600160a01b0382166004820152602401610e37565b600554604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa158015610f48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6c9190615080565b600560146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b610f9e33610b80565b610faa6106c683611155565b610fd2576040516325b6f39560e21b81526001600160a01b0383166004820152602401610e37565b600b5460405163167bd39560e01b81526001600160a01b03848116600483015283151560248301529091169063167bd39590604401600060405180830381600087803b15801561102157600080fd5b505af1158015611035573d6000803e3d6000fd5b505050505050565b61104633610b80565b61107861105285611538565b83604051602001611063919061509d565b60405160208183030381529060405283612827565b50505050565b61108733610b80565b610bbb61109383611155565b82604051602001610ba7919061494a565b6110ad33610b80565b610bbb8282600180612832565b6110c333610b80565b6040516355ee627560e01b81526001600160c01b031983166004820152610bbb9073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611120573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114491906150f0565b82604051602001610ba79190615109565b604051637a400b6760e11b8152601e6004820152606082901b6bffffffffffffffffffffffff1916602482015260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063f48016ce906044015b602060405180830381865af41580156111c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7591906150f0565b6111ef33610b80565b61120c6111fb84611538565b82604051602001610ba7919061509d565b505050565b6000338161121e84611869565b9050611229816113a7565b61125057604051627a416f60e01b81526001600160401b0385166004820152602401610e37565b6001600160401b038416600090815260086020526040902061127290836128db565b1561139d57600b54604051631517388760e21b81526001600160401b03861660048201526001600160a01b039091169063fe0776f59073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af41580156112e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113089190615137565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b0385166024820152604401600060405180830381600087803b15801561135857600080fd5b505af115801561136c573d6000803e3d6000fd5b5050506001600160401b03851660009081526008602052604090206113929150836128fd565b506001949350505050565b5060009392505050565b60008181526003602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024015b602060405180830381865af415801561140e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b759190615063565b61143b33610b80565b61120c61144784611ea6565b836040516020016110639190615154565b60006009828154811061146d5761146d615208565b90600052602060002090600491828204019190066008029054906101000a90046001600160401b03169050919050565b6005546040805163a3bcd81d60e01b81526004810191909152600e60448201526d50726f647563745365727669636560901b6064820152600360248201526000916001600160a01b03169063a3bcd81d906084015b602060405180830381865afa15801561150f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611533919061521e565b905090565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660d25b6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff1660248201526044016111a5565b60008181526003602052604090206001018054606091906115b590615029565b80601f01602080910402602001604051908101604052809291908181526020018280546115e190615029565b801561162e5780601f106116035761010080835404028352916020019161162e565b820191906000526020600020905b81548152906001019060200180831161161157829003601f168201915b50505050509050919050565b61164333610b80565b610bbb61164f83611ea6565b82604051602001610ba79190615154565b61166933610b80565b61120c61167784608c6127c7565b83604051602001611063919061523b565b6005546040805163a3bcd81d60e01b81526004810191909152600b60448201526a506f6f6c5365727669636560a81b6064820152600360248201526000916001600160a01b03169063a3bcd81d906084016114f2565b6005546040805163a3bcd81d60e01b815260048101919091526015604482015274436f6d706f6e656e744f776e65725365727669636560581b6064820152600360248201526000916001600160a01b03169063a3bcd81d906084016114f2565b61174733610b80565b61107861175385611538565b8360405160200161106391906152f8565b600054339061010090046001600160a01b031681146117a05760405162d1953b60e31b81526001600160a01b0382166004820152602401610e37565b816001600160a01b03163b6000036117d6576040516361798f2f60e11b81526001600160a01b0383166004820152602401610e37565b610bbb82612912565b6117e833610b80565b6040516355ee627560e01b81526001600160c01b031983166004820152610bbb9073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611845573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd691906150f0565b604051630f37f38f60e41b81526001600160401b038216600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063f37f38f0906024016111a5565b604080518082018252600080825260208201529051630f37f38f60e41b81526001600160401b038316600482015261193e9073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063f37f38f090602401602060405180830381865af415801561191a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074891906150f0565b806020019051810190610b759190615328565b61195a33610b80565b610bbb610bd683611869565b6005546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af41580156119cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ef9190615063565b15611a3357600554604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a906024016114f2565b506006546001600160a01b031690565b6040805160e081018252600091810182815260608083018490526080830184905260a0830184905260c083019390935281526020810191909152600082815260036020908152604091829020825160e081018452815460ff80821695830195865261010082041660608301526001600160a01b0362010000820416608083015263ffffffff600160b01b8204811660a0840152600160d01b9091041660c08201529283526001810180549192840191611afb90615029565b80601f0160208091040260200160405190810160405280929190818152602001828054611b2790615029565b8015611b745780601f10611b4957610100808354040283529160200191611b74565b820191906000526020600020905b815481529060010190602001808311611b5757829003601f168201915b5050505050815250509050919050565b60008054600160a81b900460ff16611b9c5750600090565b50638fb3603760e01b90565b611bb133610b80565b610bbb611bbf83606e6127c7565b82604051602001610ba79190615360565b611bd933610b80565b6000611be78484600061296e565b5090506000611bf7858584612bd9565b9050611c2b611c0586611869565b82604051602001611c16919061494a565b60405160208183030381529060405285612827565b5050505050565b600654600160a01b900460ff1615611ca35760405162461bcd60e51b815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201526d195b881a5b9a5d1a585b1a5e995960921b6064820152608401610e37565b611cac84612c15565b600b80546001600160a01b0319166001600160a01b0386161790556040516368aebf7b60e01b815260006004820152611d699073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af4158015611d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3f9190615137565b6040518060400160405280600981526020016841646d696e526f6c6560b81b815250600080612832565b6040516368aebf7b60e01b81526001600160401b036004820152611e129073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af4158015611dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de79190615137565b6040518060400160405280600a8152602001695075626c6963526f6c6560b01b815250600080612832565b611e318383604660008560405180602001604052806000815250612c8c565b611e4163aa67ed7b60e01b612d61565b50506006805460ff60a01b1916600160a01b1790555050565b611e6333610b80565b61120c611e6f84611538565b83604051602001611063919061548a565b611e8933610b80565b61120c611e9584611538565b82604051602001610ba791906152f8565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660dc611561565b611edc33610b80565b6040516355ee627560e01b81526001600160c01b03198416600482015261120c9073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611f39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5d91906150f0565b836040516020016110639190615109565b60ff8381166000908152600160205260409081902054905163037c8cb160e51b81529116600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015611fd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff79190615063565b1561200157505050565b60ff80841660009081526002602090815260408083208685168452825280832085851684529091529020541661120c57604051636bb20ea760e01b815260ff8085166004830152808416602483015282166044820152606401610e37565b61206833610b80565b61120c61207684606e6127c7565b836040516020016110639190615360565b600061209233610b80565b600061209d84611869565b90506120a8816113a7565b6120d057604051636777365b60e01b81526001600160401b0385166004820152602401610e37565b6000818152600360205260409020546120ff90610100900460ff166120f3606490565b60ff9081169116141590565b156121285760405163fe229d5d60e01b81526001600160401b0385166004820152602401610e37565b6001600160401b038416600090815260086020526040902061214a90846128db565b61139d57600b54604051631517388760e21b81526001600160401b03861660048201526001600160a01b03909116906325c471a09073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af41580156121bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121df9190615137565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b038616602482015260006044820152606401600060405180830381600087803b15801561223657600080fd5b505af115801561224a573d6000803e3d6000fd5b5050506001600160401b0385166000908152600860205260409020612270915084612d86565b506001915050610b75565b600061228633610b80565b600061229184611869565b905061229c816113a7565b6122c457604051634cee277360e11b81526001600160401b0385166004820152602401610e37565b6001600160401b03841660009081526008602052604090206122e690846128db565b1561139d57600b54604051631517388760e21b81526001600160401b03861660048201526001600160a01b039091169063b7d2b1629073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237c9190615137565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b0386166024820152604401600060405180830381600087803b1580156123cc57600080fd5b505af11580156123e0573d6000803e3d6000fd5b5050506001600160401b03851660009081526008602052604090206122709150846128fd565b61240f33610b80565b610bbb61241b83611538565b82604051602001610ba7919061548a565b61243533610b80565b61120c6124438460786127c7565b836040516020016110639190614fc9565b60ff81811660009081526001602052604080822054905163b2466acf60e01b8152921660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024016113f1565b6005546040805163a3bcd81d60e01b815260048101919091526013604482015272446973747269627574696f6e5365727669636560681b6064820152600360248201526000916001600160a01b03169063a3bcd81d906084016114f2565b61250833610b80565b610bbb828260006001612832565b61251f33610b80565b610bbb610bd68360786127c7565b6001600160401b038216600090815260086020526040812061254f9083612d9b565b9392505050565b61255f33610b80565b610bbb610bd683606e6127c7565b61257633610b80565b610bbb61258483608c6127c7565b82604051602001610ba7919061523b565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063f48016ce906044015b602060405180830381865af41580156125f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254f91906150f0565b61262233610b80565b600c546001600160a01b0316156126735760405162461bcd60e51b8152602060048201526015602482015274125b9cdd185b98d954995859195c881a5cc81cd95d605a1b6044820152606401610e37565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b61269e33610b80565b610bbb610bd683611ea6565b6000610b75825490565b6000806126f06126d26000546001600160a01b036101009091041690565b86306126e260046000898b6155cb565b6126eb916155f5565b612da7565b9150915081611c2b5763ffffffff8116156127a4576000805460ff60a81b1916600160a81b1790556127306000546001600160a01b036101009091041690565b6001600160a01b03166394c7d7ee8686866040518463ffffffff1660e01b815260040161275f93929190615625565b600060405180830381600087803b15801561277957600080fd5b505af115801561278d573d6000803e3d6000fd5b50506000805460ff60a81b1916905550611c2b9050565b60405162d1953b60e31b81526001600160a01b0386166004820152602401610e37565b604051630711349960e31b81526001600160601b038316600482015260ff8216602482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c8906044016125d8565b610bbb8282612eb3565b610bbb82826132d5565b61120c838383613609565b80156128465761284384848461296e565b50505b6000612853858585612bd9565b80516000908152600760205260408120805467ffffffffffffffff19166001600160401b038981169182179092556009805460018101825593527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af6004840401805460039094166008026101000a9283021990931691021790559050611c2b61109386611869565b6001600160a01b0381166000908152600183016020526040812054151561254f565b600061254f836001600160a01b038416613aa4565b60008054610100600160a81b0319166101006001600160a01b038416908102919091179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b600080600061297c86611869565b9050612987816113a7565b925082156129b65761299881611595565b8060200190518101906129ab9190615328565b6020015191506129ba565b8391505b856001600160401b03811615806129d957506001600160401b03818116145b15612a025760405163981bf42160e01b81526001600160401b0388166004820152602401610e37565b828015612a1957506127106001600160401b038216105b15612a4257604051633119b9df60e21b81526001600160401b0388166004820152602401610e37565b828015612a5a57506127106001600160401b03821610155b15612a835760405163094fb39160e01b81526001600160401b0388166004820152602401610e37565b6000612a8e87613b9e565b9050612a9981613bdc565b600003612ac4576040516321ab17ab60e01b81526001600160401b0389166004820152602401610e37565b60008181526007602090815260409182902054825163bc1b392d60e01b81529251612b67936001600160401b039092169273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9263bc1b392d92600480830193928290030181865af4158015612b31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b559190615137565b6001600160401b039081169116141590565b8015612b8d57506000818152600760205260409020546001600160401b03898116911614155b15612bce5760008181526007602052604090819020549051631660fb9360e21b81526001600160401b03909116600482015260248101829052604401610e37565b505050935093915050565b60408051808201909152600080825260208201526040518060400160405280612c0185613b9e565b815260200183151581525090509392505050565b60005460ff1615612c735760405162461bcd60e51b815260206004820152602260248201527f4163636573734d616e616765643a20616c726561647920696e697469616c697a604482015261195960f21b6064820152608401610e37565b612c7c81612912565b506000805460ff19166001179055565b612ccd6301ffc9a760e01b60005260046020527f9fe05126d2d9ecf60592e254dead906a4b2e492f36cca727682c38e9008c6ac1805460ff19166001179055565b612cd78287613c04565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b86151502178155905060018101612d4783826156ab565b50612d586303fb044760e21b612d61565b50505050505050565b6001600160e01b0319166000908152600460205260409020805460ff19166001179055565b600061254f836001600160a01b038416613c7e565b600061254f8383613ccd565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b17905251612e16919061576a565b600060405180830381855afa9150503d8060008114612e51576040519150601f19603f3d011682016040523d82523d6000602084013e612e56565b606091505b50915091508115612ea8576040815110612e885780806020019051810190612e7e9190615786565b9094509250612ea8565b6020815110612ea85780806020019051810190612ea59190615063565b93505b505094509492505050565b604051634b00e98f60e11b81526004810183905260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612f06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f2a91906157b5565b60405163b2466acf60e01b815260ff8216600482015290915073__$fb4566b39bd2075cb32f600f6f40bfaef2$__9063b2466acf90602401602060405180830381865af4158015612f7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa39190615063565b612fef5760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a4b56532d3031303a545950455f554e444546494e4544000000006044820152606401610e37565b600083815260036020526040908190208054915163037c8cb160e51b815261010090920460ff1660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015613058573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307c9190615063565b6130c85760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3031323a414c52454144595f435245415445440000006044820152606401610e37565b334360006130d585612454565b6130e05760646130f6565b60ff808616600090815260016020526040902054165b845460ff87811661ffff1990921691909117610100918316919091021762010000600160d01b031916620100006001600160a01b0386160263ffffffff60b01b191617600160b01b63ffffffff85169081029190911763ffffffff60d01b1916600160d01b91909102178555600088815260036020526040902090915060010161318087826156ab565b50604051634b00e98f60e11b8152600481018890527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af41580156131f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321791906157b5565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015613267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061328b91906157d2565b6040805160ff938416815260ff199092166020830152918416918101919091526001600160a01b038516606082015232608082015260a0015b60405180910390a150505050505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015613327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334b9190615063565b6133975760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3034303a53544154455f554e444546494e45440000006044820152606401610e37565b600082815260036020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301819052909173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015613403573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134279190615063565b6134735760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3034313a4e4f545f4558495354494e470000000000006044820152606401610e37565b8154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b909104166134b74390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018790527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015613549573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061356d91906157b5565b604051630713cfad60e31b81526004810189905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af41580156135bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135e191906157d2565b87868632876040516135f997969594939291906157ef565b60405180910390a1505050505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af415801561365b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061367f9190615063565b6136cb5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3032303a53544154455f554e444546494e45440000006044820152606401610e37565b600083815260036020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301819052909173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015613737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375b9190615063565b6137a75760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3032313a4e4f545f4558495354494e470000000000006044820152606401610e37565b60008581526003602052604090206001016137c285826156ab565b508154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b909104166138074390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018890527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015613899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138bd91906157b5565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af415801561390d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393191906157d2565b878686328760405161394997969594939291906157ef565b60405180910390a1604051634b00e98f60e11b8152600481018890527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af41580156139c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e791906157b5565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015613a37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a5b91906157d2565b6040805160ff938416815260ff199092166020830152918816918101919091526001600160a01b038416606082015232608082015263ffffffff831660a082015260c0016132c4565b60008181526001830160205260408120548015613b8d576000613ac860018361583f565b8554909150600090613adc9060019061583f565b9050808214613b41576000866000018281548110613afc57613afc615208565b9060005260206000200154905080876000018481548110613b1f57613b1f615208565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613b5257613b52615860565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610b75565b6000915050610b75565b5092915050565b600080829050601f81511115613bc9578260405163305a27a960e01b8152600401610e379190614742565b8051613bd482615876565b179392505050565b600060ff8216601f811115610b7557604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b038216613c5a5760405162461bcd60e51b815260206004820152601e60248201527f4e66744f776e61626c653a20696e697469616c206f776e6572206973203000006044820152606401610e37565b600680546001600160a01b0319166001600160a01b038416179055610bbb81613cf7565b6000818152600183016020526040812054613cc557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610b75565b506000610b75565b6000826000018281548110613ce457613ce4615208565b9060005260206000200154905092915050565b6005546001600160a01b031615613d305760055460405163fcdbf2d960e01b81526001600160a01b039091166004820152602401610e37565b6001600160a01b038116613d575760405163f5c4d07d60e01b815260040160405180910390fd5b806001600160a01b03163b600003613d8d5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610e37565b600580546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152632eaf856d60e11b60048201526301ffc9a790602401602060405180830381865afa925050508015613e07575060408051601f3d908101601f19168201909252613e0491810190615063565b60015b613e2f5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610e37565b80610bbb5760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610e37565b50565b600060208284031215613e6d57600080fd5b81356001600160e01b03198116811461254f57600080fd5b6001600160401b0381168114613e5857600080fd5b600060208284031215613eac57600080fd5b813561254f81613e85565b600060208284031215613ec957600080fd5b5035919050565b6001600160601b0381168114613e5857600080fd5b8035613ef081613ed0565b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613f2d57613f2d613ef5565b60405290565b604051608081016001600160401b0381118282101715613f2d57613f2d613ef5565b60405161012081016001600160401b0381118282101715613f2d57613f2d613ef5565b60405161018081016001600160401b0381118282101715613f2d57613f2d613ef5565b60405161020081016001600160401b0381118282101715613f2d57613f2d613ef5565b6001600160a01b0381168114613e5857600080fd5b8035613ef081613fbe565b600060408284031215613ff057600080fd5b613ff8613f0b565b9050813581526020820135602082015292915050565b8015158114613e5857600080fd5b8035613ef08161400e565b600060c0828403121561403957600080fd5b60405160a081018181106001600160401b038211171561405b5761405b613ef5565b604052905080823561406c81613ed0565b8152602083013561407c81613fbe565b602082015261408e8460408501613fde565b604082015260808301356140a18161400e565b606082015260a08301356140b481613fbe565b6080919091015292915050565b60008060e083850312156140d457600080fd5b82356140df81613ed0565b91506140ee8460208501614027565b90509250929050565b60ff81168114613e5857600080fd5b60006020828403121561411857600080fd5b813561254f816140f7565b6000806040838503121561413657600080fd5b823561414181613ed0565b91506020830135614151816140f7565b809150509250929050565b60005b8381101561417757818101518382015260200161415f565b50506000910152565b6000815180845261419881602086016020860161415c565b601f01601f19169290920160200192915050565b6040815260006001600160601b038085511660408401528060208601511660608401525060ff604085015116608083015260608401516141f060a084018215159052565b5060808401516001600160a01b03811660c08401525060a08401516001600160a01b03811660e08401525060c084015160e0610100840152614236610120840182614180565b9050828103602084015261424a8185614180565b95945050505050565b6000806040838503121561426657600080fd5b823561427181613fbe565b915060208301356141518161400e565b63ffffffff81168114613e5857600080fd5b600082601f8301126142a457600080fd5b81356001600160401b03808211156142be576142be613ef5565b604051601f8301601f19908116603f011681019082821181831017156142e6576142e6613ef5565b816040528381528660208588010111156142ff57600080fd5b836020870160208301376000602085830101528094505050505092915050565b803564ffffffffff81168114613ef057600080fd5b60006080828403121561434657600080fd5b61434e613f33565b9050813561435b81614281565b81526020828101359082015260408201356001600160401b0381111561438057600080fd5b61438c84828501614293565b60408301525061439e6060830161431f565b606082015292915050565b600080600080608085870312156143bf57600080fd5b84356143ca81613ed0565b935060208501356143da81614281565b925060408501356001600160401b038111156143f557600080fd5b61440187828801614334565b9250506060850135614412816140f7565b939692955090935050565b600080828403606081121561443157600080fd5b833561443c81613fbe565b92506040601f198201121561445057600080fd5b50614459613f0b565b60208401358152604084013561446e8161400e565b6020820152919491935090915050565b6000806040838503121561449157600080fd5b823561449c81613e85565b915060208301356001600160401b038111156144b757600080fd5b6144c385828601614293565b9150509250929050565b6001600160c01b031981168114613e5857600080fd5b8035613ef0816144cd565b60006040828403121561450057600080fd5b614508613f0b565b9050813561451581613ed0565b815260208201356001600160401b0381111561453057600080fd5b61453c84828501614293565b60208301525092915050565b6000806040838503121561455b57600080fd5b8235614566816144cd565b915060208301356001600160401b0381111561458157600080fd5b6144c3858286016144ee565b60006020828403121561459f57600080fd5b813561254f81613fbe565b6000806000606084860312156145bf57600080fd5b83356145ca81613ed0565b925060208401356145da81614281565b915060408401356001600160401b038111156145f557600080fd5b61460186828701614334565b9150509250925092565b6000610140828403121561461e57600080fd5b614626613f55565b905061463182613ee5565b81526146408360208401613fde565b602082015260608201356001600160401b0381111561465e57600080fd5b61466a84828501614293565b6040830152506080820135606082015260a0820135608082015260c082013560a082015260e082013560c08201526101006146a681840161431f565b60e08301526146b8610120840161431f565b9082015292915050565b6000806000606084860312156146d757600080fd5b83356146e281613ed0565b925060208401356001600160401b038111156146fd57600080fd5b6147098682870161460b565b925050604084013561471a816140f7565b809150509250925092565b60006020828403121561473757600080fd5b813561254f81613ed0565b60208152600061254f6020830184614180565b6000806040838503121561476857600080fd5b823561477381613ed0565b915060208301356001600160401b0381111561478e57600080fd5b6144c38582860161460b565b600061018082840312156147ad57600080fd5b6147b5613f55565b90506147c082613ee5565b81526147ce60208301613fd3565b6020820152604082013560408201526147ea8360608401613fde565b60608201526147fc8360a08401613fde565b608082015261480e8360e08401613fde565b60a0820152614820610120830161401c565b60c0820152614832610140830161401c565b60e08201526148446101608301613fd3565b61010082015292915050565b60008060006101c0848603121561486657600080fd5b833561487181613ed0565b9250614880856020860161479a565b91506101a084013561471a816140f7565b6000608082840312156148a357600080fd5b6148ab613f33565b9050813581526020820135602082015260408201356001600160401b0381111561438057600080fd5b600080600080608085870312156148ea57600080fd5b84356148f581613ed0565b9350602085013561490581614281565b925060408501356001600160401b0381111561492057600080fd5b61440187828801614891565b6000806040838503121561493f57600080fd5b8235614141816144cd565b8151815260208083015115159082015260408101610b75565b6000806040838503121561497657600080fd5b823561414181613e85565b60ff815116825260ff602082015116602083015260018060a01b036040820151166040830152606081015163ffffffff808216606085015280608084015116608085015250505050565b602081526149dd602082018351614981565b6000602083015160c0808401526149f760e0840182614180565b949350505050565b60006102408284031215614a1257600080fd5b614a1a613f78565b9050614a2582613fd3565b8152614a3360208301613fd3565b6020820152614a4460408301613ee5565b6040820152614a5560608301613ee5565b6060820152614a678360808401613fde565b6080820152614a798360c08401613fde565b60a0820152610100614a8d84828501613fde565b60c0830152610140614aa185828601613fde565b60e0840152614ab4856101808601613fde565b82840152614ac6856101c08601613fde565b610120840152614ad9610200850161401c565b9083015250614aeb6102208301613fd3565b61016082015292915050565b6000806102608385031215614b0b57600080fd5b8235614b1681613ed0565b91506140ee84602085016149ff565b600080600060608486031215614b3a57600080fd5b8335614b4581613e85565b925060208401356001600160401b03811115614b6057600080fd5b61470986828701614293565b60008060008060808587031215614b8257600080fd5b8435614b8d81613fbe565b93506020850135614b9d81613fbe565b92506040850135614bad81613ed0565b9150606085013561441281613fbe565b803561ffff81168114613ef057600080fd5b60006102008284031215614be257600080fd5b614bea613f9b565b9050614bf582613ee5565b8152614c0360208301613ee5565b6020820152614c14604083016144e3565b6040820152614c25606083016144e3565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301356001600160401b0380821115614c6e57600080fd5b614c7a86838701614293565b83850152610120925082850135915080821115614c9657600080fd5b50614ca385828601614293565b828401525050610140614cb7818401614bbd565b90820152610160614cc9838201614bbd565b9082015261018082810135908201526101a0614ce681840161431f565b908201526101c0614cf883820161431f565b908201526101e06146b883820161431f565b600080600060608486031215614d1f57600080fd5b8335614d2a81613ed0565b925060208401356001600160401b03811115614d4557600080fd5b61470986828701614bcf565b600080600060608486031215614d6657600080fd5b8335614d7181613ed0565b92506020840135614d8181614281565b915060408401356001600160401b03811115614d9c57600080fd5b61460186828701614891565b60a08101610b758284614981565b600080600060608486031215614dcb57600080fd5b8335614dd6816144cd565b925060208401356001600160401b03811115614df157600080fd5b614709868287016144ee565b600080600060608486031215614e1257600080fd5b8335614e1d816140f7565b92506020840135614e2d816140f7565b9150604084013561471a816140f7565b60008060006102808486031215614e5357600080fd5b8335614e5e81613ed0565b9250614e6d85602086016149ff565b915061026084013561471a816140f7565b60008060408385031215614e9157600080fd5b8235614e9c81613e85565b9150602083013561415181613fbe565b60008060408385031215614ebf57600080fd5b8235614eca81613ed0565b915060208301356001600160401b03811115614ee557600080fd5b6144c385828601614bcf565b60008060006101008486031215614f0757600080fd5b8335614f1281613ed0565b9250614f218560208601614027565b915060e084013561471a816140f7565b60008060408385031215614f4457600080fd5b8235614f4f81613e85565b946020939093013593505050565b6000806101a08385031215614f7157600080fd5b8235614f7c81613ed0565b91506140ee846020850161479a565b60ff1981168114613e5857600080fd5b60008060408385031215614fae57600080fd5b8235614fb9816140f7565b9150602083013561415181614f8b565b81516001600160601b031681526020808301516001600160a01b039081168284015260408085015180519185019190915291820151606084015260c0830191906060850151151560808501528060808601511660a0850152505092915050565b600181811c9082168061503d57607f821691505b60208210810361505d57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561507557600080fd5b815161254f8161400e565b60006020828403121561509257600080fd5b815161254f81613ed0565b6020815263ffffffff82511660208201526020820151604082015260006040830151608060608401526150d360a0840182614180565b905064ffffffffff60608501511660808401528091505092915050565b60006020828403121561510257600080fd5b5051919050565b602081526001600160601b038251166020820152600060208301516040808401526149f76060840182614180565b60006020828403121561514957600080fd5b815161254f81613e85565b6020815261516e6020820183516001600160601b03169052565b6000602083015161518c604084018280518252602090810151910152565b5060408301516101408060808501526151a9610160850183614180565b9150606085015160a0850152608085015160c085015260a085015160e085015260c0850151610100818187015260e087015191506151f161012087018364ffffffffff169052565b9095015164ffffffffff1693019290925250919050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561523057600080fd5b815161254f81613fbe565b81516001600160601b03168152602080830151610180830191615268908401826001600160a01b03169052565b5060408301516040830152606083015161528f606084018280518252602090810151910152565b506080830151805160a0840152602081015160c08401525060a0830151805160e084015260208101516101008401525060c08301518015156101208401525060e0830151801515610140840152506101008301516001600160a01b038116610160840152613b97565b60208152815160208201526020820151604082015260006040830151608060608401526150d360a0840182614180565b60006040828403121561533a57600080fd5b615342613f0b565b8251815260208301516153548161400e565b60208201529392505050565b81516001600160a01b031681526102408101602083015161538c60208401826001600160a01b03169052565b5060408301516153a760408401826001600160601b03169052565b5060608301516153c260608401826001600160601b03169052565b5060808301516153df608084018280518252602090810151910152565b5060a0830151805160c0840152602081015160e08401525060c08301516101006154158185018380518252602090810151910152565b60e085015191506101406154358186018480518252602090810151910152565b9085015180516101808601526020908101516101a086015261012086015180516101c087015201516101e08501528401511515610200840152506101608301516001600160a01b038116610220840152613b97565b602081526154a46020820183516001600160601b03169052565b600060208301516154c060408401826001600160601b03169052565b5060408301516001600160c01b0319811660608401525060608301516001600160c01b03198116608084015250608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008181850152808501519150506102006101208181860152615538610220860184614180565b9250808601519050610140601f1986850301818701526155588483614180565b9350808701519150506101606155738187018361ffff169052565b860151905061018061558a8682018361ffff169052565b8601516101a08681019190915286015190506101c06155b18187018364ffffffffff169052565b86015190506101e06151f18682018364ffffffffff169052565b600080858511156155db57600080fd5b838611156155e857600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561561d5780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b601f82111561120c57600081815260208120601f850160051c8101602086101561568c5750805b601f850160051c820191505b8181101561103557828155600101615698565b81516001600160401b038111156156c4576156c4613ef5565b6156d8816156d28454615029565b84615665565b602080601f83116001811461570d57600084156156f55750858301515b600019600386901b1c1916600185901b178555611035565b600085815260208120601f198616915b8281101561573c5788860151825594840194600190910190840161571d565b508582101561575a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000825161577c81846020870161415c565b9190910192915050565b6000806040838503121561579957600080fd5b82516157a48161400e565b602084015190925061415181614281565b6000602082840312156157c757600080fd5b815161254f816140f7565b6000602082840312156157e457600080fd5b815161254f81614f8b565b60ff978816815260ff1996909616602087015293861660408601529190941660608401526001600160a01b03938416608084015290921660a082015263ffffffff9190911660c082015260e00190565b81810381811115610b7557634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b8051602080830151919081101561505d5760001960209190910360031b1b1691905056fea2646970667358221220efb2097be0819ef781c63f7e6ca85c45fcb4f2e0a46bbbf745978ac5ce92d8e964736f6c63430008140033",
3197
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106104965760003560e01c80637cef484211610262578063b428b0b011610151578063d2f21a29116100ce578063e8951ee611610092578063e8951ee6146105c1578063e9e96c7014610add578063f48016ce14610b1b578063f7bc431c14610b2e578063f8b648ac14610675578063fe1f18d614610b4157600080fd5b8063d2f21a2914610a91578063d5b221bd146105ef578063d78a83b114610aa4578063dee3262314610ab7578063e7cd37d414610aca57600080fd5b8063bf1db3f911610115578063bf1db3f914610a4d578063bf7e214f14610a60578063c2f1a2d2146105ef578063ca600b1c14610a76578063cd50b97e14610a7e57600080fd5b8063b428b0b014610a01578063b68ec14614610675578063b7d2b16214610a14578063bc8d400014610a27578063bd5947e314610a3a57600080fd5b8063950ad70b116101df578063a13df2ab116101a3578063a13df2ab14610904578063a5961b4c14610917578063a76ee018146109c8578063a8989675146109db578063a9cea142146109ee57600080fd5b8063950ad70b146108b8578063976b0a77146108cb5780639a960d52146108de5780639d7421f4146108f15780639df0280b146105c157600080fd5b8063893d20e811610226578063893d20e81461085c5780638dc77f42146105c15780638eaa6ac0146108645780638fb360371461088457806391ff6eaa146108a557600080fd5b80637cef48421461080357806382f65adb14610675578063835933c91461081657806386f0c47b146108295780638793a9ac1461084957600080fd5b806338a699a4116103895780635d4345cc116103065780636b9bf08b116102ca5780636b9bf08b146107c55780636fa29853146107cd57806375b238fc146107d557806375c82776146107dd5780637a415802146105ef5780637a9e5e4b146107f057600080fd5b80635d4345cc146105c15780635dfa73db1461076b5780636071a68e1461077457806360aa32aa14610787578063644c45e01461079a57600080fd5b806340529b0f1161034d57806340529b0f146105c15780634288121d1461071f578063468a18671461072757806354f6127f1461073a5780635ab1bd531461075a57600080fd5b806338a699a4146106b8578063392f5f64146106cb5780633ca7c02a146106d35780633fc5ab98146106f95780633fd855611461070c57600080fd5b8063167bd395116104175780632f61088a116103db5780632f61088a1461064f57806331d311a71461066257806333bb0a971461067557806337f135d714610688578063384c9a57146106a557600080fd5b8063167bd395146105dc5780631c45fe7a146105ef5780631e23a2f5146106025780631eff4b221461061557806322f46b841461063c57600080fd5b80630d3581811161045e5780630d358181146105725780630f526f7d146105985780630fec111c146105ab57806310203d2c146105c1578063138461e0146105d457600080fd5b806301ffc9a71461049b57806302cd3071146104dd578063030149741461050257806309648a9d146105235780630b24cf5f1461055d575b600080fd5b6104c86104a9366004613e5b565b6001600160e01b03191660009081526004602052604090205460ff1690565b60405190151581526020015b60405180910390f35b600c546001600160a01b03165b6040516001600160a01b0390911681526020016104d4565b610515610510366004613e9a565b610b54565b6040519081526020016104d4565b61054b610531366004613eb7565b600090815260036020526040902054610100900460ff1690565b60405160ff90911681526020016104d4565b61057061056b3660046140c1565b610b7b565b005b61054b610580366004614106565b60ff9081166000908152600160205260409020541690565b6105706105a6366004614123565b610bbf565b6105b3610bdc565b6040516104d49291906141ac565b6105706105cf366004614123565b610d5e565b610570610d73565b6105706105ea366004614253565b610f95565b6105706105fd3660046143a9565b61103d565b61057061061036600461441d565b61107e565b6105157f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b61057061064a36600461447e565b6110a4565b61057061065d366004614548565b6110ba565b61051561067036600461458d565b611155565b6105706106833660046145aa565b6111e6565b610690600081565b60405163ffffffff90911681526020016104d4565b6104c86106b3366004613e9a565b611211565b6104c86106c6366004613eb7565b6113a7565b600954610515565b6106e16001600160401b0381565b6040516001600160401b0390911681526020016104d4565b6105706107073660046146c2565b611432565b6106e161071a366004613eb7565b611458565b6104ea61149d565b610515610735366004614725565b611538565b61074d610748366004613eb7565b611595565b6040516104d49190614742565b6005546001600160a01b03166104ea565b6106e161271081565b610570610782366004614755565b61163a565b610570610795366004614850565b611660565b600554600160a01b90046001600160601b03166040516001600160601b0390911681526020016104d4565b6104ea611688565b6104ea6116de565b6106e1600081565b6105706107eb3660046148d4565b61173e565b6105706107fe36600461458d565b611764565b61057061081136600461492c565b6117df565b610515610824366004613e9a565b611869565b61083c610837366004613e9a565b6118ac565b6040516104d4919061494a565b610570610857366004614963565b611951565b6104ea611966565b610877610872366004613eb7565b611a43565b6040516104d491906149cb565b61088c611b84565b6040516001600160e01b031990911681526020016104d4565b6105706108b3366004614af7565b611ba8565b6105706108c6366004614b25565b611bd0565b6105706108d9366004614b6c565b611c32565b6105706108ec366004614d0a565b611e5a565b6105706108ff366004614d51565b611e80565b610515610912366004614725565b611ea6565b6109bb610925366004613eb7565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915250600090815260036020908152604091829020825160a081018452905460ff8082168352610100820416928201929092526001600160a01b03620100008304169281019290925263ffffffff600160b01b820481166060840152600160d01b90910416608082015290565b6040516104d49190614da8565b6105706109d6366004614db6565b611ed3565b6105706109e9366004614dfd565b611f6e565b6105706109fc366004614e3d565b61205f565b6104c8610a0f366004614e7e565b612087565b6104c8610a22366004614e7e565b61227b565b610570610a35366004614eac565b612406565b610570610a48366004614ef1565b61242c565b6104c8610a5b366004614106565b612454565b60005461010090046001600160a01b03166104ea565b6104ea6124a1565b610570610a8c36600461447e565b6124ff565b610570610a9f366004614123565b612516565b6104ea610ab2366004614f31565b61252d565b610570610ac5366004614123565b612556565b610570610ad8366004614f5d565b61256d565b6104c8610aeb366004614dfd565b60ff9283166000908152600260209081526040808320948616835293815283822092851682529190915220541690565b610515610b29366004614f9b565b612595565b610570610b3c36600461458d565b612619565b610570610b4f366004614123565b612695565b6001600160401b0381166000908152600860205260408120610b75906126aa565b92915050565b610b88335b6000366126b4565b610bbb610b968360786127c7565b82604051602001610ba79190614fc9565b604051602081830303815290604052612813565b5050565b610bc833610b80565b610bbb610bd683608c6127c7565b8261281d565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820181905290917f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e00160405280610c5f6005546001600160601b03600160a01b9091041690565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a001610ca7611966565b6001600160a01b03168152602001826001018054610cc490615029565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf090615029565b8015610d3d5780601f10610d1257610100808354040283529160200191610d3d565b820191906000526020600020905b815481529060010190602001808311610d2057829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b610d6733610b80565b610bbb610bd683611538565b6005546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610dd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df99190615063565b15610e40576005546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b031660248201526044015b60405180910390fd5b6005546001600160a01b0316610e695760405163cf29926160e01b815260040160405180910390fd5b60055460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa158015610eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed69190615063565b610efe576040516372657a5160e01b81526001600160a01b0382166004820152602401610e37565b600554604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa158015610f48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6c9190615080565b600560146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b610f9e33610b80565b610faa6106c683611155565b610fd2576040516325b6f39560e21b81526001600160a01b0383166004820152602401610e37565b600b5460405163167bd39560e01b81526001600160a01b03848116600483015283151560248301529091169063167bd39590604401600060405180830381600087803b15801561102157600080fd5b505af1158015611035573d6000803e3d6000fd5b505050505050565b61104633610b80565b61107861105285611538565b83604051602001611063919061509d565b60405160208183030381529060405283612827565b50505050565b61108733610b80565b610bbb61109383611155565b82604051602001610ba7919061494a565b6110ad33610b80565b610bbb8282600180612832565b6110c333610b80565b6040516355ee627560e01b81526001600160c01b031983166004820152610bbb9073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611120573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114491906150f0565b82604051602001610ba79190615109565b604051637a400b6760e11b8152601e6004820152606082901b6bffffffffffffffffffffffff1916602482015260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063f48016ce906044015b602060405180830381865af41580156111c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7591906150f0565b6111ef33610b80565b61120c6111fb84611538565b82604051602001610ba7919061509d565b505050565b6000338161121e84611869565b9050611229816113a7565b61125057604051627a416f60e01b81526001600160401b0385166004820152602401610e37565b6001600160401b038416600090815260086020526040902061127290836128db565b1561139d57600b54604051631517388760e21b81526001600160401b03861660048201526001600160a01b039091169063fe0776f59073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af41580156112e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113089190615137565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b0385166024820152604401600060405180830381600087803b15801561135857600080fd5b505af115801561136c573d6000803e3d6000fd5b5050506001600160401b03851660009081526008602052604090206113929150836128fd565b506001949350505050565b5060009392505050565b60008181526003602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024015b602060405180830381865af415801561140e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b759190615063565b61143b33610b80565b61120c61144784611ea6565b836040516020016110639190615154565b60006009828154811061146d5761146d615208565b90600052602060002090600491828204019190066008029054906101000a90046001600160401b03169050919050565b6005546040805163a3bcd81d60e01b81526004810191909152600e60448201526d50726f647563745365727669636560901b6064820152600360248201526000916001600160a01b03169063a3bcd81d906084015b602060405180830381865afa15801561150f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611533919061521e565b905090565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660d25b6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff1660248201526044016111a5565b60008181526003602052604090206001018054606091906115b590615029565b80601f01602080910402602001604051908101604052809291908181526020018280546115e190615029565b801561162e5780601f106116035761010080835404028352916020019161162e565b820191906000526020600020905b81548152906001019060200180831161161157829003601f168201915b50505050509050919050565b61164333610b80565b610bbb61164f83611ea6565b82604051602001610ba79190615154565b61166933610b80565b61120c61167784608c6127c7565b83604051602001611063919061523b565b6005546040805163a3bcd81d60e01b81526004810191909152600b60448201526a506f6f6c5365727669636560a81b6064820152600360248201526000916001600160a01b03169063a3bcd81d906084016114f2565b6005546040805163a3bcd81d60e01b815260048101919091526015604482015274436f6d706f6e656e744f776e65725365727669636560581b6064820152600360248201526000916001600160a01b03169063a3bcd81d906084016114f2565b61174733610b80565b61107861175385611538565b8360405160200161106391906152f8565b600054339061010090046001600160a01b031681146117a05760405162d1953b60e31b81526001600160a01b0382166004820152602401610e37565b816001600160a01b03163b6000036117d6576040516361798f2f60e11b81526001600160a01b0383166004820152602401610e37565b610bbb82612912565b6117e833610b80565b6040516355ee627560e01b81526001600160c01b031983166004820152610bbb9073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611845573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd691906150f0565b604051630f37f38f60e41b81526001600160401b038216600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063f37f38f0906024016111a5565b604080518082018252600080825260208201529051630f37f38f60e41b81526001600160401b038316600482015261193e9073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063f37f38f090602401602060405180830381865af415801561191a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074891906150f0565b806020019051810190610b759190615328565b61195a33610b80565b610bbb610bd683611869565b6005546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af41580156119cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ef9190615063565b15611a3357600554604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a906024016114f2565b506006546001600160a01b031690565b6040805160e081018252600091810182815260608083018490526080830184905260a0830184905260c083019390935281526020810191909152600082815260036020908152604091829020825160e081018452815460ff80821695830195865261010082041660608301526001600160a01b0362010000820416608083015263ffffffff600160b01b8204811660a0840152600160d01b9091041660c08201529283526001810180549192840191611afb90615029565b80601f0160208091040260200160405190810160405280929190818152602001828054611b2790615029565b8015611b745780601f10611b4957610100808354040283529160200191611b74565b820191906000526020600020905b815481529060010190602001808311611b5757829003601f168201915b5050505050815250509050919050565b60008054600160a81b900460ff16611b9c5750600090565b50638fb3603760e01b90565b611bb133610b80565b610bbb611bbf83606e6127c7565b82604051602001610ba79190615360565b611bd933610b80565b6000611be78484600061296e565b5090506000611bf7858584612bd9565b9050611c2b611c0586611869565b82604051602001611c16919061494a565b60405160208183030381529060405285612827565b5050505050565b600654600160a01b900460ff1615611ca35760405162461bcd60e51b815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201526d195b881a5b9a5d1a585b1a5e995960921b6064820152608401610e37565b611cac84612c15565b600b80546001600160a01b0319166001600160a01b0386161790556040516368aebf7b60e01b815260006004820152611d699073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af4158015611d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3f9190615137565b6040518060400160405280600981526020016841646d696e526f6c6560b81b815250600080612832565b6040516368aebf7b60e01b81526001600160401b036004820152611e129073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af4158015611dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de79190615137565b6040518060400160405280600a8152602001695075626c6963526f6c6560b01b815250600080612832565b611e318383604660008560405180602001604052806000815250612c8c565b611e4163aa67ed7b60e01b612d61565b50506006805460ff60a01b1916600160a01b1790555050565b611e6333610b80565b61120c611e6f84611538565b83604051602001611063919061548a565b611e8933610b80565b61120c611e9584611538565b82604051602001610ba791906152f8565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660dc611561565b611edc33610b80565b6040516355ee627560e01b81526001600160c01b03198416600482015261120c9073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611f39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5d91906150f0565b836040516020016110639190615109565b60ff8381166000908152600160205260409081902054905163037c8cb160e51b81529116600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015611fd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff79190615063565b1561200157505050565b60ff80841660009081526002602090815260408083208685168452825280832085851684529091529020541661120c57604051636bb20ea760e01b815260ff8085166004830152808416602483015282166044820152606401610e37565b61206833610b80565b61120c61207684606e6127c7565b836040516020016110639190615360565b600061209233610b80565b600061209d84611869565b90506120a8816113a7565b6120d057604051636777365b60e01b81526001600160401b0385166004820152602401610e37565b6000818152600360205260409020546120ff90610100900460ff166120f3606490565b60ff9081169116141590565b156121285760405163fe229d5d60e01b81526001600160401b0385166004820152602401610e37565b6001600160401b038416600090815260086020526040902061214a90846128db565b61139d57600b54604051631517388760e21b81526001600160401b03861660048201526001600160a01b03909116906325c471a09073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af41580156121bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121df9190615137565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b038616602482015260006044820152606401600060405180830381600087803b15801561223657600080fd5b505af115801561224a573d6000803e3d6000fd5b5050506001600160401b0385166000908152600860205260409020612270915084612d86565b506001915050610b75565b600061228633610b80565b600061229184611869565b905061229c816113a7565b6122c457604051634cee277360e11b81526001600160401b0385166004820152602401610e37565b6001600160401b03841660009081526008602052604090206122e690846128db565b1561139d57600b54604051631517388760e21b81526001600160401b03861660048201526001600160a01b039091169063b7d2b1629073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237c9190615137565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b0386166024820152604401600060405180830381600087803b1580156123cc57600080fd5b505af11580156123e0573d6000803e3d6000fd5b5050506001600160401b03851660009081526008602052604090206122709150846128fd565b61240f33610b80565b610bbb61241b83611538565b82604051602001610ba7919061548a565b61243533610b80565b61120c6124438460786127c7565b836040516020016110639190614fc9565b60ff81811660009081526001602052604080822054905163b2466acf60e01b8152921660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024016113f1565b6005546040805163a3bcd81d60e01b815260048101919091526013604482015272446973747269627574696f6e5365727669636560681b6064820152600360248201526000916001600160a01b03169063a3bcd81d906084016114f2565b61250833610b80565b610bbb828260006001612832565b61251f33610b80565b610bbb610bd68360786127c7565b6001600160401b038216600090815260086020526040812061254f9083612d9b565b9392505050565b61255f33610b80565b610bbb610bd683606e6127c7565b61257633610b80565b610bbb61258483608c6127c7565b82604051602001610ba7919061523b565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063f48016ce906044015b602060405180830381865af41580156125f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254f91906150f0565b61262233610b80565b600c546001600160a01b0316156126735760405162461bcd60e51b8152602060048201526015602482015274125b9cdd185b98d954995859195c881a5cc81cd95d605a1b6044820152606401610e37565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b61269e33610b80565b610bbb610bd683611ea6565b6000610b75825490565b6000806126f06126d26000546001600160a01b036101009091041690565b86306126e260046000898b6155cb565b6126eb916155f5565b612da7565b9150915081611c2b5763ffffffff8116156127a4576000805460ff60a81b1916600160a81b1790556127306000546001600160a01b036101009091041690565b6001600160a01b03166394c7d7ee8686866040518463ffffffff1660e01b815260040161275f93929190615625565b600060405180830381600087803b15801561277957600080fd5b505af115801561278d573d6000803e3d6000fd5b50506000805460ff60a81b1916905550611c2b9050565b60405162d1953b60e31b81526001600160a01b0386166004820152602401610e37565b604051630711349960e31b81526001600160601b038316600482015260ff8216602482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c8906044016125d8565b610bbb8282612eb3565b610bbb82826132d5565b61120c838383613609565b80156128465761284384848461296e565b50505b6000612853858585612bd9565b80516000908152600760205260408120805467ffffffffffffffff19166001600160401b038981169182179092556009805460018101825593527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af6004840401805460039094166008026101000a9283021990931691021790559050611c2b61109386611869565b6001600160a01b0381166000908152600183016020526040812054151561254f565b600061254f836001600160a01b038416613aa4565b60008054610100600160a81b0319166101006001600160a01b038416908102919091179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b600080600061297c86611869565b9050612987816113a7565b925082156129b65761299881611595565b8060200190518101906129ab9190615328565b6020015191506129ba565b8391505b856001600160401b03811615806129d957506001600160401b03818116145b15612a025760405163981bf42160e01b81526001600160401b0388166004820152602401610e37565b828015612a1957506127106001600160401b038216105b15612a4257604051633119b9df60e21b81526001600160401b0388166004820152602401610e37565b828015612a5a57506127106001600160401b03821610155b15612a835760405163094fb39160e01b81526001600160401b0388166004820152602401610e37565b6000612a8e87613b9e565b9050612a9981613bdc565b600003612ac4576040516321ab17ab60e01b81526001600160401b0389166004820152602401610e37565b60008181526007602090815260409182902054825163bc1b392d60e01b81529251612b67936001600160401b039092169273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9263bc1b392d92600480830193928290030181865af4158015612b31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b559190615137565b6001600160401b039081169116141590565b8015612b8d57506000818152600760205260409020546001600160401b03898116911614155b15612bce5760008181526007602052604090819020549051631660fb9360e21b81526001600160401b03909116600482015260248101829052604401610e37565b505050935093915050565b60408051808201909152600080825260208201526040518060400160405280612c0185613b9e565b815260200183151581525090509392505050565b60005460ff1615612c735760405162461bcd60e51b815260206004820152602260248201527f4163636573734d616e616765643a20616c726561647920696e697469616c697a604482015261195960f21b6064820152608401610e37565b612c7c81612912565b506000805460ff19166001179055565b612ccd6301ffc9a760e01b60005260046020527f9fe05126d2d9ecf60592e254dead906a4b2e492f36cca727682c38e9008c6ac1805460ff19166001179055565b612cd78287613c04565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b86151502178155905060018101612d4783826156ab565b50612d586303fb044760e21b612d61565b50505050505050565b6001600160e01b0319166000908152600460205260409020805460ff19166001179055565b600061254f836001600160a01b038416613c7e565b600061254f8383613ccd565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b17905251612e16919061576a565b600060405180830381855afa9150503d8060008114612e51576040519150601f19603f3d011682016040523d82523d6000602084013e612e56565b606091505b50915091508115612ea8576040815110612e885780806020019051810190612e7e9190615786565b9094509250612ea8565b6020815110612ea85780806020019051810190612ea59190615063565b93505b505094509492505050565b604051634b00e98f60e11b81526004810183905260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612f06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f2a91906157b5565b60405163b2466acf60e01b815260ff8216600482015290915073__$fb4566b39bd2075cb32f600f6f40bfaef2$__9063b2466acf90602401602060405180830381865af4158015612f7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa39190615063565b612fef5760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a4b56532d3031303a545950455f554e444546494e4544000000006044820152606401610e37565b600083815260036020526040908190208054915163037c8cb160e51b815261010090920460ff1660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015613058573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307c9190615063565b6130c85760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3031323a414c52454144595f435245415445440000006044820152606401610e37565b334360006130d585612454565b6130e05760646130f6565b60ff808616600090815260016020526040902054165b845460ff87811661ffff1990921691909117610100918316919091021762010000600160d01b031916620100006001600160a01b0386160263ffffffff60b01b191617600160b01b63ffffffff85169081029190911763ffffffff60d01b1916600160d01b91909102178555600088815260036020526040902090915060010161318087826156ab565b50604051634b00e98f60e11b8152600481018890527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af41580156131f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321791906157b5565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015613267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061328b91906157d2565b6040805160ff938416815260ff199092166020830152918416918101919091526001600160a01b038516606082015232608082015260a0015b60405180910390a150505050505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015613327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334b9190615063565b6133975760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3034303a53544154455f554e444546494e45440000006044820152606401610e37565b600082815260036020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301819052909173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015613403573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134279190615063565b6134735760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3034313a4e4f545f4558495354494e470000000000006044820152606401610e37565b8154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b909104166134b74390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018790527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015613549573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061356d91906157b5565b604051630713cfad60e31b81526004810189905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af41580156135bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135e191906157d2565b87868632876040516135f997969594939291906157ef565b60405180910390a1505050505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af415801561365b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061367f9190615063565b6136cb5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3032303a53544154455f554e444546494e45440000006044820152606401610e37565b600083815260036020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301819052909173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015613737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375b9190615063565b6137a75760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3032313a4e4f545f4558495354494e470000000000006044820152606401610e37565b60008581526003602052604090206001016137c285826156ab565b508154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b909104166138074390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018890527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015613899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138bd91906157b5565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af415801561390d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393191906157d2565b878686328760405161394997969594939291906157ef565b60405180910390a1604051634b00e98f60e11b8152600481018890527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af41580156139c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e791906157b5565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015613a37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a5b91906157d2565b6040805160ff938416815260ff199092166020830152918816918101919091526001600160a01b038416606082015232608082015263ffffffff831660a082015260c0016132c4565b60008181526001830160205260408120548015613b8d576000613ac860018361583f565b8554909150600090613adc9060019061583f565b9050808214613b41576000866000018281548110613afc57613afc615208565b9060005260206000200154905080876000018481548110613b1f57613b1f615208565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613b5257613b52615860565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610b75565b6000915050610b75565b5092915050565b600080829050601f81511115613bc9578260405163305a27a960e01b8152600401610e379190614742565b8051613bd482615876565b179392505050565b600060ff8216601f811115610b7557604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b038216613c5a5760405162461bcd60e51b815260206004820152601e60248201527f4e66744f776e61626c653a20696e697469616c206f776e6572206973203000006044820152606401610e37565b600680546001600160a01b0319166001600160a01b038416179055610bbb81613cf7565b6000818152600183016020526040812054613cc557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610b75565b506000610b75565b6000826000018281548110613ce457613ce4615208565b9060005260206000200154905092915050565b6005546001600160a01b031615613d305760055460405163fcdbf2d960e01b81526001600160a01b039091166004820152602401610e37565b6001600160a01b038116613d575760405163f5c4d07d60e01b815260040160405180910390fd5b806001600160a01b03163b600003613d8d5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610e37565b600580546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152632eaf856d60e11b60048201526301ffc9a790602401602060405180830381865afa925050508015613e07575060408051601f3d908101601f19168201909252613e0491810190615063565b60015b613e2f5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610e37565b80610bbb5760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610e37565b50565b600060208284031215613e6d57600080fd5b81356001600160e01b03198116811461254f57600080fd5b6001600160401b0381168114613e5857600080fd5b600060208284031215613eac57600080fd5b813561254f81613e85565b600060208284031215613ec957600080fd5b5035919050565b6001600160601b0381168114613e5857600080fd5b8035613ef081613ed0565b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613f2d57613f2d613ef5565b60405290565b604051608081016001600160401b0381118282101715613f2d57613f2d613ef5565b60405161012081016001600160401b0381118282101715613f2d57613f2d613ef5565b60405161018081016001600160401b0381118282101715613f2d57613f2d613ef5565b60405161020081016001600160401b0381118282101715613f2d57613f2d613ef5565b6001600160a01b0381168114613e5857600080fd5b8035613ef081613fbe565b600060408284031215613ff057600080fd5b613ff8613f0b565b9050813581526020820135602082015292915050565b8015158114613e5857600080fd5b8035613ef08161400e565b600060c0828403121561403957600080fd5b60405160a081018181106001600160401b038211171561405b5761405b613ef5565b604052905080823561406c81613ed0565b8152602083013561407c81613fbe565b602082015261408e8460408501613fde565b604082015260808301356140a18161400e565b606082015260a08301356140b481613fbe565b6080919091015292915050565b60008060e083850312156140d457600080fd5b82356140df81613ed0565b91506140ee8460208501614027565b90509250929050565b60ff81168114613e5857600080fd5b60006020828403121561411857600080fd5b813561254f816140f7565b6000806040838503121561413657600080fd5b823561414181613ed0565b91506020830135614151816140f7565b809150509250929050565b60005b8381101561417757818101518382015260200161415f565b50506000910152565b6000815180845261419881602086016020860161415c565b601f01601f19169290920160200192915050565b6040815260006001600160601b038085511660408401528060208601511660608401525060ff604085015116608083015260608401516141f060a084018215159052565b5060808401516001600160a01b03811660c08401525060a08401516001600160a01b03811660e08401525060c084015160e0610100840152614236610120840182614180565b9050828103602084015261424a8185614180565b95945050505050565b6000806040838503121561426657600080fd5b823561427181613fbe565b915060208301356141518161400e565b63ffffffff81168114613e5857600080fd5b600082601f8301126142a457600080fd5b81356001600160401b03808211156142be576142be613ef5565b604051601f8301601f19908116603f011681019082821181831017156142e6576142e6613ef5565b816040528381528660208588010111156142ff57600080fd5b836020870160208301376000602085830101528094505050505092915050565b803564ffffffffff81168114613ef057600080fd5b60006080828403121561434657600080fd5b61434e613f33565b9050813561435b81614281565b81526020828101359082015260408201356001600160401b0381111561438057600080fd5b61438c84828501614293565b60408301525061439e6060830161431f565b606082015292915050565b600080600080608085870312156143bf57600080fd5b84356143ca81613ed0565b935060208501356143da81614281565b925060408501356001600160401b038111156143f557600080fd5b61440187828801614334565b9250506060850135614412816140f7565b939692955090935050565b600080828403606081121561443157600080fd5b833561443c81613fbe565b92506040601f198201121561445057600080fd5b50614459613f0b565b60208401358152604084013561446e8161400e565b6020820152919491935090915050565b6000806040838503121561449157600080fd5b823561449c81613e85565b915060208301356001600160401b038111156144b757600080fd5b6144c385828601614293565b9150509250929050565b6001600160c01b031981168114613e5857600080fd5b8035613ef0816144cd565b60006040828403121561450057600080fd5b614508613f0b565b9050813561451581613ed0565b815260208201356001600160401b0381111561453057600080fd5b61453c84828501614293565b60208301525092915050565b6000806040838503121561455b57600080fd5b8235614566816144cd565b915060208301356001600160401b0381111561458157600080fd5b6144c3858286016144ee565b60006020828403121561459f57600080fd5b813561254f81613fbe565b6000806000606084860312156145bf57600080fd5b83356145ca81613ed0565b925060208401356145da81614281565b915060408401356001600160401b038111156145f557600080fd5b61460186828701614334565b9150509250925092565b6000610140828403121561461e57600080fd5b614626613f55565b905061463182613ee5565b81526146408360208401613fde565b602082015260608201356001600160401b0381111561465e57600080fd5b61466a84828501614293565b6040830152506080820135606082015260a0820135608082015260c082013560a082015260e082013560c08201526101006146a681840161431f565b60e08301526146b8610120840161431f565b9082015292915050565b6000806000606084860312156146d757600080fd5b83356146e281613ed0565b925060208401356001600160401b038111156146fd57600080fd5b6147098682870161460b565b925050604084013561471a816140f7565b809150509250925092565b60006020828403121561473757600080fd5b813561254f81613ed0565b60208152600061254f6020830184614180565b6000806040838503121561476857600080fd5b823561477381613ed0565b915060208301356001600160401b0381111561478e57600080fd5b6144c38582860161460b565b600061018082840312156147ad57600080fd5b6147b5613f55565b90506147c082613ee5565b81526147ce60208301613fd3565b6020820152604082013560408201526147ea8360608401613fde565b60608201526147fc8360a08401613fde565b608082015261480e8360e08401613fde565b60a0820152614820610120830161401c565b60c0820152614832610140830161401c565b60e08201526148446101608301613fd3565b61010082015292915050565b60008060006101c0848603121561486657600080fd5b833561487181613ed0565b9250614880856020860161479a565b91506101a084013561471a816140f7565b6000608082840312156148a357600080fd5b6148ab613f33565b9050813581526020820135602082015260408201356001600160401b0381111561438057600080fd5b600080600080608085870312156148ea57600080fd5b84356148f581613ed0565b9350602085013561490581614281565b925060408501356001600160401b0381111561492057600080fd5b61440187828801614891565b6000806040838503121561493f57600080fd5b8235614141816144cd565b8151815260208083015115159082015260408101610b75565b6000806040838503121561497657600080fd5b823561414181613e85565b60ff815116825260ff602082015116602083015260018060a01b036040820151166040830152606081015163ffffffff808216606085015280608084015116608085015250505050565b602081526149dd602082018351614981565b6000602083015160c0808401526149f760e0840182614180565b949350505050565b60006102408284031215614a1257600080fd5b614a1a613f78565b9050614a2582613fd3565b8152614a3360208301613fd3565b6020820152614a4460408301613ee5565b6040820152614a5560608301613ee5565b6060820152614a678360808401613fde565b6080820152614a798360c08401613fde565b60a0820152610100614a8d84828501613fde565b60c0830152610140614aa185828601613fde565b60e0840152614ab4856101808601613fde565b82840152614ac6856101c08601613fde565b610120840152614ad9610200850161401c565b9083015250614aeb6102208301613fd3565b61016082015292915050565b6000806102608385031215614b0b57600080fd5b8235614b1681613ed0565b91506140ee84602085016149ff565b600080600060608486031215614b3a57600080fd5b8335614b4581613e85565b925060208401356001600160401b03811115614b6057600080fd5b61470986828701614293565b60008060008060808587031215614b8257600080fd5b8435614b8d81613fbe565b93506020850135614b9d81613fbe565b92506040850135614bad81613ed0565b9150606085013561441281613fbe565b803561ffff81168114613ef057600080fd5b60006102008284031215614be257600080fd5b614bea613f9b565b9050614bf582613ee5565b8152614c0360208301613ee5565b6020820152614c14604083016144e3565b6040820152614c25606083016144e3565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301356001600160401b0380821115614c6e57600080fd5b614c7a86838701614293565b83850152610120925082850135915080821115614c9657600080fd5b50614ca385828601614293565b828401525050610140614cb7818401614bbd565b90820152610160614cc9838201614bbd565b9082015261018082810135908201526101a0614ce681840161431f565b908201526101c0614cf883820161431f565b908201526101e06146b883820161431f565b600080600060608486031215614d1f57600080fd5b8335614d2a81613ed0565b925060208401356001600160401b03811115614d4557600080fd5b61470986828701614bcf565b600080600060608486031215614d6657600080fd5b8335614d7181613ed0565b92506020840135614d8181614281565b915060408401356001600160401b03811115614d9c57600080fd5b61460186828701614891565b60a08101610b758284614981565b600080600060608486031215614dcb57600080fd5b8335614dd6816144cd565b925060208401356001600160401b03811115614df157600080fd5b614709868287016144ee565b600080600060608486031215614e1257600080fd5b8335614e1d816140f7565b92506020840135614e2d816140f7565b9150604084013561471a816140f7565b60008060006102808486031215614e5357600080fd5b8335614e5e81613ed0565b9250614e6d85602086016149ff565b915061026084013561471a816140f7565b60008060408385031215614e9157600080fd5b8235614e9c81613e85565b9150602083013561415181613fbe565b60008060408385031215614ebf57600080fd5b8235614eca81613ed0565b915060208301356001600160401b03811115614ee557600080fd5b6144c385828601614bcf565b60008060006101008486031215614f0757600080fd5b8335614f1281613ed0565b9250614f218560208601614027565b915060e084013561471a816140f7565b60008060408385031215614f4457600080fd5b8235614f4f81613e85565b946020939093013593505050565b6000806101a08385031215614f7157600080fd5b8235614f7c81613ed0565b91506140ee846020850161479a565b60ff1981168114613e5857600080fd5b60008060408385031215614fae57600080fd5b8235614fb9816140f7565b9150602083013561415181614f8b565b81516001600160601b031681526020808301516001600160a01b039081168284015260408085015180519185019190915291820151606084015260c0830191906060850151151560808501528060808601511660a0850152505092915050565b600181811c9082168061503d57607f821691505b60208210810361505d57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561507557600080fd5b815161254f8161400e565b60006020828403121561509257600080fd5b815161254f81613ed0565b6020815263ffffffff82511660208201526020820151604082015260006040830151608060608401526150d360a0840182614180565b905064ffffffffff60608501511660808401528091505092915050565b60006020828403121561510257600080fd5b5051919050565b602081526001600160601b038251166020820152600060208301516040808401526149f76060840182614180565b60006020828403121561514957600080fd5b815161254f81613e85565b6020815261516e6020820183516001600160601b03169052565b6000602083015161518c604084018280518252602090810151910152565b5060408301516101408060808501526151a9610160850183614180565b9150606085015160a0850152608085015160c085015260a085015160e085015260c0850151610100818187015260e087015191506151f161012087018364ffffffffff169052565b9095015164ffffffffff1693019290925250919050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561523057600080fd5b815161254f81613fbe565b81516001600160601b03168152602080830151610180830191615268908401826001600160a01b03169052565b5060408301516040830152606083015161528f606084018280518252602090810151910152565b506080830151805160a0840152602081015160c08401525060a0830151805160e084015260208101516101008401525060c08301518015156101208401525060e0830151801515610140840152506101008301516001600160a01b038116610160840152613b97565b60208152815160208201526020820151604082015260006040830151608060608401526150d360a0840182614180565b60006040828403121561533a57600080fd5b615342613f0b565b8251815260208301516153548161400e565b60208201529392505050565b81516001600160a01b031681526102408101602083015161538c60208401826001600160a01b03169052565b5060408301516153a760408401826001600160601b03169052565b5060608301516153c260608401826001600160601b03169052565b5060808301516153df608084018280518252602090810151910152565b5060a0830151805160c0840152602081015160e08401525060c08301516101006154158185018380518252602090810151910152565b60e085015191506101406154358186018480518252602090810151910152565b9085015180516101808601526020908101516101a086015261012086015180516101c087015201516101e08501528401511515610200840152506101608301516001600160a01b038116610220840152613b97565b602081526154a46020820183516001600160601b03169052565b600060208301516154c060408401826001600160601b03169052565b5060408301516001600160c01b0319811660608401525060608301516001600160c01b03198116608084015250608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008181850152808501519150506102006101208181860152615538610220860184614180565b9250808601519050610140601f1986850301818701526155588483614180565b9350808701519150506101606155738187018361ffff169052565b860151905061018061558a8682018361ffff169052565b8601516101a08681019190915286015190506101c06155b18187018364ffffffffff169052565b86015190506101e06151f18682018364ffffffffff169052565b600080858511156155db57600080fd5b838611156155e857600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561561d5780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b601f82111561120c57600081815260208120601f850160051c8101602086101561568c5750805b601f850160051c820191505b8181101561103557828155600101615698565b81516001600160401b038111156156c4576156c4613ef5565b6156d8816156d28454615029565b84615665565b602080601f83116001811461570d57600084156156f55750858301515b600019600386901b1c1916600185901b178555611035565b600085815260208120601f198616915b8281101561573c5788860151825594840194600190910190840161571d565b508582101561575a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000825161577c81846020870161415c565b9190910192915050565b6000806040838503121561579957600080fd5b82516157a48161400e565b602084015190925061415181614281565b6000602082840312156157c757600080fd5b815161254f816140f7565b6000602082840312156157e457600080fd5b815161254f81614f8b565b60ff978816815260ff1996909616602087015293861660408601529190941660608401526001600160a01b03938416608084015290921660a082015263ffffffff9190911660c082015260e00190565b81810381811115610b7557634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b8051602080830151919081101561505d5760001960209190910360031b1b1691905056fea2646970667358221220efb2097be0819ef781c63f7e6ca85c45fcb4f2e0a46bbbf745978ac5ce92d8e964736f6c63430008140033",
2954
+ "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000040565b62000026620001f7565b6200003062000331565b6200003a6200059e565b62000717565b60dc600090815260026020527f4bee8dc518469fb8c73831886b94afa96b3ef3e3ee55b9076720259192220ef0805460ff191660641790556001906003906200008760dc90565b60ff1660ff1681526020019081526020016000206000620000ad620006e560201b60201c565b60ff1660ff1681526020019081526020016000206000620000d3620006ef60201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906003906200010760dc90565b60ff1660ff16815260200190815260200160002060006200012d620006ef60201b60201c565b60ff1660ff168152602001908152602001600020600062000153620006e560201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906003906200018760dc90565b60ff1660ff1681526020019081526020016000206000620001ad620006ef60201b60201c565b60ff1660ff1681526020019081526020016000206000620001d3620006f460201b60201c565b60ff1681526020810191909152604001600020805460ff1916911515919091179055565b7f7673bcbb3401a7cbae68f81d40eea2cf35afdaf7ecd016ebf3f02857fcc1260a8054606460ff1991821681179092557fa1c69de77e78d12e062170d002ba111ba52c8f452f3b0ca326991b7298fd7aaf8054909116600190811790915560009182526003602052907f6b16ef514f22b74729cbea5cc7babfecbdc2309e530ca716643d11fe929eed2e906200028b606e90565b60ff1660ff1681526020019081526020016000206000620002b1620006e560201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600390620002e5606490565b60ff1660ff16815260200190815260200160002060006200030b620006ef60201b60201c565b60ff1660ff1681526020019081526020016000206000620001d3620006f960201b60201c565b60d3600090815260026020527feb6856e0ae0d71a8a9e0bc42aca98fe96c3be13699c5c2d551c94a190e39043d805460ff1916600a1790556001906003906200037860d390565b60ff1660ff16815260200190815260200160002060006200039e620006fe60201b60201c565b60ff1660ff1681526020019081526020016000206000620003c46200070360201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600390620003f860d390565b60ff1660ff16815260200190815260200160002060006200041e620006fe60201b60201c565b60ff1660ff1681526020019081526020016000206000620004446200070860201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906003906200047860d390565b60ff1660ff16815260200190815260200160002060006200049e620006fe60201b60201c565b60ff1660ff1681526020019081526020016000206000620004c46200070d60201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600390620004f860d390565b60ff1660ff16815260200190815260200160002060006200051e6200070d60201b60201c565b60ff1660ff168152602001908152602001600020600062000544620006e560201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906003906200057860d390565b60ff1660ff1681526020019081526020016000206000620001ad620006e560201b60201c565b60c8600090815260026020527fec56eb74d500f9b1bf8f0c5cc42ff5ed51e8d9e3a2ebb6e83a26383f297e0f1e805460ff19166064179055600190600390620005e560c890565b60ff1660ff16815260200190815260200160002060006200060b620006e560201b60201c565b60ff1660ff168152602001908152602001600020600062000631620006ef60201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906003906200066560c890565b60ff1660ff16815260200190815260200160002060006200068b620006ef60201b60201c565b60ff1660ff1681526020019081526020016000206000620006b1620006e560201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600390620002e560c890565b606490565b905090565b606e90565b60c890565b60d290565b600a90565b601490565b601e90565b60006028620006ea565b61517c80620007276000396000f3fe608060405234801561001057600080fd5b50600436106104a15760003560e01c80636b9bf08b1161026d578063b405b76f11610151578063dee32623116100ce578063f651dcac11610092578063f651dcac14610b3d578063f7bc431c14610b50578063f7c34ee014610b63578063fa145b6d14610b76578063fe1f18d614610b89578063fed3d63f14610b9c57600080fd5b8063dee3262314610ad1578063e1033e7d14610ae4578063e9e96c7014610aec578063f21de1e8146107de578063f48016ce14610b2a57600080fd5b8063ca600b1c11610115578063ca600b1c14610a88578063ccdcd37f14610a90578063cde749f414610aa3578063cf947d2014610aab578063d2f21a2914610abe57600080fd5b8063b405b76f14610a47578063b6d7cd6214610a5a578063bf1db3f914610a6d578063bf7e214f14610a80578063c29948fc146105d857600080fd5b8063976b0a77116101ea578063a8989675116101ae578063a8989675146109e6578063a9cea142146109f9578063ada9652e14610a0c578063afa5e13014610772578063afcc743914610a21578063b3260e9314610a3457600080fd5b8063976b0a77146108fc5780639df0280b14610595578063a13df2ab1461090f578063a5961b4c14610922578063a76ee018146109d357600080fd5b8063893d20e811610231578063893d20e81461088d5780638e28413f146108955780638eaa6ac0146108a85780638fb36037146108c857806391ff6eaa146108e957600080fd5b80636b9bf08b1461084457806375b238fc1461084c5780637a9e5e4b146108545780637b8c388f146108675780637cef48421461087a57600080fd5b806338a699a4116103945780635378cd3c116103115780635ab1bd53116102d55780635ab1bd53146107de5780635d4345cc146105955780635dfa73db146107ef57806361f5f420146107f8578063644c45e014610809578063675393bf1461083157600080fd5b80635378cd3c1461077257806354d747a81461078557806354f6127f146107985780635772b101146107b857806358dff9ea146107cb57600080fd5b8063422c9d0011610358578063422c9d001461071e5780634288121d14610731578063447fc48f14610739578063468a18671461074c57806351cf2fd01461075f57600080fd5b806338a699a4146106ac5780633c0d6a41146106bf5780633ca7c02a146106d25780633e35aba8146106f857806340529b0f1461070b57600080fd5b80631518afb91161042257806327953f48116103e657806327953f481461064e57806327bb7a33146106615780632f61088a1461067457806336fc697e1461068757806337f135d71461068f57600080fd5b80631518afb9146105d85780631b38d5f4146105eb5780631eff4b221461060c578063214cdb80146106335780632781d4431461064657600080fd5b80630f526f7d116104695780630f526f7d146105825780630fad0eb1146105955780630fec111c146105a85780631204b553146105bd578063138461e0146105d057600080fd5b806301ffc9a7146104a657806302cd3071146104e857806309648a9d1461050d5780630d358181146105475780630f03144a1461056d575b600080fd5b6104d36104b4366004613365565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6006546001600160a01b03165b6040516001600160a01b0390911681526020016104df565b61053561051b36600461338f565b600090815260046020526040902054610100900460ff1690565b60405160ff90911681526020016104df565b6105356105553660046133b7565b60ff9081166000908152600260205260409020541690565b61058061057b36600461367c565b610ba4565b005b6105806105903660046136cb565b610be6565b6105806105a33660046136cb565b610c03565b6105b0610c18565b6040516104df9190613754565b6105806105cb3660046137df565b610dc7565b610580610e07565b6105806105e63660046139c0565b61100e565b6105fe6105f9366004613a07565b611034565b6040519081526020016104df565b6105fe7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b610580610641366004613365565b6110d3565b6105fe600381565b61058061065c366004613b2d565b611100565b61058061066f366004613b89565b61111e565b610580610682366004613c7b565b6111aa565b610580611245565b610697600081565b60405163ffffffff90911681526020016104df565b6104d36106ba36600461338f565b61128b565b6105806106cd366004613d37565b61131a565b6106e06001600160401b0381565b6040516001600160401b0390911681526020016104df565b6105fe610706366004613a07565b611340565b6105806107193660046136cb565b61136d565b61058061072c366004613d98565b611382565b6104f56114bf565b610580610747366004613db5565b611552565b6105fe61075a366004613a07565b61157e565b61058061076d366004613eb8565b6115ab565b610580610780366004613eff565b6115d1565b610580610793366004613fe0565b6115e4565b6107ab6107a636600461338f565b611602565b6040516104df919061401c565b6105806107c6366004614072565b6116a7565b6105806107d9366004614190565b6116cd565b6001546001600160a01b03166104f5565b6106e061271081565b6007546001600160a01b03166104f5565b600080516020615107833981519152546040516001600160601b0390911681526020016104df565b61058061083f366004613d98565b6116f5565b6104f5611801565b6106e0600081565b610580610862366004613d98565b61182a565b6105fe610875366004613a07565b6118ad565b6105806108883660046141d7565b6118da565b6104f5611964565b6105806108a33660046141f5565b611a9b565b6108bb6108b636600461338f565b611ac3565b6040516104df9190614284565b6108d0611c04565b6040516001600160e01b031990911681526020016104df565b6105806108f73660046143a8565b611c3c565b61058061090a3660046143df565b611c64565b6105fe61091d366004613a07565b611da4565b6109c661093036600461338f565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915250600090815260046020908152604091829020825160a081018452905460ff8082168352610100820416928201929092526001600160a01b03620100008304169281019290925263ffffffff600160b01b820481166060840152600160d01b90910416608082015290565b6040516104df9190614430565b6105806109e136600461443e565b611dd1565b6105806109f4366004614485565b611e6c565b610580610a073660046144c5565b611f5d565b6105fe60008051602061510783398151915281565b610580610a2f366004614506565b611f85565b610580610a4236600461454b565b611fab565b610580610a55366004614589565b611fc9565b610580610a683660046145ce565b611fef565b6104d3610a7b3660046133b7565b612004565b6104f5612051565b6104f561206d565b610580610a9e36600461465a565b612096565b6105356120be565b610580610ab9366004614699565b612135565b610580610acc3660046136cb565b612153565b610580610adf3660046136cb565b61216a565b6104f5612181565b6104d3610afa366004614485565b60ff9283166000908152600360209081526040808320948616835293815283822092851682529190915220541690565b6105fe610b383660046146e7565b6121aa565b610580610b4b366004614715565b612235565b610580610b5e366004613d98565b61225d565b610580610b71366004614742565b61234a565b610580610b84366004614770565b6123c1565b610580610b973660046136cb565b6123e7565b6104f56123fc565b610bb1335b600036612425565b610be2610bbd83611da4565b82604051602001610bce91906147c7565b60405160208183030381529060405261252b565b5050565b610bef33610ba9565b610be2610bfd83608c612535565b82612581565b610c0c33610ba9565b610be2610bfd8361157e565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820152907f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3006040805160808101825282546001600160601b038116825260ff600160601b820481166020840152600160681b90910416151591810191909152600182018054919291606084019190610cc390614883565b80601f0160208091040260200160405190810160405280929190818152602001828054610cef90614883565b8015610d3c5780601f10610d1157610100808354040283529160200191610d3c565b820191906000526020600020905b815481529060010190602001808311610d1f57829003601f168201915b50505050508152505090506040518060e00160405280610d5a600090565b6001600160601b0316815260200182600001516001600160601b03168152602001826020015160ff168152602001826040015115158152602001306001600160a01b03168152602001610dab611964565b6001600160a01b03168152602001826060015181525091505090565b610dd033610ba9565b610e02610ddc84611da4565b83604051602001610ded91906147c7565b6040516020818303038152906040528361258b565b505050565b600060008051602061510783398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610e76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9a91906148bd565b15610ecb5780546040516301ab8b6760e21b81526001600160601b0390911660048201526024015b60405180910390fd5b30610ede6001546001600160a01b031690565b60405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa158015610f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4a91906148bd565b610f725760405163b9304b0d60e01b81526001600160a01b0382166004820152602401610ec2565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038381166004830152919091169063d272ac1e90602401602060405180830381865afa158015610fc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fea91906148da565b82546bffffffffffffffffffffffff19166001600160601b03919091161790915550565b61101733610ba9565b610e026110238461157e565b83604051602001610ded91906148f7565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660795b6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af41580156110a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cd9190614a45565b92915050565b6110db612596565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b61110933610ba9565b610be28282604051602001610bce9190614a5e565b611126612596565b611130828761234a565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b861515021781559050600181016111a08382614b54565b5050505050505050565b6111b333610ba9565b6040516355ee627560e01b81526001600160c01b031983166004820152610be29073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611210573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112349190614a45565b82604051602001610bce9190614c13565b61124d612596565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b600081815260046020819052604080832054905163b2466acf60e01b815261010090910460ff169181019190915273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024015b602060405180830381865af41580156112f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cd91906148bd565b61132333610ba9565b610e0261132f8461157e565b82604051602001610bce9190614c41565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b038416607861105d565b61137633610ba9565b610be2610bfd836118ad565b61138b33610ba9565b6007546001600160a01b0316156113db5760405162461bcd60e51b8152602060048201526014602482015273109d5b991b1953585b9859d95c881a5cc81cd95d60621b6044820152606401610ec2565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611423573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114479190614c92565b6001600160a01b03161461149d5760405162461bcd60e51b815260206004820152601f60248201527f42756e646c654d616e6167657220696e7374616e6365206d69736d61746368006044820152606401610ec2565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60006114d36001546001600160a01b031690565b6001600160a01b031663d39e6043606e5b6040516001600160e01b031960e084901b16815260ff909116600482015260036024820152604401602060405180830381865afa158015611529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154d9190614c92565b905090565b61155b33610ba9565b6115786115678561157e565b83604051602001610ded9190614c41565b50505050565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660d361105d565b6115b433610ba9565b610e026115c0846118ad565b83604051602001610ded9190614caf565b6115da33610ba9565b610be28282612581565b6115ed33610ba9565b610be28282604051602001610bce9190614cec565b600081815260046020526040902060010180546060919061162290614883565b80601f016020809104026020016040519081016040528092919081815260200182805461164e90614883565b801561169b5780601f106116705761010080835404028352916020019161169b565b820191906000526020600020905b81548152906001019060200180831161167e57829003601f168201915b50505050509050919050565b6116b033610ba9565b6115786116bc8561157e565b83604051602001610ded9190614d87565b6116d633610ba9565b610e026116e484608c612535565b83604051602001610ded9190614db7565b6116fd612596565b806001600160a01b03163b6000036117335760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610ec2565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b815263230c0c8160e11b60048201526301ffc9a790602401602060405180830381865afa9250505080156117ad575060408051601f3d908101601f191682019092526117aa918101906148bd565b60015b6117d55760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610ec2565b80610be25760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610ec2565b50565b60006118156001546001600160a01b031690565b6001600160a01b031663d39e6043608c6114e4565b33611833612051565b6001600160a01b0316816001600160a01b03161461186e5760405162d1953b60e31b81526001600160a01b0382166004820152602401610ec2565b816001600160a01b03163b6000036118a4576040516361798f2f60e11b81526001600160a01b0383166004820152602401610ec2565b610be2826125e1565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b038416607a61105d565b6118e333610ba9565b6040516355ee627560e01b81526001600160c01b031983166004820152610be29073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611940573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfd9190614a45565b60008060008051602061510783398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af41580156119d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f891906148bd565b15611a85576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611a5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7f9190614c92565b91505090565b54600160601b90046001600160a01b0316919050565b611aa433610ba9565b610be2611ab283608c612535565b82604051602001610bce9190614db7565b6040805160e081018252600091810182815260608083018490526080830184905260a0830184905260c083019390935281526020810191909152600082815260046020908152604091829020825160e081018452815460ff80821695830195865261010082041660608301526001600160a01b0362010000820416608083015263ffffffff600160b01b8204811660a0840152600160d01b9091041660c08201529283526001810180549192840191611b7b90614883565b80601f0160208091040260200160405190810160405280929190818152602001828054611ba790614883565b8015611bf45780601f10611bc957610100808354040283529160200191611bf4565b820191906000526020600020905b815481529060010190602001808311611bd757829003601f168201915b5050505050815250509050919050565b600080516020615127833981519152805460009190600160a01b900460ff16611c2e576000611a7f565b638fb3603760e01b91505090565b611c4533610ba9565b610be2611c5383606e612535565b82604051602001610bce9190614e1e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611ca95750825b90506000826001600160401b03166001148015611cc55750303b155b905081158015611cd3575080155b15611cf15760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611d1b57845460ff60401b1916600160401b1785555b611d2489612642565b611d438888604660008a6040518060200160405280600081525061111e565b611d5363ee9a420560e01b6110d3565b8315611d9957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660dc61105d565b611dda33610ba9565b6040516355ee627560e01b81526001600160c01b031984166004820152610e029073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5b9190614a45565b83604051602001610ded9190614c13565b60ff8381166000908152600260205260409081902054905163037c8cb160e51b81529116600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015611ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef591906148bd565b15611eff57505050565b60ff808416600090815260036020908152604080832086851684528252808320858516845290915290205416610e0257604051636bb20ea760e01b815260ff8085166004830152808416602483015282166044820152606401610ec2565b611f6633610ba9565b610e02611f7484606e612535565b83604051602001610ded9190614e1e565b611f8e33610ba9565b610be2611f9a8361157e565b82604051602001610bce91906148f7565b611fb433610ba9565b610e028383604051602001610ded9190614a5e565b611fd233610ba9565b610be2611fde836118ad565b82604051602001610bce9190614caf565b611ff833610ba9565b610e02610bfd8461157e565b60ff81811660009081526002602052604080822054905163b2466acf60e01b8152921660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024016112d9565b600080516020615127833981519152546001600160a01b031690565b60006120816001546001600160a01b031690565b6001600160a01b031663d39e604360786114e4565b61209f33610ba9565b610e026120ad846078612535565b83604051602001610ded9190614f47565b604051632392b61b60e21b81526003600482015260009073__$9dab98ad7ae1a426029e5739f922230a41$__90638e4ad86c90602401602060405180830381865af4158015612111573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154d9190614f97565b61213e33610ba9565b610e028383604051602001610ded9190614cec565b61215c33610ba9565b610be2610bfd836078612535565b61217333610ba9565b610be2610bfd83606e612535565b60006121956001546001600160a01b031690565b6001600160a01b031663d39e604360d36114e4565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063f48016ce906044015b602060405180830381865af415801561220a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222e9190614a45565b9392505050565b61223e33610ba9565b610be261224c836078612535565b82604051602001610bce9190614f47565b61226633610ba9565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d29190614c92565b6001600160a01b0316146123285760405162461bcd60e51b815260206004820181905260248201527f496e7374616e636552656164657220696e7374616e6365206d69736d617463686044820152606401610ec2565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b612352612596565b61235b816116f5565b612363611245565b6001600160a01b03821661238a5760405163f17ef42d60e01b815260040160405180910390fd5b5060008051602061510783398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b6123ca33610ba9565b610e026123d68461157e565b82604051602001610bce9190614d87565b6123f033610ba9565b610be2610bfd83611da4565b60006124106001546001600160a01b031690565b6001600160a01b031663d39e604360dc6114e4565b600080516020615127833981519152600080612460612442612051565b8730612452600460008a8c614fb4565b61245b91614fde565b612653565b91509150816125235763ffffffff81161561250057825460ff60a01b1916600160a01b17835561248e612051565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016124bd9392919061500e565b600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050845460ff60a01b19168555506125239050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610ec2565b505050505050565b610be2828261275f565b604051630711349960e31b81526001600160601b038316600482015260ff8216602482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c8906044016121ed565b610be28282612b85565b610e02838383612eb9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166125df57604051631afcd79f60e31b815260040160405180910390fd5b565b60008051602061512783398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b61264a612596565b6117fe81613354565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516126c2919061504e565b600060405180830381855afa9150503d80600081146126fd576040519150601f19603f3d011682016040523d82523d6000602084013e612702565b606091505b50915091508115612754576040815110612734578080602001905181019061272a919061506a565b9094509250612754565b6020815110612754578080602001905181019061275191906148bd565b93505b505094509492505050565b604051634b00e98f60e11b81526004810183905260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af41580156127b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d69190614f97565b60405163b2466acf60e01b815260ff8216600482015290915073__$fb4566b39bd2075cb32f600f6f40bfaef2$__9063b2466acf90602401602060405180830381865af415801561282b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284f91906148bd565b61289b5760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a4b56532d3031303a545950455f554e444546494e4544000000006044820152606401610ec2565b6000838152600460208190526040918290208054925163037c8cb160e51b815261010090930460ff16918301919091529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015612908573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292c91906148bd565b6129785760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3031323a414c52454144595f435245415445440000006044820152606401610ec2565b3343600061298585612004565b6129905760646129a6565b60ff808616600090815260026020526040902054165b845460ff87811661ffff1990921691909117610100918316919091021762010000600160d01b031916620100006001600160a01b0386160263ffffffff60b01b191617600160b01b63ffffffff85169081029190911763ffffffff60d01b1916600160d01b919091021785556000888152600460205260409020909150600101612a308782614b54565b50604051634b00e98f60e11b8152600481018890527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac79190614f97565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3b9190615099565b6040805160ff938416815260ff199092166020830152918416918101919091526001600160a01b038516606082015232608082015260a0015b60405180910390a150505050505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015612bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfb91906148bd565b612c475760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3034303a53544154455f554e444546494e45440000006044820152606401610ec2565b6000828152600460208190526040918290208054925163b2466acf60e01b815261010090930460ff169183018290529173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015612cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd791906148bd565b612d235760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3034313a4e4f545f4558495354494e470000000000006044820152606401610ec2565b8154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b90910416612d674390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018790527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612df9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e1d9190614f97565b604051630713cfad60e31b81526004810189905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612e6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e919190615099565b8786863287604051612ea997969594939291906150b6565b60405180910390a1505050505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015612f0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f2f91906148bd565b612f7b5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3032303a53544154455f554e444546494e45440000006044820152606401610ec2565b6000838152600460208190526040918290208054925163b2466acf60e01b815261010090930460ff169183018290529173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015612fe7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300b91906148bd565b6130575760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3032313a4e4f545f4558495354494e470000000000006044820152606401610ec2565b60008581526004602052604090206001016130728582614b54565b508154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b909104166130b74390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018890527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015613149573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061316d9190614f97565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af41580156131bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131e19190615099565b87868632876040516131f997969594939291906150b6565b60405180910390a1604051634b00e98f60e11b8152600481018890527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015613273573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132979190614f97565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af41580156132e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061330b9190615099565b6040805160ff938416815260ff199092166020830152918816918101919091526001600160a01b038416606082015232608082015263ffffffff831660a082015260c001612b74565b61335c612596565b6117fe816125e1565b60006020828403121561337757600080fd5b81356001600160e01b03198116811461222e57600080fd5b6000602082840312156133a157600080fd5b5035919050565b60ff811681146117fe57600080fd5b6000602082840312156133c957600080fd5b813561222e816133a8565b6001600160601b03811681146117fe57600080fd5b80356133f4816133d4565b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613431576134316133f9565b60405290565b60405161012081016001600160401b0381118282101715613431576134316133f9565b60405161020081016001600160401b0381118282101715613431576134316133f9565b604051608081016001600160401b0381118282101715613431576134316133f9565b60405160e081016001600160401b0381118282101715613431576134316133f9565b60405161018081016001600160401b0381118282101715613431576134316133f9565b6000604082840312156134f657600080fd5b6134fe61340f565b9050813581526020820135602082015292915050565b600082601f83011261352557600080fd5b81356001600160401b038082111561353f5761353f6133f9565b604051601f8301601f19908116603f01168101908282118183101715613567576135676133f9565b8160405283815286602085880101111561358057600080fd5b836020870160208301376000602085830101528094505050505092915050565b64ffffffffff811681146117fe57600080fd5b80356133f4816135a0565b600061014082840312156135d157600080fd5b6135d9613437565b90506135e4826133e9565b81526135f383602084016134e4565b602082015260608201356001600160401b0381111561361157600080fd5b61361d84828501613514565b6040830152506080820135606082015260a0820135608082015260c082013560a082015261364d60e083016135b3565b60c08201526101006136608184016135b3565b60e083015261367261012084016135b3565b9082015292915050565b6000806040838503121561368f57600080fd5b823561369a816133d4565b915060208301356001600160401b038111156136b557600080fd5b6136c1858286016135be565b9150509250929050565b600080604083850312156136de57600080fd5b82356136e9816133d4565b915060208301356136f9816133a8565b809150509250929050565b60005b8381101561371f578181015183820152602001613707565b50506000910152565b60008151808452613740816020860160208601613704565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a08301516137bd60c08401826001600160a01b03169052565b5060c083015160e0808401526137d7610100840182613728565b949350505050565b6000806000606084860312156137f457600080fd5b83356137ff816133d4565b925060208401356001600160401b0381111561381a57600080fd5b613826868287016135be565b9250506040840135613837816133a8565b809150509250925092565b6001600160c01b0319811681146117fe57600080fd5b80356133f481613842565b61ffff811681146117fe57600080fd5b80356133f481613863565b6000610200828403121561389157600080fd5b61389961345a565b90506138a4826133e9565b81526138b2602083016133e9565b60208201526138c360408301613858565b60408201526138d460608301613858565b60608201526080820135608082015260a082013560a082015260c082013560c082015261390360e083016135b3565b60e0820152610100808301356001600160401b038082111561392457600080fd5b61393086838701613514565b8385015261012092508285013591508082111561394c57600080fd5b5061395985828601613514565b82840152505061014061396d818401613873565b9082015261016061397f838201613873565b9082015261018082810135908201526101a061399c8184016135b3565b908201526101c06139ae8382016135b3565b908201526101e06136728382016135b3565b6000806000606084860312156139d557600080fd5b83356139e0816133d4565b925060208401356001600160401b038111156139fb57600080fd5b6138268682870161387e565b600060208284031215613a1957600080fd5b813561222e816133d4565b63ffffffff811681146117fe57600080fd5b80356133f481613a24565b80151581146117fe57600080fd5b80356133f481613a41565b60006101208284031215613a6d57600080fd5b613a75613437565b905081356001600160401b0380821115613a8e57600080fd5b613a9a85838601613514565b8352602084013560208401526040840135604084015260608401356060840152613ac660808501613a36565b6080840152613ad760a08501613a36565b60a0840152613ae860c08501613a4f565b60c0840152613af960e08501613a4f565b60e084015261010091508184013581811115613b1457600080fd5b613b2086828701613514565b8385015250505092915050565b60008060408385031215613b4057600080fd5b8235915060208301356001600160401b03811115613b5d57600080fd5b6136c185828601613a5a565b6001600160a01b03811681146117fe57600080fd5b80356133f481613b69565b60008060008060008060c08789031215613ba257600080fd5b8635613bad81613b69565b95506020870135613bbd816133d4565b94506040870135613bcd816133a8565b93506060870135613bdd81613a41565b92506080870135613bed81613b69565b915060a08701356001600160401b03811115613c0857600080fd5b613c1489828a01613514565b9150509295509295509295565b600060408284031215613c3357600080fd5b613c3b61340f565b90508135613c48816133d4565b815260208201356001600160401b03811115613c6357600080fd5b613c6f84828501613514565b60208301525092915050565b60008060408385031215613c8e57600080fd5b8235613c9981613842565b915060208301356001600160401b03811115613cb457600080fd5b6136c185828601613c21565b600060808284031215613cd257600080fd5b613cda61347d565b90508135613ce781613863565b81526020828101359082015260408201356001600160401b03811115613d0c57600080fd5b613d1884828501613514565b6040830152506060820135613d2c816135a0565b606082015292915050565b600080600060608486031215613d4c57600080fd5b8335613d57816133d4565b92506020840135613d6781613a24565b915060408401356001600160401b03811115613d8257600080fd5b613d8e86828701613cc0565b9150509250925092565b600060208284031215613daa57600080fd5b813561222e81613b69565b60008060008060808587031215613dcb57600080fd5b8435613dd6816133d4565b93506020850135613de681613a24565b925060408501356001600160401b03811115613e0157600080fd5b613e0d87828801613cc0565b9250506060850135613e1e816133a8565b939692955090935050565b600060608284031215613e3b57600080fd5b604051606081016001600160401b038282108183111715613e5e57613e5e6133f9565b8160405282935084359150613e7282613842565b908252602084013590613e8482613a41565b8160208401526040850135915080821115613e9e57600080fd5b50613eab85828601613514565b6040830152505092915050565b600080600060608486031215613ecd57600080fd5b8335613ed8816133d4565b925060208401356001600160401b03811115613ef357600080fd5b61382686828701613e29565b60008060408385031215613f1257600080fd5b8235915060208301356136f9816133a8565b600060e08284031215613f3657600080fd5b613f3e61349f565b9050613f49826133e9565b815260208201356001600160401b0380821115613f6557600080fd5b613f7185838601613514565b602084015260408401356040840152613f8c60608501613a36565b6060840152613f9d60808501613a36565b6080840152613fae60a085016135b3565b60a084015260c0840135915080821115613fc757600080fd5b50613fd484828501613514565b60c08301525092915050565b60008060408385031215613ff357600080fd5b8235915060208301356001600160401b0381111561401057600080fd5b6136c185828601613f24565b60208152600061222e6020830184613728565b60006080828403121561404157600080fd5b61404961347d565b9050813581526020820135602082015260408201356001600160401b03811115613d0c57600080fd5b6000806000806080858703121561408857600080fd5b8435614093816133d4565b935060208501356140a381613863565b925060408501356001600160401b038111156140be57600080fd5b613e0d8782880161402f565b600060a082840312156140dc57600080fd5b60405160a081016001600160401b0382821081831117156140ff576140ff6133f9565b81604052829350843591508082111561411757600080fd5b61412386838701613514565b83526020850135915061413582613b69565b8160208401526040850135915061414b82613b69565b81604084015261415d60608601613b7e565b6060840152608085013591508082111561417657600080fd5b5061418385828601613514565b6080830152505092915050565b6000806000606084860312156141a557600080fd5b83356141b0816133d4565b925060208401356001600160401b038111156141cb57600080fd5b613826868287016140ca565b600080604083850312156141ea57600080fd5b82356136e981613842565b6000806040838503121561420857600080fd5b8235614213816133d4565b915060208301356001600160401b0381111561422e57600080fd5b6136c1858286016140ca565b60ff815116825260ff602082015116602083015260018060a01b036040820151166040830152606081015163ffffffff808216606085015280608084015116608085015250505050565b6020815261429660208201835161423a565b6000602083015160c0808401526137d760e0840182613728565b600061024082840312156142c357600080fd5b6142cb6134c1565b90506142d682613b7e565b81526142e460208301613b7e565b60208201526142f5604083016133e9565b6040820152614306606083016133e9565b606082015261431883608084016134e4565b608082015261432a8360c084016134e4565b60a082015261010061433e848285016134e4565b60c0830152610140614352858286016134e4565b60e08401526143658561018086016134e4565b82840152614377856101c086016134e4565b61012084015261438a6102008501613a4f565b908301525061439c6102208301613b7e565b61016082015292915050565b60008061026083850312156143bc57600080fd5b82356143c7816133d4565b91506143d684602085016142b0565b90509250929050565b600080600080608085870312156143f557600080fd5b843561440081613b69565b9350602085013561441081613b69565b92506040850135614420816133d4565b91506060850135613e1e81613b69565b60a081016110cd828461423a565b60008060006060848603121561445357600080fd5b833561445e81613842565b925060208401356001600160401b0381111561447957600080fd5b61382686828701613c21565b60008060006060848603121561449a57600080fd5b83356144a5816133a8565b925060208401356144b5816133a8565b91506040840135613837816133a8565b600080600061028084860312156144db57600080fd5b83356144e6816133d4565b92506144f585602086016142b0565b9150610260840135613837816133a8565b6000806040838503121561451957600080fd5b8235614524816133d4565b915060208301356001600160401b0381111561453f57600080fd5b6136c18582860161387e565b60008060006060848603121561456057600080fd5b8335925060208401356001600160401b0381111561457d57600080fd5b61382686828701613a5a565b6000806040838503121561459c57600080fd5b82356145a7816133d4565b915060208301356001600160401b038111156145c257600080fd5b6136c185828601613e29565b6000806000606084860312156145e357600080fd5b83356145ee816133d4565b925060208401356144b581613863565b600060a0828403121561461057600080fd5b61461861347d565b90508135614625816133d4565b8152602082013561463581613b69565b602082015261464783604084016134e4565b60408201526080820135613d2c81613b69565b600080600060e0848603121561466f57600080fd5b833561467a816133d4565b925061468985602086016145fe565b915060c0840135613837816133a8565b6000806000606084860312156146ae57600080fd5b8335925060208401356001600160401b038111156146cb57600080fd5b61382686828701613f24565b60ff19811681146117fe57600080fd5b600080604083850312156146fa57600080fd5b8235614705816133a8565b915060208301356136f9816146d7565b60008060c0838503121561472857600080fd5b8235614733816133d4565b91506143d684602085016145fe565b6000806040838503121561475557600080fd5b823561476081613b69565b915060208301356136f981613b69565b60008060006060848603121561478557600080fd5b8335614790816133d4565b925060208401356147a081613863565b915060408401356001600160401b038111156147bb57600080fd5b613d8e8682870161402f565b602081526147e16020820183516001600160601b03169052565b600060208301516147ff604084018280518252602090810151910152565b50604083015161014080608085015261481c610160850183613728565b9150606085015160a0850152608085015160c085015260a085015160e085015260c08501516101006148568187018364ffffffffff169052565b60e087015164ffffffffff811661012088015291505b9095015164ffffffffff1693019290925250919050565b600181811c9082168061489757607f821691505b6020821081036148b757634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156148cf57600080fd5b815161222e81613a41565b6000602082840312156148ec57600080fd5b815161222e816133d4565b602081526149116020820183516001600160601b03169052565b6000602083015161492d60408401826001600160601b03169052565b5060408301516001600160c01b0319811660608401525060608301516001600160c01b03198116608084015250608083015160a083015260a083015160c083015260c083015160e083015260e08301516101006149928185018364ffffffffff169052565b8085015191505061020061012081818601526149b2610220860184613728565b9250808601519050610140601f1986850301818701526149d28483613728565b9350808701519150506101606149ed8187018361ffff169052565b8601519050610180614a048682018361ffff169052565b8601516101a08681019190915286015190506101c0614a2b8187018364ffffffffff169052565b86015190506101e061486c8682018364ffffffffff169052565b600060208284031215614a5757600080fd5b5051919050565b6020815260008251610120806020850152614a7d610140850183613728565b91506020850151604085015260408501516060850152606085015160808501526080850151614ab460a086018263ffffffff169052565b5060a085015163ffffffff811660c08601525060c085015180151560e08601525060e0850151610100614aea8187018315159052565b860151858403601f1901838701529050614b048382613728565b9695505050505050565b601f821115610e0257600081815260208120601f850160051c81016020861015614b355750805b601f850160051c820191505b8181101561252357828155600101614b41565b81516001600160401b03811115614b6d57614b6d6133f9565b614b8181614b7b8454614883565b84614b0e565b602080601f831160018114614bb65760008415614b9e5750858301515b600019600386901b1c1916600185901b178555612523565b600085815260208120601f198616915b82811015614be557888601518255948401946001909101908401614bc6565b5085821015614c035787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526001600160601b038251166020820152600060208301516040808401526137d76060840182613728565b6020815261ffff8251166020820152602082015160408201526000604083015160806060840152614c7560a0840182613728565b905064ffffffffff60608501511660808401528091505092915050565b600060208284031215614ca457600080fd5b815161222e81613b69565b602081526001600160401b0360c01b8251166020820152602082015115156040820152600060408301516060808401526137d76080840182613728565b602081526001600160601b0382511660208201526000602083015160e06040840152614d1c610100840182613728565b90506040840151606084015263ffffffff60608501511660808401526080840151614d4f60a085018263ffffffff169052565b5060a084015164ffffffffff811660c08501525060c0840151838203601f190160e0850152614d7e8282613728565b95945050505050565b6020815281516020820152602082015160408201526000604083015160806060840152614c7560a0840182613728565b602081526000825160a06020840152614dd360c0840182613728565b9050602084015160018060a01b03808216604086015280604087015116606086015280606087015116608086015250506080840151601f198483030160a0850152614d7e8282613728565b81516001600160a01b0316815261024081016020830151614e4a60208401826001600160a01b03169052565b506040830151614e6560408401826001600160601b03169052565b506060830151614e8060608401826001600160601b03169052565b506080830151614e9d608084018280518252602090810151910152565b5060a0830151805160c0840152602081015160e08401525060c0830151610100614ed38185018380518252602090810151910152565b60e08501519150610140614ef38186018480518252602090810151910152565b9085015180516101808601526020908101516101a086015261012086015180516101c087015201516101e0850152840151151561020084015250610160909201516001600160a01b03166102209091015290565b81516001600160601b031681526020808301516001600160a01b03908116828401526040808501518051918501919091529091015160608084019190915290920151909116608082015260a00190565b600060208284031215614fa957600080fd5b815161222e816133a8565b60008085851115614fc457600080fd5b83861115614fd157600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156150065780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b60008251615060818460208701613704565b9190910192915050565b6000806040838503121561507d57600080fd5b825161508881613a41565b60208401519092506136f981613a24565b6000602082840312156150ab57600080fd5b815161222e816146d7565b60ff978816815260ff1996909616602087015293861660408601529190941660608401526001600160a01b03938416608084015290921660a082015263ffffffff9190911660c082015260e0019056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a264697066735822122027586949a2b370fb6d25e4f02f3b6ac2b22d916d2343e3332b1df99a3923a85764736f6c63430008140033",
2955
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106104a15760003560e01c80636b9bf08b1161026d578063b405b76f11610151578063dee32623116100ce578063f651dcac11610092578063f651dcac14610b3d578063f7bc431c14610b50578063f7c34ee014610b63578063fa145b6d14610b76578063fe1f18d614610b89578063fed3d63f14610b9c57600080fd5b8063dee3262314610ad1578063e1033e7d14610ae4578063e9e96c7014610aec578063f21de1e8146107de578063f48016ce14610b2a57600080fd5b8063ca600b1c11610115578063ca600b1c14610a88578063ccdcd37f14610a90578063cde749f414610aa3578063cf947d2014610aab578063d2f21a2914610abe57600080fd5b8063b405b76f14610a47578063b6d7cd6214610a5a578063bf1db3f914610a6d578063bf7e214f14610a80578063c29948fc146105d857600080fd5b8063976b0a77116101ea578063a8989675116101ae578063a8989675146109e6578063a9cea142146109f9578063ada9652e14610a0c578063afa5e13014610772578063afcc743914610a21578063b3260e9314610a3457600080fd5b8063976b0a77146108fc5780639df0280b14610595578063a13df2ab1461090f578063a5961b4c14610922578063a76ee018146109d357600080fd5b8063893d20e811610231578063893d20e81461088d5780638e28413f146108955780638eaa6ac0146108a85780638fb36037146108c857806391ff6eaa146108e957600080fd5b80636b9bf08b1461084457806375b238fc1461084c5780637a9e5e4b146108545780637b8c388f146108675780637cef48421461087a57600080fd5b806338a699a4116103945780635378cd3c116103115780635ab1bd53116102d55780635ab1bd53146107de5780635d4345cc146105955780635dfa73db146107ef57806361f5f420146107f8578063644c45e014610809578063675393bf1461083157600080fd5b80635378cd3c1461077257806354d747a81461078557806354f6127f146107985780635772b101146107b857806358dff9ea146107cb57600080fd5b8063422c9d0011610358578063422c9d001461071e5780634288121d14610731578063447fc48f14610739578063468a18671461074c57806351cf2fd01461075f57600080fd5b806338a699a4146106ac5780633c0d6a41146106bf5780633ca7c02a146106d25780633e35aba8146106f857806340529b0f1461070b57600080fd5b80631518afb91161042257806327953f48116103e657806327953f481461064e57806327bb7a33146106615780632f61088a1461067457806336fc697e1461068757806337f135d71461068f57600080fd5b80631518afb9146105d85780631b38d5f4146105eb5780631eff4b221461060c578063214cdb80146106335780632781d4431461064657600080fd5b80630f526f7d116104695780630f526f7d146105825780630fad0eb1146105955780630fec111c146105a85780631204b553146105bd578063138461e0146105d057600080fd5b806301ffc9a7146104a657806302cd3071146104e857806309648a9d1461050d5780630d358181146105475780630f03144a1461056d575b600080fd5b6104d36104b4366004613365565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6006546001600160a01b03165b6040516001600160a01b0390911681526020016104df565b61053561051b36600461338f565b600090815260046020526040902054610100900460ff1690565b60405160ff90911681526020016104df565b6105356105553660046133b7565b60ff9081166000908152600260205260409020541690565b61058061057b36600461367c565b610ba4565b005b6105806105903660046136cb565b610be6565b6105806105a33660046136cb565b610c03565b6105b0610c18565b6040516104df9190613754565b6105806105cb3660046137df565b610dc7565b610580610e07565b6105806105e63660046139c0565b61100e565b6105fe6105f9366004613a07565b611034565b6040519081526020016104df565b6105fe7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b610580610641366004613365565b6110d3565b6105fe600381565b61058061065c366004613b2d565b611100565b61058061066f366004613b89565b61111e565b610580610682366004613c7b565b6111aa565b610580611245565b610697600081565b60405163ffffffff90911681526020016104df565b6104d36106ba36600461338f565b61128b565b6105806106cd366004613d37565b61131a565b6106e06001600160401b0381565b6040516001600160401b0390911681526020016104df565b6105fe610706366004613a07565b611340565b6105806107193660046136cb565b61136d565b61058061072c366004613d98565b611382565b6104f56114bf565b610580610747366004613db5565b611552565b6105fe61075a366004613a07565b61157e565b61058061076d366004613eb8565b6115ab565b610580610780366004613eff565b6115d1565b610580610793366004613fe0565b6115e4565b6107ab6107a636600461338f565b611602565b6040516104df919061401c565b6105806107c6366004614072565b6116a7565b6105806107d9366004614190565b6116cd565b6001546001600160a01b03166104f5565b6106e061271081565b6007546001600160a01b03166104f5565b600080516020615107833981519152546040516001600160601b0390911681526020016104df565b61058061083f366004613d98565b6116f5565b6104f5611801565b6106e0600081565b610580610862366004613d98565b61182a565b6105fe610875366004613a07565b6118ad565b6105806108883660046141d7565b6118da565b6104f5611964565b6105806108a33660046141f5565b611a9b565b6108bb6108b636600461338f565b611ac3565b6040516104df9190614284565b6108d0611c04565b6040516001600160e01b031990911681526020016104df565b6105806108f73660046143a8565b611c3c565b61058061090a3660046143df565b611c64565b6105fe61091d366004613a07565b611da4565b6109c661093036600461338f565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915250600090815260046020908152604091829020825160a081018452905460ff8082168352610100820416928201929092526001600160a01b03620100008304169281019290925263ffffffff600160b01b820481166060840152600160d01b90910416608082015290565b6040516104df9190614430565b6105806109e136600461443e565b611dd1565b6105806109f4366004614485565b611e6c565b610580610a073660046144c5565b611f5d565b6105fe60008051602061510783398151915281565b610580610a2f366004614506565b611f85565b610580610a4236600461454b565b611fab565b610580610a55366004614589565b611fc9565b610580610a683660046145ce565b611fef565b6104d3610a7b3660046133b7565b612004565b6104f5612051565b6104f561206d565b610580610a9e36600461465a565b612096565b6105356120be565b610580610ab9366004614699565b612135565b610580610acc3660046136cb565b612153565b610580610adf3660046136cb565b61216a565b6104f5612181565b6104d3610afa366004614485565b60ff9283166000908152600360209081526040808320948616835293815283822092851682529190915220541690565b6105fe610b383660046146e7565b6121aa565b610580610b4b366004614715565b612235565b610580610b5e366004613d98565b61225d565b610580610b71366004614742565b61234a565b610580610b84366004614770565b6123c1565b610580610b973660046136cb565b6123e7565b6104f56123fc565b610bb1335b600036612425565b610be2610bbd83611da4565b82604051602001610bce91906147c7565b60405160208183030381529060405261252b565b5050565b610bef33610ba9565b610be2610bfd83608c612535565b82612581565b610c0c33610ba9565b610be2610bfd8361157e565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820152907f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3006040805160808101825282546001600160601b038116825260ff600160601b820481166020840152600160681b90910416151591810191909152600182018054919291606084019190610cc390614883565b80601f0160208091040260200160405190810160405280929190818152602001828054610cef90614883565b8015610d3c5780601f10610d1157610100808354040283529160200191610d3c565b820191906000526020600020905b815481529060010190602001808311610d1f57829003601f168201915b50505050508152505090506040518060e00160405280610d5a600090565b6001600160601b0316815260200182600001516001600160601b03168152602001826020015160ff168152602001826040015115158152602001306001600160a01b03168152602001610dab611964565b6001600160a01b03168152602001826060015181525091505090565b610dd033610ba9565b610e02610ddc84611da4565b83604051602001610ded91906147c7565b6040516020818303038152906040528361258b565b505050565b600060008051602061510783398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610e76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9a91906148bd565b15610ecb5780546040516301ab8b6760e21b81526001600160601b0390911660048201526024015b60405180910390fd5b30610ede6001546001600160a01b031690565b60405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa158015610f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4a91906148bd565b610f725760405163b9304b0d60e01b81526001600160a01b0382166004820152602401610ec2565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038381166004830152919091169063d272ac1e90602401602060405180830381865afa158015610fc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fea91906148da565b82546bffffffffffffffffffffffff19166001600160601b03919091161790915550565b61101733610ba9565b610e026110238461157e565b83604051602001610ded91906148f7565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660795b6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af41580156110a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cd9190614a45565b92915050565b6110db612596565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b61110933610ba9565b610be28282604051602001610bce9190614a5e565b611126612596565b611130828761234a565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b861515021781559050600181016111a08382614b54565b5050505050505050565b6111b333610ba9565b6040516355ee627560e01b81526001600160c01b031983166004820152610be29073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611210573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112349190614a45565b82604051602001610bce9190614c13565b61124d612596565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b600081815260046020819052604080832054905163b2466acf60e01b815261010090910460ff169181019190915273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024015b602060405180830381865af41580156112f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cd91906148bd565b61132333610ba9565b610e0261132f8461157e565b82604051602001610bce9190614c41565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b038416607861105d565b61137633610ba9565b610be2610bfd836118ad565b61138b33610ba9565b6007546001600160a01b0316156113db5760405162461bcd60e51b8152602060048201526014602482015273109d5b991b1953585b9859d95c881a5cc81cd95d60621b6044820152606401610ec2565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611423573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114479190614c92565b6001600160a01b03161461149d5760405162461bcd60e51b815260206004820152601f60248201527f42756e646c654d616e6167657220696e7374616e6365206d69736d61746368006044820152606401610ec2565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60006114d36001546001600160a01b031690565b6001600160a01b031663d39e6043606e5b6040516001600160e01b031960e084901b16815260ff909116600482015260036024820152604401602060405180830381865afa158015611529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154d9190614c92565b905090565b61155b33610ba9565b6115786115678561157e565b83604051602001610ded9190614c41565b50505050565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660d361105d565b6115b433610ba9565b610e026115c0846118ad565b83604051602001610ded9190614caf565b6115da33610ba9565b610be28282612581565b6115ed33610ba9565b610be28282604051602001610bce9190614cec565b600081815260046020526040902060010180546060919061162290614883565b80601f016020809104026020016040519081016040528092919081815260200182805461164e90614883565b801561169b5780601f106116705761010080835404028352916020019161169b565b820191906000526020600020905b81548152906001019060200180831161167e57829003601f168201915b50505050509050919050565b6116b033610ba9565b6115786116bc8561157e565b83604051602001610ded9190614d87565b6116d633610ba9565b610e026116e484608c612535565b83604051602001610ded9190614db7565b6116fd612596565b806001600160a01b03163b6000036117335760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610ec2565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b815263230c0c8160e11b60048201526301ffc9a790602401602060405180830381865afa9250505080156117ad575060408051601f3d908101601f191682019092526117aa918101906148bd565b60015b6117d55760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610ec2565b80610be25760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610ec2565b50565b60006118156001546001600160a01b031690565b6001600160a01b031663d39e6043608c6114e4565b33611833612051565b6001600160a01b0316816001600160a01b03161461186e5760405162d1953b60e31b81526001600160a01b0382166004820152602401610ec2565b816001600160a01b03163b6000036118a4576040516361798f2f60e11b81526001600160a01b0383166004820152602401610ec2565b610be2826125e1565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b038416607a61105d565b6118e333610ba9565b6040516355ee627560e01b81526001600160c01b031983166004820152610be29073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611940573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfd9190614a45565b60008060008051602061510783398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af41580156119d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f891906148bd565b15611a85576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611a5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7f9190614c92565b91505090565b54600160601b90046001600160a01b0316919050565b611aa433610ba9565b610be2611ab283608c612535565b82604051602001610bce9190614db7565b6040805160e081018252600091810182815260608083018490526080830184905260a0830184905260c083019390935281526020810191909152600082815260046020908152604091829020825160e081018452815460ff80821695830195865261010082041660608301526001600160a01b0362010000820416608083015263ffffffff600160b01b8204811660a0840152600160d01b9091041660c08201529283526001810180549192840191611b7b90614883565b80601f0160208091040260200160405190810160405280929190818152602001828054611ba790614883565b8015611bf45780601f10611bc957610100808354040283529160200191611bf4565b820191906000526020600020905b815481529060010190602001808311611bd757829003601f168201915b5050505050815250509050919050565b600080516020615127833981519152805460009190600160a01b900460ff16611c2e576000611a7f565b638fb3603760e01b91505090565b611c4533610ba9565b610be2611c5383606e612535565b82604051602001610bce9190614e1e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611ca95750825b90506000826001600160401b03166001148015611cc55750303b155b905081158015611cd3575080155b15611cf15760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611d1b57845460ff60401b1916600160401b1785555b611d2489612642565b611d438888604660008a6040518060200160405280600081525061111e565b611d5363ee9a420560e01b6110d3565b8315611d9957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660dc61105d565b611dda33610ba9565b6040516355ee627560e01b81526001600160c01b031984166004820152610e029073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5b9190614a45565b83604051602001610ded9190614c13565b60ff8381166000908152600260205260409081902054905163037c8cb160e51b81529116600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015611ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef591906148bd565b15611eff57505050565b60ff808416600090815260036020908152604080832086851684528252808320858516845290915290205416610e0257604051636bb20ea760e01b815260ff8085166004830152808416602483015282166044820152606401610ec2565b611f6633610ba9565b610e02611f7484606e612535565b83604051602001610ded9190614e1e565b611f8e33610ba9565b610be2611f9a8361157e565b82604051602001610bce91906148f7565b611fb433610ba9565b610e028383604051602001610ded9190614a5e565b611fd233610ba9565b610be2611fde836118ad565b82604051602001610bce9190614caf565b611ff833610ba9565b610e02610bfd8461157e565b60ff81811660009081526002602052604080822054905163b2466acf60e01b8152921660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024016112d9565b600080516020615127833981519152546001600160a01b031690565b60006120816001546001600160a01b031690565b6001600160a01b031663d39e604360786114e4565b61209f33610ba9565b610e026120ad846078612535565b83604051602001610ded9190614f47565b604051632392b61b60e21b81526003600482015260009073__$9dab98ad7ae1a426029e5739f922230a41$__90638e4ad86c90602401602060405180830381865af4158015612111573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154d9190614f97565b61213e33610ba9565b610e028383604051602001610ded9190614cec565b61215c33610ba9565b610be2610bfd836078612535565b61217333610ba9565b610be2610bfd83606e612535565b60006121956001546001600160a01b031690565b6001600160a01b031663d39e604360d36114e4565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063f48016ce906044015b602060405180830381865af415801561220a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222e9190614a45565b9392505050565b61223e33610ba9565b610be261224c836078612535565b82604051602001610bce9190614f47565b61226633610ba9565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d29190614c92565b6001600160a01b0316146123285760405162461bcd60e51b815260206004820181905260248201527f496e7374616e636552656164657220696e7374616e6365206d69736d617463686044820152606401610ec2565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b612352612596565b61235b816116f5565b612363611245565b6001600160a01b03821661238a5760405163f17ef42d60e01b815260040160405180910390fd5b5060008051602061510783398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b6123ca33610ba9565b610e026123d68461157e565b82604051602001610bce9190614d87565b6123f033610ba9565b610be2610bfd83611da4565b60006124106001546001600160a01b031690565b6001600160a01b031663d39e604360dc6114e4565b600080516020615127833981519152600080612460612442612051565b8730612452600460008a8c614fb4565b61245b91614fde565b612653565b91509150816125235763ffffffff81161561250057825460ff60a01b1916600160a01b17835561248e612051565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016124bd9392919061500e565b600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050845460ff60a01b19168555506125239050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610ec2565b505050505050565b610be2828261275f565b604051630711349960e31b81526001600160601b038316600482015260ff8216602482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c8906044016121ed565b610be28282612b85565b610e02838383612eb9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166125df57604051631afcd79f60e31b815260040160405180910390fd5b565b60008051602061512783398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b61264a612596565b6117fe81613354565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516126c2919061504e565b600060405180830381855afa9150503d80600081146126fd576040519150601f19603f3d011682016040523d82523d6000602084013e612702565b606091505b50915091508115612754576040815110612734578080602001905181019061272a919061506a565b9094509250612754565b6020815110612754578080602001905181019061275191906148bd565b93505b505094509492505050565b604051634b00e98f60e11b81526004810183905260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af41580156127b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d69190614f97565b60405163b2466acf60e01b815260ff8216600482015290915073__$fb4566b39bd2075cb32f600f6f40bfaef2$__9063b2466acf90602401602060405180830381865af415801561282b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284f91906148bd565b61289b5760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a4b56532d3031303a545950455f554e444546494e4544000000006044820152606401610ec2565b6000838152600460208190526040918290208054925163037c8cb160e51b815261010090930460ff16918301919091529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015612908573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292c91906148bd565b6129785760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3031323a414c52454144595f435245415445440000006044820152606401610ec2565b3343600061298585612004565b6129905760646129a6565b60ff808616600090815260026020526040902054165b845460ff87811661ffff1990921691909117610100918316919091021762010000600160d01b031916620100006001600160a01b0386160263ffffffff60b01b191617600160b01b63ffffffff85169081029190911763ffffffff60d01b1916600160d01b919091021785556000888152600460205260409020909150600101612a308782614b54565b50604051634b00e98f60e11b8152600481018890527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac79190614f97565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3b9190615099565b6040805160ff938416815260ff199092166020830152918416918101919091526001600160a01b038516606082015232608082015260a0015b60405180910390a150505050505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015612bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfb91906148bd565b612c475760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3034303a53544154455f554e444546494e45440000006044820152606401610ec2565b6000828152600460208190526040918290208054925163b2466acf60e01b815261010090930460ff169183018290529173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015612cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd791906148bd565b612d235760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3034313a4e4f545f4558495354494e470000000000006044820152606401610ec2565b8154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b90910416612d674390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018790527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612df9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e1d9190614f97565b604051630713cfad60e31b81526004810189905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612e6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e919190615099565b8786863287604051612ea997969594939291906150b6565b60405180910390a1505050505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015612f0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f2f91906148bd565b612f7b5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3032303a53544154455f554e444546494e45440000006044820152606401610ec2565b6000838152600460208190526040918290208054925163b2466acf60e01b815261010090930460ff169183018290529173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015612fe7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300b91906148bd565b6130575760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3032313a4e4f545f4558495354494e470000000000006044820152606401610ec2565b60008581526004602052604090206001016130728582614b54565b508154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b909104166130b74390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018890527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015613149573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061316d9190614f97565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af41580156131bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131e19190615099565b87868632876040516131f997969594939291906150b6565b60405180910390a1604051634b00e98f60e11b8152600481018890527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015613273573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132979190614f97565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af41580156132e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061330b9190615099565b6040805160ff938416815260ff199092166020830152918816918101919091526001600160a01b038416606082015232608082015263ffffffff831660a082015260c001612b74565b61335c612596565b6117fe816125e1565b60006020828403121561337757600080fd5b81356001600160e01b03198116811461222e57600080fd5b6000602082840312156133a157600080fd5b5035919050565b60ff811681146117fe57600080fd5b6000602082840312156133c957600080fd5b813561222e816133a8565b6001600160601b03811681146117fe57600080fd5b80356133f4816133d4565b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613431576134316133f9565b60405290565b60405161012081016001600160401b0381118282101715613431576134316133f9565b60405161020081016001600160401b0381118282101715613431576134316133f9565b604051608081016001600160401b0381118282101715613431576134316133f9565b60405160e081016001600160401b0381118282101715613431576134316133f9565b60405161018081016001600160401b0381118282101715613431576134316133f9565b6000604082840312156134f657600080fd5b6134fe61340f565b9050813581526020820135602082015292915050565b600082601f83011261352557600080fd5b81356001600160401b038082111561353f5761353f6133f9565b604051601f8301601f19908116603f01168101908282118183101715613567576135676133f9565b8160405283815286602085880101111561358057600080fd5b836020870160208301376000602085830101528094505050505092915050565b64ffffffffff811681146117fe57600080fd5b80356133f4816135a0565b600061014082840312156135d157600080fd5b6135d9613437565b90506135e4826133e9565b81526135f383602084016134e4565b602082015260608201356001600160401b0381111561361157600080fd5b61361d84828501613514565b6040830152506080820135606082015260a0820135608082015260c082013560a082015261364d60e083016135b3565b60c08201526101006136608184016135b3565b60e083015261367261012084016135b3565b9082015292915050565b6000806040838503121561368f57600080fd5b823561369a816133d4565b915060208301356001600160401b038111156136b557600080fd5b6136c1858286016135be565b9150509250929050565b600080604083850312156136de57600080fd5b82356136e9816133d4565b915060208301356136f9816133a8565b809150509250929050565b60005b8381101561371f578181015183820152602001613707565b50506000910152565b60008151808452613740816020860160208601613704565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a08301516137bd60c08401826001600160a01b03169052565b5060c083015160e0808401526137d7610100840182613728565b949350505050565b6000806000606084860312156137f457600080fd5b83356137ff816133d4565b925060208401356001600160401b0381111561381a57600080fd5b613826868287016135be565b9250506040840135613837816133a8565b809150509250925092565b6001600160c01b0319811681146117fe57600080fd5b80356133f481613842565b61ffff811681146117fe57600080fd5b80356133f481613863565b6000610200828403121561389157600080fd5b61389961345a565b90506138a4826133e9565b81526138b2602083016133e9565b60208201526138c360408301613858565b60408201526138d460608301613858565b60608201526080820135608082015260a082013560a082015260c082013560c082015261390360e083016135b3565b60e0820152610100808301356001600160401b038082111561392457600080fd5b61393086838701613514565b8385015261012092508285013591508082111561394c57600080fd5b5061395985828601613514565b82840152505061014061396d818401613873565b9082015261016061397f838201613873565b9082015261018082810135908201526101a061399c8184016135b3565b908201526101c06139ae8382016135b3565b908201526101e06136728382016135b3565b6000806000606084860312156139d557600080fd5b83356139e0816133d4565b925060208401356001600160401b038111156139fb57600080fd5b6138268682870161387e565b600060208284031215613a1957600080fd5b813561222e816133d4565b63ffffffff811681146117fe57600080fd5b80356133f481613a24565b80151581146117fe57600080fd5b80356133f481613a41565b60006101208284031215613a6d57600080fd5b613a75613437565b905081356001600160401b0380821115613a8e57600080fd5b613a9a85838601613514565b8352602084013560208401526040840135604084015260608401356060840152613ac660808501613a36565b6080840152613ad760a08501613a36565b60a0840152613ae860c08501613a4f565b60c0840152613af960e08501613a4f565b60e084015261010091508184013581811115613b1457600080fd5b613b2086828701613514565b8385015250505092915050565b60008060408385031215613b4057600080fd5b8235915060208301356001600160401b03811115613b5d57600080fd5b6136c185828601613a5a565b6001600160a01b03811681146117fe57600080fd5b80356133f481613b69565b60008060008060008060c08789031215613ba257600080fd5b8635613bad81613b69565b95506020870135613bbd816133d4565b94506040870135613bcd816133a8565b93506060870135613bdd81613a41565b92506080870135613bed81613b69565b915060a08701356001600160401b03811115613c0857600080fd5b613c1489828a01613514565b9150509295509295509295565b600060408284031215613c3357600080fd5b613c3b61340f565b90508135613c48816133d4565b815260208201356001600160401b03811115613c6357600080fd5b613c6f84828501613514565b60208301525092915050565b60008060408385031215613c8e57600080fd5b8235613c9981613842565b915060208301356001600160401b03811115613cb457600080fd5b6136c185828601613c21565b600060808284031215613cd257600080fd5b613cda61347d565b90508135613ce781613863565b81526020828101359082015260408201356001600160401b03811115613d0c57600080fd5b613d1884828501613514565b6040830152506060820135613d2c816135a0565b606082015292915050565b600080600060608486031215613d4c57600080fd5b8335613d57816133d4565b92506020840135613d6781613a24565b915060408401356001600160401b03811115613d8257600080fd5b613d8e86828701613cc0565b9150509250925092565b600060208284031215613daa57600080fd5b813561222e81613b69565b60008060008060808587031215613dcb57600080fd5b8435613dd6816133d4565b93506020850135613de681613a24565b925060408501356001600160401b03811115613e0157600080fd5b613e0d87828801613cc0565b9250506060850135613e1e816133a8565b939692955090935050565b600060608284031215613e3b57600080fd5b604051606081016001600160401b038282108183111715613e5e57613e5e6133f9565b8160405282935084359150613e7282613842565b908252602084013590613e8482613a41565b8160208401526040850135915080821115613e9e57600080fd5b50613eab85828601613514565b6040830152505092915050565b600080600060608486031215613ecd57600080fd5b8335613ed8816133d4565b925060208401356001600160401b03811115613ef357600080fd5b61382686828701613e29565b60008060408385031215613f1257600080fd5b8235915060208301356136f9816133a8565b600060e08284031215613f3657600080fd5b613f3e61349f565b9050613f49826133e9565b815260208201356001600160401b0380821115613f6557600080fd5b613f7185838601613514565b602084015260408401356040840152613f8c60608501613a36565b6060840152613f9d60808501613a36565b6080840152613fae60a085016135b3565b60a084015260c0840135915080821115613fc757600080fd5b50613fd484828501613514565b60c08301525092915050565b60008060408385031215613ff357600080fd5b8235915060208301356001600160401b0381111561401057600080fd5b6136c185828601613f24565b60208152600061222e6020830184613728565b60006080828403121561404157600080fd5b61404961347d565b9050813581526020820135602082015260408201356001600160401b03811115613d0c57600080fd5b6000806000806080858703121561408857600080fd5b8435614093816133d4565b935060208501356140a381613863565b925060408501356001600160401b038111156140be57600080fd5b613e0d8782880161402f565b600060a082840312156140dc57600080fd5b60405160a081016001600160401b0382821081831117156140ff576140ff6133f9565b81604052829350843591508082111561411757600080fd5b61412386838701613514565b83526020850135915061413582613b69565b8160208401526040850135915061414b82613b69565b81604084015261415d60608601613b7e565b6060840152608085013591508082111561417657600080fd5b5061418385828601613514565b6080830152505092915050565b6000806000606084860312156141a557600080fd5b83356141b0816133d4565b925060208401356001600160401b038111156141cb57600080fd5b613826868287016140ca565b600080604083850312156141ea57600080fd5b82356136e981613842565b6000806040838503121561420857600080fd5b8235614213816133d4565b915060208301356001600160401b0381111561422e57600080fd5b6136c1858286016140ca565b60ff815116825260ff602082015116602083015260018060a01b036040820151166040830152606081015163ffffffff808216606085015280608084015116608085015250505050565b6020815261429660208201835161423a565b6000602083015160c0808401526137d760e0840182613728565b600061024082840312156142c357600080fd5b6142cb6134c1565b90506142d682613b7e565b81526142e460208301613b7e565b60208201526142f5604083016133e9565b6040820152614306606083016133e9565b606082015261431883608084016134e4565b608082015261432a8360c084016134e4565b60a082015261010061433e848285016134e4565b60c0830152610140614352858286016134e4565b60e08401526143658561018086016134e4565b82840152614377856101c086016134e4565b61012084015261438a6102008501613a4f565b908301525061439c6102208301613b7e565b61016082015292915050565b60008061026083850312156143bc57600080fd5b82356143c7816133d4565b91506143d684602085016142b0565b90509250929050565b600080600080608085870312156143f557600080fd5b843561440081613b69565b9350602085013561441081613b69565b92506040850135614420816133d4565b91506060850135613e1e81613b69565b60a081016110cd828461423a565b60008060006060848603121561445357600080fd5b833561445e81613842565b925060208401356001600160401b0381111561447957600080fd5b61382686828701613c21565b60008060006060848603121561449a57600080fd5b83356144a5816133a8565b925060208401356144b5816133a8565b91506040840135613837816133a8565b600080600061028084860312156144db57600080fd5b83356144e6816133d4565b92506144f585602086016142b0565b9150610260840135613837816133a8565b6000806040838503121561451957600080fd5b8235614524816133d4565b915060208301356001600160401b0381111561453f57600080fd5b6136c18582860161387e565b60008060006060848603121561456057600080fd5b8335925060208401356001600160401b0381111561457d57600080fd5b61382686828701613a5a565b6000806040838503121561459c57600080fd5b82356145a7816133d4565b915060208301356001600160401b038111156145c257600080fd5b6136c185828601613e29565b6000806000606084860312156145e357600080fd5b83356145ee816133d4565b925060208401356144b581613863565b600060a0828403121561461057600080fd5b61461861347d565b90508135614625816133d4565b8152602082013561463581613b69565b602082015261464783604084016134e4565b60408201526080820135613d2c81613b69565b600080600060e0848603121561466f57600080fd5b833561467a816133d4565b925061468985602086016145fe565b915060c0840135613837816133a8565b6000806000606084860312156146ae57600080fd5b8335925060208401356001600160401b038111156146cb57600080fd5b61382686828701613f24565b60ff19811681146117fe57600080fd5b600080604083850312156146fa57600080fd5b8235614705816133a8565b915060208301356136f9816146d7565b60008060c0838503121561472857600080fd5b8235614733816133d4565b91506143d684602085016145fe565b6000806040838503121561475557600080fd5b823561476081613b69565b915060208301356136f981613b69565b60008060006060848603121561478557600080fd5b8335614790816133d4565b925060208401356147a081613863565b915060408401356001600160401b038111156147bb57600080fd5b613d8e8682870161402f565b602081526147e16020820183516001600160601b03169052565b600060208301516147ff604084018280518252602090810151910152565b50604083015161014080608085015261481c610160850183613728565b9150606085015160a0850152608085015160c085015260a085015160e085015260c08501516101006148568187018364ffffffffff169052565b60e087015164ffffffffff811661012088015291505b9095015164ffffffffff1693019290925250919050565b600181811c9082168061489757607f821691505b6020821081036148b757634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156148cf57600080fd5b815161222e81613a41565b6000602082840312156148ec57600080fd5b815161222e816133d4565b602081526149116020820183516001600160601b03169052565b6000602083015161492d60408401826001600160601b03169052565b5060408301516001600160c01b0319811660608401525060608301516001600160c01b03198116608084015250608083015160a083015260a083015160c083015260c083015160e083015260e08301516101006149928185018364ffffffffff169052565b8085015191505061020061012081818601526149b2610220860184613728565b9250808601519050610140601f1986850301818701526149d28483613728565b9350808701519150506101606149ed8187018361ffff169052565b8601519050610180614a048682018361ffff169052565b8601516101a08681019190915286015190506101c0614a2b8187018364ffffffffff169052565b86015190506101e061486c8682018364ffffffffff169052565b600060208284031215614a5757600080fd5b5051919050565b6020815260008251610120806020850152614a7d610140850183613728565b91506020850151604085015260408501516060850152606085015160808501526080850151614ab460a086018263ffffffff169052565b5060a085015163ffffffff811660c08601525060c085015180151560e08601525060e0850151610100614aea8187018315159052565b860151858403601f1901838701529050614b048382613728565b9695505050505050565b601f821115610e0257600081815260208120601f850160051c81016020861015614b355750805b601f850160051c820191505b8181101561252357828155600101614b41565b81516001600160401b03811115614b6d57614b6d6133f9565b614b8181614b7b8454614883565b84614b0e565b602080601f831160018114614bb65760008415614b9e5750858301515b600019600386901b1c1916600185901b178555612523565b600085815260208120601f198616915b82811015614be557888601518255948401946001909101908401614bc6565b5085821015614c035787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526001600160601b038251166020820152600060208301516040808401526137d76060840182613728565b6020815261ffff8251166020820152602082015160408201526000604083015160806060840152614c7560a0840182613728565b905064ffffffffff60608501511660808401528091505092915050565b600060208284031215614ca457600080fd5b815161222e81613b69565b602081526001600160401b0360c01b8251166020820152602082015115156040820152600060408301516060808401526137d76080840182613728565b602081526001600160601b0382511660208201526000602083015160e06040840152614d1c610100840182613728565b90506040840151606084015263ffffffff60608501511660808401526080840151614d4f60a085018263ffffffff169052565b5060a084015164ffffffffff811660c08501525060c0840151838203601f190160e0850152614d7e8282613728565b95945050505050565b6020815281516020820152602082015160408201526000604083015160806060840152614c7560a0840182613728565b602081526000825160a06020840152614dd360c0840182613728565b9050602084015160018060a01b03808216604086015280604087015116606086015280606087015116608086015250506080840151601f198483030160a0850152614d7e8282613728565b81516001600160a01b0316815261024081016020830151614e4a60208401826001600160a01b03169052565b506040830151614e6560408401826001600160601b03169052565b506060830151614e8060608401826001600160601b03169052565b506080830151614e9d608084018280518252602090810151910152565b5060a0830151805160c0840152602081015160e08401525060c0830151610100614ed38185018380518252602090810151910152565b60e08501519150610140614ef38186018480518252602090810151910152565b9085015180516101808601526020908101516101a086015261012086015180516101c087015201516101e0850152840151151561020084015250610160909201516001600160a01b03166102209091015290565b81516001600160601b031681526020808301516001600160a01b03908116828401526040808501518051918501919091529091015160608084019190915290920151909116608082015260a00190565b600060208284031215614fa957600080fd5b815161222e816133a8565b60008085851115614fc457600080fd5b83861115614fd157600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156150065780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b60008251615060818460208701613704565b9190910192915050565b6000806040838503121561507d57600080fd5b825161508881613a41565b60208401519092506136f981613a24565b6000602082840312156150ab57600080fd5b815161222e816146d7565b60ff978816815260ff1996909616602087015293861660408601529190941660608401526001600160a01b03938416608084015290921660a082015263ffffffff9190911660c082015260e0019056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a264697066735822122027586949a2b370fb6d25e4f02f3b6ac2b22d916d2343e3332b1df99a3923a85764736f6c63430008140033",
3198
2956
  "linkReferences": {
3199
2957
  "contracts/types/Key32.sol": {
3200
2958
  "Key32Lib": [
3201
2959
  {
3202
2960
  "length": 20,
3203
- "start": 4720
2961
+ "start": 10486
3204
2962
  },
3205
2963
  {
3206
2964
  "length": 20,
3207
- "start": 5488
2965
+ "start": 11935
3208
2966
  },
3209
2967
  {
3210
2968
  "length": 20,
3211
- "start": 5607
2969
+ "start": 12688
3212
2970
  },
3213
2971
  {
3214
2972
  "length": 20,
3215
- "start": 11613
2973
+ "start": 12804
3216
2974
  },
3217
2975
  {
3218
2976
  "length": 20,
3219
- "start": 16784
2977
+ "start": 13542
3220
2978
  },
3221
2979
  {
3222
2980
  "length": 20,
3223
- "start": 19106
2981
+ "start": 13658
3224
2982
  },
3225
2983
  {
3226
2984
  "length": 20,
3227
- "start": 19855
2985
+ "start": 14390
3228
2986
  },
3229
2987
  {
3230
2988
  "length": 20,
3231
- "start": 19971
2989
+ "start": 14506
3232
2990
  },
3233
2991
  {
3234
2992
  "length": 20,
3235
- "start": 20709
2993
+ "start": 14688
3236
2994
  },
3237
2995
  {
3238
2996
  "length": 20,
3239
- "start": 20825
3240
- },
2997
+ "start": 14804
2998
+ }
2999
+ ]
3000
+ },
3001
+ "contracts/types/NftId.sol": {
3002
+ "NftIdLib": [
3241
3003
  {
3242
3004
  "length": 20,
3243
- "start": 21557
3005
+ "start": 5475
3244
3006
  },
3245
3007
  {
3246
3008
  "length": 20,
3247
- "start": 21673
3009
+ "start": 5983
3248
3010
  },
3249
3011
  {
3250
3012
  "length": 20,
3251
- "start": 21855
3013
+ "start": 6763
3252
3014
  },
3253
3015
  {
3254
3016
  "length": 20,
3255
- "start": 21971
3256
- }
3257
- ]
3258
- },
3259
- "contracts/types/NftId.sol": {
3260
- "NftIdLib": [
3261
- {
3262
- "length": 20,
3263
- "start": 10609
3017
+ "start": 7337
3264
3018
  },
3265
3019
  {
3266
3020
  "length": 20,
3267
- "start": 12562
3021
+ "start": 8152
3268
3022
  },
3269
3023
  {
3270
3024
  "length": 20,
3271
- "start": 13671
3025
+ "start": 8385
3272
3026
  },
3273
3027
  {
3274
3028
  "length": 20,
3275
- "start": 14976
3029
+ "start": 9423
3276
3030
  },
3277
3031
  {
3278
3032
  "length": 20,
3279
- "start": 17351
3033
+ "start": 11398
3280
3034
  }
3281
3035
  ]
3282
3036
  },
@@ -3284,11 +3038,7 @@
3284
3038
  "ObjectTypeLib": [
3285
3039
  {
3286
3040
  "length": 20,
3287
- "start": 4844
3288
- },
3289
- {
3290
- "length": 20,
3291
- "start": 19227
3041
+ "start": 12056
3292
3042
  }
3293
3043
  ]
3294
3044
  },
@@ -3296,115 +3046,59 @@
3296
3046
  "RiskIdLib": [
3297
3047
  {
3298
3048
  "length": 20,
3299
- "start": 11452
3049
+ "start": 6397
3300
3050
  },
3301
3051
  {
3302
3052
  "length": 20,
3303
- "start": 13281
3053
+ "start": 8237
3304
3054
  },
3305
3055
  {
3306
3056
  "length": 20,
3307
- "start": 15061
3057
+ "start": 9508
3308
3058
  }
3309
3059
  ]
3310
3060
  },
3311
- "contracts/types/RoleId.sol": {
3312
- "RoleIdLib": [
3313
- {
3314
- "length": 20,
3315
- "start": 2090
3316
- },
3317
- {
3318
- "length": 20,
3319
- "start": 2261
3320
- },
3321
- {
3322
- "length": 20,
3323
- "start": 3702
3324
- },
3325
- {
3326
- "length": 20,
3327
- "start": 4027
3328
- },
3061
+ "contracts/types/StateId.sol": {
3062
+ "StateIdLib": [
3329
3063
  {
3330
3064
  "length": 20,
3331
- "start": 11904
3065
+ "start": 6626
3332
3066
  },
3333
3067
  {
3334
3068
  "length": 20,
3335
- "start": 13408
3069
+ "start": 9662
3336
3070
  },
3337
3071
  {
3338
3072
  "length": 20,
3339
- "start": 13494
3073
+ "start": 10070
3340
3074
  },
3341
3075
  {
3342
3076
  "length": 20,
3343
- "start": 14519
3077
+ "start": 12277
3344
3078
  },
3345
3079
  {
3346
3080
  "length": 20,
3347
- "start": 14687
3081
+ "start": 12996
3348
3082
  },
3349
3083
  {
3350
3084
  "length": 20,
3351
- "start": 15703
3085
+ "start": 13216
3352
3086
  },
3353
3087
  {
3354
3088
  "length": 20,
3355
- "start": 16116
3089
+ "start": 13816
3356
3090
  },
3357
3091
  {
3358
3092
  "length": 20,
3359
- "start": 18125
3093
+ "start": 14036
3360
3094
  }
3361
3095
  ]
3362
3096
  },
3363
- "contracts/types/StateId.sol": {
3364
- "StateIdLib": [
3365
- {
3366
- "length": 20,
3367
- "start": 4316
3368
- },
3369
- {
3370
- "length": 20,
3371
- "start": 5066
3372
- },
3373
- {
3374
- "length": 20,
3375
- "start": 6183
3376
- },
3377
- {
3378
- "length": 20,
3379
- "start": 12201
3380
- },
3381
- {
3382
- "length": 20,
3383
- "start": 15215
3384
- },
3385
- {
3386
- "length": 20,
3387
- "start": 16469
3388
- },
3389
- {
3390
- "length": 20,
3391
- "start": 19444
3392
- },
3097
+ "contracts/types/Version.sol": {
3098
+ "VersionPartLib": [
3393
3099
  {
3394
3100
  "length": 20,
3395
- "start": 20163
3396
- },
3397
- {
3398
- "length": 20,
3399
- "start": 20383
3400
- },
3401
- {
3402
- "length": 20,
3403
- "start": 20983
3404
- },
3405
- {
3406
- "length": 20,
3407
- "start": 21203
3101
+ "start": 10238
3408
3102
  }
3409
3103
  ]
3410
3104
  }
@@ -3414,47 +3108,43 @@
3414
3108
  "Key32Lib": [
3415
3109
  {
3416
3110
  "length": 20,
3417
- "start": 4487
3418
- },
3419
- {
3420
- "length": 20,
3421
- "start": 9658
3111
+ "start": 8655
3422
3112
  },
3423
3113
  {
3424
3114
  "length": 20,
3425
- "start": 11980
3115
+ "start": 10104
3426
3116
  },
3427
3117
  {
3428
3118
  "length": 20,
3429
- "start": 12729
3119
+ "start": 10857
3430
3120
  },
3431
3121
  {
3432
3122
  "length": 20,
3433
- "start": 12845
3123
+ "start": 10973
3434
3124
  },
3435
3125
  {
3436
3126
  "length": 20,
3437
- "start": 13583
3127
+ "start": 11711
3438
3128
  },
3439
3129
  {
3440
3130
  "length": 20,
3441
- "start": 13699
3131
+ "start": 11827
3442
3132
  },
3443
3133
  {
3444
3134
  "length": 20,
3445
- "start": 14431
3135
+ "start": 12559
3446
3136
  },
3447
3137
  {
3448
3138
  "length": 20,
3449
- "start": 14547
3139
+ "start": 12675
3450
3140
  },
3451
3141
  {
3452
3142
  "length": 20,
3453
- "start": 14729
3143
+ "start": 12857
3454
3144
  },
3455
3145
  {
3456
3146
  "length": 20,
3457
- "start": 14845
3147
+ "start": 12973
3458
3148
  }
3459
3149
  ]
3460
3150
  },
@@ -3462,23 +3152,35 @@
3462
3152
  "NftIdLib": [
3463
3153
  {
3464
3154
  "length": 20,
3465
- "start": 3483
3155
+ "start": 3644
3466
3156
  },
3467
3157
  {
3468
3158
  "length": 20,
3469
- "start": 5436
3159
+ "start": 4152
3470
3160
  },
3471
3161
  {
3472
3162
  "length": 20,
3473
- "start": 6545
3163
+ "start": 4932
3474
3164
  },
3475
3165
  {
3476
3166
  "length": 20,
3477
- "start": 7850
3167
+ "start": 5506
3478
3168
  },
3479
3169
  {
3480
3170
  "length": 20,
3481
- "start": 10225
3171
+ "start": 6321
3172
+ },
3173
+ {
3174
+ "length": 20,
3175
+ "start": 6554
3176
+ },
3177
+ {
3178
+ "length": 20,
3179
+ "start": 7592
3180
+ },
3181
+ {
3182
+ "length": 20,
3183
+ "start": 9567
3482
3184
  }
3483
3185
  ]
3484
3186
  },
@@ -3486,7 +3188,7 @@
3486
3188
  "ObjectTypeLib": [
3487
3189
  {
3488
3190
  "length": 20,
3489
- "start": 12101
3191
+ "start": 10225
3490
3192
  }
3491
3193
  ]
3492
3194
  },
@@ -3494,87 +3196,59 @@
3494
3196
  "RiskIdLib": [
3495
3197
  {
3496
3198
  "length": 20,
3497
- "start": 4326
3199
+ "start": 4566
3498
3200
  },
3499
3201
  {
3500
3202
  "length": 20,
3501
- "start": 6155
3203
+ "start": 6406
3502
3204
  },
3503
3205
  {
3504
3206
  "length": 20,
3505
- "start": 7935
3207
+ "start": 7677
3506
3208
  }
3507
3209
  ]
3508
3210
  },
3509
- "contracts/types/RoleId.sol": {
3510
- "RoleIdLib": [
3211
+ "contracts/types/StateId.sol": {
3212
+ "StateIdLib": [
3511
3213
  {
3512
3214
  "length": 20,
3513
- "start": 4778
3215
+ "start": 4795
3514
3216
  },
3515
3217
  {
3516
3218
  "length": 20,
3517
- "start": 6282
3219
+ "start": 7831
3518
3220
  },
3519
3221
  {
3520
3222
  "length": 20,
3521
- "start": 6368
3223
+ "start": 8239
3522
3224
  },
3523
3225
  {
3524
3226
  "length": 20,
3525
- "start": 7393
3227
+ "start": 10446
3526
3228
  },
3527
3229
  {
3528
3230
  "length": 20,
3529
- "start": 7561
3231
+ "start": 11165
3530
3232
  },
3531
3233
  {
3532
3234
  "length": 20,
3533
- "start": 8577
3235
+ "start": 11385
3534
3236
  },
3535
3237
  {
3536
3238
  "length": 20,
3537
- "start": 8990
3239
+ "start": 11985
3538
3240
  },
3539
3241
  {
3540
3242
  "length": 20,
3541
- "start": 10999
3243
+ "start": 12205
3542
3244
  }
3543
3245
  ]
3544
3246
  },
3545
- "contracts/types/StateId.sol": {
3546
- "StateIdLib": [
3547
- {
3548
- "length": 20,
3549
- "start": 5075
3550
- },
3551
- {
3552
- "length": 20,
3553
- "start": 8089
3554
- },
3555
- {
3556
- "length": 20,
3557
- "start": 9343
3558
- },
3559
- {
3560
- "length": 20,
3561
- "start": 12318
3562
- },
3563
- {
3564
- "length": 20,
3565
- "start": 13037
3566
- },
3567
- {
3568
- "length": 20,
3569
- "start": 13257
3570
- },
3571
- {
3572
- "length": 20,
3573
- "start": 13857
3574
- },
3247
+ "contracts/types/Version.sol": {
3248
+ "VersionPartLib": [
3575
3249
  {
3576
3250
  "length": 20,
3577
- "start": 14077
3251
+ "start": 8407
3578
3252
  }
3579
3253
  ]
3580
3254
  }