@etherisc/gif-next 0.0.2-9dd41ff-671 → 0.0.2-9e03baf-990

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 (543) hide show
  1. package/README.md +75 -9
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
  14. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  16. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  17. package/artifacts/contracts/{shared/AccessManagerCustom.sol/AccessManagerCustom.json → authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json} +28 -25
  18. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  20. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  21. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1324 -0
  22. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
  24. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +219 -596
  26. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +340 -444
  28. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +144 -133
  30. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +226 -309
  32. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +215 -94
  34. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  36. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1429 -0
  38. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  40. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1979 -0
  42. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  44. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1430 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1177 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1606 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2281 -0
  54. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  55. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  56. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +112 -91
  58. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +170 -84
  60. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  61. package/artifacts/contracts/instance/Instance.sol/Instance.json +127 -238
  62. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1183 -276
  64. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +561 -0
  66. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +874 -395
  68. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +255 -242
  70. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +122 -103
  72. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1210 -389
  74. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  75. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  76. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  77. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  78. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  79. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  80. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  81. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  82. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  83. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  84. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +21 -0
  86. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  87. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  88. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  89. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  90. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  91. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  92. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  93. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  94. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +961 -0
  95. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  96. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
  97. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  98. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  99. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  100. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +776 -0
  101. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  102. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +709 -0
  103. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  104. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +877 -0
  105. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  106. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +982 -0
  107. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  108. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +746 -0
  109. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  110. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1254 -0
  111. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  112. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +502 -0
  113. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  114. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +507 -345
  115. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  116. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +194 -111
  117. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  118. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +275 -46
  119. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  120. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +214 -400
  121. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  122. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +490 -282
  123. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  124. package/artifacts/contracts/pool/Pool.sol/Pool.json +224 -621
  125. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  126. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +634 -640
  127. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  128. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +124 -117
  129. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  130. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +132 -282
  131. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  132. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +112 -97
  133. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  134. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1148 -0
  135. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  136. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
  137. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  138. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +333 -299
  139. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  140. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +153 -114
  141. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  142. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +54 -1
  143. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  144. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +196 -7
  145. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  146. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +361 -81
  147. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  148. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +154 -86
  149. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  150. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +365 -221
  151. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  152. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +44 -57
  153. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  154. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +422 -406
  155. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +128 -137
  157. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  158. package/artifacts/contracts/product/PricingService.sol/PricingService.json +248 -348
  159. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  160. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +143 -116
  161. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  162. package/artifacts/contracts/product/Product.sol/Product.json +364 -475
  163. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  164. package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
  165. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  166. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -0
  167. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  168. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  169. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  170. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +400 -50
  171. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  172. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +112 -64
  173. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  174. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  175. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  176. package/artifacts/contracts/registry/Registry.sol/Registry.json +840 -107
  177. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  178. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1743 -149
  179. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  180. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +180 -200
  181. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  182. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +105 -86
  183. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  184. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  185. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  186. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
  187. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  188. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  189. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  190. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +314 -136
  191. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  192. package/artifacts/contracts/shared/Component.sol/Component.json +120 -317
  193. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  194. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1406 -213
  195. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  196. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +834 -0
  197. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  198. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +474 -0
  199. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  200. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +111 -0
  201. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +114 -130
  203. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  204. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1402 -0
  205. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  206. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +711 -0
  207. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  208. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +46 -14
  209. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  210. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  211. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  212. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +23 -1
  213. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  214. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
  215. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  216. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +36 -1
  217. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  219. package/artifacts/contracts/shared/IService.sol/IService.json +49 -1
  220. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  221. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  222. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  223. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +799 -0
  224. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  225. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  226. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  227. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  228. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  229. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  230. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  231. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +48 -70
  232. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  233. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
  234. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  235. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +67 -103
  236. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  237. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  238. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  239. package/artifacts/contracts/shared/Service.sol/Service.json +54 -119
  240. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  241. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +735 -27
  242. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  243. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  244. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  245. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  246. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  247. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1435 -0
  248. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  249. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +573 -53
  250. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  251. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  252. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  253. package/artifacts/contracts/staking/Staking.sol/Staking.json +1816 -0
  254. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  255. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  256. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  257. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +780 -0
  258. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  259. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  260. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  261. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +661 -182
  262. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  263. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +125 -90
  264. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  265. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  266. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  267. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  268. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  269. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  270. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/Amount.sol/AmountLib.json +121 -4
  272. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +53 -2
  274. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  276. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  278. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/Fee.sol/FeeLib.json +39 -34
  280. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  281. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  282. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +47 -4
  284. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  285. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  286. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +149 -2
  288. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  290. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  292. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  294. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  296. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
  298. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -2
  300. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  302. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  304. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  306. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  308. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
  310. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  312. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +71 -2
  314. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  316. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  318. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  319. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  320. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  321. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  322. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  323. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  324. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  325. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  326. package/contracts/authorization/AccessAdmin.sol +596 -0
  327. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  328. package/contracts/authorization/Authorization.sol +289 -0
  329. package/contracts/authorization/IAccess.sol +49 -0
  330. package/contracts/authorization/IAccessAdmin.sol +137 -0
  331. package/contracts/authorization/IAuthorization.sol +60 -0
  332. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  333. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  334. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  335. package/contracts/distribution/BasicDistribution.sol +139 -0
  336. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  337. package/contracts/distribution/Distribution.sol +156 -156
  338. package/contracts/distribution/DistributionService.sol +177 -173
  339. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  340. package/contracts/distribution/IDistributionComponent.sol +28 -47
  341. package/contracts/distribution/IDistributionService.sol +24 -10
  342. package/contracts/examples/fire/DamageLevel.sol +59 -0
  343. package/contracts/examples/fire/FirePool.sol +86 -0
  344. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  345. package/contracts/examples/fire/FireProduct.sol +431 -0
  346. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  347. package/contracts/examples/fire/FireUSD.sol +26 -0
  348. package/contracts/examples/unpermissioned/SimpleDistribution.sol +58 -0
  349. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  350. package/contracts/examples/unpermissioned/SimplePool.sol +108 -0
  351. package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
  352. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  353. package/contracts/instance/IInstance.sol +28 -39
  354. package/contracts/instance/IInstanceService.sol +30 -32
  355. package/contracts/instance/Instance.sol +124 -122
  356. package/contracts/instance/InstanceAdmin.sol +208 -285
  357. package/contracts/instance/InstanceAuthorizationV3.sol +194 -0
  358. package/contracts/instance/InstanceReader.sol +194 -67
  359. package/contracts/instance/InstanceService.sol +246 -130
  360. package/contracts/instance/InstanceServiceManager.sol +8 -13
  361. package/contracts/instance/InstanceStore.sol +142 -66
  362. package/contracts/instance/base/BalanceStore.sol +123 -0
  363. package/contracts/instance/base/Cloneable.sol +2 -25
  364. package/contracts/instance/base/ObjectCounter.sol +21 -0
  365. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  366. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
  367. package/contracts/instance/module/IAccess.sol +2 -0
  368. package/contracts/instance/module/IBundle.sol +1 -4
  369. package/contracts/instance/module/IComponents.sol +22 -13
  370. package/contracts/instance/module/IDistribution.sol +0 -1
  371. package/contracts/instance/module/IPolicy.sol +33 -26
  372. package/contracts/mock/Dip.sol +26 -0
  373. package/contracts/oracle/BasicOracle.sol +47 -0
  374. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  375. package/contracts/oracle/IOracle.sol +36 -0
  376. package/contracts/oracle/IOracleComponent.sol +33 -0
  377. package/contracts/oracle/IOracleService.sol +66 -0
  378. package/contracts/oracle/Oracle.sol +156 -0
  379. package/contracts/oracle/OracleService.sol +292 -0
  380. package/contracts/oracle/OracleServiceManager.sol +39 -0
  381. package/contracts/pool/BasicPool.sol +175 -0
  382. package/contracts/pool/BasicPoolAuthorization.sol +68 -0
  383. package/contracts/pool/BundleService.sol +314 -213
  384. package/contracts/pool/BundleServiceManager.sol +8 -11
  385. package/contracts/pool/IBundleService.sol +46 -24
  386. package/contracts/pool/IPoolComponent.sol +23 -75
  387. package/contracts/pool/IPoolService.sol +105 -47
  388. package/contracts/pool/Pool.sol +211 -168
  389. package/contracts/pool/PoolService.sol +448 -232
  390. package/contracts/pool/PoolServiceManager.sol +6 -9
  391. package/contracts/product/ApplicationService.sol +156 -84
  392. package/contracts/product/ApplicationServiceManager.sol +6 -6
  393. package/contracts/product/BasicProduct.sol +49 -0
  394. package/contracts/product/BasicProductAuthorization.sol +42 -0
  395. package/contracts/product/ClaimService.sol +333 -162
  396. package/contracts/product/ClaimServiceManager.sol +6 -6
  397. package/contracts/product/IApplicationService.sol +2 -1
  398. package/contracts/product/IClaimService.sol +35 -5
  399. package/contracts/product/IPolicyService.sol +41 -39
  400. package/contracts/product/IPricingService.sol +13 -11
  401. package/contracts/product/IProductComponent.sol +28 -10
  402. package/contracts/product/{IProductService.sol → IRiskService.sol} +2 -9
  403. package/contracts/product/PolicyService.sol +521 -204
  404. package/contracts/product/PolicyServiceManager.sol +6 -9
  405. package/contracts/product/PricingService.sol +107 -83
  406. package/contracts/product/PricingServiceManager.sol +5 -8
  407. package/contracts/product/Product.sol +199 -146
  408. package/contracts/product/RiskService.sol +96 -0
  409. package/contracts/product/RiskServiceManager.sol +39 -0
  410. package/contracts/registry/ChainNft.sol +75 -38
  411. package/contracts/registry/IRegistry.sol +85 -24
  412. package/contracts/registry/IRegistryService.sol +9 -6
  413. package/contracts/registry/ITransferInterceptor.sol +1 -2
  414. package/contracts/registry/Registry.sol +439 -179
  415. package/contracts/registry/RegistryAdmin.sol +396 -77
  416. package/contracts/registry/RegistryService.sol +73 -64
  417. package/contracts/registry/RegistryServiceManager.sol +6 -13
  418. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  419. package/contracts/registry/ReleaseRegistry.sol +485 -0
  420. package/contracts/registry/ServiceAuthorizationV3.sol +203 -0
  421. package/contracts/registry/TokenRegistry.sol +261 -64
  422. package/contracts/shared/Component.sol +128 -170
  423. package/contracts/shared/ComponentService.sol +732 -94
  424. package/contracts/shared/ComponentServiceManager.sol +38 -0
  425. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  426. package/contracts/shared/ContractLib.sol +54 -0
  427. package/contracts/shared/IComponent.sol +24 -47
  428. package/contracts/shared/IComponentService.sol +130 -0
  429. package/contracts/shared/IInstanceLinkedComponent.sol +41 -0
  430. package/contracts/{instance/base → shared}/IKeyValueStore.sol +7 -6
  431. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  432. package/contracts/shared/INftOwnable.sol +3 -1
  433. package/contracts/shared/IPolicyHolder.sol +12 -17
  434. package/contracts/shared/IRegisterable.sol +11 -0
  435. package/contracts/shared/IService.sol +9 -2
  436. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -4
  437. package/contracts/shared/InstanceLinkedComponent.sol +205 -0
  438. package/contracts/{instance/base → shared}/KeyValueStore.sol +36 -74
  439. package/contracts/shared/Lifecycle.sol +88 -0
  440. package/contracts/shared/NftIdSet.sol +65 -0
  441. package/contracts/shared/NftOwnable.sol +32 -22
  442. package/contracts/shared/PolicyHolder.sol +18 -50
  443. package/contracts/shared/Registerable.sol +21 -13
  444. package/contracts/shared/RegistryLinked.sol +9 -14
  445. package/contracts/shared/Service.sol +48 -36
  446. package/contracts/shared/TokenHandler.sol +375 -13
  447. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  448. package/contracts/staking/IStaking.sol +173 -0
  449. package/contracts/staking/IStakingService.sol +103 -48
  450. package/contracts/staking/StakeManagerLib.sol +224 -0
  451. package/contracts/staking/Staking.sol +505 -0
  452. package/contracts/staking/StakingLifecycle.sol +23 -0
  453. package/contracts/staking/StakingManager.sol +52 -0
  454. package/contracts/staking/StakingReader.sol +190 -0
  455. package/contracts/staking/StakingService.sol +331 -47
  456. package/contracts/staking/StakingServiceManager.sol +11 -7
  457. package/contracts/staking/StakingStore.sol +605 -0
  458. package/contracts/staking/TargetManagerLib.sol +211 -0
  459. package/contracts/type/AddressSet.sol +1 -1
  460. package/contracts/type/Amount.sol +44 -3
  461. package/contracts/type/Blocknumber.sol +26 -3
  462. package/contracts/type/ClaimId.sol +6 -1
  463. package/contracts/type/Fee.sol +17 -16
  464. package/contracts/type/NftId.sol +15 -16
  465. package/contracts/type/NftIdSet.sol +1 -1
  466. package/contracts/type/ObjectType.sol +176 -62
  467. package/contracts/type/PayoutId.sol +10 -10
  468. package/contracts/type/Referral.sol +2 -1
  469. package/contracts/type/RequestId.sol +75 -0
  470. package/contracts/type/RiskId.sol +17 -3
  471. package/contracts/type/RoleId.sol +98 -75
  472. package/contracts/type/Seconds.sol +48 -1
  473. package/contracts/type/Selector.sol +102 -0
  474. package/contracts/type/StateId.sol +41 -2
  475. package/contracts/type/String.sol +53 -0
  476. package/contracts/type/Timestamp.sol +17 -3
  477. package/contracts/type/UFixed.sol +38 -9
  478. package/contracts/type/Version.sol +4 -2
  479. package/contracts/{shared → upgradeability}/ProxyManager.sol +73 -41
  480. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  481. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  482. package/package.json +11 -7
  483. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  484. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  485. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  486. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -188
  487. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  488. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  489. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  490. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
  491. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  492. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  493. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  494. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  495. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  496. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  497. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  498. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  499. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  500. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -883
  501. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  502. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -711
  503. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  504. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1018
  505. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  506. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  507. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1715
  508. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  509. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
  510. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  511. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1747
  512. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  513. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1765
  514. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  515. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  516. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  517. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  518. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  519. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  520. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  521. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1594
  522. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  523. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  524. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -630
  525. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  526. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  527. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  528. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -320
  529. package/contracts/instance/base/Lifecycle.sol +0 -121
  530. package/contracts/instance/module/ISetup.sol +0 -33
  531. package/contracts/instance/module/ITreasury.sol +0 -23
  532. package/contracts/product/ProductService.sol +0 -212
  533. package/contracts/product/ProductServiceManager.sol +0 -42
  534. package/contracts/registry/ReleaseManager.sol +0 -465
  535. package/contracts/shared/AccessManagerCustom.sol +0 -736
  536. package/contracts/shared/AccessManagerExtended.sol +0 -469
  537. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  538. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -125
  539. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  540. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
  541. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  542. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -17
  543. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -44,20 +44,20 @@
44
44
  {
45
45
  "inputs": [
46
46
  {
47
- "internalType": "address",
48
- "name": "component",
49
- "type": "address"
47
+ "internalType": "NftId",
48
+ "name": "componentNftId",
49
+ "type": "uint96"
50
50
  }
51
51
  ],
52
- "name": "ErrorComponentServiceComponentLocked",
52
+ "name": "ErrorComponentVerifyingServiceComponentIsLocked",
53
53
  "type": "error"
54
54
  },
55
55
  {
56
56
  "inputs": [
57
57
  {
58
- "internalType": "address",
59
- "name": "component",
60
- "type": "address"
58
+ "internalType": "NftId",
59
+ "name": "componentNftId",
60
+ "type": "uint96"
61
61
  },
62
62
  {
63
63
  "internalType": "ObjectType",
@@ -66,156 +66,119 @@
66
66
  },
67
67
  {
68
68
  "internalType": "ObjectType",
69
- "name": "foundType",
69
+ "name": "actualType",
70
70
  "type": "uint8"
71
71
  }
72
72
  ],
73
- "name": "ErrorComponentServiceComponentTypeInvalid",
73
+ "name": "ErrorComponentVerifyingServiceComponentTypeInvalid",
74
74
  "type": "error"
75
75
  },
76
76
  {
77
77
  "inputs": [
78
78
  {
79
79
  "internalType": "NftId",
80
- "name": "instanceNftId",
80
+ "name": "nftId",
81
81
  "type": "uint96"
82
- },
83
- {
84
- "internalType": "RoleId",
85
- "name": "requiredRole",
86
- "type": "uint64"
87
- },
88
- {
89
- "internalType": "address",
90
- "name": "sender",
91
- "type": "address"
92
82
  }
93
83
  ],
94
- "name": "ErrorComponentServiceExpectedRoleMissing",
84
+ "name": "ErrorNftOwnableAlreadyLinked",
95
85
  "type": "error"
96
86
  },
97
87
  {
98
88
  "inputs": [
99
89
  {
100
90
  "internalType": "address",
101
- "name": "component",
91
+ "name": "contractAddress",
102
92
  "type": "address"
103
- },
104
- {
105
- "internalType": "ObjectType",
106
- "name": "requiredType",
107
- "type": "uint8"
108
- },
109
- {
110
- "internalType": "ObjectType",
111
- "name": "componentType",
112
- "type": "uint8"
113
93
  }
114
94
  ],
115
- "name": "ErrorComponentServiceInvalidType",
95
+ "name": "ErrorNftOwnableContractNotRegistered",
116
96
  "type": "error"
117
97
  },
118
98
  {
119
- "inputs": [
120
- {
121
- "internalType": "address",
122
- "name": "component",
123
- "type": "address"
124
- }
125
- ],
126
- "name": "ErrorComponentServiceNotComponent",
99
+ "inputs": [],
100
+ "name": "ErrorNftOwnableInitialOwnerZero",
127
101
  "type": "error"
128
102
  },
129
103
  {
130
104
  "inputs": [
131
105
  {
132
- "internalType": "address",
133
- "name": "component",
134
- "type": "address"
135
- },
136
- {
137
- "internalType": "address",
138
- "name": "initialOwner",
139
- "type": "address"
106
+ "internalType": "NftId",
107
+ "name": "nftId",
108
+ "type": "uint96"
140
109
  },
141
110
  {
142
- "internalType": "address",
143
- "name": "sender",
144
- "type": "address"
111
+ "internalType": "ObjectType",
112
+ "name": "expectedObjectType",
113
+ "type": "uint8"
145
114
  }
146
115
  ],
147
- "name": "ErrorComponentServiceSenderNotOwner",
116
+ "name": "ErrorNftOwnableInvalidType",
148
117
  "type": "error"
149
118
  },
150
119
  {
151
120
  "inputs": [
152
121
  {
153
122
  "internalType": "address",
154
- "name": "sender",
123
+ "name": "account",
155
124
  "type": "address"
156
125
  }
157
126
  ],
158
- "name": "ErrorComponentServiceSenderNotService",
127
+ "name": "ErrorNftOwnableNotOwner",
159
128
  "type": "error"
160
129
  },
161
130
  {
162
131
  "inputs": [
163
132
  {
164
133
  "internalType": "address",
165
- "name": "target",
134
+ "name": "registryAddress",
166
135
  "type": "address"
167
136
  }
168
137
  ],
169
- "name": "ErrorIAccessTargetLocked",
138
+ "name": "ErrorNotRegistry",
170
139
  "type": "error"
171
140
  },
172
141
  {
173
142
  "inputs": [
174
143
  {
175
144
  "internalType": "NftId",
176
- "name": "nftId",
145
+ "name": "poolNftId",
177
146
  "type": "uint96"
178
147
  }
179
148
  ],
180
- "name": "ErrorNftOwnableAlreadyLinked",
149
+ "name": "ErrorPoolServiceBundleOwnerRoleAlreadySet",
181
150
  "type": "error"
182
151
  },
183
152
  {
184
153
  "inputs": [
185
154
  {
186
- "internalType": "address",
187
- "name": "contractAddress",
188
- "type": "address"
189
- }
190
- ],
191
- "name": "ErrorNftOwnableContractNotRegistered",
192
- "type": "error"
193
- },
194
- {
195
- "inputs": [],
196
- "name": "ErrorNftOwnableInitialOwnerZero",
197
- "type": "error"
198
- },
199
- {
200
- "inputs": [
155
+ "internalType": "NftId",
156
+ "name": "bundleNftId",
157
+ "type": "uint96"
158
+ },
201
159
  {
202
- "internalType": "address",
203
- "name": "account",
204
- "type": "address"
160
+ "internalType": "NftId",
161
+ "name": "poolNftId",
162
+ "type": "uint96"
205
163
  }
206
164
  ],
207
- "name": "ErrorNftOwnableNotOwner",
165
+ "name": "ErrorPoolServiceBundlePoolMismatch",
208
166
  "type": "error"
209
167
  },
210
168
  {
211
169
  "inputs": [
212
170
  {
213
- "internalType": "address",
214
- "name": "registryAddress",
215
- "type": "address"
171
+ "internalType": "Amount",
172
+ "name": "expectedAmount",
173
+ "type": "uint96"
174
+ },
175
+ {
176
+ "internalType": "Amount",
177
+ "name": "actualAmount",
178
+ "type": "uint96"
216
179
  }
217
180
  ],
218
- "name": "ErrorNotRegistry",
181
+ "name": "ErrorPoolServiceInvalidTransferAmount",
219
182
  "type": "error"
220
183
  },
221
184
  {
@@ -224,41 +187,56 @@
224
187
  "internalType": "NftId",
225
188
  "name": "poolNftId",
226
189
  "type": "uint96"
190
+ },
191
+ {
192
+ "internalType": "Amount",
193
+ "name": "maxBalanceAmount",
194
+ "type": "uint96"
195
+ },
196
+ {
197
+ "internalType": "Amount",
198
+ "name": "currentBalanceAmount",
199
+ "type": "uint96"
200
+ },
201
+ {
202
+ "internalType": "Amount",
203
+ "name": "transferAmount",
204
+ "type": "uint96"
227
205
  }
228
206
  ],
229
- "name": "ErrorPoolServiceBundleOwnerRoleAlreadySet",
207
+ "name": "ErrorPoolServiceMaxBalanceAmountExceeded",
230
208
  "type": "error"
231
209
  },
232
210
  {
233
211
  "inputs": [
234
212
  {
235
213
  "internalType": "NftId",
236
- "name": "bundlePoolNftId",
214
+ "name": "policyNftId",
215
+ "type": "uint96"
216
+ },
217
+ {
218
+ "internalType": "NftId",
219
+ "name": "productNftId",
237
220
  "type": "uint96"
238
221
  },
239
222
  {
240
223
  "internalType": "NftId",
241
- "name": "productPoolNftId",
224
+ "name": "expectedProductNftId",
242
225
  "type": "uint96"
243
226
  }
244
227
  ],
245
- "name": "ErrorPoolServiceBundlePoolMismatch",
228
+ "name": "ErrorPoolServicePolicyPoolMismatch",
246
229
  "type": "error"
247
230
  },
248
231
  {
249
232
  "inputs": [
250
233
  {
251
- "internalType": "Amount",
252
- "name": "expectedAmount",
253
- "type": "uint96"
254
- },
255
- {
256
- "internalType": "Amount",
257
- "name": "actualAmount",
234
+ "internalType": "NftId",
235
+ "name": "poolNftId",
258
236
  "type": "uint96"
259
237
  }
260
238
  ],
261
- "name": "ErrorPoolServiceInvalidTransferAmount",
239
+ "name": "ErrorPoolServicePoolNotExternallyManaged",
262
240
  "type": "error"
263
241
  },
264
242
  {
@@ -271,11 +249,21 @@
271
249
  "name": "InvalidInitialization",
272
250
  "type": "error"
273
251
  },
252
+ {
253
+ "inputs": [],
254
+ "name": "MathLigMulDivOverflow",
255
+ "type": "error"
256
+ },
274
257
  {
275
258
  "inputs": [],
276
259
  "name": "NotInitializing",
277
260
  "type": "error"
278
261
  },
262
+ {
263
+ "inputs": [],
264
+ "name": "ReentrancyGuardReentrantCall",
265
+ "type": "error"
266
+ },
279
267
  {
280
268
  "anonymous": false,
281
269
  "inputs": [
@@ -355,6 +343,12 @@
355
343
  {
356
344
  "anonymous": false,
357
345
  "inputs": [
346
+ {
347
+ "indexed": false,
348
+ "internalType": "NftId",
349
+ "name": "instanceNftId",
350
+ "type": "uint96"
351
+ },
358
352
  {
359
353
  "indexed": false,
360
354
  "internalType": "NftId",
@@ -363,139 +357,329 @@
363
357
  },
364
358
  {
365
359
  "indexed": false,
366
- "internalType": "RoleId",
367
- "name": "bundleOwnerRole",
368
- "type": "uint64"
360
+ "internalType": "NftId",
361
+ "name": "bundleNftId",
362
+ "type": "uint96"
363
+ },
364
+ {
365
+ "indexed": false,
366
+ "internalType": "Amount",
367
+ "name": "amount",
368
+ "type": "uint96"
369
+ },
370
+ {
371
+ "indexed": false,
372
+ "internalType": "Amount",
373
+ "name": "netAmount",
374
+ "type": "uint96"
369
375
  }
370
376
  ],
371
- "name": "LogPoolServiceBundleOwnerRoleSet",
377
+ "name": "LogPoolServiceBundleStaked",
372
378
  "type": "event"
373
379
  },
374
380
  {
375
381
  "anonymous": false,
376
382
  "inputs": [
383
+ {
384
+ "indexed": false,
385
+ "internalType": "NftId",
386
+ "name": "instanceNftId",
387
+ "type": "uint96"
388
+ },
377
389
  {
378
390
  "indexed": false,
379
391
  "internalType": "NftId",
380
392
  "name": "poolNftId",
381
393
  "type": "uint96"
382
394
  },
395
+ {
396
+ "indexed": false,
397
+ "internalType": "NftId",
398
+ "name": "bundleNftId",
399
+ "type": "uint96"
400
+ },
383
401
  {
384
402
  "indexed": false,
385
403
  "internalType": "Amount",
386
- "name": "previousMaxCapitalAmount",
404
+ "name": "amount",
387
405
  "type": "uint96"
388
406
  },
389
407
  {
390
408
  "indexed": false,
391
409
  "internalType": "Amount",
392
- "name": "currentMaxCapitalAmount",
410
+ "name": "netAmount",
393
411
  "type": "uint96"
394
412
  }
395
413
  ],
396
- "name": "LogPoolServiceMaxCapitalAmountUpdated",
414
+ "name": "LogPoolServiceBundleUnstaked",
397
415
  "type": "event"
398
416
  },
399
417
  {
400
- "inputs": [],
401
- "name": "NFT_OWNABLE_STORAGE_LOCATION_V1",
402
- "outputs": [
418
+ "anonymous": false,
419
+ "inputs": [
403
420
  {
404
- "internalType": "bytes32",
405
- "name": "",
406
- "type": "bytes32"
407
- }
408
- ],
409
- "stateMutability": "view",
410
- "type": "function"
411
- },
412
- {
413
- "inputs": [],
414
- "name": "REGISTERABLE_LOCATION_V1",
415
- "outputs": [
421
+ "indexed": false,
422
+ "internalType": "NftId",
423
+ "name": "poolNftId",
424
+ "type": "uint96"
425
+ },
416
426
  {
417
- "internalType": "bytes32",
418
- "name": "",
419
- "type": "bytes32"
420
- }
421
- ],
422
- "stateMutability": "view",
423
- "type": "function"
424
- },
425
- {
426
- "inputs": [],
427
- "name": "authority",
428
- "outputs": [
427
+ "indexed": false,
428
+ "internalType": "Amount",
429
+ "name": "previousMaxCapitalAmount",
430
+ "type": "uint96"
431
+ },
429
432
  {
430
- "internalType": "address",
431
- "name": "",
432
- "type": "address"
433
+ "indexed": false,
434
+ "internalType": "Amount",
435
+ "name": "currentMaxCapitalAmount",
436
+ "type": "uint96"
433
437
  }
434
438
  ],
435
- "stateMutability": "view",
436
- "type": "function"
439
+ "name": "LogPoolServiceMaxBalanceAmountUpdated",
440
+ "type": "event"
437
441
  },
438
442
  {
443
+ "anonymous": false,
439
444
  "inputs": [
440
445
  {
446
+ "indexed": false,
441
447
  "internalType": "NftId",
442
- "name": "bundleNftId",
448
+ "name": "policyNftId",
449
+ "type": "uint96"
450
+ },
451
+ {
452
+ "indexed": false,
453
+ "internalType": "ClaimId",
454
+ "name": "claimId",
455
+ "type": "uint16"
456
+ },
457
+ {
458
+ "indexed": false,
459
+ "internalType": "Amount",
460
+ "name": "availableAmount",
443
461
  "type": "uint96"
444
462
  }
445
463
  ],
446
- "name": "closeBundle",
447
- "outputs": [],
448
- "stateMutability": "nonpayable",
449
- "type": "function"
464
+ "name": "LogPoolServiceProcessFundedClaim",
465
+ "type": "event"
450
466
  },
451
467
  {
468
+ "anonymous": false,
452
469
  "inputs": [
453
470
  {
454
- "internalType": "address",
455
- "name": "owner",
456
- "type": "address"
471
+ "indexed": false,
472
+ "internalType": "NftId",
473
+ "name": "poolNftId",
474
+ "type": "uint96"
457
475
  },
458
476
  {
459
- "components": [
460
- {
461
- "internalType": "UFixed",
462
- "name": "fractionalFee",
463
- "type": "uint256"
464
- },
465
- {
466
- "internalType": "uint256",
467
- "name": "fixedFee",
468
- "type": "uint256"
469
- }
470
- ],
471
- "internalType": "struct Fee",
472
- "name": "fee",
473
- "type": "tuple"
477
+ "indexed": false,
478
+ "internalType": "address",
479
+ "name": "poolOwner",
480
+ "type": "address"
474
481
  },
475
482
  {
483
+ "indexed": false,
476
484
  "internalType": "Amount",
477
- "name": "stakingAmount",
485
+ "name": "amount",
478
486
  "type": "uint96"
479
- },
487
+ }
488
+ ],
489
+ "name": "LogPoolServiceWalletDefunded",
490
+ "type": "event"
491
+ },
492
+ {
493
+ "anonymous": false,
494
+ "inputs": [
480
495
  {
481
- "internalType": "Seconds",
482
- "name": "lifetime",
483
- "type": "uint40"
496
+ "indexed": false,
497
+ "internalType": "NftId",
498
+ "name": "poolNftId",
499
+ "type": "uint96"
484
500
  },
485
501
  {
486
- "internalType": "bytes",
487
- "name": "filter",
488
- "type": "bytes"
502
+ "indexed": false,
503
+ "internalType": "address",
504
+ "name": "poolOwner",
505
+ "type": "address"
506
+ },
507
+ {
508
+ "indexed": false,
509
+ "internalType": "Amount",
510
+ "name": "amount",
511
+ "type": "uint96"
512
+ }
513
+ ],
514
+ "name": "LogPoolServiceWalletFunded",
515
+ "type": "event"
516
+ },
517
+ {
518
+ "inputs": [],
519
+ "name": "GIF_RELEASE",
520
+ "outputs": [
521
+ {
522
+ "internalType": "uint256",
523
+ "name": "",
524
+ "type": "uint256"
525
+ }
526
+ ],
527
+ "stateMutability": "view",
528
+ "type": "function"
529
+ },
530
+ {
531
+ "inputs": [],
532
+ "name": "NFT_OWNABLE_STORAGE_LOCATION_V1",
533
+ "outputs": [
534
+ {
535
+ "internalType": "bytes32",
536
+ "name": "",
537
+ "type": "bytes32"
538
+ }
539
+ ],
540
+ "stateMutability": "view",
541
+ "type": "function"
542
+ },
543
+ {
544
+ "inputs": [],
545
+ "name": "REGISTERABLE_LOCATION_V1",
546
+ "outputs": [
547
+ {
548
+ "internalType": "bytes32",
549
+ "name": "",
550
+ "type": "bytes32"
551
+ }
552
+ ],
553
+ "stateMutability": "view",
554
+ "type": "function"
555
+ },
556
+ {
557
+ "inputs": [],
558
+ "name": "authority",
559
+ "outputs": [
560
+ {
561
+ "internalType": "address",
562
+ "name": "",
563
+ "type": "address"
564
+ }
565
+ ],
566
+ "stateMutability": "view",
567
+ "type": "function"
568
+ },
569
+ {
570
+ "inputs": [
571
+ {
572
+ "internalType": "UFixed",
573
+ "name": "collateralizationLevel",
574
+ "type": "uint256"
575
+ },
576
+ {
577
+ "internalType": "UFixed",
578
+ "name": "retentionLevel",
579
+ "type": "uint256"
580
+ },
581
+ {
582
+ "internalType": "Amount",
583
+ "name": "sumInsuredAmount",
584
+ "type": "uint96"
585
+ }
586
+ ],
587
+ "name": "calculateRequiredCollateral",
588
+ "outputs": [
589
+ {
590
+ "internalType": "Amount",
591
+ "name": "totalCollateralAmount",
592
+ "type": "uint96"
593
+ },
594
+ {
595
+ "internalType": "Amount",
596
+ "name": "localCollateralAmount",
597
+ "type": "uint96"
598
+ }
599
+ ],
600
+ "stateMutability": "pure",
601
+ "type": "function"
602
+ },
603
+ {
604
+ "inputs": [
605
+ {
606
+ "internalType": "contract InstanceReader",
607
+ "name": "instanceReader",
608
+ "type": "address"
609
+ },
610
+ {
611
+ "internalType": "NftId",
612
+ "name": "productNftId",
613
+ "type": "uint96"
614
+ },
615
+ {
616
+ "internalType": "Amount",
617
+ "name": "sumInsuredAmount",
618
+ "type": "uint96"
489
619
  }
490
620
  ],
491
- "name": "createBundle",
621
+ "name": "calculateRequiredCollateral",
492
622
  "outputs": [
623
+ {
624
+ "internalType": "NftId",
625
+ "name": "poolNftId",
626
+ "type": "uint96"
627
+ },
628
+ {
629
+ "internalType": "Amount",
630
+ "name": "totalCollateralAmount",
631
+ "type": "uint96"
632
+ },
633
+ {
634
+ "internalType": "Amount",
635
+ "name": "localCollateralAmount",
636
+ "type": "uint96"
637
+ },
638
+ {
639
+ "internalType": "bool",
640
+ "name": "poolIsVerifyingApplications",
641
+ "type": "bool"
642
+ }
643
+ ],
644
+ "stateMutability": "view",
645
+ "type": "function"
646
+ },
647
+ {
648
+ "inputs": [
493
649
  {
494
650
  "internalType": "NftId",
495
651
  "name": "bundleNftId",
496
652
  "type": "uint96"
497
653
  }
498
654
  ],
655
+ "name": "closeBundle",
656
+ "outputs": [],
657
+ "stateMutability": "nonpayable",
658
+ "type": "function"
659
+ },
660
+ {
661
+ "inputs": [
662
+ {
663
+ "internalType": "Amount",
664
+ "name": "amount",
665
+ "type": "uint96"
666
+ }
667
+ ],
668
+ "name": "defundPoolWallet",
669
+ "outputs": [],
670
+ "stateMutability": "nonpayable",
671
+ "type": "function"
672
+ },
673
+ {
674
+ "inputs": [
675
+ {
676
+ "internalType": "Amount",
677
+ "name": "amount",
678
+ "type": "uint96"
679
+ }
680
+ ],
681
+ "name": "fundPoolWallet",
682
+ "outputs": [],
499
683
  "stateMutability": "nonpayable",
500
684
  "type": "function"
501
685
  },
@@ -505,7 +689,7 @@
505
689
  "outputs": [
506
690
  {
507
691
  "internalType": "ObjectType",
508
- "name": "",
692
+ "name": "serviceDomain",
509
693
  "type": "uint8"
510
694
  }
511
695
  ],
@@ -562,19 +746,6 @@
562
746
  "stateMutability": "view",
563
747
  "type": "function"
564
748
  },
565
- {
566
- "inputs": [],
567
- "name": "getInstanceService",
568
- "outputs": [
569
- {
570
- "internalType": "contract InstanceService",
571
- "name": "",
572
- "type": "address"
573
- }
574
- ],
575
- "stateMutability": "view",
576
- "type": "function"
577
- },
578
749
  {
579
750
  "inputs": [],
580
751
  "name": "getNftId",
@@ -616,25 +787,25 @@
616
787
  },
617
788
  {
618
789
  "inputs": [],
619
- "name": "getRegistryService",
790
+ "name": "getRelease",
620
791
  "outputs": [
621
792
  {
622
- "internalType": "contract IRegistryService",
623
- "name": "",
624
- "type": "address"
793
+ "internalType": "VersionPart",
794
+ "name": "release",
795
+ "type": "uint8"
625
796
  }
626
797
  ],
627
- "stateMutability": "view",
798
+ "stateMutability": "pure",
628
799
  "type": "function"
629
800
  },
630
801
  {
631
802
  "inputs": [],
632
- "name": "getVersion",
803
+ "name": "getRoleId",
633
804
  "outputs": [
634
805
  {
635
- "internalType": "Version",
636
- "name": "",
637
- "type": "uint24"
806
+ "internalType": "RoleId",
807
+ "name": "serviceRoleId",
808
+ "type": "uint64"
638
809
  }
639
810
  ],
640
811
  "stateMutability": "pure",
@@ -642,101 +813,15 @@
642
813
  },
643
814
  {
644
815
  "inputs": [],
645
- "name": "initializeERC165",
646
- "outputs": [],
647
- "stateMutability": "nonpayable",
648
- "type": "function"
649
- },
650
- {
651
- "inputs": [
652
- {
653
- "internalType": "address",
654
- "name": "initialOwner",
655
- "type": "address"
656
- },
657
- {
658
- "internalType": "address",
659
- "name": "registryAddress",
660
- "type": "address"
661
- }
662
- ],
663
- "name": "initializeNftOwnable",
664
- "outputs": [],
665
- "stateMutability": "nonpayable",
666
- "type": "function"
667
- },
668
- {
669
- "inputs": [
670
- {
671
- "internalType": "address",
672
- "name": "registryAddress",
673
- "type": "address"
674
- },
675
- {
676
- "internalType": "NftId",
677
- "name": "parentNftId",
678
- "type": "uint96"
679
- },
680
- {
681
- "internalType": "ObjectType",
682
- "name": "objectType",
683
- "type": "uint8"
684
- },
685
- {
686
- "internalType": "bool",
687
- "name": "isInterceptor",
688
- "type": "bool"
689
- },
690
- {
691
- "internalType": "address",
692
- "name": "initialOwner",
693
- "type": "address"
694
- },
695
- {
696
- "internalType": "bytes",
697
- "name": "registryData",
698
- "type": "bytes"
699
- }
700
- ],
701
- "name": "initializeRegisterable",
702
- "outputs": [],
703
- "stateMutability": "nonpayable",
704
- "type": "function"
705
- },
706
- {
707
- "inputs": [
708
- {
709
- "internalType": "address",
710
- "name": "registryAddress",
711
- "type": "address"
712
- }
713
- ],
714
- "name": "initializeRegistryLinked",
715
- "outputs": [],
716
- "stateMutability": "nonpayable",
717
- "type": "function"
718
- },
719
- {
720
- "inputs": [
721
- {
722
- "internalType": "address",
723
- "name": "registry",
724
- "type": "address"
725
- },
726
- {
727
- "internalType": "address",
728
- "name": "authority",
729
- "type": "address"
730
- },
816
+ "name": "getVersion",
817
+ "outputs": [
731
818
  {
732
- "internalType": "address",
733
- "name": "initialOwner",
734
- "type": "address"
819
+ "internalType": "Version",
820
+ "name": "",
821
+ "type": "uint24"
735
822
  }
736
823
  ],
737
- "name": "initializeService",
738
- "outputs": [],
739
- "stateMutability": "nonpayable",
824
+ "stateMutability": "pure",
740
825
  "type": "function"
741
826
  },
742
827
  {
@@ -771,31 +856,18 @@
771
856
  "type": "function"
772
857
  },
773
858
  {
774
- "inputs": [
775
- {
776
- "internalType": "address",
777
- "name": "nftOwnableAddress",
778
- "type": "address"
779
- }
780
- ],
781
- "name": "linkToNftOwnable",
859
+ "inputs": [],
860
+ "name": "linkToRegisteredNftId",
782
861
  "outputs": [
783
862
  {
784
863
  "internalType": "NftId",
785
- "name": "",
864
+ "name": "nftId",
786
865
  "type": "uint96"
787
866
  }
788
867
  ],
789
868
  "stateMutability": "nonpayable",
790
869
  "type": "function"
791
870
  },
792
- {
793
- "inputs": [],
794
- "name": "linkToRegisteredNftId",
795
- "outputs": [],
796
- "stateMutability": "nonpayable",
797
- "type": "function"
798
- },
799
871
  {
800
872
  "inputs": [
801
873
  {
@@ -803,6 +875,11 @@
803
875
  "name": "instance",
804
876
  "type": "address"
805
877
  },
878
+ {
879
+ "internalType": "address",
880
+ "name": "token",
881
+ "type": "address"
882
+ },
806
883
  {
807
884
  "internalType": "NftId",
808
885
  "name": "productNftId",
@@ -814,204 +891,51 @@
814
891
  "type": "uint96"
815
892
  },
816
893
  {
817
- "components": [
818
- {
819
- "internalType": "NftId",
820
- "name": "productNftId",
821
- "type": "uint96"
822
- },
823
- {
824
- "internalType": "NftId",
825
- "name": "bundleNftId",
826
- "type": "uint96"
827
- },
828
- {
829
- "internalType": "ReferralId",
830
- "name": "referralId",
831
- "type": "bytes8"
832
- },
833
- {
834
- "internalType": "RiskId",
835
- "name": "riskId",
836
- "type": "bytes8"
837
- },
838
- {
839
- "internalType": "Amount",
840
- "name": "sumInsuredAmount",
841
- "type": "uint96"
842
- },
843
- {
844
- "internalType": "Amount",
845
- "name": "premiumAmount",
846
- "type": "uint96"
847
- },
848
- {
849
- "internalType": "Amount",
850
- "name": "premiumPaidAmount",
851
- "type": "uint96"
852
- },
853
- {
854
- "internalType": "Seconds",
855
- "name": "lifetime",
856
- "type": "uint40"
857
- },
858
- {
859
- "internalType": "bytes",
860
- "name": "applicationData",
861
- "type": "bytes"
862
- },
863
- {
864
- "internalType": "bytes",
865
- "name": "processData",
866
- "type": "bytes"
867
- },
868
- {
869
- "internalType": "uint16",
870
- "name": "claimsCount",
871
- "type": "uint16"
872
- },
873
- {
874
- "internalType": "uint16",
875
- "name": "openClaimsCount",
876
- "type": "uint16"
877
- },
878
- {
879
- "internalType": "Amount",
880
- "name": "claimAmount",
881
- "type": "uint96"
882
- },
883
- {
884
- "internalType": "Amount",
885
- "name": "payoutAmount",
886
- "type": "uint96"
887
- },
888
- {
889
- "internalType": "Timestamp",
890
- "name": "activatedAt",
891
- "type": "uint40"
892
- },
893
- {
894
- "internalType": "Timestamp",
895
- "name": "expiredAt",
896
- "type": "uint40"
897
- },
898
- {
899
- "internalType": "Timestamp",
900
- "name": "closedAt",
901
- "type": "uint40"
902
- }
903
- ],
904
- "internalType": "struct IPolicy.PolicyInfo",
905
- "name": "applicationInfo",
906
- "type": "tuple"
894
+ "internalType": "NftId",
895
+ "name": "bundleNftId",
896
+ "type": "uint96"
907
897
  },
908
898
  {
909
899
  "internalType": "Amount",
910
- "name": "premiumAmount",
900
+ "name": "sumInsuredAmount",
911
901
  "type": "uint96"
912
902
  }
913
903
  ],
914
904
  "name": "lockCollateral",
915
- "outputs": [],
916
- "stateMutability": "nonpayable",
917
- "type": "function"
918
- },
919
- {
920
- "inputs": [
921
- {
922
- "internalType": "NftId",
923
- "name": "bundleNftId",
924
- "type": "uint96"
925
- },
905
+ "outputs": [
926
906
  {
927
- "components": [
928
- {
929
- "internalType": "uint256",
930
- "name": "netPremiumAmount",
931
- "type": "uint256"
932
- },
933
- {
934
- "internalType": "uint256",
935
- "name": "fullPremiumAmount",
936
- "type": "uint256"
937
- },
938
- {
939
- "internalType": "uint256",
940
- "name": "premiumAmount",
941
- "type": "uint256"
942
- },
943
- {
944
- "internalType": "uint256",
945
- "name": "productFeeFixAmount",
946
- "type": "uint256"
947
- },
948
- {
949
- "internalType": "uint256",
950
- "name": "poolFeeFixAmount",
951
- "type": "uint256"
952
- },
953
- {
954
- "internalType": "uint256",
955
- "name": "bundleFeeFixAmount",
956
- "type": "uint256"
957
- },
958
- {
959
- "internalType": "uint256",
960
- "name": "distributionFeeFixAmount",
961
- "type": "uint256"
962
- },
963
- {
964
- "internalType": "uint256",
965
- "name": "productFeeVarAmount",
966
- "type": "uint256"
967
- },
968
- {
969
- "internalType": "uint256",
970
- "name": "poolFeeVarAmount",
971
- "type": "uint256"
972
- },
973
- {
974
- "internalType": "uint256",
975
- "name": "bundleFeeVarAmount",
976
- "type": "uint256"
977
- },
978
- {
979
- "internalType": "uint256",
980
- "name": "distributionFeeVarAmount",
981
- "type": "uint256"
982
- },
983
- {
984
- "internalType": "uint256",
985
- "name": "distributionOwnerFeeFixAmount",
986
- "type": "uint256"
987
- },
988
- {
989
- "internalType": "uint256",
990
- "name": "distributionOwnerFeeVarAmount",
991
- "type": "uint256"
992
- },
993
- {
994
- "internalType": "uint256",
995
- "name": "commissionAmount",
996
- "type": "uint256"
997
- },
998
- {
999
- "internalType": "uint256",
1000
- "name": "discountAmount",
1001
- "type": "uint256"
1002
- }
1003
- ],
1004
- "internalType": "struct IPolicy.Premium",
1005
- "name": "premium",
1006
- "type": "tuple"
907
+ "internalType": "Amount",
908
+ "name": "totalCollateralAmount",
909
+ "type": "uint96"
1007
910
  },
1008
911
  {
1009
912
  "internalType": "Amount",
1010
- "name": "actualAmountTransferred",
913
+ "name": "localCollateralAmount",
1011
914
  "type": "uint96"
1012
915
  }
1013
916
  ],
1014
- "name": "processSale",
917
+ "stateMutability": "nonpayable",
918
+ "type": "function"
919
+ },
920
+ {
921
+ "inputs": [
922
+ {
923
+ "internalType": "NftId",
924
+ "name": "policyNftId",
925
+ "type": "uint96"
926
+ },
927
+ {
928
+ "internalType": "ClaimId",
929
+ "name": "claimId",
930
+ "type": "uint16"
931
+ },
932
+ {
933
+ "internalType": "Amount",
934
+ "name": "availableAmount",
935
+ "type": "uint96"
936
+ }
937
+ ],
938
+ "name": "processFundedClaim",
1015
939
  "outputs": [],
1016
940
  "stateMutability": "nonpayable",
1017
941
  "type": "function"
@@ -1023,6 +947,11 @@
1023
947
  "name": "instance",
1024
948
  "type": "address"
1025
949
  },
950
+ {
951
+ "internalType": "address",
952
+ "name": "token",
953
+ "type": "address"
954
+ },
1026
955
  {
1027
956
  "internalType": "NftId",
1028
957
  "name": "policyNftId",
@@ -1060,11 +989,6 @@
1060
989
  "name": "premiumAmount",
1061
990
  "type": "uint96"
1062
991
  },
1063
- {
1064
- "internalType": "Amount",
1065
- "name": "premiumPaidAmount",
1066
- "type": "uint96"
1067
- },
1068
992
  {
1069
993
  "internalType": "Seconds",
1070
994
  "name": "lifetime",
@@ -1126,39 +1050,117 @@
1126
1050
  "type": "uint96"
1127
1051
  }
1128
1052
  ],
1129
- "name": "reduceCollateral",
1053
+ "name": "processPayout",
1130
1054
  "outputs": [],
1131
1055
  "stateMutability": "nonpayable",
1132
1056
  "type": "function"
1133
1057
  },
1134
1058
  {
1135
1059
  "inputs": [
1136
- {
1137
- "internalType": "address",
1138
- "name": "poolAddress",
1139
- "type": "address"
1140
- }
1141
- ],
1142
- "name": "register",
1143
- "outputs": [
1144
1060
  {
1145
1061
  "internalType": "NftId",
1146
- "name": "poolNftId",
1062
+ "name": "bundleNftId",
1147
1063
  "type": "uint96"
1148
- }
1149
- ],
1150
- "stateMutability": "nonpayable",
1151
- "type": "function"
1152
- },
1153
- {
1154
- "inputs": [
1064
+ },
1155
1065
  {
1156
- "internalType": "bytes4",
1157
- "name": "interfaceId",
1158
- "type": "bytes4"
1066
+ "components": [
1067
+ {
1068
+ "internalType": "Amount",
1069
+ "name": "productFeeAmount",
1070
+ "type": "uint96"
1071
+ },
1072
+ {
1073
+ "internalType": "Amount",
1074
+ "name": "distributionFeeAndCommissionAmount",
1075
+ "type": "uint96"
1076
+ },
1077
+ {
1078
+ "internalType": "Amount",
1079
+ "name": "poolPremiumAndFeeAmount",
1080
+ "type": "uint96"
1081
+ },
1082
+ {
1083
+ "internalType": "Amount",
1084
+ "name": "netPremiumAmount",
1085
+ "type": "uint96"
1086
+ },
1087
+ {
1088
+ "internalType": "Amount",
1089
+ "name": "fullPremiumAmount",
1090
+ "type": "uint96"
1091
+ },
1092
+ {
1093
+ "internalType": "Amount",
1094
+ "name": "premiumAmount",
1095
+ "type": "uint96"
1096
+ },
1097
+ {
1098
+ "internalType": "Amount",
1099
+ "name": "productFeeFixAmount",
1100
+ "type": "uint96"
1101
+ },
1102
+ {
1103
+ "internalType": "Amount",
1104
+ "name": "poolFeeFixAmount",
1105
+ "type": "uint96"
1106
+ },
1107
+ {
1108
+ "internalType": "Amount",
1109
+ "name": "bundleFeeFixAmount",
1110
+ "type": "uint96"
1111
+ },
1112
+ {
1113
+ "internalType": "Amount",
1114
+ "name": "distributionFeeFixAmount",
1115
+ "type": "uint96"
1116
+ },
1117
+ {
1118
+ "internalType": "Amount",
1119
+ "name": "productFeeVarAmount",
1120
+ "type": "uint96"
1121
+ },
1122
+ {
1123
+ "internalType": "Amount",
1124
+ "name": "poolFeeVarAmount",
1125
+ "type": "uint96"
1126
+ },
1127
+ {
1128
+ "internalType": "Amount",
1129
+ "name": "bundleFeeVarAmount",
1130
+ "type": "uint96"
1131
+ },
1132
+ {
1133
+ "internalType": "Amount",
1134
+ "name": "distributionFeeVarAmount",
1135
+ "type": "uint96"
1136
+ },
1137
+ {
1138
+ "internalType": "Amount",
1139
+ "name": "distributionOwnerFeeFixAmount",
1140
+ "type": "uint96"
1141
+ },
1142
+ {
1143
+ "internalType": "Amount",
1144
+ "name": "distributionOwnerFeeVarAmount",
1145
+ "type": "uint96"
1146
+ },
1147
+ {
1148
+ "internalType": "Amount",
1149
+ "name": "commissionAmount",
1150
+ "type": "uint96"
1151
+ },
1152
+ {
1153
+ "internalType": "Amount",
1154
+ "name": "discountAmount",
1155
+ "type": "uint96"
1156
+ }
1157
+ ],
1158
+ "internalType": "struct IPolicy.PremiumInfo",
1159
+ "name": "premium",
1160
+ "type": "tuple"
1159
1161
  }
1160
1162
  ],
1161
- "name": "registerInterface",
1163
+ "name": "processSale",
1162
1164
  "outputs": [],
1163
1165
  "stateMutability": "nonpayable",
1164
1166
  "type": "function"
@@ -1170,6 +1172,11 @@
1170
1172
  "name": "instance",
1171
1173
  "type": "address"
1172
1174
  },
1175
+ {
1176
+ "internalType": "address",
1177
+ "name": "token",
1178
+ "type": "address"
1179
+ },
1173
1180
  {
1174
1181
  "internalType": "NftId",
1175
1182
  "name": "policyNftId",
@@ -1207,11 +1214,6 @@
1207
1214
  "name": "premiumAmount",
1208
1215
  "type": "uint96"
1209
1216
  },
1210
- {
1211
- "internalType": "Amount",
1212
- "name": "premiumPaidAmount",
1213
- "type": "uint96"
1214
- },
1215
1217
  {
1216
1218
  "internalType": "Seconds",
1217
1219
  "name": "lifetime",
@@ -1289,12 +1291,12 @@
1289
1291
  {
1290
1292
  "inputs": [
1291
1293
  {
1292
- "internalType": "RoleId",
1293
- "name": "bundleOwnerRole",
1294
- "type": "uint64"
1294
+ "internalType": "Amount",
1295
+ "name": "maxBalanceAmount",
1296
+ "type": "uint96"
1295
1297
  }
1296
1298
  ],
1297
- "name": "setBundleOwnerRole",
1299
+ "name": "setMaxBalanceAmount",
1298
1300
  "outputs": [],
1299
1301
  "stateMutability": "nonpayable",
1300
1302
  "type": "function"
@@ -1302,72 +1304,24 @@
1302
1304
  {
1303
1305
  "inputs": [
1304
1306
  {
1305
- "components": [
1306
- {
1307
- "internalType": "UFixed",
1308
- "name": "fractionalFee",
1309
- "type": "uint256"
1310
- },
1311
- {
1312
- "internalType": "uint256",
1313
- "name": "fixedFee",
1314
- "type": "uint256"
1315
- }
1316
- ],
1317
- "internalType": "struct Fee",
1318
- "name": "poolFee",
1319
- "type": "tuple"
1320
- },
1321
- {
1322
- "components": [
1323
- {
1324
- "internalType": "UFixed",
1325
- "name": "fractionalFee",
1326
- "type": "uint256"
1327
- },
1328
- {
1329
- "internalType": "uint256",
1330
- "name": "fixedFee",
1331
- "type": "uint256"
1332
- }
1333
- ],
1334
- "internalType": "struct Fee",
1335
- "name": "stakingFee",
1336
- "type": "tuple"
1307
+ "internalType": "NftId",
1308
+ "name": "bundleNftId",
1309
+ "type": "uint96"
1337
1310
  },
1338
1311
  {
1339
- "components": [
1340
- {
1341
- "internalType": "UFixed",
1342
- "name": "fractionalFee",
1343
- "type": "uint256"
1344
- },
1345
- {
1346
- "internalType": "uint256",
1347
- "name": "fixedFee",
1348
- "type": "uint256"
1349
- }
1350
- ],
1351
- "internalType": "struct Fee",
1352
- "name": "performanceFee",
1353
- "type": "tuple"
1312
+ "internalType": "Amount",
1313
+ "name": "amount",
1314
+ "type": "uint96"
1354
1315
  }
1355
1316
  ],
1356
- "name": "setFees",
1357
- "outputs": [],
1358
- "stateMutability": "nonpayable",
1359
- "type": "function"
1360
- },
1361
- {
1362
- "inputs": [
1317
+ "name": "stake",
1318
+ "outputs": [
1363
1319
  {
1364
1320
  "internalType": "Amount",
1365
- "name": "maxCapitalAmount",
1321
+ "name": "netAmount",
1366
1322
  "type": "uint96"
1367
1323
  }
1368
1324
  ],
1369
- "name": "setMaxCapitalAmount",
1370
- "outputs": [],
1371
1325
  "stateMutability": "nonpayable",
1372
1326
  "type": "function"
1373
1327
  },
@@ -1390,6 +1344,30 @@
1390
1344
  "stateMutability": "view",
1391
1345
  "type": "function"
1392
1346
  },
1347
+ {
1348
+ "inputs": [
1349
+ {
1350
+ "internalType": "NftId",
1351
+ "name": "bundleNftId",
1352
+ "type": "uint96"
1353
+ },
1354
+ {
1355
+ "internalType": "Amount",
1356
+ "name": "amount",
1357
+ "type": "uint96"
1358
+ }
1359
+ ],
1360
+ "name": "unstake",
1361
+ "outputs": [
1362
+ {
1363
+ "internalType": "Amount",
1364
+ "name": "netAmount",
1365
+ "type": "uint96"
1366
+ }
1367
+ ],
1368
+ "stateMutability": "nonpayable",
1369
+ "type": "function"
1370
+ },
1393
1371
  {
1394
1372
  "inputs": [
1395
1373
  {
@@ -1404,54 +1382,62 @@
1404
1382
  "type": "function"
1405
1383
  }
1406
1384
  ],
1407
- "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b615ee380620000e66000396000f3fe60806040523480156200001157600080fd5b5060043610620002315760003560e01c80637738eb861162000131578063a8de511711620000bb578063caf4e3d41162000086578063caf4e3d4146200052b578063cc9fc59a1462000535578063d0d63b09146200053f578063f7c34ee01462000556578063fce06ca8146200056d57600080fd5b8063a8de511714620004e3578063ada9652e14620004fa578063b68d18091462000511578063bf7e214f146200052157600080fd5b80638e32e97911620000fc5780638e32e979146200047a5780638fb360371462000491578063991cbfb314620004b5578063a3c2605214620004cc57600080fd5b80637738eb86146200042b5780637a9e5e4b1462000442578063826787661462000459578063893d20e8146200047057600080fd5b806336fc697e11620001bf57806349bb9e4b116200018a57806349bb9e4b14620003a35780635ab1bd5314620003ba578063644c45e014620003e0578063673ad94f1462000400578063675393bf146200041457600080fd5b806336fc697e146200033b5780633cc70e3e146200034557806340be2376146200035c5780634420e486146200038c57600080fd5b80631eff4b2211620002005780631eff4b2214620002bf578063214cdb8014620002f657806327bb7a33146200030d578063329d6e74146200032457600080fd5b806301ffc9a714620002365780630d8e6e2c146200027b5780630fec111c146200029a578063138461e014620002b3575b600080fd5b6200026662000247366004620040b4565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6200028562000584565b60405162ffffff909116815260200162000272565b620002a462000611565b60405162000272919062004134565b620002bd6200073e565b005b620002e77f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b60405190815260200162000272565b620002bd62000307366004620040b4565b62000749565b620002bd6200031e366004620043f7565b62000778565b620002bd620003353660046200449d565b62000823565b620002bd6200097b565b620002bd62000356366004620046c3565b620009c3565b620003736200036d36600462004758565b62000dd8565b6040516001600160601b03909116815260200162000272565b620003736200039d36600462004758565b62000e2c565b620002bd620003b436600462004778565b620013ca565b6001546001600160a01b03165b6040516001600160a01b03909116815260200162000272565b60008051602062005e4e833981519152546001600160601b031662000373565b620002bd62000411366004620047cd565b50565b620002bd6200042536600462004758565b620014d2565b620003736200043c36600462004820565b620015ea565b620002bd6200045336600462004758565b6200185c565b620002bd6200046a366004620048e7565b620018e7565b620003c762001b18565b620002bd6200048b36600462004934565b62001c57565b6200049b62001eab565b6040516001600160e01b0319909116815260200162000272565b620002bd620004c636600462004986565b62001ee6565b620002bd620004dd36600462004a9b565b62002692565b620002bd620004f436600462004abb565b62002954565b620002e760008051602062005e4e83398151915281565b604051608c815260200162000272565b620003c762002a55565b620003c762002a72565b620003c762002a80565b620002bd62000550366004620047cd565b62002a8e565b620002bd6200056736600462004b24565b62002bc4565b620002bd6200057e36600462004b62565b62002c43565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af4158015620005e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200060c919062004be0565b905090565b6200061b62004068565b6040805160e081018252600081527f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b038116602084015260ff600160601b8204811694840194909452600160681b90049092161515606082015230608082015260a081016200069262001b18565b6001600160a01b03168152602001826001018054620006b19062004c07565b80601f0160208091040260200160405190810160405280929190818152602001828054620006df9062004c07565b8015620007305780601f10620007045761010080835404028352916020019162000730565b820191906000526020600020905b8154815290600101906020018083116200071257829003601f168201915b505050505081525091505090565b620004113062002cb9565b6200075362002ec8565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b6200078262002ec8565b6200078e828762002bc4565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30162000819838262004c8d565b5050505050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c6200084762000584565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af415801562000888573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008ae919062004d66565b60008051602062005e8e8339815191528054600160401b900460ff1680620008e3575080546001600160401b03808416911610155b15620009025760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556200092e8362002f03565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a1505050565b6200098562002ec8565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b620009d2335b60003662002f0d565b6000856001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a13573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a39919062004d86565b60405163242bdc1960e21b81526001600160601b03871660048201529091506000906001600160a01b038316906390af70649060240161014060405180830381865afa15801562000a8e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ab4919062004e00565b606001516020850151604051634793b4ab60e01b81526001600160601b0382166004820152919250906000906001600160a01b03851690634793b4ab90602401600060405180830381865afa15801562000b12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000b3c919081019062004f14565b905062000b4e81600001518462003026565b1562000b88578051604051630a49ea2360e01b81526001600160601b03918216600482015290841660248201526044015b60405180910390fd5b60405163f0ea17c360e01b81526001600160601b03841660048201526000906001600160a01b0386169063f0ea17c390602401600060405180830381865afa15801562000bd9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000c03919081019062005028565b905060008160c0015180602001905181019062000c21919062005122565b608089015160025460405163377a6db760e01b81526001600160a01b038f811660048301526001600160601b03808f166024840152808a16604484015280851660648401528c16608483015293945091928a9291169063377a6db79060a401600060405180830381600087803b15801562000c9b57600080fd5b505af115801562000cb0573d6000803e3d6000fd5b505050508260e001511562000dc957600062000cd46001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b038a1660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa15801562000d24573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000d4e91908101906200523c565b608001519050806001600160a01b0316639e2177a78d8d61010001518a8a60400151886040518663ffffffff1660e01b815260040162000d93959493929190620052ed565b600060405180830381600087803b15801562000dae57600080fd5b505af115801562000dc3573d6000803e3d6000fd5b50505050505b50505050505050505050505050565b600062000de462001b18565b6001600160a01b0316336001600160a01b03161462000e195760405163086391f760e31b815233600482015260240162000b7f565b62000e248262002cb9565b90505b919050565b60008080808062000e4986608c62000e436200303d565b620030b7565b9296509094509250905085600062000e6062002a72565b604051637286e5e560e01b81526001600160a01b03848116600483015287811660248301529190911690637286e5e5906044016000604051808303816000875af115801562000eb3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000edd91908101906200523c565b9050816001600160a01b031663138461e06040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000f1b57600080fd5b505af115801562000f30573d6000803e3d6000fd5b50505050806000015196506000826001600160a01b03166390edbd356040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000f7c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000fa6919081019062005028565b9050806020015160405162000fbb90620040a6565b6001600160a01b039091168152602001604051809103906000f08015801562000fe8573d6000803e3d6000fd5b5081604001906001600160a01b031690816001600160a01b031681525050846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001045573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200106b919062004d86565b6001600160a01b031663d5c9d77d89836040518363ffffffff1660e01b81526004016200109a929190620053d0565b600060405180830381600087803b158015620010b557600080fd5b505af1158015620010ca573d6000803e3d6000fd5b506000925060029150620010db9050565b6040519080825280602002602001820160405280156200111057816020015b6060815260200190600190039081620010fa5790505b50604080516001808252818301909252919250602080830190803683370190505081600081518110620011475762001147620053f4565b6020908102919091010152604080516001808252818301909252908160200160208202803683370190505081600181518110620011885762001188620053f4565b6020026020010181905250638267876660e01b81600081518110620011b157620011b1620053f4565b6020026020010151600081518110620011ce57620011ce620053f4565b6001600160e01b0319909216602092830291909101909101528051639e2177a760e01b9082906001908110620012085762001208620053f4565b6020026020010151600081518110620012255762001225620053f4565b6001600160e01b03199290921660209283029190910182015260408051600280825260608201835260009391929091830190803683370190505090506200126b6200303d565b81600081518110620012815762001281620053f4565b60200260200101906001600160401b031690816001600160401b031681525050620012ab620033bf565b81600181518110620012c157620012c1620053f4565b60200260200101906001600160401b031690816001600160401b031681525050620012eb62002a80565b6001600160a01b0316636c6fbb28878d886001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200133a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200136491908101906200540a565b86866040518663ffffffff1660e01b81526004016200138895949392919062005488565b600060405180830381600087803b158015620013a357600080fd5b505af1158015620013b8573d6000803e3d6000fd5b50505050505050505050505050919050565b60008051602062005e8e8339815191528054600160401b810460ff1615906001600160401b0316600081158015620013ff5750825b90506000826001600160401b031660011480156200141c5750303b155b9050811580156200142b575080155b156200144a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156200147557845460ff60401b1916600160401b1785555b620014818787620033fc565b8315620014c957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b620014dc62002ec8565b806001600160a01b03163b600003620015145760405163fdeac91f60e01b81526001600160a01b038216600482015260240162000b7f565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b81526312da491160e01b60048201526301ffc9a790602401602060405180830381865afa92505050801562001591575060408051601f3d908101601f191682019092526200158e9181019062005564565b60015b620015bb5760405163fdeac91f60e01b81526001600160a01b038216600482015260240162000b7f565b80620015e65760405163fdeac91f60e01b81526001600160a01b038316600482015260240162000b7f565b5050565b60008080620015fa608c6200364f565b92505091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001640573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001666919062004d86565b60405163f0ea17c360e01b81526001600160601b03851660048201529091506000906001600160a01b0383169063f0ea17c390602401600060405180830381865afa158015620016ba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620016e4919081019062005028565b90506000620016f4828b62003801565b9050600260009054906101000a90046001600160a01b03166001600160a01b031663e283b4a985878f8f868f8f8f6040518963ffffffff1660e01b815260040162001747989796959493929190620055ad565b6020604051808303816000875af115801562001767573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200178d91906200562b565b95506200179c828d8c6200394e565b7f0dcadf661b8b2888423f78a848a77785b4dc0138395b12584835f6a65dfcea79846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620017fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200182291906200562b565b604080516001600160601b03928316815282891660208201529189169082015260600160405180910390a150505050509695505050505050565b336200186762002a55565b6001600160a01b0316816001600160a01b031614620018a45760405162d1953b60e31b81526001600160a01b038216600482015260240162000b7f565b816001600160a01b03163b600003620018dc576040516361798f2f60e11b81526001600160a01b038316600482015260240162000b7f565b620015e68262003a5c565b600080620018f6608c6200364f565b92505091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200193c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001962919062004d86565b60405163f0ea17c360e01b81526001600160601b03851660048201529091506000906001600160a01b0383169063f0ea17c390602401600060405180830381865afa158015620019b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019e0919081019062005028565b905060008160c00151806020019051810190620019fe919062005122565b61014081018990526101608101889052610180810187905260405190915062001a2c9082906020016200564b565b6040516020818303038152906040528260c00181905250836001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001a82573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001aa8919062004d86565b6001600160a01b031663a4eeee59868460ff6040518463ffffffff1660e01b815260040162001ada939291906200577a565b600060405180830381600087803b15801562001af557600080fd5b505af115801562001b0a573d6000803e3d6000fd5b505050505050505050505050565b60008060008051602062005e4e83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801562001b8a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bb0919062005564565b1562001c41576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa15801562001c15573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c3b919062004d86565b91505090565b54600160601b90046001600160a01b0316919050565b62001c6162002ec8565b62001ce683846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001ca5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ccb91906200562b565b603c6000856040518060200160405280600081525062000778565b6001600160a01b0382161562001d075762001d018262003abe565b62001e82565b600062001d1c6001546001600160a01b031690565b6001600160a01b031663d39e60436028604051632392b61b60e21b81526003600482015273__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af415801562001d7d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001da39190620057b1565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa15801562001de9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e0f919062004d86565b905062001e80816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001e54573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e7a919062004d86565b62003abe565b505b62001e94634a531f3360e01b62000749565b62001ea663b68d180960e01b62000749565b505050565b60008051602062005e6e833981519152805460009190600160a01b900460ff1662001ed857600062001c3b565b638fb3603760e01b91505090565b62001ef133620009c9565b600062001f066001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03861660048201529091506000906001600160a01b0383169063a48f42e090602401600060405180830381865afa15801562001f5a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f8491908101906200523c565b60208101516040516305247a1760e51b81526001600160601b0390911660048201529091506000906001600160a01b0384169063a48f42e090602401600060405180830381865afa15801562001fde573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200200891908101906200523c565b60208101516040516305247a1760e51b81526001600160601b0390911660048201529091506000906001600160a01b0385169063a48f42e090602401600060405180830381865afa15801562002062573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200208c91908101906200523c565b9050600081608001519050600073__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd968961010001518a60800151620020ca9190620057d1565b6040518263ffffffff1660e01b8152600401620020e991815260200190565b602060405180830381865af415801562002107573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200212d91906200562b565b9050600073__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd968a61012001518b60a00151620021629190620057d1565b6040518263ffffffff1660e01b81526004016200218191815260200190565b602060405180830381865af41580156200219f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021c591906200562b565b90506000620022616200225a73__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd968d600001516040518263ffffffff1660e01b81526004016200220f91815260200190565b602060405180830381865af41580156200222d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200225391906200562b565b8562003ad3565b8362003ad3565b90506200226f898262003b65565b620022a157604051639080fd1360e01b81526001600160601b0380831660048301528a16602482015260440162000b7f565b6040516330b8415f60e01b81526001600160601b038416600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af4158015620022fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002320919062005564565b1562002587576000846001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002367573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200238d919062004d86565b875160405163f0ea17c360e01b81526001600160601b0390911660048201526001600160a01b03919091169063f0ea17c390602401600060405180830381865afa158015620023e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200240a919081019062005028565b60a081015160405163274acb3560e01b81526001600160601b039182166004820152908616602482015290915073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb3590604401602060405180830381865af415801562002474573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200249a91906200562b565b6001600160601b031660a082015260408051631a99b41b60e31b815290516001600160a01b0387169163d4cda0d89160048083019260209291908290030181865afa158015620024ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002514919062004d86565b6001600160a01b031663a4eeee598860000151836200253160ff90565b6040518463ffffffff1660e01b815260040162002551939291906200577a565b600060405180830381600087803b1580156200256c57600080fd5b505af115801562002581573d6000803e3d6000fd5b50505050505b6040516330b8415f60e01b81526001600160601b038316600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af4158015620025e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002606919062005564565b156200268557600254604051632dd597e760e21b81526001600160a01b0386811660048301526001600160601b03808f166024840152851660448301529091169063b7565f9c90606401600060405180830381600087803b1580156200266b57600080fd5b505af115801562002680573d6000803e3d6000fd5b505050505b5050505050505050505050565b600080620026a1608c6200364f565b92505091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015620026e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200270d919062004d86565b60405163f0ea17c360e01b81526001600160601b03851660048201529091506000906001600160a01b0383169063f0ea17c390602401600060405180830381865afa15801562002761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200278b919081019062005028565b905060008160c00151806020019051810190620027a9919062005122565b9050620027d08160200151620027be62003bef565b6001600160401b039081169116141590565b15620027fb5760405163eff765ff60e01b81526001600160601b038616600482015260240162000b7f565b6001600160401b0386166020808301919091526040516200281f918391016200564b565b6040516020818303038152906040528260c00181905250836001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002875573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200289b919062004d86565b6001600160a01b031663a4eeee59868460ff6040518463ffffffff1660e01b8152600401620028cd939291906200577a565b600060405180830381600087803b158015620028e857600080fd5b505af1158015620028fd573d6000803e3d6000fd5b5050604080516001600160601b03891681526001600160401b038a1660208201527fe7e6a7a42cbdb2d274dfaaac06073a09d6095ca3745ce71fe5a137f8247ea23e935001905060405180910390a1505050505050565b6200295f33620009c9565b600254602082015160808301516101808401516001600160a01b039093169263ad328d9f928792879262002994919062003c31565b6040518563ffffffff1660e01b8152600401620029b59493929190620057f3565b600060405180830381600087803b158015620029d057600080fd5b505af1158015620029e5573d6000803e3d6000fd5b50506002546040516301d90a6f60e61b81526001600160a01b0387811660048301526001600160601b038716602483015290911692506376429bc09150604401600060405180830381600087803b15801562002a4057600080fd5b505af1158015620014c9573d6000803e3d6000fd5b60008051602062005e6e833981519152546001600160a01b031690565b60006200060c602862003c7d565b60006200060c604662003c7d565b60008062002a9d608c6200364f565b600254604051632aa6b2cb60e21b81526001600160a01b0380841660048301526001600160601b0389166024830152949650919450929092169163aa9acb2c9150604401600060405180830381600087803b15801562002afc57600080fd5b505af115801562002b11573d6000803e3d6000fd5b505050507f64c75a4392ba38fee1b5a44b61e3dd0cae424d2d43eb2b0c99772efe31e1c042816001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002b75573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b9b91906200562b565b604080516001600160601b0392831681528286166020820152918616908201526060016200096e565b62002bce62002ec8565b62002bd981620014d2565b62002be36200097b565b6001600160a01b03821662002c0b5760405163f17ef42d60e01b815260040160405180910390fd5b5060008051602062005e4e83398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b62002c4e33620009c9565b600254602083015160405163ad328d9f60e01b81526001600160a01b039092169163ad328d9f9162002c8991889188918790600401620057f3565b600060405180830381600087803b15801562002ca457600080fd5b505af115801562000819573d6000803e3d6000fd5b60008060008051602062005e4e83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801562002d2b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d51919062005564565b1562002d7f5780546040516301ab8b6760e21b81526001600160601b03909116600482015260240162000b7f565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa15801562002dd4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002dfa919062005564565b62002e245760405163b9304b0d60e01b81526001600160a01b038416600482015260240162000b7f565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038581166004830152919091169063d272ac1e90602401602060405180830381865afa15801562002e79573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e9f91906200562b565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b60008051602062005e8e83398151915254600160401b900460ff1662002f0157604051631afcd79f60e31b815260040160405180910390fd5b565b6200023162002ec8565b60008051602062005e6e83398151915260008062002f5162002f2e62002a55565b873062002f40600460008a8c62005825565b62002f4b9162005851565b62003d93565b91509150816200301e5763ffffffff81161562002ffa57825460ff60a01b1916600160a01b17835562002f8362002a55565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b815260040162002fb49392919062005882565b600060405180830381600087803b15801562002fcf57600080fd5b505af115801562002fe4573d6000803e3d6000fd5b5050845460ff60a01b19168555506200301e9050565b60405162d1953b60e31b81526001600160a01b038716600482015260240162000b7f565b505050505050565b6001600160601b0382811690821614155b92915050565b6040516368aebf7b60e01b815260048082015260009073__$1d92393fa9ccd763988368ce8a1cb90d26$__906368aebf7b906024015b602060405180830381865af415801562003091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200060c919062004d66565b6040516301ffc9a760e01b815263bcb0007960e01b60048201528390339060009081906001600160a01b038516906301ffc9a790602401602060405180830381865afa1580156200310c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003132919062005564565b6200315c576040516359bff0e360e11b81526001600160a01b038816600482015260240162000b7f565b6000846001600160a01b0316630fec111c6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200319d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620031c791908101906200523c565b9050620031df81604001518860ff9081169116141590565b1562003221576040808201519051634a2e948760e11b81526001600160a01b038a16600482015260ff808a166024830152909116604482015260640162000b7f565b60a08101516001600160a01b0385811690821614620032755760a0820151604051632b50a20960e21b81526001600160a01b03808c1660048301529182166024820152908616604482015260640162000b7f565b81602001519250620032878362003eab565b9350836001600160a01b031663311adb686040518163ffffffff1660e01b8152600401602060405180830381865afa158015620032c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032ee919062004d86565b6040516368fc2b7760e11b81526001600160401b03891660048201526001600160a01b038781166024830152919091169063d1f856ee90604401602060405180830381865afa15801562003346573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200336c919062005564565b620033b457604051636af540d960e01b81526001600160601b03841660048201526001600160401b03881660248201526001600160a01b038616604482015260640162000b7f565b505093509350935093565b6040516368aebf7b60e01b815261096a600482015260009073__$1d92393fa9ccd763988368ce8a1cb90d26$__906368aebf7b9060240162003073565b60008051602062005e8e8339815191528054600160401b810460ff1615906001600160401b0316600081158015620034315750825b90506000826001600160401b031660011480156200344e5750303b155b9050811580156200345d575080155b156200347c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315620034a757845460ff60401b1916600160401b1785555b60008087806020019051810190620034c09190620058a9565b9250509150620034d282828b62001c57565b6001546001600160a01b031663d39e604360dc620034ef62000584565b60405163c9e66e2960e01b815262ffffff909116600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__9063c9e66e2990602401602060405180830381865af415801562003545573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200356b9190620057b1565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015620035b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035d7919062004d86565b600280546001600160a01b0319166001600160a01b039290921691909117905562003609630152d21960e61b62000749565b50508315620014c957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001620014c0565b60006200365b62004068565b6000620036706001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa158015620036b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036dd91906200562b565b9250620036eb838562003f44565b8092508193505050806001600160a01b031663311adb686040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003732573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003758919062004d86565b6080830151604051629b7b3560e61b81526001600160a01b0391821660048201529116906326decd4090602401602060405180830381865afa158015620037a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037c9919062005564565b15620037fa57608082015160405163d53987e560e01b81526001600160a01b03909116600482015260240162000b7f565b9193909250565b600081905060008360c0015180602001905181019062003822919062005122565b61016001516040516305deb8b760e01b815290915073__$58e11c6004c5796aaa8c56e718245e69a2$__906305deb8b79062003863908490600401620058f2565b602060405180830381865af415801562003881573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620038a7919062005564565b156200394757604051634f69237560e11b815281516004820152602082015160248201526001600160601b0384166044820152600090819073__$58e11c6004c5796aaa8c56e718245e69a2$__90639ed246ea906064016040805180830381865af41580156200391b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200394191906200590a565b94505050505b5092915050565b604083810151606085015191516330b8415f60e01b81526001600160601b038416600482015290919073__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af4158015620039b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039da919062005564565b1562003a555760405163c661667d60e01b81526001600160a01b03858116600483015282811660248301526001600160601b038516604483015283169063c661667d90606401600060405180830381600087803b15801562003a3b57600080fd5b505af115801562003a50573d6000803e3d6000fd5b505050505b5050505050565b60008051602062005e6e83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b62003ac862002ec8565b620004118162004053565b60405163274acb3560e01b81526001600160601b0380841660048301528216602482015260009073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb35906044015b602060405180830381865af415801562003b38573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b5e91906200562b565b9392505050565b60405163c4cade9d60e01b81526001600160601b0380841660048301528216602482015260009073__$3bac17678db7ae928afa209f2f44deec9c$__9063c4cade9d90604401602060405180830381865af415801562003bc9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b5e919062005564565b6040516368aebf7b60e01b81526001600160401b03600482015260009073__$1d92393fa9ccd763988368ce8a1cb90d26$__906368aebf7b9060240162003073565b6040516363cf551160e11b81526001600160601b0380841660048301528216602482015260009073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa229060440162003b1a565b600062003c926001546001600160a01b031690565b6001600160a01b031663d39e60438362003cab62000584565b60405163c9e66e2960e01b815262ffffff909116600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__9063c9e66e2990602401602060405180830381865af415801562003d01573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003d279190620057b1565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa15801562003d6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e24919062004d86565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b1790525162003e0491906200593e565b600060405180830381855afa9150503d806000811462003e41576040519150601f19603f3d011682016040523d82523d6000602084013e62003e46565b606091505b5091509150811562003ea057604081511062003e7d578080602001905181019062003e7291906200595c565b909450925062003ea0565b602081511062003ea0578080602001905181019062003e9d919062005564565b93505b505094509492505050565b600062003ec06001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa15801562003f10573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003f3a91908101906200523c565b6080015192915050565b62003f4e62004068565b600062003f636001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03861660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa15801562003fb3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003fdd91908101906200523c565b915062003ff582604001518460ff9081169116141590565b156200403b57608082015160408084015190516304081d4960e41b81526001600160a01b03909216600483015260ff808616602484015216604482015260640162000b7f565b6200404a826020015162003eab565b90509250929050565b6200405d62002ec8565b620004118162003a5c565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b6104b5806200599983390190565b600060208284031215620040c757600080fd5b81356001600160e01b03198116811462003b5e57600080fd5b60005b83811015620040fd578181015183820152602001620040e3565b50506000910152565b6000815180845262004120816020860160208601620040e0565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a08301516200419e60c08401826001600160a01b03169052565b5060c083015160e080840152620041ba61010084018262004106565b949350505050565b6001600160a01b03811681146200041157600080fd5b6001600160601b03811681146200041157600080fd5b803562000e2781620041d8565b60ff811681146200041157600080fd5b80151581146200041157600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161022081016001600160401b03811182821017156200425657620042566200421a565b60405290565b604080519081016001600160401b03811182821017156200425657620042566200421a565b6040516101e081016001600160401b03811182821017156200425657620042566200421a565b60405161010081016001600160401b03811182821017156200425657620042566200421a565b60405161012081016001600160401b03811182821017156200425657620042566200421a565b60405160e081016001600160401b03811182821017156200425657620042566200421a565b6040516101a081016001600160401b03811182821017156200425657620042566200421a565b604051601f8201601f191681016001600160401b03811182821017156200436957620043696200421a565b604052919050565b60006001600160401b038211156200438d576200438d6200421a565b50601f01601f191660200190565b600082601f830112620043ad57600080fd5b8135620043c4620043be8262004371565b6200433e565b818152846020838601011115620043da57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c087890312156200441157600080fd5b86356200441e81620041c2565b955060208701356200443081620041d8565b945060408701356200444281620041fb565b9350606087013562004454816200420b565b925060808701356200446681620041c2565b915060a08701356001600160401b038111156200448257600080fd5b6200449089828a016200439b565b9150509295509295509295565b600060208284031215620044b057600080fd5b81356001600160401b03811115620044c757600080fd5b620041ba848285016200439b565b80356001600160c01b03198116811462000e2757600080fd5b64ffffffffff811681146200041157600080fd5b803562000e2781620044ee565b803561ffff8116811462000e2757600080fd5b600061022082840312156200453657600080fd5b6200454062004230565b90506200454d82620041ee565b81526200455d60208301620041ee565b60208201526200457060408301620044d5565b60408201526200458360608301620044d5565b60608201526200459660808301620041ee565b6080820152620045a960a08301620041ee565b60a0820152620045bc60c08301620041ee565b60c0820152620045cf60e0830162004502565b60e0820152610100808301356001600160401b0380821115620045f157600080fd5b620045ff868387016200439b565b838501526101209250828501359150808211156200461c57600080fd5b506200462b858286016200439b565b828401525050610140620046418184016200450f565b90820152610160620046558382016200450f565b9082015261018062004669838201620041ee565b908201526101a06200467d838201620041ee565b908201526101c06200469183820162004502565b908201526101e0620046a583820162004502565b90820152610200620046b983820162004502565b9082015292915050565b600080600080600060a08688031215620046dc57600080fd5b8535620046e981620041c2565b94506020860135620046fb81620041d8565b935060408601356200470d81620041d8565b925060608601356001600160401b038111156200472957600080fd5b620047378882890162004522565b92505060808601356200474a81620041d8565b809150509295509295909350565b6000602082840312156200476b57600080fd5b813562003b5e81620041c2565b600080604083850312156200478c57600080fd5b82356200479981620041c2565b915060208301356001600160401b03811115620047b557600080fd5b620047c3858286016200439b565b9150509250929050565b600060208284031215620047e057600080fd5b813562003b5e81620041d8565b6000604082840312156200480057600080fd5b6200480a6200425c565b9050813581526020820135602082015292915050565b60008060008060008060c087890312156200483a57600080fd5b86356200484781620041c2565b9550620048588860208901620047ed565b945060608701356200486a81620041d8565b935060808701356200487c81620044ee565b925060a08701356001600160401b03808211156200489957600080fd5b818901915089601f830112620048ae57600080fd5b813581811115620048be57600080fd5b8a6020828501011115620048d157600080fd5b6020830194508093505050509295509295509295565b600080600060c08486031215620048fd57600080fd5b620049098585620047ed565b92506200491a8560408601620047ed565b91506200492b8560808601620047ed565b90509250925092565b6000806000606084860312156200494a57600080fd5b83356200495781620041c2565b925060208401356200496981620041c2565b915060408401356200497b81620041c2565b809150509250925092565b60008060008385036102208112156200499e57600080fd5b8435620049ab81620041d8565b93506101e0601f198201811315620049c257600080fd5b620049cc62004281565b91506020860135825260408601356020830152606086013560408301526080860135606083015260a0860135608083015260c086013560a083015260e086013560c08301526101008087013560e084015261012080880135828501526101409150818801358185015250610160808801358285015261018091508188013581850152506101a080880135828501526101c0915081880135818501525081870135818401525050809250506200492b6102008501620041ee565b6001600160401b03811681146200041157600080fd5b60006020828403121562004aae57600080fd5b813562003b5e8162004a85565b60008060006060848603121562004ad157600080fd5b833562004ade81620041c2565b9250602084013562004af081620041d8565b915060408401356001600160401b0381111562004b0c57600080fd5b62004b1a8682870162004522565b9150509250925092565b6000806040838503121562004b3857600080fd5b823562004b4581620041c2565b9150602083013562004b5781620041c2565b809150509250929050565b6000806000806080858703121562004b7957600080fd5b843562004b8681620041c2565b9350602085013562004b9881620041d8565b925060408501356001600160401b0381111562004bb457600080fd5b62004bc28782880162004522565b925050606085013562004bd581620041d8565b939692955090935050565b60006020828403121562004bf357600080fd5b815162ffffff8116811462003b5e57600080fd5b600181811c9082168062004c1c57607f821691505b60208210810362004c3d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562001ea657600081815260208120601f850160051c8101602086101562004c6c5750805b601f850160051c820191505b818110156200301e5782815560010162004c78565b81516001600160401b0381111562004ca95762004ca96200421a565b62004cc18162004cba845462004c07565b8462004c43565b602080601f83116001811462004cf9576000841562004ce05750858301515b600019600386901b1c1916600185901b1785556200301e565b600085815260208120601f198616915b8281101562004d2a5788860151825594840194600190910190840162004d09565b508582101562004d495787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b805162000e278162004a85565b60006020828403121562004d7957600080fd5b815162003b5e8162004a85565b60006020828403121562004d9957600080fd5b815162003b5e81620041c2565b805162000e2781620041c2565b805162000e2781620041d8565b60006040828403121562004dd357600080fd5b62004ddd6200425c565b9050815181526020820151602082015292915050565b805162000e27816200420b565b6000610140828403121562004e1457600080fd5b62004e1e620042a7565b62004e298362004da6565b815262004e396020840162004da6565b602082015262004e4c6040840162004db3565b604082015262004e5f6060840162004db3565b606082015262004e73846080850162004dc0565b608082015262004e878460c0850162004dc0565b60a082015262004e9b610100840162004df3565b60c082015262004eaf610120840162004da6565b60e08201529392505050565b600082601f83011262004ecd57600080fd5b815162004ede620043be8262004371565b81815284602083860101111562004ef457600080fd5b620041ba826020830160208701620040e0565b805162000e2781620044ee565b60006020828403121562004f2757600080fd5b81516001600160401b038082111562004f3f57600080fd5b90830190610140828603121562004f5557600080fd5b62004f5f620042cd565b62004f6a8362004db3565b815262004f7b866020850162004dc0565b602082015260608301518281111562004f9357600080fd5b62004fa18782860162004ebb565b60408301525062004fb56080840162004db3565b606082015262004fc860a0840162004db3565b608082015262004fdb60c0840162004db3565b60a082015262004fee60e0840162004f07565b60c082015261010091506200500582840162004f07565b60e082015262005019610120840162004f07565b91810191909152949350505050565b6000602082840312156200503b57600080fd5b81516001600160401b03808211156200505357600080fd5b9083019060e082860312156200506857600080fd5b62005072620042f3565b8251828111156200508257600080fd5b620050908782860162004ebb565b825250620050a16020840162004da6565b6020820152620050b46040840162004da6565b6040820152620050c76060840162004da6565b6060820152620050da6080840162004db3565b6080820152620050ed60a0840162004db3565b60a082015260c0830151828111156200510557600080fd5b620051138782860162004ebb565b60c08301525095945050505050565b600061020082840312156200513657600080fd5b6200514062004318565b6200514b8362004db3565b81526200515b6020840162004d59565b60208201526200516e6040840162004db3565b6040820152620051816060840162004db3565b6060820152620051946080840162004db3565b6080820152620051a760a0840162004df3565b60a0820152620051ba60c0840162004df3565b60c0820152620051cd60e0840162004df3565b60e082015261010083810151908201526101208084015190820152610140620051f98582860162004dc0565b908201526101806200520e8585830162004dc0565b61016083015262005224856101c0860162004dc0565b908201529392505050565b805162000e2781620041fb565b6000602082840312156200524f57600080fd5b81516001600160401b03808211156200526757600080fd5b9083019060e082860312156200527c57600080fd5b62005286620042f3565b620052918362004db3565b8152620052a16020840162004db3565b6020820152620052b4604084016200522f565b6040820152620052c76060840162004df3565b6060820152620052da6080840162004da6565b6080820152620050ed60a0840162004da6565b60006001600160601b03808816835260a060208401526200531260a084018862004106565b818716604085015283810360608501526200532e818762004106565b9250508084166080840152509695505050505050565b6000815160e084526200535b60e085018262004106565b9050602083015160018060a01b038082166020870152806040860151166040870152806060860151166060870152505060808301516001600160601b0380821660808701528060a08601511660a0870152505060c083015184820360c0860152620053c7828262004106565b95945050505050565b6001600160601b0383168152604060208201526000620041ba604083018462005344565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156200541d57600080fd5b81516001600160401b038111156200543457600080fd5b620041ba8482850162004ebb565b600081518084526020808501945080840160005b838110156200547d5781516001600160401b03168752958201959082019060010162005456565b509495945050505050565b6001600160601b03861681526000602060018060a01b0387168184015260a06040840152620054bb60a084018762004106565b8381036060850152855180825282820190600581901b830184018489016000805b848110156200553d57868403601f19018652825180518086529089019089860190845b81811015620055275783516001600160e01b0319168352928b0192918b0191600101620054ff565b50509689019694505091870191600101620054dc565b505050868103608088015262005554818962005442565b9c9b505050505050505050505050565b6000602082840312156200557757600080fd5b815162003b5e816200420b565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0389811682526001600160601b038981166020840152888216604084015260009161010091620055f1606086018b80518252602090810151910152565b881660a08501525064ffffffffff861660c084015260e083018190526200561c818401858762005584565b9b9a5050505050505050505050565b6000602082840312156200563e57600080fd5b815162003b5e81620041d8565b81516001600160601b03168152610200810160208301516200567860208401826001600160401b03169052565b5060408301516200569460408401826001600160601b03169052565b506060830151620056b060608401826001600160601b03169052565b506080830151620056cc60808401826001600160601b03169052565b5060a0830151620056e160a084018215159052565b5060c0830151620056f660c084018215159052565b5060e08301516200570b60e084018215159052565b506101008381015190830152610120808401519083015261014080840151805182850152602081015161016085015250506101608301516101806200575c8185018380518252602090810151910152565b84015180516101c085015260208101516101e0850152905062003947565b6001600160601b03841681526060602082015260006200579e606083018562005344565b905060ff83166040830152949350505050565b600060208284031215620057c457600080fd5b815162003b5e81620041fb565b808201808211156200303757634e487b7160e01b600052601160045260246000fd5b6001600160a01b039490941684526001600160601b039283166020850152908216604084015216606082015260800190565b600080858511156200583657600080fd5b838611156200584457600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156200587a5780818660040360031b1b83161692505b505092915050565b6001600160a01b0384168152604060208201819052600090620053c7908301848662005584565b600080600060608486031215620058bf57600080fd5b8351620058cc81620041c2565b6020850151909350620058df81620041c2565b60408501519092506200497b81620041c2565b81518152602080830151908201526040810162003037565b600080604083850312156200591e57600080fd5b82516200592b81620041d8565b602084015190925062004b5781620041d8565b6000825162005952818460208701620040e0565b9190910192915050565b600080604083850312156200597057600080fd5b82516200597d816200420b565b602084015190925063ffffffff8116811462004b5757600080fdfe608060405234801561001057600080fd5b506040516104b53803806104b583398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610422806100936000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806321df0da71461003b578063c661667d1461005a575b600080fd5b600054604080516001600160a01b039092168252519081900360200190f35b61006d61006836600461032a565b61006f565b005b60005460405163046e44af60e11b81526bffffffffffffffffffffffff8316600482015261010a916001600160a01b0316908590859073__$3bac17678db7ae928afa209f2f44deec9c$__906308dc895e90602401602060405180830381865af41580156100e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101059190610382565b61010f565b505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261016990859061016f565b50505050565b60006101846001600160a01b038416836101d7565b905080516000141580156101a95750808060200190518101906101a7919061039b565b155b1561010a57604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b60606101e5838360006101ec565b9392505050565b6060814710156102115760405163cd78605960e01b81523060048201526024016101ce565b600080856001600160a01b0316848660405161022d91906103bd565b60006040518083038185875af1925050503d806000811461026a576040519150601f19603f3d011682016040523d82523d6000602084013e61026f565b606091505b509150915061027f868383610289565b9695505050505050565b60608261029e57610299826102e5565b6101e5565b81511580156102b557506001600160a01b0384163b155b156102de57604051639996b31560e01b81526001600160a01b03851660048201526024016101ce565b50806101e5565b8051156102f55780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b038116811461032557600080fd5b919050565b60008060006060848603121561033f57600080fd5b6103488461030e565b92506103566020850161030e565b915060408401356bffffffffffffffffffffffff8116811461037757600080fd5b809150509250925092565b60006020828403121561039457600080fd5b5051919050565b6000602082840312156103ad57600080fd5b815180151581146101e557600080fd5b6000825160005b818110156103de57602081860181015185830152016103c4565b50600092019182525091905056fea26469706673582212203db1aac92e21e780f4b5ce101e999c8f18a1f78b8f894aa6d113d336086f758564736f6c6343000814003307ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220e98d079ab870b3ef3a78143945bedf5aad4a9abdbd769d73ffe3a1e4d4e170ab64736f6c63430008140033",
1408
- "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620002315760003560e01c80637738eb861162000131578063a8de511711620000bb578063caf4e3d41162000086578063caf4e3d4146200052b578063cc9fc59a1462000535578063d0d63b09146200053f578063f7c34ee01462000556578063fce06ca8146200056d57600080fd5b8063a8de511714620004e3578063ada9652e14620004fa578063b68d18091462000511578063bf7e214f146200052157600080fd5b80638e32e97911620000fc5780638e32e979146200047a5780638fb360371462000491578063991cbfb314620004b5578063a3c2605214620004cc57600080fd5b80637738eb86146200042b5780637a9e5e4b1462000442578063826787661462000459578063893d20e8146200047057600080fd5b806336fc697e11620001bf57806349bb9e4b116200018a57806349bb9e4b14620003a35780635ab1bd5314620003ba578063644c45e014620003e0578063673ad94f1462000400578063675393bf146200041457600080fd5b806336fc697e146200033b5780633cc70e3e146200034557806340be2376146200035c5780634420e486146200038c57600080fd5b80631eff4b2211620002005780631eff4b2214620002bf578063214cdb8014620002f657806327bb7a33146200030d578063329d6e74146200032457600080fd5b806301ffc9a714620002365780630d8e6e2c146200027b5780630fec111c146200029a578063138461e014620002b3575b600080fd5b6200026662000247366004620040b4565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6200028562000584565b60405162ffffff909116815260200162000272565b620002a462000611565b60405162000272919062004134565b620002bd6200073e565b005b620002e77f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b60405190815260200162000272565b620002bd62000307366004620040b4565b62000749565b620002bd6200031e366004620043f7565b62000778565b620002bd620003353660046200449d565b62000823565b620002bd6200097b565b620002bd62000356366004620046c3565b620009c3565b620003736200036d36600462004758565b62000dd8565b6040516001600160601b03909116815260200162000272565b620003736200039d36600462004758565b62000e2c565b620002bd620003b436600462004778565b620013ca565b6001546001600160a01b03165b6040516001600160a01b03909116815260200162000272565b60008051602062005e4e833981519152546001600160601b031662000373565b620002bd62000411366004620047cd565b50565b620002bd6200042536600462004758565b620014d2565b620003736200043c36600462004820565b620015ea565b620002bd6200045336600462004758565b6200185c565b620002bd6200046a366004620048e7565b620018e7565b620003c762001b18565b620002bd6200048b36600462004934565b62001c57565b6200049b62001eab565b6040516001600160e01b0319909116815260200162000272565b620002bd620004c636600462004986565b62001ee6565b620002bd620004dd36600462004a9b565b62002692565b620002bd620004f436600462004abb565b62002954565b620002e760008051602062005e4e83398151915281565b604051608c815260200162000272565b620003c762002a55565b620003c762002a72565b620003c762002a80565b620002bd62000550366004620047cd565b62002a8e565b620002bd6200056736600462004b24565b62002bc4565b620002bd6200057e36600462004b62565b62002c43565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af4158015620005e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200060c919062004be0565b905090565b6200061b62004068565b6040805160e081018252600081527f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b038116602084015260ff600160601b8204811694840194909452600160681b90049092161515606082015230608082015260a081016200069262001b18565b6001600160a01b03168152602001826001018054620006b19062004c07565b80601f0160208091040260200160405190810160405280929190818152602001828054620006df9062004c07565b8015620007305780601f10620007045761010080835404028352916020019162000730565b820191906000526020600020905b8154815290600101906020018083116200071257829003601f168201915b505050505081525091505090565b620004113062002cb9565b6200075362002ec8565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b6200078262002ec8565b6200078e828762002bc4565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30162000819838262004c8d565b5050505050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c6200084762000584565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af415801562000888573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008ae919062004d66565b60008051602062005e8e8339815191528054600160401b900460ff1680620008e3575080546001600160401b03808416911610155b15620009025760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556200092e8362002f03565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a1505050565b6200098562002ec8565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b620009d2335b60003662002f0d565b6000856001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a13573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a39919062004d86565b60405163242bdc1960e21b81526001600160601b03871660048201529091506000906001600160a01b038316906390af70649060240161014060405180830381865afa15801562000a8e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ab4919062004e00565b606001516020850151604051634793b4ab60e01b81526001600160601b0382166004820152919250906000906001600160a01b03851690634793b4ab90602401600060405180830381865afa15801562000b12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000b3c919081019062004f14565b905062000b4e81600001518462003026565b1562000b88578051604051630a49ea2360e01b81526001600160601b03918216600482015290841660248201526044015b60405180910390fd5b60405163f0ea17c360e01b81526001600160601b03841660048201526000906001600160a01b0386169063f0ea17c390602401600060405180830381865afa15801562000bd9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000c03919081019062005028565b905060008160c0015180602001905181019062000c21919062005122565b608089015160025460405163377a6db760e01b81526001600160a01b038f811660048301526001600160601b03808f166024840152808a16604484015280851660648401528c16608483015293945091928a9291169063377a6db79060a401600060405180830381600087803b15801562000c9b57600080fd5b505af115801562000cb0573d6000803e3d6000fd5b505050508260e001511562000dc957600062000cd46001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b038a1660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa15801562000d24573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000d4e91908101906200523c565b608001519050806001600160a01b0316639e2177a78d8d61010001518a8a60400151886040518663ffffffff1660e01b815260040162000d93959493929190620052ed565b600060405180830381600087803b15801562000dae57600080fd5b505af115801562000dc3573d6000803e3d6000fd5b50505050505b50505050505050505050505050565b600062000de462001b18565b6001600160a01b0316336001600160a01b03161462000e195760405163086391f760e31b815233600482015260240162000b7f565b62000e248262002cb9565b90505b919050565b60008080808062000e4986608c62000e436200303d565b620030b7565b9296509094509250905085600062000e6062002a72565b604051637286e5e560e01b81526001600160a01b03848116600483015287811660248301529190911690637286e5e5906044016000604051808303816000875af115801562000eb3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000edd91908101906200523c565b9050816001600160a01b031663138461e06040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000f1b57600080fd5b505af115801562000f30573d6000803e3d6000fd5b50505050806000015196506000826001600160a01b03166390edbd356040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000f7c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000fa6919081019062005028565b9050806020015160405162000fbb90620040a6565b6001600160a01b039091168152602001604051809103906000f08015801562000fe8573d6000803e3d6000fd5b5081604001906001600160a01b031690816001600160a01b031681525050846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001045573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200106b919062004d86565b6001600160a01b031663d5c9d77d89836040518363ffffffff1660e01b81526004016200109a929190620053d0565b600060405180830381600087803b158015620010b557600080fd5b505af1158015620010ca573d6000803e3d6000fd5b506000925060029150620010db9050565b6040519080825280602002602001820160405280156200111057816020015b6060815260200190600190039081620010fa5790505b50604080516001808252818301909252919250602080830190803683370190505081600081518110620011475762001147620053f4565b6020908102919091010152604080516001808252818301909252908160200160208202803683370190505081600181518110620011885762001188620053f4565b6020026020010181905250638267876660e01b81600081518110620011b157620011b1620053f4565b6020026020010151600081518110620011ce57620011ce620053f4565b6001600160e01b0319909216602092830291909101909101528051639e2177a760e01b9082906001908110620012085762001208620053f4565b6020026020010151600081518110620012255762001225620053f4565b6001600160e01b03199290921660209283029190910182015260408051600280825260608201835260009391929091830190803683370190505090506200126b6200303d565b81600081518110620012815762001281620053f4565b60200260200101906001600160401b031690816001600160401b031681525050620012ab620033bf565b81600181518110620012c157620012c1620053f4565b60200260200101906001600160401b031690816001600160401b031681525050620012eb62002a80565b6001600160a01b0316636c6fbb28878d886001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200133a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200136491908101906200540a565b86866040518663ffffffff1660e01b81526004016200138895949392919062005488565b600060405180830381600087803b158015620013a357600080fd5b505af1158015620013b8573d6000803e3d6000fd5b50505050505050505050505050919050565b60008051602062005e8e8339815191528054600160401b810460ff1615906001600160401b0316600081158015620013ff5750825b90506000826001600160401b031660011480156200141c5750303b155b9050811580156200142b575080155b156200144a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156200147557845460ff60401b1916600160401b1785555b620014818787620033fc565b8315620014c957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b620014dc62002ec8565b806001600160a01b03163b600003620015145760405163fdeac91f60e01b81526001600160a01b038216600482015260240162000b7f565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b81526312da491160e01b60048201526301ffc9a790602401602060405180830381865afa92505050801562001591575060408051601f3d908101601f191682019092526200158e9181019062005564565b60015b620015bb5760405163fdeac91f60e01b81526001600160a01b038216600482015260240162000b7f565b80620015e65760405163fdeac91f60e01b81526001600160a01b038316600482015260240162000b7f565b5050565b60008080620015fa608c6200364f565b92505091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001640573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001666919062004d86565b60405163f0ea17c360e01b81526001600160601b03851660048201529091506000906001600160a01b0383169063f0ea17c390602401600060405180830381865afa158015620016ba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620016e4919081019062005028565b90506000620016f4828b62003801565b9050600260009054906101000a90046001600160a01b03166001600160a01b031663e283b4a985878f8f868f8f8f6040518963ffffffff1660e01b815260040162001747989796959493929190620055ad565b6020604051808303816000875af115801562001767573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200178d91906200562b565b95506200179c828d8c6200394e565b7f0dcadf661b8b2888423f78a848a77785b4dc0138395b12584835f6a65dfcea79846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620017fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200182291906200562b565b604080516001600160601b03928316815282891660208201529189169082015260600160405180910390a150505050509695505050505050565b336200186762002a55565b6001600160a01b0316816001600160a01b031614620018a45760405162d1953b60e31b81526001600160a01b038216600482015260240162000b7f565b816001600160a01b03163b600003620018dc576040516361798f2f60e11b81526001600160a01b038316600482015260240162000b7f565b620015e68262003a5c565b600080620018f6608c6200364f565b92505091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200193c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001962919062004d86565b60405163f0ea17c360e01b81526001600160601b03851660048201529091506000906001600160a01b0383169063f0ea17c390602401600060405180830381865afa158015620019b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019e0919081019062005028565b905060008160c00151806020019051810190620019fe919062005122565b61014081018990526101608101889052610180810187905260405190915062001a2c9082906020016200564b565b6040516020818303038152906040528260c00181905250836001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001a82573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001aa8919062004d86565b6001600160a01b031663a4eeee59868460ff6040518463ffffffff1660e01b815260040162001ada939291906200577a565b600060405180830381600087803b15801562001af557600080fd5b505af115801562001b0a573d6000803e3d6000fd5b505050505050505050505050565b60008060008051602062005e4e83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801562001b8a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bb0919062005564565b1562001c41576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa15801562001c15573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c3b919062004d86565b91505090565b54600160601b90046001600160a01b0316919050565b62001c6162002ec8565b62001ce683846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001ca5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ccb91906200562b565b603c6000856040518060200160405280600081525062000778565b6001600160a01b0382161562001d075762001d018262003abe565b62001e82565b600062001d1c6001546001600160a01b031690565b6001600160a01b031663d39e60436028604051632392b61b60e21b81526003600482015273__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af415801562001d7d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001da39190620057b1565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa15801562001de9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e0f919062004d86565b905062001e80816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001e54573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e7a919062004d86565b62003abe565b505b62001e94634a531f3360e01b62000749565b62001ea663b68d180960e01b62000749565b505050565b60008051602062005e6e833981519152805460009190600160a01b900460ff1662001ed857600062001c3b565b638fb3603760e01b91505090565b62001ef133620009c9565b600062001f066001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03861660048201529091506000906001600160a01b0383169063a48f42e090602401600060405180830381865afa15801562001f5a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f8491908101906200523c565b60208101516040516305247a1760e51b81526001600160601b0390911660048201529091506000906001600160a01b0384169063a48f42e090602401600060405180830381865afa15801562001fde573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200200891908101906200523c565b60208101516040516305247a1760e51b81526001600160601b0390911660048201529091506000906001600160a01b0385169063a48f42e090602401600060405180830381865afa15801562002062573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200208c91908101906200523c565b9050600081608001519050600073__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd968961010001518a60800151620020ca9190620057d1565b6040518263ffffffff1660e01b8152600401620020e991815260200190565b602060405180830381865af415801562002107573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200212d91906200562b565b9050600073__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd968a61012001518b60a00151620021629190620057d1565b6040518263ffffffff1660e01b81526004016200218191815260200190565b602060405180830381865af41580156200219f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021c591906200562b565b90506000620022616200225a73__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd968d600001516040518263ffffffff1660e01b81526004016200220f91815260200190565b602060405180830381865af41580156200222d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200225391906200562b565b8562003ad3565b8362003ad3565b90506200226f898262003b65565b620022a157604051639080fd1360e01b81526001600160601b0380831660048301528a16602482015260440162000b7f565b6040516330b8415f60e01b81526001600160601b038416600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af4158015620022fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002320919062005564565b1562002587576000846001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002367573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200238d919062004d86565b875160405163f0ea17c360e01b81526001600160601b0390911660048201526001600160a01b03919091169063f0ea17c390602401600060405180830381865afa158015620023e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200240a919081019062005028565b60a081015160405163274acb3560e01b81526001600160601b039182166004820152908616602482015290915073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb3590604401602060405180830381865af415801562002474573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200249a91906200562b565b6001600160601b031660a082015260408051631a99b41b60e31b815290516001600160a01b0387169163d4cda0d89160048083019260209291908290030181865afa158015620024ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002514919062004d86565b6001600160a01b031663a4eeee598860000151836200253160ff90565b6040518463ffffffff1660e01b815260040162002551939291906200577a565b600060405180830381600087803b1580156200256c57600080fd5b505af115801562002581573d6000803e3d6000fd5b50505050505b6040516330b8415f60e01b81526001600160601b038316600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af4158015620025e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002606919062005564565b156200268557600254604051632dd597e760e21b81526001600160a01b0386811660048301526001600160601b03808f166024840152851660448301529091169063b7565f9c90606401600060405180830381600087803b1580156200266b57600080fd5b505af115801562002680573d6000803e3d6000fd5b505050505b5050505050505050505050565b600080620026a1608c6200364f565b92505091506000816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015620026e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200270d919062004d86565b60405163f0ea17c360e01b81526001600160601b03851660048201529091506000906001600160a01b0383169063f0ea17c390602401600060405180830381865afa15801562002761573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200278b919081019062005028565b905060008160c00151806020019051810190620027a9919062005122565b9050620027d08160200151620027be62003bef565b6001600160401b039081169116141590565b15620027fb5760405163eff765ff60e01b81526001600160601b038616600482015260240162000b7f565b6001600160401b0386166020808301919091526040516200281f918391016200564b565b6040516020818303038152906040528260c00181905250836001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002875573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200289b919062004d86565b6001600160a01b031663a4eeee59868460ff6040518463ffffffff1660e01b8152600401620028cd939291906200577a565b600060405180830381600087803b158015620028e857600080fd5b505af1158015620028fd573d6000803e3d6000fd5b5050604080516001600160601b03891681526001600160401b038a1660208201527fe7e6a7a42cbdb2d274dfaaac06073a09d6095ca3745ce71fe5a137f8247ea23e935001905060405180910390a1505050505050565b6200295f33620009c9565b600254602082015160808301516101808401516001600160a01b039093169263ad328d9f928792879262002994919062003c31565b6040518563ffffffff1660e01b8152600401620029b59493929190620057f3565b600060405180830381600087803b158015620029d057600080fd5b505af1158015620029e5573d6000803e3d6000fd5b50506002546040516301d90a6f60e61b81526001600160a01b0387811660048301526001600160601b038716602483015290911692506376429bc09150604401600060405180830381600087803b15801562002a4057600080fd5b505af1158015620014c9573d6000803e3d6000fd5b60008051602062005e6e833981519152546001600160a01b031690565b60006200060c602862003c7d565b60006200060c604662003c7d565b60008062002a9d608c6200364f565b600254604051632aa6b2cb60e21b81526001600160a01b0380841660048301526001600160601b0389166024830152949650919450929092169163aa9acb2c9150604401600060405180830381600087803b15801562002afc57600080fd5b505af115801562002b11573d6000803e3d6000fd5b505050507f64c75a4392ba38fee1b5a44b61e3dd0cae424d2d43eb2b0c99772efe31e1c042816001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002b75573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b9b91906200562b565b604080516001600160601b0392831681528286166020820152918616908201526060016200096e565b62002bce62002ec8565b62002bd981620014d2565b62002be36200097b565b6001600160a01b03821662002c0b5760405163f17ef42d60e01b815260040160405180910390fd5b5060008051602062005e4e83398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b62002c4e33620009c9565b600254602083015160405163ad328d9f60e01b81526001600160a01b039092169163ad328d9f9162002c8991889188918790600401620057f3565b600060405180830381600087803b15801562002ca457600080fd5b505af115801562000819573d6000803e3d6000fd5b60008060008051602062005e4e83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801562002d2b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d51919062005564565b1562002d7f5780546040516301ab8b6760e21b81526001600160601b03909116600482015260240162000b7f565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa15801562002dd4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002dfa919062005564565b62002e245760405163b9304b0d60e01b81526001600160a01b038416600482015260240162000b7f565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038581166004830152919091169063d272ac1e90602401602060405180830381865afa15801562002e79573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e9f91906200562b565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b60008051602062005e8e83398151915254600160401b900460ff1662002f0157604051631afcd79f60e31b815260040160405180910390fd5b565b6200023162002ec8565b60008051602062005e6e83398151915260008062002f5162002f2e62002a55565b873062002f40600460008a8c62005825565b62002f4b9162005851565b62003d93565b91509150816200301e5763ffffffff81161562002ffa57825460ff60a01b1916600160a01b17835562002f8362002a55565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b815260040162002fb49392919062005882565b600060405180830381600087803b15801562002fcf57600080fd5b505af115801562002fe4573d6000803e3d6000fd5b5050845460ff60a01b19168555506200301e9050565b60405162d1953b60e31b81526001600160a01b038716600482015260240162000b7f565b505050505050565b6001600160601b0382811690821614155b92915050565b6040516368aebf7b60e01b815260048082015260009073__$1d92393fa9ccd763988368ce8a1cb90d26$__906368aebf7b906024015b602060405180830381865af415801562003091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200060c919062004d66565b6040516301ffc9a760e01b815263bcb0007960e01b60048201528390339060009081906001600160a01b038516906301ffc9a790602401602060405180830381865afa1580156200310c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003132919062005564565b6200315c576040516359bff0e360e11b81526001600160a01b038816600482015260240162000b7f565b6000846001600160a01b0316630fec111c6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200319d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620031c791908101906200523c565b9050620031df81604001518860ff9081169116141590565b1562003221576040808201519051634a2e948760e11b81526001600160a01b038a16600482015260ff808a166024830152909116604482015260640162000b7f565b60a08101516001600160a01b0385811690821614620032755760a0820151604051632b50a20960e21b81526001600160a01b03808c1660048301529182166024820152908616604482015260640162000b7f565b81602001519250620032878362003eab565b9350836001600160a01b031663311adb686040518163ffffffff1660e01b8152600401602060405180830381865afa158015620032c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032ee919062004d86565b6040516368fc2b7760e11b81526001600160401b03891660048201526001600160a01b038781166024830152919091169063d1f856ee90604401602060405180830381865afa15801562003346573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200336c919062005564565b620033b457604051636af540d960e01b81526001600160601b03841660048201526001600160401b03881660248201526001600160a01b038616604482015260640162000b7f565b505093509350935093565b6040516368aebf7b60e01b815261096a600482015260009073__$1d92393fa9ccd763988368ce8a1cb90d26$__906368aebf7b9060240162003073565b60008051602062005e8e8339815191528054600160401b810460ff1615906001600160401b0316600081158015620034315750825b90506000826001600160401b031660011480156200344e5750303b155b9050811580156200345d575080155b156200347c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315620034a757845460ff60401b1916600160401b1785555b60008087806020019051810190620034c09190620058a9565b9250509150620034d282828b62001c57565b6001546001600160a01b031663d39e604360dc620034ef62000584565b60405163c9e66e2960e01b815262ffffff909116600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__9063c9e66e2990602401602060405180830381865af415801562003545573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200356b9190620057b1565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015620035b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035d7919062004d86565b600280546001600160a01b0319166001600160a01b039290921691909117905562003609630152d21960e61b62000749565b50508315620014c957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001620014c0565b60006200365b62004068565b6000620036706001546001600160a01b031690565b604051636939560f60e11b81523360048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa158015620036b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620036dd91906200562b565b9250620036eb838562003f44565b8092508193505050806001600160a01b031663311adb686040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003732573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003758919062004d86565b6080830151604051629b7b3560e61b81526001600160a01b0391821660048201529116906326decd4090602401602060405180830381865afa158015620037a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037c9919062005564565b15620037fa57608082015160405163d53987e560e01b81526001600160a01b03909116600482015260240162000b7f565b9193909250565b600081905060008360c0015180602001905181019062003822919062005122565b61016001516040516305deb8b760e01b815290915073__$58e11c6004c5796aaa8c56e718245e69a2$__906305deb8b79062003863908490600401620058f2565b602060405180830381865af415801562003881573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620038a7919062005564565b156200394757604051634f69237560e11b815281516004820152602082015160248201526001600160601b0384166044820152600090819073__$58e11c6004c5796aaa8c56e718245e69a2$__90639ed246ea906064016040805180830381865af41580156200391b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200394191906200590a565b94505050505b5092915050565b604083810151606085015191516330b8415f60e01b81526001600160601b038416600482015290919073__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af4158015620039b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620039da919062005564565b1562003a555760405163c661667d60e01b81526001600160a01b03858116600483015282811660248301526001600160601b038516604483015283169063c661667d90606401600060405180830381600087803b15801562003a3b57600080fd5b505af115801562003a50573d6000803e3d6000fd5b505050505b5050505050565b60008051602062005e6e83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b62003ac862002ec8565b620004118162004053565b60405163274acb3560e01b81526001600160601b0380841660048301528216602482015260009073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb35906044015b602060405180830381865af415801562003b38573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b5e91906200562b565b9392505050565b60405163c4cade9d60e01b81526001600160601b0380841660048301528216602482015260009073__$3bac17678db7ae928afa209f2f44deec9c$__9063c4cade9d90604401602060405180830381865af415801562003bc9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003b5e919062005564565b6040516368aebf7b60e01b81526001600160401b03600482015260009073__$1d92393fa9ccd763988368ce8a1cb90d26$__906368aebf7b9060240162003073565b6040516363cf551160e11b81526001600160601b0380841660048301528216602482015260009073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa229060440162003b1a565b600062003c926001546001600160a01b031690565b6001600160a01b031663d39e60438362003cab62000584565b60405163c9e66e2960e01b815262ffffff909116600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__9063c9e66e2990602401602060405180830381865af415801562003d01573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003d279190620057b1565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa15801562003d6d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e24919062004d86565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b1790525162003e0491906200593e565b600060405180830381855afa9150503d806000811462003e41576040519150601f19603f3d011682016040523d82523d6000602084013e62003e46565b606091505b5091509150811562003ea057604081511062003e7d578080602001905181019062003e7291906200595c565b909450925062003ea0565b602081511062003ea0578080602001905181019062003e9d919062005564565b93505b505094509492505050565b600062003ec06001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa15801562003f10573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003f3a91908101906200523c565b6080015192915050565b62003f4e62004068565b600062003f636001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03861660048201526001600160a01b03919091169063a48f42e090602401600060405180830381865afa15801562003fb3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003fdd91908101906200523c565b915062003ff582604001518460ff9081169116141590565b156200403b57608082015160408084015190516304081d4960e41b81526001600160a01b03909216600483015260ff808616602484015216604482015260640162000b7f565b6200404a826020015162003eab565b90509250929050565b6200405d62002ec8565b620004118162003a5c565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b6104b5806200599983390190565b600060208284031215620040c757600080fd5b81356001600160e01b03198116811462003b5e57600080fd5b60005b83811015620040fd578181015183820152602001620040e3565b50506000910152565b6000815180845262004120816020860160208601620040e0565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a08301516200419e60c08401826001600160a01b03169052565b5060c083015160e080840152620041ba61010084018262004106565b949350505050565b6001600160a01b03811681146200041157600080fd5b6001600160601b03811681146200041157600080fd5b803562000e2781620041d8565b60ff811681146200041157600080fd5b80151581146200041157600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161022081016001600160401b03811182821017156200425657620042566200421a565b60405290565b604080519081016001600160401b03811182821017156200425657620042566200421a565b6040516101e081016001600160401b03811182821017156200425657620042566200421a565b60405161010081016001600160401b03811182821017156200425657620042566200421a565b60405161012081016001600160401b03811182821017156200425657620042566200421a565b60405160e081016001600160401b03811182821017156200425657620042566200421a565b6040516101a081016001600160401b03811182821017156200425657620042566200421a565b604051601f8201601f191681016001600160401b03811182821017156200436957620043696200421a565b604052919050565b60006001600160401b038211156200438d576200438d6200421a565b50601f01601f191660200190565b600082601f830112620043ad57600080fd5b8135620043c4620043be8262004371565b6200433e565b818152846020838601011115620043da57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c087890312156200441157600080fd5b86356200441e81620041c2565b955060208701356200443081620041d8565b945060408701356200444281620041fb565b9350606087013562004454816200420b565b925060808701356200446681620041c2565b915060a08701356001600160401b038111156200448257600080fd5b6200449089828a016200439b565b9150509295509295509295565b600060208284031215620044b057600080fd5b81356001600160401b03811115620044c757600080fd5b620041ba848285016200439b565b80356001600160c01b03198116811462000e2757600080fd5b64ffffffffff811681146200041157600080fd5b803562000e2781620044ee565b803561ffff8116811462000e2757600080fd5b600061022082840312156200453657600080fd5b6200454062004230565b90506200454d82620041ee565b81526200455d60208301620041ee565b60208201526200457060408301620044d5565b60408201526200458360608301620044d5565b60608201526200459660808301620041ee565b6080820152620045a960a08301620041ee565b60a0820152620045bc60c08301620041ee565b60c0820152620045cf60e0830162004502565b60e0820152610100808301356001600160401b0380821115620045f157600080fd5b620045ff868387016200439b565b838501526101209250828501359150808211156200461c57600080fd5b506200462b858286016200439b565b828401525050610140620046418184016200450f565b90820152610160620046558382016200450f565b9082015261018062004669838201620041ee565b908201526101a06200467d838201620041ee565b908201526101c06200469183820162004502565b908201526101e0620046a583820162004502565b90820152610200620046b983820162004502565b9082015292915050565b600080600080600060a08688031215620046dc57600080fd5b8535620046e981620041c2565b94506020860135620046fb81620041d8565b935060408601356200470d81620041d8565b925060608601356001600160401b038111156200472957600080fd5b620047378882890162004522565b92505060808601356200474a81620041d8565b809150509295509295909350565b6000602082840312156200476b57600080fd5b813562003b5e81620041c2565b600080604083850312156200478c57600080fd5b82356200479981620041c2565b915060208301356001600160401b03811115620047b557600080fd5b620047c3858286016200439b565b9150509250929050565b600060208284031215620047e057600080fd5b813562003b5e81620041d8565b6000604082840312156200480057600080fd5b6200480a6200425c565b9050813581526020820135602082015292915050565b60008060008060008060c087890312156200483a57600080fd5b86356200484781620041c2565b9550620048588860208901620047ed565b945060608701356200486a81620041d8565b935060808701356200487c81620044ee565b925060a08701356001600160401b03808211156200489957600080fd5b818901915089601f830112620048ae57600080fd5b813581811115620048be57600080fd5b8a6020828501011115620048d157600080fd5b6020830194508093505050509295509295509295565b600080600060c08486031215620048fd57600080fd5b620049098585620047ed565b92506200491a8560408601620047ed565b91506200492b8560808601620047ed565b90509250925092565b6000806000606084860312156200494a57600080fd5b83356200495781620041c2565b925060208401356200496981620041c2565b915060408401356200497b81620041c2565b809150509250925092565b60008060008385036102208112156200499e57600080fd5b8435620049ab81620041d8565b93506101e0601f198201811315620049c257600080fd5b620049cc62004281565b91506020860135825260408601356020830152606086013560408301526080860135606083015260a0860135608083015260c086013560a083015260e086013560c08301526101008087013560e084015261012080880135828501526101409150818801358185015250610160808801358285015261018091508188013581850152506101a080880135828501526101c0915081880135818501525081870135818401525050809250506200492b6102008501620041ee565b6001600160401b03811681146200041157600080fd5b60006020828403121562004aae57600080fd5b813562003b5e8162004a85565b60008060006060848603121562004ad157600080fd5b833562004ade81620041c2565b9250602084013562004af081620041d8565b915060408401356001600160401b0381111562004b0c57600080fd5b62004b1a8682870162004522565b9150509250925092565b6000806040838503121562004b3857600080fd5b823562004b4581620041c2565b9150602083013562004b5781620041c2565b809150509250929050565b6000806000806080858703121562004b7957600080fd5b843562004b8681620041c2565b9350602085013562004b9881620041d8565b925060408501356001600160401b0381111562004bb457600080fd5b62004bc28782880162004522565b925050606085013562004bd581620041d8565b939692955090935050565b60006020828403121562004bf357600080fd5b815162ffffff8116811462003b5e57600080fd5b600181811c9082168062004c1c57607f821691505b60208210810362004c3d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562001ea657600081815260208120601f850160051c8101602086101562004c6c5750805b601f850160051c820191505b818110156200301e5782815560010162004c78565b81516001600160401b0381111562004ca95762004ca96200421a565b62004cc18162004cba845462004c07565b8462004c43565b602080601f83116001811462004cf9576000841562004ce05750858301515b600019600386901b1c1916600185901b1785556200301e565b600085815260208120601f198616915b8281101562004d2a5788860151825594840194600190910190840162004d09565b508582101562004d495787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b805162000e278162004a85565b60006020828403121562004d7957600080fd5b815162003b5e8162004a85565b60006020828403121562004d9957600080fd5b815162003b5e81620041c2565b805162000e2781620041c2565b805162000e2781620041d8565b60006040828403121562004dd357600080fd5b62004ddd6200425c565b9050815181526020820151602082015292915050565b805162000e27816200420b565b6000610140828403121562004e1457600080fd5b62004e1e620042a7565b62004e298362004da6565b815262004e396020840162004da6565b602082015262004e4c6040840162004db3565b604082015262004e5f6060840162004db3565b606082015262004e73846080850162004dc0565b608082015262004e878460c0850162004dc0565b60a082015262004e9b610100840162004df3565b60c082015262004eaf610120840162004da6565b60e08201529392505050565b600082601f83011262004ecd57600080fd5b815162004ede620043be8262004371565b81815284602083860101111562004ef457600080fd5b620041ba826020830160208701620040e0565b805162000e2781620044ee565b60006020828403121562004f2757600080fd5b81516001600160401b038082111562004f3f57600080fd5b90830190610140828603121562004f5557600080fd5b62004f5f620042cd565b62004f6a8362004db3565b815262004f7b866020850162004dc0565b602082015260608301518281111562004f9357600080fd5b62004fa18782860162004ebb565b60408301525062004fb56080840162004db3565b606082015262004fc860a0840162004db3565b608082015262004fdb60c0840162004db3565b60a082015262004fee60e0840162004f07565b60c082015261010091506200500582840162004f07565b60e082015262005019610120840162004f07565b91810191909152949350505050565b6000602082840312156200503b57600080fd5b81516001600160401b03808211156200505357600080fd5b9083019060e082860312156200506857600080fd5b62005072620042f3565b8251828111156200508257600080fd5b620050908782860162004ebb565b825250620050a16020840162004da6565b6020820152620050b46040840162004da6565b6040820152620050c76060840162004da6565b6060820152620050da6080840162004db3565b6080820152620050ed60a0840162004db3565b60a082015260c0830151828111156200510557600080fd5b620051138782860162004ebb565b60c08301525095945050505050565b600061020082840312156200513657600080fd5b6200514062004318565b6200514b8362004db3565b81526200515b6020840162004d59565b60208201526200516e6040840162004db3565b6040820152620051816060840162004db3565b6060820152620051946080840162004db3565b6080820152620051a760a0840162004df3565b60a0820152620051ba60c0840162004df3565b60c0820152620051cd60e0840162004df3565b60e082015261010083810151908201526101208084015190820152610140620051f98582860162004dc0565b908201526101806200520e8585830162004dc0565b61016083015262005224856101c0860162004dc0565b908201529392505050565b805162000e2781620041fb565b6000602082840312156200524f57600080fd5b81516001600160401b03808211156200526757600080fd5b9083019060e082860312156200527c57600080fd5b62005286620042f3565b620052918362004db3565b8152620052a16020840162004db3565b6020820152620052b4604084016200522f565b6040820152620052c76060840162004df3565b6060820152620052da6080840162004da6565b6080820152620050ed60a0840162004da6565b60006001600160601b03808816835260a060208401526200531260a084018862004106565b818716604085015283810360608501526200532e818762004106565b9250508084166080840152509695505050505050565b6000815160e084526200535b60e085018262004106565b9050602083015160018060a01b038082166020870152806040860151166040870152806060860151166060870152505060808301516001600160601b0380821660808701528060a08601511660a0870152505060c083015184820360c0860152620053c7828262004106565b95945050505050565b6001600160601b0383168152604060208201526000620041ba604083018462005344565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156200541d57600080fd5b81516001600160401b038111156200543457600080fd5b620041ba8482850162004ebb565b600081518084526020808501945080840160005b838110156200547d5781516001600160401b03168752958201959082019060010162005456565b509495945050505050565b6001600160601b03861681526000602060018060a01b0387168184015260a06040840152620054bb60a084018762004106565b8381036060850152855180825282820190600581901b830184018489016000805b848110156200553d57868403601f19018652825180518086529089019089860190845b81811015620055275783516001600160e01b0319168352928b0192918b0191600101620054ff565b50509689019694505091870191600101620054dc565b505050868103608088015262005554818962005442565b9c9b505050505050505050505050565b6000602082840312156200557757600080fd5b815162003b5e816200420b565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0389811682526001600160601b038981166020840152888216604084015260009161010091620055f1606086018b80518252602090810151910152565b881660a08501525064ffffffffff861660c084015260e083018190526200561c818401858762005584565b9b9a5050505050505050505050565b6000602082840312156200563e57600080fd5b815162003b5e81620041d8565b81516001600160601b03168152610200810160208301516200567860208401826001600160401b03169052565b5060408301516200569460408401826001600160601b03169052565b506060830151620056b060608401826001600160601b03169052565b506080830151620056cc60808401826001600160601b03169052565b5060a0830151620056e160a084018215159052565b5060c0830151620056f660c084018215159052565b5060e08301516200570b60e084018215159052565b506101008381015190830152610120808401519083015261014080840151805182850152602081015161016085015250506101608301516101806200575c8185018380518252602090810151910152565b84015180516101c085015260208101516101e0850152905062003947565b6001600160601b03841681526060602082015260006200579e606083018562005344565b905060ff83166040830152949350505050565b600060208284031215620057c457600080fd5b815162003b5e81620041fb565b808201808211156200303757634e487b7160e01b600052601160045260246000fd5b6001600160a01b039490941684526001600160601b039283166020850152908216604084015216606082015260800190565b600080858511156200583657600080fd5b838611156200584457600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156200587a5780818660040360031b1b83161692505b505092915050565b6001600160a01b0384168152604060208201819052600090620053c7908301848662005584565b600080600060608486031215620058bf57600080fd5b8351620058cc81620041c2565b6020850151909350620058df81620041c2565b60408501519092506200497b81620041c2565b81518152602080830151908201526040810162003037565b600080604083850312156200591e57600080fd5b82516200592b81620041d8565b602084015190925062004b5781620041d8565b6000825162005952818460208701620040e0565b9190910192915050565b600080604083850312156200597057600080fd5b82516200597d816200420b565b602084015190925063ffffffff8116811462004b5757600080fdfe608060405234801561001057600080fd5b506040516104b53803806104b583398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610422806100936000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806321df0da71461003b578063c661667d1461005a575b600080fd5b600054604080516001600160a01b039092168252519081900360200190f35b61006d61006836600461032a565b61006f565b005b60005460405163046e44af60e11b81526bffffffffffffffffffffffff8316600482015261010a916001600160a01b0316908590859073__$3bac17678db7ae928afa209f2f44deec9c$__906308dc895e90602401602060405180830381865af41580156100e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101059190610382565b61010f565b505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261016990859061016f565b50505050565b60006101846001600160a01b038416836101d7565b905080516000141580156101a95750808060200190518101906101a7919061039b565b155b1561010a57604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b60606101e5838360006101ec565b9392505050565b6060814710156102115760405163cd78605960e01b81523060048201526024016101ce565b600080856001600160a01b0316848660405161022d91906103bd565b60006040518083038185875af1925050503d806000811461026a576040519150601f19603f3d011682016040523d82523d6000602084013e61026f565b606091505b509150915061027f868383610289565b9695505050505050565b60608261029e57610299826102e5565b6101e5565b81511580156102b557506001600160a01b0384163b155b156102de57604051639996b31560e01b81526001600160a01b03851660048201526024016101ce565b50806101e5565b8051156102f55780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b038116811461032557600080fd5b919050565b60008060006060848603121561033f57600080fd5b6103488461030e565b92506103566020850161030e565b915060408401356bffffffffffffffffffffffff8116811461037757600080fd5b809150509250925092565b60006020828403121561039457600080fd5b5051919050565b6000602082840312156103ad57600080fd5b815180151581146101e557600080fd5b6000825160005b818110156103de57602081860181015185830152016103c4565b50600092019182525091905056fea26469706673582212203db1aac92e21e780f4b5ce101e999c8f18a1f78b8f894aa6d113d336086f758564736f6c6343000814003307ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220e98d079ab870b3ef3a78143945bedf5aad4a9abdbd769d73ffe3a1e4d4e170ab64736f6c63430008140033",
1385
+ "bytecode": "0x6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b615fec806100d65f395ff3fe608060405234801561000f575f80fd5b50600436106101dc575f3560e01c806376b707b711610109578063ada9652e1161009e578063d0d63b091161006e578063d0d63b09146104b2578063db02f7d3146104c5578063e1f216fa146104d8578063fb3bcd1f146104eb575f80fd5b8063ada9652e1461047c578063b68d180914610490578063bca99e3914610497578063bf7e214f146104aa575f80fd5b80638899278a116100d95780638899278a14610438578063893d20e8146104405780638e4a508e146104485780638fb360371461045b575f80fd5b806376b707b7146103b05780637a9e5e4b146103ca57806384a710fa146103dd57806384d1f7cf14610425575f80fd5b8063329d6e741161017f578063644c45e01161014f578063644c45e01461032d5780636c1e9dff1461034a5780636c741e781461035d5780637225ed011461037d575f80fd5b8063329d6e74146102cf57806332f9f3df146102e257806349bb9e4b146102f55780635ab1bd5314610308575f80fd5b8063138461e0116101ba578063138461e0146102525780631eff4b221461027257806326889b09146102a7578063329c71c0146102ba575f80fd5b806301ffc9a7146101e05780630d8e6e2c146102215780630fec111c1461023d575b5f80fd5b61020c6101ee366004614a99565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6102296104fe565b60405162ffffff9091168152602001610218565b610245610585565b6040516102189190614aee565b61025a610711565b6040516001600160601b039091168152602001610218565b6102997f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610218565b61025a6102b5366004614ba6565b61071b565b6102cd6102c8366004614bdd565b610bef565b005b6102cd6102dd366004614d89565b610dd3565b6102cd6102f0366004614f92565b610f1d565b6102cd610303366004615002565b6110fb565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610218565b5f80516020615f57833981519152546001600160601b031661025a565b61025a610358366004614ba6565b6111f7565b6103656118b7565b6040516001600160401b039091168152602001610218565b61039061038b36600461504e565b611943565b604080516001600160601b03938416815292909116602083015201610218565b6103b8611bbd565b60405160ff9091168152602001610218565b6102cd6103d8366004615084565b611c31565b6103f06103eb36600461509f565b611cb7565b60405161021894939291906001600160601b039485168152928416602084015292166040820152901515606082015260800190565b6103906104333660046150dc565b611ddb565b610299600381565b6103156120cf565b6102cd610456366004614bdd565b612200565b6104636123dd565b6040516001600160e01b03199091168152602001610218565b6102995f80516020615f5783398151915281565b600f6103b8565b6102cd6104a5366004614bdd565b612412565b610315612623565b6102cd6104c0366004614bdd565b61263e565b6102cd6104d336600461515a565b612b97565b6102cd6104e63660046151de565b612fad565b6102cd6104f936600461520b565b6132be565b604051632efe011360e01b8152600360048201525f60248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af415801561055c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105809190615395565b905090565b61058d614a5c565b5f7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610603573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062791906153c2565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a00161066f6120cf565b6001600160a01b0316815260200182600101805461068c906153dd565b80601f01602080910402602001604051908101604052809291908181526020018280546106b8906153dd565b80156107035780601f106106da57610100808354040283529160200191610703565b820191905f5260205f20905b8154815290600101906020018083116106e657829003601f168201915b505050505081525091505090565b5f6105803061351f565b5f61072783601f613718565b5f80610733600f6137cf565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610775573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107999190615415565b90505f826001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107fc9190615415565b604051634793b4ab60e01b81526001600160601b03891660048201529091505f906001600160a01b03841690634793b4ab906024015f60405180830381865afa15801561084b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261087291908101906154db565b9050610881815f01518661386b565b156108b757604051630a49ea2360e01b81526001600160601b03808a166004830152861660248201526044015b60405180910390fd5b600254604051631696791160e11b81526001600160a01b0386811660048301526001600160601b03808c1660248401528a1660448301525f921690632d2cf222906064016020604051808303815f875af1158015610917573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061093b91906153c2565b905080965060035f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a284888473__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156109ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d191906153c2565b6040518563ffffffff1660e01b81526004016109f0949392919061559f565b5f604051808303815f87803b158015610a07575f80fd5b505af1158015610a19573d5f803e3d5ffd5b505050507f1486849121d5ae771349472444bdddfe08862a6644665b5fd7ed4cf14a51db78856001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a7a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9e91906153c2565b604080516001600160601b03928316815289831660208201528c8316818301528483166060820152918a166080830152519081900360a00190a16040516357f80bbf60e01b81526001600160601b03871660048201526001600160a01b038516906357f80bbf9060240160e060405180830381865afa158015610b23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4791906155e0565b60600151610be3575f610b626001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038c1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015610baf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd39190615415565b9050610be18588838b6138f7565b505b50505050505092915050565b5f80610bfb600f6137cf565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c3d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c619190615415565b6040516357f80bbf60e01b81526001600160601b03851660048201529091506001600160a01b038216906357f80bbf9060240160e060405180830381865afa158015610caf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd391906155e0565b60600151610cff5760405163664958ad60e01b81526001600160601b03841660048201526024016108ae565b5f610d126001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03861660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015610d5f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d839190615415565b90507ff93784364e35bd9d02fb31e12793254279ee0381ed65b4fa39ee297b22fdd79a848287604051610db893929190615673565b60405180910390a1610dcc828583886138f7565b5050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c610df56104fe565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610e33573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5791906156b3565b5f80516020615f978339815191528054600160401b900460ff1680610e89575080546001600160401b03808416911610155b15610ea75760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610ed183613a4b565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b610f29335b5f36613a53565b610f34826015613718565b5f610f488260800151836101600151613b49565b600254602084015160405163ad328d9f60e01b81529293506001600160a01b039091169163ad328d9f91610f849189918891879060040161559f565b5f604051808303815f87803b158015610f9b575f80fd5b505af1158015610fad573d5f803e3d5ffd5b50506002546040516301d90a6f60e61b81526001600160a01b0390911692506376429bc09150610fe390889087906004016156ce565b5f604051808303815f87803b158015610ffa575f80fd5b505af115801561100c573d5f803e3d5ffd5b5050505060045f9054906101000a90046001600160a01b03166001600160a01b031663d44f8a4b866001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561106f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109391906153c2565b86846040518463ffffffff1660e01b81526004016110b393929190615673565b6020604051808303815f875af11580156110cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f391906153c2565b505050505050565b5f80516020615f978339815191528054600160401b810460ff1615906001600160401b03165f8115801561112c5750825b90505f826001600160401b031660011480156111475750303b155b905081158015611155575080155b156111735760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561119d57845460ff60401b1916600160401b1785555b6111a78787613bce565b83156111ee57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b5f61120383601f613718565b5f8061120f600f6137cf565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611251573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112759190615415565b604051634793b4ab60e01b81526001600160601b03881660048201529091505f906001600160a01b03831690634793b4ab906024015f60405180830381865afa1580156112c4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526112eb91908101906154db565b6040516357f80bbf60e01b81526001600160601b03861660048201529091505f906001600160a01b038416906357f80bbf9060240160e060405180830381865afa15801561133b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061135f91906155e0565b905061136e825f01518661386b565b1561139f57604051630a49ea2360e01b81526001600160601b03808a166004830152861660248201526044016108ae565b6040516308a390bb60e21b81526001600160601b03861660048201525f906001600160a01b0385169063228e42ec90602401602060405180830381865afa1580156113ec573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061141091906153c2565b905061142661141f828a613dbc565b8351613e06565b1561146a57815160405163b806175d60e01b81526001600160601b0380891660048301529182166024820152818316604482015290891660648201526084016108ae565b505f61147e6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03881660048201529091505f9081906001600160a01b0384169063a48f42e0906024015f60405180830381865afa1580156114cf573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526114f69190810190615709565b602001516040516302d764c760e21b81526001600160601b03821660048201529091505f906001600160a01b03881690630b5d931c906024015f60405180830381865afa158015611549573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526115709190810190615861565b6101a00151604051634f69237560e11b815281516004820152602082015160248201526001600160601b038d16604482015290915073__$58e11c6004c5796aaa8c56e718245e69a2$__90639ed246ea906064016040805180830381865af41580156115de573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160291906159cf565b60035460408051631a99b41b60e31b81529051929d509295506001600160a01b03908116945063d56cd3d593508a169163d4cda0d89160048083019260209291908290030181865afa15801561165a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061167e9190615415565b898b856040518563ffffffff1660e01b81526004016116a0949392919061559f565b5f604051808303815f87803b1580156116b7575f80fd5b505af11580156116c9573d5f803e3d5ffd5b50506002546040516325fa796b60e01b81526001600160a01b0390911692506325fa796b91506117269089908e908d906004016001600160a01b039390931683526001600160601b03918216602084015216604082015260600190565b5f604051808303815f87803b15801561173d575f80fd5b505af115801561174f573d5f803e3d5ffd5b505050507fa397b0d38fe748a8c29cce53eab5736ef0c29c156e7a9586ae8b88a8557b4145866001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117d491906153c2565b604080516001600160601b0392831681528a831660208201528d8316818301528c83166060820152918b166080830152519081900360a00190a18260600151610be1575f61182a6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038d1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611877573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061189b9190615415565b90506118a98689838d613e50565b505050505050505092915050565b5f73__$1d92393fa9ccd763988368ce8a1cb90d26$__63dda777d3600f6118dc611bbd565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865af415801561191f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061058091906156b3565b6040516355205f0f60e01b81526001600160601b03821660048201525f90819081906119ce90879073__$3bac17678db7ae928afa209f2f44deec9c$__906355205f0f90602401602060405180830381865af41580156119a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c991906159fc565b613ef7565b604051632255341b60e11b81526004810182905290915073__$3bac17678db7ae928afa209f2f44deec9c$__90634c41dd969073__$bf7bc340cbb9229ef1de2c568356e67902$__906344aa683690602401602060405180830381865af4158015611a3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a5f91906159fc565b6040518263ffffffff1660e01b8152600401611a7d91815260200190565b602060405180830381865af4158015611a98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611abc91906153c2565b925073__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd96611ae28784613ef7565b604051632255341b60e11b8152600481019190915273__$bf7bc340cbb9229ef1de2c568356e67902$__906344aa683690602401602060405180830381865af4158015611b31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b5591906159fc565b6040518263ffffffff1660e01b8152600401611b7391815260200190565b602060405180830381865af4158015611b8e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bb291906153c2565b915050935093915050565b604051632392b61b60e21b8152600360048201525f9073__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af4158015611c0d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105809190615a13565b33611c3a612623565b6001600160a01b0316816001600160a01b031614611c755760405162d1953b60e31b81526001600160a01b03821660048201526024016108ae565b816001600160a01b03163b5f03611caa576040516361798f2f60e11b81526001600160a01b03831660048201526024016108ae565b611cb382613f0b565b5050565b5f808080611cc686600c613718565b6040516302d764c760e21b81526001600160601b03871660048201526001600160a01b03881690630b5d931c906024015f60405180830381865afa158015611d10573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d379190810190615861565b60a001516040516357f80bbf60e01b81526001600160601b03821660048201529094505f906001600160a01b038916906357f80bbf9060240160e060405180830381865afa158015611d8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611daf91906155e0565b905080608001519150611dcb8160a001518260c0015188611943565b9599909850949650909450505050565b5f80611de633610f22565b611df186600c613718565b611dfc856015613718565b611e0784601f613718565b5f80611e738a6001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e48573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e6c9190615415565b8987611cb7565b600254604051634adcf90960e01b81529398509196509294509192506001600160a01b0390911690634adcf90990611eb5908d908b908b90899060040161559f565b5f604051808303815f87803b158015611ecc575f80fd5b505af1158015611ede573d5f803e3d5ffd5b5050505060045f9054906101000a90046001600160a01b03166001600160a01b031663ea48ce9b8b6001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f6591906153c2565b8b876040518463ffffffff1660e01b8152600401611f8593929190615673565b6020604051808303815f875af1158015611fa1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fc591906153c2565b5080156120c2575f611fdf6001546001600160a01b031690565b60405163bf8e179760e01b81526001600160601b03851660048201526001600160a01b03919091169063bf8e179790602401602060405180830381865afa15801561202c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120509190615415565b604051634deed57960e01b81526001600160601b03808b166004830152808a166024830152871660448201529091506001600160a01b03821690634deed579906064015f604051808303815f87803b1580156120aa575f80fd5b505af11580156120bc573d5f803e3d5ffd5b50505050505b5050965096945050505050565b5f805f80516020615f5783398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801561213b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061215f9190615a2e565b156121ea576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156121c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121e49190615415565b91505090565b54600160601b90046001600160a01b0316919050565b5f8061220c600f6137cf565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561224e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122729190615415565b6040516357f80bbf60e01b81526001600160601b03851660048201529091506001600160a01b038216906357f80bbf9060240160e060405180830381865afa1580156122c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122e491906155e0565b606001516123105760405163664958ad60e01b81526001600160601b03841660048201526024016108ae565b5f6123236001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03861660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612370573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123949190615415565b90507f67e4007a2396f32c2c58b0546d5dc80e8097a965b3de4127c33f3610864416bd8482876040516123c993929190615673565b60405180910390a1610dcc82858388613e50565b5f80516020615f7783398151915280545f9190600160a01b900460ff16612404575f6121e4565b638fb3603760e01b91505090565b5f8061241e600f6137cf565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612460573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124849190615415565b6040516357f80bbf60e01b81526001600160601b03851660048201529091505f906001600160a01b038316906357f80bbf9060240160e060405180830381865afa1580156124d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124f891906155e0565b80516001600160601b038716825260408051631a99b41b60e31b8152905192935090916001600160a01b0386169163d4cda0d89160048083019260209291908290030181865afa15801561254e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125729190615415565b6001600160a01b03166328802681868460ff6040518463ffffffff1660e01b81526004016125a293929190615a47565b5f604051808303815f87803b1580156125b9575f80fd5b505af11580156125cb573d5f803e3d5ffd5b5050604080516001600160601b03898116825285811660208301528a168183015290517f59c52d680289bf3ed1eaf8c98c2385d021cbc74043dd1ed596d6383f63235ffc9350908190036060019150a1505050505050565b5f80516020615f77833981519152546001600160a01b031690565b61264981601f613718565b5f80612655600f6137cf565b600254604051632aa6b2cb60e21b81529395509093505f928392506001600160a01b039091169063aa9acb2c9061269290869089906004016156ce565b60408051808303815f875af11580156126ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126d191906159cf565b9150915060035f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a2846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612734573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127589190615415565b866127638686613dbc565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156127aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127ce91906153c2565b6040518563ffffffff1660e01b81526004016127ed949392919061559f565b5f604051808303815f87803b158015612804575f80fd5b505af1158015612816573d5f803e3d5ffd5b505050507f64c75a4392ba38fee1b5a44b61e3dd0cae424d2d43eb2b0c99772efe31e1c042836001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612877573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061289b91906153c2565b604080516001600160601b03928316815282881660208201529188169082015260600160405180910390a16128d08282613dbc565b6040516330b8415f60e01b81526001600160601b03909116600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af4158015612927573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061294b9190615a2e565b15610dcc575f836001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561298d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129b19190615415565b60405163f0ea17c360e01b81526001600160601b03871660048201526001600160a01b03919091169063f0ea17c3906024015f60405180830381865afa1580156129fd573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612a249190810190615abf565b905080604001516001600160a01b03166354f0d84c82604001516001600160a01b031663132996046040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a79573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a9d9190615415565b6001546001600160a01b0316604051631c5da14d60e11b81526001600160601b038b1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612af6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b1a9190615415565b612b248787613dbc565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526001600160601b031660448201526064015f604051808303815f87803b158015612b79575f80fd5b505af1158015612b8b573d5f803e3d5ffd5b50505050505050505050565b612ba033610f22565b612bab836015613718565b60208201515f612bc36001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa158015612c0f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612c369190810190615709565b6020015190505f876001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c79573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c9d9190615415565b905060035f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a282848773__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015612d0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d3091906153c2565b6040518563ffffffff1660e01b8152600401612d4f949392919061559f565b5f604051808303815f87803b158015612d66575f80fd5b505af1158015612d78573d5f803e3d5ffd5b5050505060035f9054906101000a90046001600160a01b03166001600160a01b031663e618053f82858773__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015612de9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e0d91906153c2565b6040518563ffffffff1660e01b8152600401612e2c949392919061559f565b5f604051808303815f87803b158015612e43575f80fd5b505af1158015612e55573d5f803e3d5ffd5b5050600254602088015160405163ad328d9f60e01b81526001600160a01b03909216935063ad328d9f9250612e92918c918b918a9060040161559f565b5f604051808303815f87803b158015612ea9575f80fd5b505af1158015612ebb573d5f803e3d5ffd5b5050505060045f9054906101000a90046001600160a01b03166001600160a01b031663d44f8a4b896001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f4291906153c2565b89876040518463ffffffff1660e01b8152600401612f6293929190615673565b6020604051808303815f875af1158015612f7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fa291906153c2565b505050505050505050565b612fb8836015613718565b5f80612fc4600f6137cf565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015613006573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061302a9190615415565b90505f61303684613f6b565b60405163bd7d9d8560e01b81526001600160601b03891660048201529091505f906001600160a01b0384169063bd7d9d85906024015f60405180830381865afa158015613085573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526130ac9190810190615b9e565b90506130bb815f01518361386b565b156130f7578051604051636083e75360e01b81526001600160601b03808b166004830152918216602482015290831660448201526064016108ae565b604080516001600160601b038a8116825261ffff8a16602083015288168183015290517f6a2b4f9e8a4bb9038617a047352d25c5ac3c64c4aaba95e576b978a91b6666fb9181900360600190a16040516302d764c760e21b81526001600160601b03831660048201526001600160a01b03841690630b5d931c906024015f60405180830381865afa15801561318e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526131b59190810190615861565b51156132b4575f6131ce6001546001600160a01b031690565b60405163bf8e179760e01b81526001600160601b03851660048201526001600160a01b03919091169063bf8e179790602401602060405180830381865afa15801561321b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061323f9190615415565b6040516370f90b7d60e11b81526001600160601b03808c16600483015261ffff8b166024830152891660448201529091506001600160a01b0382169063e1f216fa906064015b5f604051808303815f87803b15801561329c575f80fd5b505af11580156132ae573d5f803e3d5ffd5b50505050505b5050505050505050565b6132c733610f22565b6132d282601f613718565b5f6132e56001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03851660048201529091505f906001600160a01b0383169063a48f42e0906024015f60405180830381865afa158015613334573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261335b9190810190615709565b602001516040516305247a1760e51b81526001600160601b03821660048201529091505f906133e49084906001600160a01b0382169063a48f42e0906024015f60405180830381865afa1580156133b4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526133db9190810190615709565b60200151613ffb565b90505f6133fa8560e00151866101600151613dbc565b90505f613411866101000151876101800151613dbc565b90505f866060015190505f846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015613458573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061347c9190615415565b6003549091506001600160a01b031663d56cd3d5828861349c8688613dbc565b886040518563ffffffff1660e01b81526004016134bc949392919061559f565b5f604051808303815f87803b1580156134d3575f80fd5b505af11580156134e5573d5f803e3d5ffd5b50506003546040516325e451d360e01b81526001600160a01b0390911692506325e451d391506132859084908d908790899060040161559f565b5f805f80516020615f5783398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801561358b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135af9190615a2e565b156135db5780546040516301ab8b6760e21b81526001600160601b0390911660048201526024016108ae565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa15801561362d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136519190615a2e565b6136795760405163b9304b0d60e01b81526001600160a01b03841660048201526024016108ae565b6001546001600160a01b0316604051632f2a35f760e11b81526001600160a01b0385811660048301529190911690635e546bee90602401602060405180830381865afa1580156136cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136ef91906153c2565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b6001546001600160a01b0316604051635b12715d60e11b81526001600160601b038416600482015260ff831660248201526001600160a01b03919091169063b624e2ba90604401602060405180830381865afa15801561377a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061379e9190615a2e565b611cb35760405163d711af7560e01b81526001600160601b038316600482015260ff821660248201526044016108ae565b5f6137d8614a5c565b5f6137eb6001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa15801561382f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061385391906153c2565b92506138618385600161407d565b9395909450915050565b6040516399009c5160e01b81526001600160601b038084166004830152821660248201525f9073__$94a2c899be079b00d952d0d84fffaa5c34$__906399009c51906044015b602060405180830381865af41580156138cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138f09190615a2e565b9392505050565b60405163f0ea17c360e01b81526001600160601b03841660048201525f906001600160a01b0386169063f0ea17c3906024015f60405180830381865afa158015613943573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261396a9190810190615abf565b905080604001516001600160a01b03166354f0d84c82604001516001600160a01b031663132996046040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139e39190615415565b6040516001600160e01b031960e084901b1681526001600160a01b03918216600482015290861660248201526001600160601b03851660448201526064015b5f604051808303815f87803b158015613a39575f80fd5b505af1158015612fa2573d5f803e3d5ffd5b6101dc614362565b5f80516020615f778339815191525f80613a8b613a6e612623565b8730613a7d60045f8a8c615d31565b613a8691615d58565b61439a565b91509150816110f35763ffffffff811615613b2657825460ff60a01b1916600160a01b178355613ab9612623565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b8152600401613ae893929190615d90565b5f604051808303815f87803b158015613aff575f80fd5b505af1158015613b11573d5f803e3d5ffd5b5050845460ff60a01b19168555506110f39050565b60405162d1953b60e31b81526001600160a01b03871660048201526024016108ae565b6040516363cf551160e11b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa22906044015b602060405180830381865af4158015613baa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138f091906153c2565b5f80516020615f978339815191528054600160401b810460ff1615906001600160401b03165f81158015613bff5750825b90505f826001600160401b03166001148015613c1a5750303b155b905081158015613c28575080155b15613c465760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315613c7057845460ff60401b1916600160401b1785555b5f8087806020019051810190613c869190615dcf565b91509150613c9582828b6144a2565b613c9f601f6145e7565b600280546001600160a01b0319166001600160a01b0392909216919091179055613cc9600b6145e7565b600380546001600160a01b0319166001600160a01b03928316179055600154166001600160a01b0316630e9ed68b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d489190615415565b600480546001600160a01b0319166001600160a01b0392909216919091179055613d78631b5e575560e01b61467e565b505083156111ee57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020016111e5565b60405163274acb3560e01b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb3590604401613b8f565b604051632601631360e21b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__906398058c4c906044016138b1565b60405163f0ea17c360e01b81526001600160601b03841660048201525f906001600160a01b0386169063f0ea17c3906024015f60405180830381865afa158015613e9c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613ec39190810190615abf565b905080604001516001600160a01b031663819b400e84846040518363ffffffff1660e01b8152600401613a229291906156ce565b5f6138f08383670de0b6b3a76400006146aa565b5f80516020615f7783398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b5f613f7e6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa158015613fca573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613ff19190810190615709565b6020015192915050565b6040516305247a1760e51b81526001600160601b03821660048201525f906138f09084906001600160a01b0382169063a48f42e0906024015f60405180830381865afa15801561404d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526140749190810190615709565b60200151614766565b614085614a5c565b5f806140996001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03881660048201529091506001600160a01b0382169063a48f42e0906024015f60405180830381865afa1580156140e6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261410d9190810190615709565b925060ff8516600b1461416b57604083015160ff86811691161461416657604080840151905163b83d92cb60e01b81526001600160601b038816600482015260ff808816602483015290911660448201526064016108ae565b614207565b614186836040015161417b600c90565b60ff90811691161490565b8061419c575061419c836040015161417b600f90565b806141b257506141b2836040015161417b600e90565b806141c857506141c8836040015161417b600d90565b61420757604080840151905163b83d92cb60e01b81526001600160601b038816600482015260ff808816602483015290911660448201526064016108ae565b614217836040015161417b600390565b15614222575061435a565b614232836040015161417b600c90565b1561424c57614245818460200151614766565b915061425d565b61425a818460200151613ffb565b91505b831561435857816001600160a01b031663311adb686040518163ffffffff1660e01b8152600401602060405180830381865afa15801561429f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142c39190615415565b6080840151604051629b7b3560e61b81526001600160a01b0391821660048201529116906326decd4090602401602060405180830381865afa15801561430b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061432f9190615a2e565b1561435857604051637d71120960e11b81526001600160601b03871660048201526024016108ae565b505b935093915050565b5f80516020615f9783398151915254600160401b900460ff1661439857604051631afcd79f60e31b815260040160405180910390fd5b565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516144089190615dfc565b5f60405180830381855afa9150503d805f8114614440576040519150601f19603f3d011682016040523d82523d5f602084013e614445565b606091505b50915091508115614497576040815110614477578080602001905181019061446d9190615e12565b9094509250614497565b602081511061449757808060200190518101906144949190615a2e565b93505b505094509492505050565b6144aa614362565b6144b26147d7565b6001600160a01b038216156144cf576144ca826147e7565b614546565b5f6144da60026145e7565b9050614544816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561451b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061453f9190615415565b6147e7565b505b6145c283846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015614586573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906145aa91906153c2565b60085f8560405180602001604052805f8152506147fb565b6145d2634a531f3360e01b61467e565b6145e263daf9067160e01b61467e565b505050565b5f6145fa6001546001600160a01b031690565b6001600160a01b031663d39e604383614611611bbd565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015614654573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906146789190615415565b92915050565b614686614362565b6001600160e01b0319165f908152602081905260409020805460ff19166001179055565b5f80805f19858709858702925082811083820303915050805f036146e1578382816146d7576146d7615e44565b04925050506138f0565b80841161470057604051629540d960e61b815260040160405180910390fd5b5f84868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203025f889003889004909101858311909403939093029303949094049190911702949350505050565b60405163bf8e179760e01b81526001600160601b03821660048201525f906001600160a01b0384169063bf8e179790602401602060405180830381865afa1580156147b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138f09190615415565b6147df614362565b614398614896565b6147ef614362565b6147f8816148c4565b50565b614803614362565b61480d86836148d5565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3016132b48382615e9c565b61489e614362565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6148cc614362565b6147f881613f0b565b6148dd614362565b6148e68261494b565b6148ee614a17565b6001600160a01b0381166149155760405163f17ef42d60e01b815260040160405180910390fd5b5f80516020615f5783398151915280546001600160601b0316600160601b6001600160a01b039093169290920291909117905550565b614953614362565b604051633334d16b60e01b81526001600160a01b038216600482015273__$fb599632d08395912d9d70eb2f0f93b5e2$__90633334d16b90602401602060405180830381865af41580156149a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906149cd9190615a2e565b6149f55760405163fdeac91f60e01b81526001600160a01b03821660048201526024016108ae565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b614a1f614362565b6301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b5f60208284031215614aa9575f80fd5b81356001600160e01b0319811681146138f0575f80fd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081526001600160601b0382511660208201526001600160601b03602083015116604082015260ff60408301511660608201525f6060830151614b36608084018215159052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e080840152614b7a610100840182614ac0565b949350505050565b6001600160601b03811681146147f8575f80fd5b8035614ba181614b82565b919050565b5f8060408385031215614bb7575f80fd5b8235614bc281614b82565b91506020830135614bd281614b82565b809150509250929050565b5f60208284031215614bed575f80fd5b81356138f081614b82565b634e487b7160e01b5f52604160045260245ffd5b60405161020081016001600160401b0381118282101715614c2f57614c2f614bf8565b60405290565b60405161024081016001600160401b0381118282101715614c2f57614c2f614bf8565b60405160c081016001600160401b0381118282101715614c2f57614c2f614bf8565b60405160e081016001600160401b0381118282101715614c2f57614c2f614bf8565b6040516101e081016001600160401b0381118282101715614c2f57614c2f614bf8565b604051608081016001600160401b0381118282101715614c2f57614c2f614bf8565b604051601f8201601f191681016001600160401b0381118282101715614d0957614d09614bf8565b604052919050565b5f6001600160401b03821115614d2957614d29614bf8565b50601f01601f191660200190565b5f82601f830112614d46575f80fd5b8135614d59614d5482614d11565b614ce1565b818152846020838601011115614d6d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215614d99575f80fd5b81356001600160401b03811115614dae575f80fd5b614b7a84828501614d37565b6001600160a01b03811681146147f8575f80fd5b6001600160c01b0319811681146147f8575f80fd5b8035614ba181614dce565b64ffffffffff811681146147f8575f80fd5b8035614ba181614dee565b61ffff811681146147f8575f80fd5b8035614ba181614e0b565b5f6102008284031215614e36575f80fd5b614e3e614c0c565b9050614e4982614b96565b8152614e5760208301614b96565b6020820152614e6860408301614de3565b6040820152614e7960608301614de3565b6060820152614e8a60808301614b96565b6080820152614e9b60a08301614b96565b60a0820152614eac60c08301614e00565b60c082015260e08201356001600160401b03811115614ec9575f80fd5b614ed584828501614d37565b60e0830152506101008201356001600160401b03811115614ef4575f80fd5b614f0084828501614d37565b61010083015250614f146101208301614e1a565b610120820152614f276101408301614e1a565b610140820152614f3a6101608301614b96565b610160820152614f4d6101808301614b96565b610180820152614f606101a08301614e00565b6101a0820152614f736101c08301614e00565b6101c0820152614f866101e08301614e00565b6101e082015292915050565b5f805f8060808587031215614fa5575f80fd5b8435614fb081614dba565b93506020850135614fc081614dba565b92506040850135614fd081614b82565b915060608501356001600160401b03811115614fea575f80fd5b614ff687828801614e25565b91505092959194509250565b5f8060408385031215615013575f80fd5b823561501e81614dba565b915060208301356001600160401b03811115615038575f80fd5b61504485828601614d37565b9150509250929050565b5f805f60608486031215615060575f80fd5b8335925060208401359150604084013561507981614b82565b809150509250925092565b5f60208284031215615094575f80fd5b81356138f081614dba565b5f805f606084860312156150b1575f80fd5b83356150bc81614dba565b925060208401356150cc81614b82565b9150604084013561507981614b82565b5f805f805f8060c087890312156150f1575f80fd5b86356150fc81614dba565b9550602087013561510c81614dba565b9450604087013561511c81614b82565b9350606087013561512c81614b82565b9250608087013561513c81614b82565b915060a087013561514c81614b82565b809150509295509295509295565b5f805f805f60a0868803121561516e575f80fd5b853561517981614dba565b9450602086013561518981614dba565b9350604086013561519981614b82565b925060608601356001600160401b038111156151b3575f80fd5b6151bf88828901614e25565b92505060808601356151d081614b82565b809150509295509295909350565b5f805f606084860312156151f0575f80fd5b83356151fb81614b82565b925060208401356150cc81614e0b565b5f8082840361026081121561521e575f80fd5b833561522981614b82565b9250610240601f198201121561523d575f80fd5b50615246614c35565b61525260208501614b96565b815261526060408501614b96565b602082015261527160608501614b96565b604082015261528260808501614b96565b606082015261529360a08501614b96565b60808201526152a460c08501614b96565b60a08201526152b560e08501614b96565b60c08201526152c76101008501614b96565b60e08201526152d96101208501614b96565b6101008201526152ec6101408501614b96565b6101208201526152ff6101608501614b96565b6101408201526153126101808501614b96565b6101608201526153256101a08501614b96565b6101808201526153386101c08501614b96565b6101a082015261534b6101e08501614b96565b6101c082015261535e6102008501614b96565b6101e08201526153716102208501614b96565b6102008201526153846102408501614b96565b610220820152809150509250929050565b5f602082840312156153a5575f80fd5b815162ffffff811681146138f0575f80fd5b8051614ba181614b82565b5f602082840312156153d2575f80fd5b81516138f081614b82565b600181811c908216806153f157607f821691505b60208210810361540f57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215615425575f80fd5b81516138f081614dba565b5f60408284031215615440575f80fd5b604080519081016001600160401b038111828210171561546257615462614bf8565b604052825181526020928301519281019290925250919050565b5f615489614d5484614d11565b905082815283838301111561549c575f80fd5b8282602083015e5f602084830101529392505050565b5f82601f8301126154c1575f80fd5b6138f08383516020850161547c565b8051614ba181614dee565b5f602082840312156154eb575f80fd5b81516001600160401b03811115615500575f80fd5b820160e08185031215615511575f80fd5b615519614c58565b815161552481614b82565b81526155338560208401615430565b602082015260608201516001600160401b03811115615550575f80fd5b61555c868285016154b2565b604083015250608082015161557081614dee565b606082015261558160a083016154d0565b608082015261559260c083016154d0565b60a0820152949350505050565b6001600160a01b039490941684526001600160601b039283166020850152908216604084015216606082015260800190565b80518015158114614ba1575f80fd5b5f60e08284031280156155f1575f80fd5b506155fa614c7a565b825161560581614b82565b8152615613602084016155d1565b6020820152615624604084016155d1565b6040820152615635606084016155d1565b6060820152615646608084016155d1565b608082015260a0838101519082015260c0928301519281019290925250919050565b8051614ba181614dba565b6001600160601b0393841681526001600160a01b03929092166020830152909116604082015260600190565b6001600160401b03811681146147f8575f80fd5b5f602082840312156156c3575f80fd5b81516138f08161569f565b6001600160a01b039290921682526001600160601b0316602082015260400190565b60ff811681146147f8575f80fd5b8051614ba1816156f0565b5f60208284031215615719575f80fd5b81516001600160401b0381111561572e575f80fd5b820160e0818503121561573f575f80fd5b615747614c7a565b615750826153b7565b815261575e602083016153b7565b602082015261576f604083016156fe565b6040820152615780606083016155d1565b606082015261579160808301615668565b60808201526157a260a08301615668565b60a082015260c08201516001600160401b038111156157bf575f80fd5b6157cb868285016154b2565b60c083015250949350505050565b5f82601f8301126157e8575f80fd5b81516001600160401b0381111561580157615801614bf8565b8060051b61581160208201614ce1565b9182526020818501810192908101908684111561582c575f80fd5b6020860192505b8383101561585757825161584681614b82565b825260209283019290910190615833565b9695505050505050565b5f60208284031215615871575f80fd5b81516001600160401b03811115615886575f80fd5b82016102c08185031215615898575f80fd5b6158a0614c9c565b6158a9826155d1565b81526158b7602083016155d1565b60208201526158c8604083016155d1565b60408201526158d9606083016156fe565b60608201526158ea608083016156fe565b60808201526158fb60a083016153b7565b60a082015261590c60c083016153b7565b60c082015260e08201516001600160401b03811115615929575f80fd5b615935868285016157d9565b60e083015250615949856101008401615430565b61010082015261595d856101408401615430565b610120820152615971856101808401615430565b610140820152615985856101c08401615430565b610160820152615999856102008401615430565b6101808201526159ad856102408401615430565b6101a08201526159c1856102808401615430565b6101c0820152949350505050565b5f80604083850312156159e0575f80fd5b82516159eb81614b82565b6020840151909250614bd281614b82565b5f60208284031215615a0c575f80fd5b5051919050565b5f60208284031215615a23575f80fd5b81516138f0816156f0565b5f60208284031215615a3e575f80fd5b6138f0826155d1565b5f610120820190506001600160601b03851682526001600160601b0384511660208301526020840151151560408301526040840151151560608301526060840151151560808301526080840151151560a083015260a084015160c083015260c084015160e0830152614b7a61010083018460ff169052565b5f60208284031215615acf575f80fd5b81516001600160401b03811115615ae4575f80fd5b820160808185031215615af5575f80fd5b615afd614cbf565b81516001600160401b03811115615b12575f80fd5b8201601f81018613615b22575f80fd5b615b318682516020840161547c565b825250615b4060208301615668565b6020820152615b5160408301615668565b604082015260608201516001600160401b03811115615b6e575f80fd5b615b7a868285016154b2565b606083015250949350505050565b8051614ba181614dce565b8051614ba181614e0b565b5f60208284031215615bae575f80fd5b81516001600160401b03811115615bc3575f80fd5b82016102008185031215615bd5575f80fd5b615bdd614c0c565b615be6826153b7565b8152615bf4602083016153b7565b6020820152615c0560408301615b88565b6040820152615c1660608301615b88565b6060820152615c27608083016153b7565b6080820152615c3860a083016153b7565b60a0820152615c4960c083016154d0565b60c082015260e08201516001600160401b03811115615c66575f80fd5b615c72868285016154b2565b60e0830152506101008201516001600160401b03811115615c91575f80fd5b615c9d868285016154b2565b61010083015250615cb16101208301615b93565b610120820152615cc46101408301615b93565b610140820152615cd761016083016153b7565b610160820152615cea61018083016153b7565b610180820152615cfd6101a083016154d0565b6101a0820152615d106101c083016154d0565b6101c0820152615d236101e083016154d0565b6101e0820152949350505050565b5f8085851115615d3f575f80fd5b83861115615d4b575f80fd5b5050820193919092039150565b80356001600160e01b03198116906004841015615d89576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f8060408385031215615de0575f80fd5b8251615deb81614dba565b6020840151909250614bd281614dba565b5f82518060208501845e5f920191825250919050565b5f8060408385031215615e23575f80fd5b615e2c836155d1565b9150602083015163ffffffff81168114614bd2575f80fd5b634e487b7160e01b5f52601260045260245ffd5b601f8211156145e257805f5260205f20601f840160051c81016020851015615e7d5750805b601f840160051c820191505b81811015610dcc575f8155600101615e89565b81516001600160401b03811115615eb557615eb5614bf8565b615ec981615ec384546153dd565b84615e58565b6020601f821160018114615efb575f8315615ee45750848201515b5f19600385901b1c1916600184901b178455610dcc565b5f84815260208120601f198516915b82811015615f2a5787850151825560209485019460019092019101615f0a565b5084821015615f4757868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122078ee33ddfa193ffdd53adeca5d9281872eca50447c466a7120454c3e3d039a8a64736f6c634300081a0033",
1386
+ "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106101dc575f3560e01c806376b707b711610109578063ada9652e1161009e578063d0d63b091161006e578063d0d63b09146104b2578063db02f7d3146104c5578063e1f216fa146104d8578063fb3bcd1f146104eb575f80fd5b8063ada9652e1461047c578063b68d180914610490578063bca99e3914610497578063bf7e214f146104aa575f80fd5b80638899278a116100d95780638899278a14610438578063893d20e8146104405780638e4a508e146104485780638fb360371461045b575f80fd5b806376b707b7146103b05780637a9e5e4b146103ca57806384a710fa146103dd57806384d1f7cf14610425575f80fd5b8063329d6e741161017f578063644c45e01161014f578063644c45e01461032d5780636c1e9dff1461034a5780636c741e781461035d5780637225ed011461037d575f80fd5b8063329d6e74146102cf57806332f9f3df146102e257806349bb9e4b146102f55780635ab1bd5314610308575f80fd5b8063138461e0116101ba578063138461e0146102525780631eff4b221461027257806326889b09146102a7578063329c71c0146102ba575f80fd5b806301ffc9a7146101e05780630d8e6e2c146102215780630fec111c1461023d575b5f80fd5b61020c6101ee366004614a99565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6102296104fe565b60405162ffffff9091168152602001610218565b610245610585565b6040516102189190614aee565b61025a610711565b6040516001600160601b039091168152602001610218565b6102997f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610218565b61025a6102b5366004614ba6565b61071b565b6102cd6102c8366004614bdd565b610bef565b005b6102cd6102dd366004614d89565b610dd3565b6102cd6102f0366004614f92565b610f1d565b6102cd610303366004615002565b6110fb565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610218565b5f80516020615f57833981519152546001600160601b031661025a565b61025a610358366004614ba6565b6111f7565b6103656118b7565b6040516001600160401b039091168152602001610218565b61039061038b36600461504e565b611943565b604080516001600160601b03938416815292909116602083015201610218565b6103b8611bbd565b60405160ff9091168152602001610218565b6102cd6103d8366004615084565b611c31565b6103f06103eb36600461509f565b611cb7565b60405161021894939291906001600160601b039485168152928416602084015292166040820152901515606082015260800190565b6103906104333660046150dc565b611ddb565b610299600381565b6103156120cf565b6102cd610456366004614bdd565b612200565b6104636123dd565b6040516001600160e01b03199091168152602001610218565b6102995f80516020615f5783398151915281565b600f6103b8565b6102cd6104a5366004614bdd565b612412565b610315612623565b6102cd6104c0366004614bdd565b61263e565b6102cd6104d336600461515a565b612b97565b6102cd6104e63660046151de565b612fad565b6102cd6104f936600461520b565b6132be565b604051632efe011360e01b8152600360048201525f60248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af415801561055c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105809190615395565b905090565b61058d614a5c565b5f7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610603573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062791906153c2565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a00161066f6120cf565b6001600160a01b0316815260200182600101805461068c906153dd565b80601f01602080910402602001604051908101604052809291908181526020018280546106b8906153dd565b80156107035780601f106106da57610100808354040283529160200191610703565b820191905f5260205f20905b8154815290600101906020018083116106e657829003601f168201915b505050505081525091505090565b5f6105803061351f565b5f61072783601f613718565b5f80610733600f6137cf565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610775573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107999190615415565b90505f826001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107fc9190615415565b604051634793b4ab60e01b81526001600160601b03891660048201529091505f906001600160a01b03841690634793b4ab906024015f60405180830381865afa15801561084b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261087291908101906154db565b9050610881815f01518661386b565b156108b757604051630a49ea2360e01b81526001600160601b03808a166004830152861660248201526044015b60405180910390fd5b600254604051631696791160e11b81526001600160a01b0386811660048301526001600160601b03808c1660248401528a1660448301525f921690632d2cf222906064016020604051808303815f875af1158015610917573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061093b91906153c2565b905080965060035f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a284888473__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156109ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d191906153c2565b6040518563ffffffff1660e01b81526004016109f0949392919061559f565b5f604051808303815f87803b158015610a07575f80fd5b505af1158015610a19573d5f803e3d5ffd5b505050507f1486849121d5ae771349472444bdddfe08862a6644665b5fd7ed4cf14a51db78856001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a7a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9e91906153c2565b604080516001600160601b03928316815289831660208201528c8316818301528483166060820152918a166080830152519081900360a00190a16040516357f80bbf60e01b81526001600160601b03871660048201526001600160a01b038516906357f80bbf9060240160e060405180830381865afa158015610b23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4791906155e0565b60600151610be3575f610b626001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038c1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015610baf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd39190615415565b9050610be18588838b6138f7565b505b50505050505092915050565b5f80610bfb600f6137cf565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c3d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c619190615415565b6040516357f80bbf60e01b81526001600160601b03851660048201529091506001600160a01b038216906357f80bbf9060240160e060405180830381865afa158015610caf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd391906155e0565b60600151610cff5760405163664958ad60e01b81526001600160601b03841660048201526024016108ae565b5f610d126001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03861660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015610d5f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d839190615415565b90507ff93784364e35bd9d02fb31e12793254279ee0381ed65b4fa39ee297b22fdd79a848287604051610db893929190615673565b60405180910390a1610dcc828583886138f7565b5050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c610df56104fe565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610e33573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5791906156b3565b5f80516020615f978339815191528054600160401b900460ff1680610e89575080546001600160401b03808416911610155b15610ea75760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610ed183613a4b565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b610f29335b5f36613a53565b610f34826015613718565b5f610f488260800151836101600151613b49565b600254602084015160405163ad328d9f60e01b81529293506001600160a01b039091169163ad328d9f91610f849189918891879060040161559f565b5f604051808303815f87803b158015610f9b575f80fd5b505af1158015610fad573d5f803e3d5ffd5b50506002546040516301d90a6f60e61b81526001600160a01b0390911692506376429bc09150610fe390889087906004016156ce565b5f604051808303815f87803b158015610ffa575f80fd5b505af115801561100c573d5f803e3d5ffd5b5050505060045f9054906101000a90046001600160a01b03166001600160a01b031663d44f8a4b866001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561106f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109391906153c2565b86846040518463ffffffff1660e01b81526004016110b393929190615673565b6020604051808303815f875af11580156110cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f391906153c2565b505050505050565b5f80516020615f978339815191528054600160401b810460ff1615906001600160401b03165f8115801561112c5750825b90505f826001600160401b031660011480156111475750303b155b905081158015611155575080155b156111735760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561119d57845460ff60401b1916600160401b1785555b6111a78787613bce565b83156111ee57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b5f61120383601f613718565b5f8061120f600f6137cf565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611251573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112759190615415565b604051634793b4ab60e01b81526001600160601b03881660048201529091505f906001600160a01b03831690634793b4ab906024015f60405180830381865afa1580156112c4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526112eb91908101906154db565b6040516357f80bbf60e01b81526001600160601b03861660048201529091505f906001600160a01b038416906357f80bbf9060240160e060405180830381865afa15801561133b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061135f91906155e0565b905061136e825f01518661386b565b1561139f57604051630a49ea2360e01b81526001600160601b03808a166004830152861660248201526044016108ae565b6040516308a390bb60e21b81526001600160601b03861660048201525f906001600160a01b0385169063228e42ec90602401602060405180830381865afa1580156113ec573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061141091906153c2565b905061142661141f828a613dbc565b8351613e06565b1561146a57815160405163b806175d60e01b81526001600160601b0380891660048301529182166024820152818316604482015290891660648201526084016108ae565b505f61147e6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03881660048201529091505f9081906001600160a01b0384169063a48f42e0906024015f60405180830381865afa1580156114cf573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526114f69190810190615709565b602001516040516302d764c760e21b81526001600160601b03821660048201529091505f906001600160a01b03881690630b5d931c906024015f60405180830381865afa158015611549573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526115709190810190615861565b6101a00151604051634f69237560e11b815281516004820152602082015160248201526001600160601b038d16604482015290915073__$58e11c6004c5796aaa8c56e718245e69a2$__90639ed246ea906064016040805180830381865af41580156115de573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160291906159cf565b60035460408051631a99b41b60e31b81529051929d509295506001600160a01b03908116945063d56cd3d593508a169163d4cda0d89160048083019260209291908290030181865afa15801561165a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061167e9190615415565b898b856040518563ffffffff1660e01b81526004016116a0949392919061559f565b5f604051808303815f87803b1580156116b7575f80fd5b505af11580156116c9573d5f803e3d5ffd5b50506002546040516325fa796b60e01b81526001600160a01b0390911692506325fa796b91506117269089908e908d906004016001600160a01b039390931683526001600160601b03918216602084015216604082015260600190565b5f604051808303815f87803b15801561173d575f80fd5b505af115801561174f573d5f803e3d5ffd5b505050507fa397b0d38fe748a8c29cce53eab5736ef0c29c156e7a9586ae8b88a8557b4145866001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117d491906153c2565b604080516001600160601b0392831681528a831660208201528d8316818301528c83166060820152918b166080830152519081900360a00190a18260600151610be1575f61182a6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b038d1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611877573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061189b9190615415565b90506118a98689838d613e50565b505050505050505092915050565b5f73__$1d92393fa9ccd763988368ce8a1cb90d26$__63dda777d3600f6118dc611bbd565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865af415801561191f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061058091906156b3565b6040516355205f0f60e01b81526001600160601b03821660048201525f90819081906119ce90879073__$3bac17678db7ae928afa209f2f44deec9c$__906355205f0f90602401602060405180830381865af41580156119a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c991906159fc565b613ef7565b604051632255341b60e11b81526004810182905290915073__$3bac17678db7ae928afa209f2f44deec9c$__90634c41dd969073__$bf7bc340cbb9229ef1de2c568356e67902$__906344aa683690602401602060405180830381865af4158015611a3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a5f91906159fc565b6040518263ffffffff1660e01b8152600401611a7d91815260200190565b602060405180830381865af4158015611a98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611abc91906153c2565b925073__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd96611ae28784613ef7565b604051632255341b60e11b8152600481019190915273__$bf7bc340cbb9229ef1de2c568356e67902$__906344aa683690602401602060405180830381865af4158015611b31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b5591906159fc565b6040518263ffffffff1660e01b8152600401611b7391815260200190565b602060405180830381865af4158015611b8e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bb291906153c2565b915050935093915050565b604051632392b61b60e21b8152600360048201525f9073__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af4158015611c0d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105809190615a13565b33611c3a612623565b6001600160a01b0316816001600160a01b031614611c755760405162d1953b60e31b81526001600160a01b03821660048201526024016108ae565b816001600160a01b03163b5f03611caa576040516361798f2f60e11b81526001600160a01b03831660048201526024016108ae565b611cb382613f0b565b5050565b5f808080611cc686600c613718565b6040516302d764c760e21b81526001600160601b03871660048201526001600160a01b03881690630b5d931c906024015f60405180830381865afa158015611d10573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d379190810190615861565b60a001516040516357f80bbf60e01b81526001600160601b03821660048201529094505f906001600160a01b038916906357f80bbf9060240160e060405180830381865afa158015611d8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611daf91906155e0565b905080608001519150611dcb8160a001518260c0015188611943565b9599909850949650909450505050565b5f80611de633610f22565b611df186600c613718565b611dfc856015613718565b611e0784601f613718565b5f80611e738a6001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e48573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e6c9190615415565b8987611cb7565b600254604051634adcf90960e01b81529398509196509294509192506001600160a01b0390911690634adcf90990611eb5908d908b908b90899060040161559f565b5f604051808303815f87803b158015611ecc575f80fd5b505af1158015611ede573d5f803e3d5ffd5b5050505060045f9054906101000a90046001600160a01b03166001600160a01b031663ea48ce9b8b6001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f6591906153c2565b8b876040518463ffffffff1660e01b8152600401611f8593929190615673565b6020604051808303815f875af1158015611fa1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fc591906153c2565b5080156120c2575f611fdf6001546001600160a01b031690565b60405163bf8e179760e01b81526001600160601b03851660048201526001600160a01b03919091169063bf8e179790602401602060405180830381865afa15801561202c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120509190615415565b604051634deed57960e01b81526001600160601b03808b166004830152808a166024830152871660448201529091506001600160a01b03821690634deed579906064015f604051808303815f87803b1580156120aa575f80fd5b505af11580156120bc573d5f803e3d5ffd5b50505050505b5050965096945050505050565b5f805f80516020615f5783398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801561213b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061215f9190615a2e565b156121ea576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156121c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121e49190615415565b91505090565b54600160601b90046001600160a01b0316919050565b5f8061220c600f6137cf565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561224e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122729190615415565b6040516357f80bbf60e01b81526001600160601b03851660048201529091506001600160a01b038216906357f80bbf9060240160e060405180830381865afa1580156122c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122e491906155e0565b606001516123105760405163664958ad60e01b81526001600160601b03841660048201526024016108ae565b5f6123236001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03861660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612370573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123949190615415565b90507f67e4007a2396f32c2c58b0546d5dc80e8097a965b3de4127c33f3610864416bd8482876040516123c993929190615673565b60405180910390a1610dcc82858388613e50565b5f80516020615f7783398151915280545f9190600160a01b900460ff16612404575f6121e4565b638fb3603760e01b91505090565b5f8061241e600f6137cf565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015612460573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124849190615415565b6040516357f80bbf60e01b81526001600160601b03851660048201529091505f906001600160a01b038316906357f80bbf9060240160e060405180830381865afa1580156124d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124f891906155e0565b80516001600160601b038716825260408051631a99b41b60e31b8152905192935090916001600160a01b0386169163d4cda0d89160048083019260209291908290030181865afa15801561254e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125729190615415565b6001600160a01b03166328802681868460ff6040518463ffffffff1660e01b81526004016125a293929190615a47565b5f604051808303815f87803b1580156125b9575f80fd5b505af11580156125cb573d5f803e3d5ffd5b5050604080516001600160601b03898116825285811660208301528a168183015290517f59c52d680289bf3ed1eaf8c98c2385d021cbc74043dd1ed596d6383f63235ffc9350908190036060019150a1505050505050565b5f80516020615f77833981519152546001600160a01b031690565b61264981601f613718565b5f80612655600f6137cf565b600254604051632aa6b2cb60e21b81529395509093505f928392506001600160a01b039091169063aa9acb2c9061269290869089906004016156ce565b60408051808303815f875af11580156126ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126d191906159cf565b9150915060035f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a2846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612734573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127589190615415565b866127638686613dbc565b73__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156127aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127ce91906153c2565b6040518563ffffffff1660e01b81526004016127ed949392919061559f565b5f604051808303815f87803b158015612804575f80fd5b505af1158015612816573d5f803e3d5ffd5b505050507f64c75a4392ba38fee1b5a44b61e3dd0cae424d2d43eb2b0c99772efe31e1c042836001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612877573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061289b91906153c2565b604080516001600160601b03928316815282881660208201529188169082015260600160405180910390a16128d08282613dbc565b6040516330b8415f60e01b81526001600160601b03909116600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906330b8415f90602401602060405180830381865af4158015612927573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061294b9190615a2e565b15610dcc575f836001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561298d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129b19190615415565b60405163f0ea17c360e01b81526001600160601b03871660048201526001600160a01b03919091169063f0ea17c3906024015f60405180830381865afa1580156129fd573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612a249190810190615abf565b905080604001516001600160a01b03166354f0d84c82604001516001600160a01b031663132996046040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a79573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a9d9190615415565b6001546001600160a01b0316604051631c5da14d60e11b81526001600160601b038b1660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015612af6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b1a9190615415565b612b248787613dbc565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526001600160601b031660448201526064015f604051808303815f87803b158015612b79575f80fd5b505af1158015612b8b573d5f803e3d5ffd5b50505050505050505050565b612ba033610f22565b612bab836015613718565b60208201515f612bc36001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa158015612c0f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612c369190810190615709565b6020015190505f876001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c79573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c9d9190615415565b905060035f9054906101000a90046001600160a01b03166001600160a01b03166389fad8a282848773__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015612d0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d3091906153c2565b6040518563ffffffff1660e01b8152600401612d4f949392919061559f565b5f604051808303815f87803b158015612d66575f80fd5b505af1158015612d78573d5f803e3d5ffd5b5050505060035f9054906101000a90046001600160a01b03166001600160a01b031663e618053f82858773__$3bac17678db7ae928afa209f2f44deec9c$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015612de9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e0d91906153c2565b6040518563ffffffff1660e01b8152600401612e2c949392919061559f565b5f604051808303815f87803b158015612e43575f80fd5b505af1158015612e55573d5f803e3d5ffd5b5050600254602088015160405163ad328d9f60e01b81526001600160a01b03909216935063ad328d9f9250612e92918c918b918a9060040161559f565b5f604051808303815f87803b158015612ea9575f80fd5b505af1158015612ebb573d5f803e3d5ffd5b5050505060045f9054906101000a90046001600160a01b03166001600160a01b031663d44f8a4b896001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f4291906153c2565b89876040518463ffffffff1660e01b8152600401612f6293929190615673565b6020604051808303815f875af1158015612f7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fa291906153c2565b505050505050505050565b612fb8836015613718565b5f80612fc4600f6137cf565b92505091505f816001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015613006573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061302a9190615415565b90505f61303684613f6b565b60405163bd7d9d8560e01b81526001600160601b03891660048201529091505f906001600160a01b0384169063bd7d9d85906024015f60405180830381865afa158015613085573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526130ac9190810190615b9e565b90506130bb815f01518361386b565b156130f7578051604051636083e75360e01b81526001600160601b03808b166004830152918216602482015290831660448201526064016108ae565b604080516001600160601b038a8116825261ffff8a16602083015288168183015290517f6a2b4f9e8a4bb9038617a047352d25c5ac3c64c4aaba95e576b978a91b6666fb9181900360600190a16040516302d764c760e21b81526001600160601b03831660048201526001600160a01b03841690630b5d931c906024015f60405180830381865afa15801561318e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526131b59190810190615861565b51156132b4575f6131ce6001546001600160a01b031690565b60405163bf8e179760e01b81526001600160601b03851660048201526001600160a01b03919091169063bf8e179790602401602060405180830381865afa15801561321b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061323f9190615415565b6040516370f90b7d60e11b81526001600160601b03808c16600483015261ffff8b166024830152891660448201529091506001600160a01b0382169063e1f216fa906064015b5f604051808303815f87803b15801561329c575f80fd5b505af11580156132ae573d5f803e3d5ffd5b50505050505b5050505050505050565b6132c733610f22565b6132d282601f613718565b5f6132e56001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03851660048201529091505f906001600160a01b0383169063a48f42e0906024015f60405180830381865afa158015613334573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261335b9190810190615709565b602001516040516305247a1760e51b81526001600160601b03821660048201529091505f906133e49084906001600160a01b0382169063a48f42e0906024015f60405180830381865afa1580156133b4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526133db9190810190615709565b60200151613ffb565b90505f6133fa8560e00151866101600151613dbc565b90505f613411866101000151876101800151613dbc565b90505f866060015190505f846001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015613458573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061347c9190615415565b6003549091506001600160a01b031663d56cd3d5828861349c8688613dbc565b886040518563ffffffff1660e01b81526004016134bc949392919061559f565b5f604051808303815f87803b1580156134d3575f80fd5b505af11580156134e5573d5f803e3d5ffd5b50506003546040516325e451d360e01b81526001600160a01b0390911692506325e451d391506132859084908d908790899060040161559f565b5f805f80516020615f5783398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801561358b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135af9190615a2e565b156135db5780546040516301ab8b6760e21b81526001600160601b0390911660048201526024016108ae565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa15801561362d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136519190615a2e565b6136795760405163b9304b0d60e01b81526001600160a01b03841660048201526024016108ae565b6001546001600160a01b0316604051632f2a35f760e11b81526001600160a01b0385811660048301529190911690635e546bee90602401602060405180830381865afa1580156136cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136ef91906153c2565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b6001546001600160a01b0316604051635b12715d60e11b81526001600160601b038416600482015260ff831660248201526001600160a01b03919091169063b624e2ba90604401602060405180830381865afa15801561377a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061379e9190615a2e565b611cb35760405163d711af7560e01b81526001600160601b038316600482015260ff821660248201526044016108ae565b5f6137d8614a5c565b5f6137eb6001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa15801561382f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061385391906153c2565b92506138618385600161407d565b9395909450915050565b6040516399009c5160e01b81526001600160601b038084166004830152821660248201525f9073__$94a2c899be079b00d952d0d84fffaa5c34$__906399009c51906044015b602060405180830381865af41580156138cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138f09190615a2e565b9392505050565b60405163f0ea17c360e01b81526001600160601b03841660048201525f906001600160a01b0386169063f0ea17c3906024015f60405180830381865afa158015613943573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261396a9190810190615abf565b905080604001516001600160a01b03166354f0d84c82604001516001600160a01b031663132996046040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139e39190615415565b6040516001600160e01b031960e084901b1681526001600160a01b03918216600482015290861660248201526001600160601b03851660448201526064015b5f604051808303815f87803b158015613a39575f80fd5b505af1158015612fa2573d5f803e3d5ffd5b6101dc614362565b5f80516020615f778339815191525f80613a8b613a6e612623565b8730613a7d60045f8a8c615d31565b613a8691615d58565b61439a565b91509150816110f35763ffffffff811615613b2657825460ff60a01b1916600160a01b178355613ab9612623565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b8152600401613ae893929190615d90565b5f604051808303815f87803b158015613aff575f80fd5b505af1158015613b11573d5f803e3d5ffd5b5050845460ff60a01b19168555506110f39050565b60405162d1953b60e31b81526001600160a01b03871660048201526024016108ae565b6040516363cf551160e11b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa22906044015b602060405180830381865af4158015613baa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138f091906153c2565b5f80516020615f978339815191528054600160401b810460ff1615906001600160401b03165f81158015613bff5750825b90505f826001600160401b03166001148015613c1a5750303b155b905081158015613c28575080155b15613c465760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315613c7057845460ff60401b1916600160401b1785555b5f8087806020019051810190613c869190615dcf565b91509150613c9582828b6144a2565b613c9f601f6145e7565b600280546001600160a01b0319166001600160a01b0392909216919091179055613cc9600b6145e7565b600380546001600160a01b0319166001600160a01b03928316179055600154166001600160a01b0316630e9ed68b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d489190615415565b600480546001600160a01b0319166001600160a01b0392909216919091179055613d78631b5e575560e01b61467e565b505083156111ee57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020016111e5565b60405163274acb3560e01b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb3590604401613b8f565b604051632601631360e21b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__906398058c4c906044016138b1565b60405163f0ea17c360e01b81526001600160601b03841660048201525f906001600160a01b0386169063f0ea17c3906024015f60405180830381865afa158015613e9c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613ec39190810190615abf565b905080604001516001600160a01b031663819b400e84846040518363ffffffff1660e01b8152600401613a229291906156ce565b5f6138f08383670de0b6b3a76400006146aa565b5f80516020615f7783398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b5f613f7e6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa158015613fca573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613ff19190810190615709565b6020015192915050565b6040516305247a1760e51b81526001600160601b03821660048201525f906138f09084906001600160a01b0382169063a48f42e0906024015f60405180830381865afa15801561404d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526140749190810190615709565b60200151614766565b614085614a5c565b5f806140996001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03881660048201529091506001600160a01b0382169063a48f42e0906024015f60405180830381865afa1580156140e6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261410d9190810190615709565b925060ff8516600b1461416b57604083015160ff86811691161461416657604080840151905163b83d92cb60e01b81526001600160601b038816600482015260ff808816602483015290911660448201526064016108ae565b614207565b614186836040015161417b600c90565b60ff90811691161490565b8061419c575061419c836040015161417b600f90565b806141b257506141b2836040015161417b600e90565b806141c857506141c8836040015161417b600d90565b61420757604080840151905163b83d92cb60e01b81526001600160601b038816600482015260ff808816602483015290911660448201526064016108ae565b614217836040015161417b600390565b15614222575061435a565b614232836040015161417b600c90565b1561424c57614245818460200151614766565b915061425d565b61425a818460200151613ffb565b91505b831561435857816001600160a01b031663311adb686040518163ffffffff1660e01b8152600401602060405180830381865afa15801561429f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142c39190615415565b6080840151604051629b7b3560e61b81526001600160a01b0391821660048201529116906326decd4090602401602060405180830381865afa15801561430b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061432f9190615a2e565b1561435857604051637d71120960e11b81526001600160601b03871660048201526024016108ae565b505b935093915050565b5f80516020615f9783398151915254600160401b900460ff1661439857604051631afcd79f60e31b815260040160405180910390fd5b565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516144089190615dfc565b5f60405180830381855afa9150503d805f8114614440576040519150601f19603f3d011682016040523d82523d5f602084013e614445565b606091505b50915091508115614497576040815110614477578080602001905181019061446d9190615e12565b9094509250614497565b602081511061449757808060200190518101906144949190615a2e565b93505b505094509492505050565b6144aa614362565b6144b26147d7565b6001600160a01b038216156144cf576144ca826147e7565b614546565b5f6144da60026145e7565b9050614544816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561451b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061453f9190615415565b6147e7565b505b6145c283846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015614586573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906145aa91906153c2565b60085f8560405180602001604052805f8152506147fb565b6145d2634a531f3360e01b61467e565b6145e263daf9067160e01b61467e565b505050565b5f6145fa6001546001600160a01b031690565b6001600160a01b031663d39e604383614611611bbd565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015614654573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906146789190615415565b92915050565b614686614362565b6001600160e01b0319165f908152602081905260409020805460ff19166001179055565b5f80805f19858709858702925082811083820303915050805f036146e1578382816146d7576146d7615e44565b04925050506138f0565b80841161470057604051629540d960e61b815260040160405180910390fd5b5f84868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203025f889003889004909101858311909403939093029303949094049190911702949350505050565b60405163bf8e179760e01b81526001600160601b03821660048201525f906001600160a01b0384169063bf8e179790602401602060405180830381865afa1580156147b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138f09190615415565b6147df614362565b614398614896565b6147ef614362565b6147f8816148c4565b50565b614803614362565b61480d86836148d5565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3016132b48382615e9c565b61489e614362565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6148cc614362565b6147f881613f0b565b6148dd614362565b6148e68261494b565b6148ee614a17565b6001600160a01b0381166149155760405163f17ef42d60e01b815260040160405180910390fd5b5f80516020615f5783398151915280546001600160601b0316600160601b6001600160a01b039093169290920291909117905550565b614953614362565b604051633334d16b60e01b81526001600160a01b038216600482015273__$fb599632d08395912d9d70eb2f0f93b5e2$__90633334d16b90602401602060405180830381865af41580156149a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906149cd9190615a2e565b6149f55760405163fdeac91f60e01b81526001600160a01b03821660048201526024016108ae565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b614a1f614362565b6301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b5f60208284031215614aa9575f80fd5b81356001600160e01b0319811681146138f0575f80fd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081526001600160601b0382511660208201526001600160601b03602083015116604082015260ff60408301511660608201525f6060830151614b36608084018215159052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e080840152614b7a610100840182614ac0565b949350505050565b6001600160601b03811681146147f8575f80fd5b8035614ba181614b82565b919050565b5f8060408385031215614bb7575f80fd5b8235614bc281614b82565b91506020830135614bd281614b82565b809150509250929050565b5f60208284031215614bed575f80fd5b81356138f081614b82565b634e487b7160e01b5f52604160045260245ffd5b60405161020081016001600160401b0381118282101715614c2f57614c2f614bf8565b60405290565b60405161024081016001600160401b0381118282101715614c2f57614c2f614bf8565b60405160c081016001600160401b0381118282101715614c2f57614c2f614bf8565b60405160e081016001600160401b0381118282101715614c2f57614c2f614bf8565b6040516101e081016001600160401b0381118282101715614c2f57614c2f614bf8565b604051608081016001600160401b0381118282101715614c2f57614c2f614bf8565b604051601f8201601f191681016001600160401b0381118282101715614d0957614d09614bf8565b604052919050565b5f6001600160401b03821115614d2957614d29614bf8565b50601f01601f191660200190565b5f82601f830112614d46575f80fd5b8135614d59614d5482614d11565b614ce1565b818152846020838601011115614d6d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215614d99575f80fd5b81356001600160401b03811115614dae575f80fd5b614b7a84828501614d37565b6001600160a01b03811681146147f8575f80fd5b6001600160c01b0319811681146147f8575f80fd5b8035614ba181614dce565b64ffffffffff811681146147f8575f80fd5b8035614ba181614dee565b61ffff811681146147f8575f80fd5b8035614ba181614e0b565b5f6102008284031215614e36575f80fd5b614e3e614c0c565b9050614e4982614b96565b8152614e5760208301614b96565b6020820152614e6860408301614de3565b6040820152614e7960608301614de3565b6060820152614e8a60808301614b96565b6080820152614e9b60a08301614b96565b60a0820152614eac60c08301614e00565b60c082015260e08201356001600160401b03811115614ec9575f80fd5b614ed584828501614d37565b60e0830152506101008201356001600160401b03811115614ef4575f80fd5b614f0084828501614d37565b61010083015250614f146101208301614e1a565b610120820152614f276101408301614e1a565b610140820152614f3a6101608301614b96565b610160820152614f4d6101808301614b96565b610180820152614f606101a08301614e00565b6101a0820152614f736101c08301614e00565b6101c0820152614f866101e08301614e00565b6101e082015292915050565b5f805f8060808587031215614fa5575f80fd5b8435614fb081614dba565b93506020850135614fc081614dba565b92506040850135614fd081614b82565b915060608501356001600160401b03811115614fea575f80fd5b614ff687828801614e25565b91505092959194509250565b5f8060408385031215615013575f80fd5b823561501e81614dba565b915060208301356001600160401b03811115615038575f80fd5b61504485828601614d37565b9150509250929050565b5f805f60608486031215615060575f80fd5b8335925060208401359150604084013561507981614b82565b809150509250925092565b5f60208284031215615094575f80fd5b81356138f081614dba565b5f805f606084860312156150b1575f80fd5b83356150bc81614dba565b925060208401356150cc81614b82565b9150604084013561507981614b82565b5f805f805f8060c087890312156150f1575f80fd5b86356150fc81614dba565b9550602087013561510c81614dba565b9450604087013561511c81614b82565b9350606087013561512c81614b82565b9250608087013561513c81614b82565b915060a087013561514c81614b82565b809150509295509295509295565b5f805f805f60a0868803121561516e575f80fd5b853561517981614dba565b9450602086013561518981614dba565b9350604086013561519981614b82565b925060608601356001600160401b038111156151b3575f80fd5b6151bf88828901614e25565b92505060808601356151d081614b82565b809150509295509295909350565b5f805f606084860312156151f0575f80fd5b83356151fb81614b82565b925060208401356150cc81614e0b565b5f8082840361026081121561521e575f80fd5b833561522981614b82565b9250610240601f198201121561523d575f80fd5b50615246614c35565b61525260208501614b96565b815261526060408501614b96565b602082015261527160608501614b96565b604082015261528260808501614b96565b606082015261529360a08501614b96565b60808201526152a460c08501614b96565b60a08201526152b560e08501614b96565b60c08201526152c76101008501614b96565b60e08201526152d96101208501614b96565b6101008201526152ec6101408501614b96565b6101208201526152ff6101608501614b96565b6101408201526153126101808501614b96565b6101608201526153256101a08501614b96565b6101808201526153386101c08501614b96565b6101a082015261534b6101e08501614b96565b6101c082015261535e6102008501614b96565b6101e08201526153716102208501614b96565b6102008201526153846102408501614b96565b610220820152809150509250929050565b5f602082840312156153a5575f80fd5b815162ffffff811681146138f0575f80fd5b8051614ba181614b82565b5f602082840312156153d2575f80fd5b81516138f081614b82565b600181811c908216806153f157607f821691505b60208210810361540f57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215615425575f80fd5b81516138f081614dba565b5f60408284031215615440575f80fd5b604080519081016001600160401b038111828210171561546257615462614bf8565b604052825181526020928301519281019290925250919050565b5f615489614d5484614d11565b905082815283838301111561549c575f80fd5b8282602083015e5f602084830101529392505050565b5f82601f8301126154c1575f80fd5b6138f08383516020850161547c565b8051614ba181614dee565b5f602082840312156154eb575f80fd5b81516001600160401b03811115615500575f80fd5b820160e08185031215615511575f80fd5b615519614c58565b815161552481614b82565b81526155338560208401615430565b602082015260608201516001600160401b03811115615550575f80fd5b61555c868285016154b2565b604083015250608082015161557081614dee565b606082015261558160a083016154d0565b608082015261559260c083016154d0565b60a0820152949350505050565b6001600160a01b039490941684526001600160601b039283166020850152908216604084015216606082015260800190565b80518015158114614ba1575f80fd5b5f60e08284031280156155f1575f80fd5b506155fa614c7a565b825161560581614b82565b8152615613602084016155d1565b6020820152615624604084016155d1565b6040820152615635606084016155d1565b6060820152615646608084016155d1565b608082015260a0838101519082015260c0928301519281019290925250919050565b8051614ba181614dba565b6001600160601b0393841681526001600160a01b03929092166020830152909116604082015260600190565b6001600160401b03811681146147f8575f80fd5b5f602082840312156156c3575f80fd5b81516138f08161569f565b6001600160a01b039290921682526001600160601b0316602082015260400190565b60ff811681146147f8575f80fd5b8051614ba1816156f0565b5f60208284031215615719575f80fd5b81516001600160401b0381111561572e575f80fd5b820160e0818503121561573f575f80fd5b615747614c7a565b615750826153b7565b815261575e602083016153b7565b602082015261576f604083016156fe565b6040820152615780606083016155d1565b606082015261579160808301615668565b60808201526157a260a08301615668565b60a082015260c08201516001600160401b038111156157bf575f80fd5b6157cb868285016154b2565b60c083015250949350505050565b5f82601f8301126157e8575f80fd5b81516001600160401b0381111561580157615801614bf8565b8060051b61581160208201614ce1565b9182526020818501810192908101908684111561582c575f80fd5b6020860192505b8383101561585757825161584681614b82565b825260209283019290910190615833565b9695505050505050565b5f60208284031215615871575f80fd5b81516001600160401b03811115615886575f80fd5b82016102c08185031215615898575f80fd5b6158a0614c9c565b6158a9826155d1565b81526158b7602083016155d1565b60208201526158c8604083016155d1565b60408201526158d9606083016156fe565b60608201526158ea608083016156fe565b60808201526158fb60a083016153b7565b60a082015261590c60c083016153b7565b60c082015260e08201516001600160401b03811115615929575f80fd5b615935868285016157d9565b60e083015250615949856101008401615430565b61010082015261595d856101408401615430565b610120820152615971856101808401615430565b610140820152615985856101c08401615430565b610160820152615999856102008401615430565b6101808201526159ad856102408401615430565b6101a08201526159c1856102808401615430565b6101c0820152949350505050565b5f80604083850312156159e0575f80fd5b82516159eb81614b82565b6020840151909250614bd281614b82565b5f60208284031215615a0c575f80fd5b5051919050565b5f60208284031215615a23575f80fd5b81516138f0816156f0565b5f60208284031215615a3e575f80fd5b6138f0826155d1565b5f610120820190506001600160601b03851682526001600160601b0384511660208301526020840151151560408301526040840151151560608301526060840151151560808301526080840151151560a083015260a084015160c083015260c084015160e0830152614b7a61010083018460ff169052565b5f60208284031215615acf575f80fd5b81516001600160401b03811115615ae4575f80fd5b820160808185031215615af5575f80fd5b615afd614cbf565b81516001600160401b03811115615b12575f80fd5b8201601f81018613615b22575f80fd5b615b318682516020840161547c565b825250615b4060208301615668565b6020820152615b5160408301615668565b604082015260608201516001600160401b03811115615b6e575f80fd5b615b7a868285016154b2565b606083015250949350505050565b8051614ba181614dce565b8051614ba181614e0b565b5f60208284031215615bae575f80fd5b81516001600160401b03811115615bc3575f80fd5b82016102008185031215615bd5575f80fd5b615bdd614c0c565b615be6826153b7565b8152615bf4602083016153b7565b6020820152615c0560408301615b88565b6040820152615c1660608301615b88565b6060820152615c27608083016153b7565b6080820152615c3860a083016153b7565b60a0820152615c4960c083016154d0565b60c082015260e08201516001600160401b03811115615c66575f80fd5b615c72868285016154b2565b60e0830152506101008201516001600160401b03811115615c91575f80fd5b615c9d868285016154b2565b61010083015250615cb16101208301615b93565b610120820152615cc46101408301615b93565b610140820152615cd761016083016153b7565b610160820152615cea61018083016153b7565b610180820152615cfd6101a083016154d0565b6101a0820152615d106101c083016154d0565b6101c0820152615d236101e083016154d0565b6101e0820152949350505050565b5f8085851115615d3f575f80fd5b83861115615d4b575f80fd5b5050820193919092039150565b80356001600160e01b03198116906004841015615d89576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f8060408385031215615de0575f80fd5b8251615deb81614dba565b6020840151909250614bd281614dba565b5f82518060208501845e5f920191825250919050565b5f8060408385031215615e23575f80fd5b615e2c836155d1565b9150602083015163ffffffff81168114614bd2575f80fd5b634e487b7160e01b5f52601260045260245ffd5b601f8211156145e257805f5260205f20601f840160051c81016020851015615e7d5750805b601f840160051c820191505b81811015610dcc575f8155600101615e89565b81516001600160401b03811115615eb557615eb5614bf8565b615ec981615ec384546153dd565b84615e58565b6020601f821160018114615efb575f8315615ee45750848201515b5f19600385901b1c1916600184901b178455610dcc565b5f84815260208120601f198516915b82811015615f2a5787850151825560209485019460019092019101615f0a565b5084821015615f4757868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122078ee33ddfa193ffdd53adeca5d9281872eca50447c466a7120454c3e3d039a8a64736f6c634300081a0033",
1409
1387
  "linkReferences": {
1388
+ "contracts/shared/ContractLib.sol": {
1389
+ "ContractLib": [
1390
+ {
1391
+ "length": 20,
1392
+ "start": 19015
1393
+ }
1394
+ ]
1395
+ },
1410
1396
  "contracts/type/Amount.sol": {
1411
1397
  "AmountLib": [
1412
1398
  {
1413
1399
  "length": 20,
1414
- "start": 8577
1400
+ "start": 2622
1415
1401
  },
1416
1402
  {
1417
1403
  "length": 20,
1418
- "start": 8729
1404
+ "start": 6723
1419
1405
  },
1420
1406
  {
1421
1407
  "length": 20,
1422
- "start": 8889
1408
+ "start": 6845
1423
1409
  },
1424
1410
  {
1425
1411
  "length": 20,
1426
- "start": 9125
1412
+ "start": 7062
1427
1413
  },
1428
1414
  {
1429
1415
  "length": 20,
1430
- "start": 9503
1416
+ "start": 10299
1431
1417
  },
1432
1418
  {
1433
1419
  "length": 20,
1434
- "start": 9867
1420
+ "start": 10693
1435
1421
  },
1436
1422
  {
1437
1423
  "length": 20,
1438
- "start": 14943
1424
+ "start": 11677
1439
1425
  },
1440
1426
  {
1441
1427
  "length": 20,
1442
- "start": 15330
1428
+ "start": 11898
1443
1429
  },
1444
1430
  {
1445
1431
  "length": 20,
1446
- "start": 15476
1432
+ "start": 15431
1447
1433
  },
1448
1434
  {
1449
1435
  "length": 20,
1450
- "start": 15680
1436
+ "start": 16058
1451
1437
  },
1452
1438
  {
1453
1439
  "length": 20,
1454
- "start": 23481
1440
+ "start": 16132
1455
1441
  }
1456
1442
  ]
1457
1443
  },
@@ -1459,11 +1445,7 @@
1459
1445
  "FeeLib": [
1460
1446
  {
1461
1447
  "length": 20,
1462
- "start": 14623
1463
- },
1464
- {
1465
- "length": 20,
1466
- "start": 14791
1448
+ "start": 5757
1467
1449
  }
1468
1450
  ]
1469
1451
  },
@@ -1471,11 +1453,19 @@
1471
1453
  "NftIdLib": [
1472
1454
  {
1473
1455
  "length": 20,
1474
- "start": 7221
1456
+ "start": 1684
1475
1457
  },
1476
1458
  {
1477
1459
  "length": 20,
1478
- "start": 11734
1460
+ "start": 8665
1461
+ },
1462
+ {
1463
+ "length": 20,
1464
+ "start": 13865
1465
+ },
1466
+ {
1467
+ "length": 20,
1468
+ "start": 14697
1479
1469
  }
1480
1470
  ]
1481
1471
  },
@@ -1483,15 +1473,19 @@
1483
1473
  "RoleIdLib": [
1484
1474
  {
1485
1475
  "length": 20,
1486
- "start": 12603
1487
- },
1476
+ "start": 6544
1477
+ }
1478
+ ]
1479
+ },
1480
+ "contracts/type/UFixed.sol": {
1481
+ "UFixedLib": [
1488
1482
  {
1489
1483
  "length": 20,
1490
- "start": 13503
1484
+ "start": 6873
1491
1485
  },
1492
1486
  {
1493
1487
  "length": 20,
1494
- "start": 15604
1488
+ "start": 7119
1495
1489
  }
1496
1490
  ]
1497
1491
  },
@@ -1499,75 +1493,75 @@
1499
1493
  "VersionLib": [
1500
1494
  {
1501
1495
  "length": 20,
1502
- "start": 1681
1503
- },
1504
- {
1505
- "length": 20,
1506
- "start": 2315
1507
- },
1508
- {
1509
- "length": 20,
1510
- "start": 13808
1496
+ "start": 1530
1511
1497
  },
1512
1498
  {
1513
1499
  "length": 20,
1514
- "start": 15788
1500
+ "start": 3755
1515
1501
  }
1516
1502
  ],
1517
1503
  "VersionPartLib": [
1518
1504
  {
1519
1505
  "length": 20,
1520
- "start": 7720
1506
+ "start": 7339
1521
1507
  }
1522
1508
  ]
1523
1509
  }
1524
1510
  },
1525
1511
  "deployedLinkReferences": {
1512
+ "contracts/shared/ContractLib.sol": {
1513
+ "ContractLib": [
1514
+ {
1515
+ "length": 20,
1516
+ "start": 18801
1517
+ }
1518
+ ]
1519
+ },
1526
1520
  "contracts/type/Amount.sol": {
1527
1521
  "AmountLib": [
1528
1522
  {
1529
1523
  "length": 20,
1530
- "start": 8347
1524
+ "start": 2408
1531
1525
  },
1532
1526
  {
1533
1527
  "length": 20,
1534
- "start": 8499
1528
+ "start": 6509
1535
1529
  },
1536
1530
  {
1537
1531
  "length": 20,
1538
- "start": 8659
1532
+ "start": 6631
1539
1533
  },
1540
1534
  {
1541
1535
  "length": 20,
1542
- "start": 8895
1536
+ "start": 6848
1543
1537
  },
1544
1538
  {
1545
1539
  "length": 20,
1546
- "start": 9273
1540
+ "start": 10085
1547
1541
  },
1548
1542
  {
1549
1543
  "length": 20,
1550
- "start": 9637
1544
+ "start": 10479
1551
1545
  },
1552
1546
  {
1553
1547
  "length": 20,
1554
- "start": 14713
1548
+ "start": 11463
1555
1549
  },
1556
1550
  {
1557
1551
  "length": 20,
1558
- "start": 15100
1552
+ "start": 11684
1559
1553
  },
1560
1554
  {
1561
1555
  "length": 20,
1562
- "start": 15246
1556
+ "start": 15217
1563
1557
  },
1564
1558
  {
1565
1559
  "length": 20,
1566
- "start": 15450
1560
+ "start": 15844
1567
1561
  },
1568
1562
  {
1569
1563
  "length": 20,
1570
- "start": 23251
1564
+ "start": 15918
1571
1565
  }
1572
1566
  ]
1573
1567
  },
@@ -1575,11 +1569,7 @@
1575
1569
  "FeeLib": [
1576
1570
  {
1577
1571
  "length": 20,
1578
- "start": 14393
1579
- },
1580
- {
1581
- "length": 20,
1582
- "start": 14561
1572
+ "start": 5543
1583
1573
  }
1584
1574
  ]
1585
1575
  },
@@ -1587,11 +1577,19 @@
1587
1577
  "NftIdLib": [
1588
1578
  {
1589
1579
  "length": 20,
1590
- "start": 6991
1580
+ "start": 1470
1591
1581
  },
1592
1582
  {
1593
1583
  "length": 20,
1594
- "start": 11504
1584
+ "start": 8451
1585
+ },
1586
+ {
1587
+ "length": 20,
1588
+ "start": 13651
1589
+ },
1590
+ {
1591
+ "length": 20,
1592
+ "start": 14483
1595
1593
  }
1596
1594
  ]
1597
1595
  },
@@ -1599,15 +1597,19 @@
1599
1597
  "RoleIdLib": [
1600
1598
  {
1601
1599
  "length": 20,
1602
- "start": 12373
1603
- },
1600
+ "start": 6330
1601
+ }
1602
+ ]
1603
+ },
1604
+ "contracts/type/UFixed.sol": {
1605
+ "UFixedLib": [
1604
1606
  {
1605
1607
  "length": 20,
1606
- "start": 13273
1608
+ "start": 6659
1607
1609
  },
1608
1610
  {
1609
1611
  "length": 20,
1610
- "start": 15374
1612
+ "start": 6905
1611
1613
  }
1612
1614
  ]
1613
1615
  },
@@ -1615,25 +1617,17 @@
1615
1617
  "VersionLib": [
1616
1618
  {
1617
1619
  "length": 20,
1618
- "start": 1451
1619
- },
1620
- {
1621
- "length": 20,
1622
- "start": 2085
1623
- },
1624
- {
1625
- "length": 20,
1626
- "start": 13578
1620
+ "start": 1316
1627
1621
  },
1628
1622
  {
1629
1623
  "length": 20,
1630
- "start": 15558
1624
+ "start": 3541
1631
1625
  }
1632
1626
  ],
1633
1627
  "VersionPartLib": [
1634
1628
  {
1635
1629
  "length": 20,
1636
- "start": 7490
1630
+ "start": 7125
1637
1631
  }
1638
1632
  ]
1639
1633
  }